HomelessPhD / MilkSad_dummy

Milk Sad vulnerability
7 stars 1 forks source link

Not sure where else to file this... #3

Open lrvick opened 1 month ago

lrvick commented 1 month ago

Hey, I am the Lance from the Milksad team, though I am here of my own accord.

The team made the collective decision to not release our own source code, and I will abide by this decision, but I hold the personal ethical view that tools with such power should belong to everyone, or belong to no one. Given the latter is not possible, then I feel obligated to support the former.

I really appreciate seeing external open source research tooling inspired by our research.

Wish I had seen this repo sooner!

I don't use Telegram but you can find all my contact info on https://lance.dev

I can probably advise a number of improvements should you decide to revisit this. By all means reach out!

HomelessPhD commented 1 month ago

The code i wrote is very silly and slow - it is inefficient and just published to show the concept. It would take aloot of time to generate all priv keys especially taking into account the collisions. The right way to go is to re-create the seed\privkey generation in c\c++\cl or cuda feeding the generator sequentially with all possible inputs instead of relying on time lol - to make it efficient, get exactly all seeds and avoid seed collisions.

On Wed, May 22, 2024 at 12:06 AM Lance R. Vick @.***> wrote:

Hey, I am the Lance from the Milksad team, though I am here of my own accord.

The team made the collective decision to not release our own source code, and I will abide by this decision, but I hold the personal ethical view that tools with such power should belong to everyone, or belong to no one. Given the latter is not possible, then I feel obligated to support the former.

I really appreciate seeing external open source research tooling inspired by our research.

Wish I had seen this repo sooner!

I don't use Telegram but you can find all my contact info on https://lance.dev

I can probably advise a number of improvements should you decide to revisit this. By all means reach out!

— Reply to this email directly, view it on GitHub https://github.com/HomelessPhD/MilkSad_dummy/issues/3, or unsubscribe https://github.com/notifications/unsubscribe-auth/ATG2IU2VWGJ7IJDXZ2RVAS3ZDPAQDAVCNFSM6AAAAABICOFBCSVHI2DSMVQWIX3LMV43ASLTON2WKOZSGMYDSMJZGY3TENA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

HomelessPhD commented 1 month ago

so... the most efficient way would be to compile a short c code that will re--create the seed creation of bx and dump that into file -> parallel that and split the whole 32 bit range among "threads". Result would be all seed generated with bx.

Later use scripts \ programs to check all those 2^32 seeds: BTC, ETH, BSC, SOL, LTC, BCH, DOGE,..... whatever -> check not just the first "child" but 10 priv\addresses at least.

lrvick commented 1 month ago

For generating addresses, we did most of our work in Rust, and were able to parallelize things enough to get away with a pure CPU implementation.

We did open source our modifications to the following two libraries:

This was covered in Update 8 here: https://milksad.info/posts/research-update-8/

In regards to doing lookups, the best method we found was deriving all possible addresses and storing them in a bloom filter. A python script got the job done for us at one point, and at another a team member wrote an open source rust implementation: https://git.distrust.co/milksad/lookup/src/branch/main/bloom-filter-generator

Separately you can create (or find online various places) lists of all addresses to ever hold a balance on various blockchains.

Once you have a bloom filter generated for all addresses possible from a given entropy/derivation-path/coin combination, you can then search for all used addresses which have vulnerable keys.

This usage of bloom filters was covered with a fair bit of detail here: https://milksad.info/posts/research-update-3/

Not sure if you saw these updates, but hopefully this TL;DR helps.

By all means let me know if you decide to play with any of this!

I hope to see some open source tools exist for searching addresses that are readily usable and accessible to researchers on modest hardware.

No doubt some will think of paths to search we didn't, or other bad entropy sources, to help identify more vulnerable wallets, etc.