08.04.2020
Prudensolve

Jak odzyskać utracone hasło do portfela blockchain.com?

  • Kupił bitcoiny
  • Zaszyfrował j swój portfel
  • Zapomniał hasła
  • Skontaktował się z Prudensolve po 5 latach

W dokładnie takiej kolejności, miała miejsce pewna sytuacja, która spotkała klienta, z którym poznaliśmy się w ostatnią sobotę. Kupił on bitcoiny za kilkadziesiąt tysięcy złotych, gdy cena wahała się w granicach 100$ za 1BTC i w 2015 roku okazało się że nie pamięta haseł, które umożliwiłyby zdeszyfrowanie portfela, który wyeksportował z blockchain.info i zaszyfrował podwójnym hasłem.

Blockchain.com (wcześniej blockchain.info), jest jedną z najdłużej działających firm na rynku, która swoim oprogramowanie, dostarcza usługę portfela, który umożliwia nam przechowywanie i wysyłanie kryptowalut. Niestety, ale wiele użytkowników utraciło swoje dane do logowania, przez co nie mogą uzyskać dostępu do swoich środków.

Aby zalogować się do swojego portfela należy znać jego ID, istnieje możliwość jego przypomnienia, pod warunkiem że pamięta się maila, z jakiego korzystaliśmy zakładając konto w przeszłości (dla niektórych użytkowników jest to często kilka lat).

Sytuacja zaczyna się komplikować w momencie, w którym zadamy sobie następujące pytania :

Co jeśli dostawca poczty elektronicznej, z którego usług korzystaliśmy, już nie istnieje oraz co jeśli mamy własne wallet ID, ale nie mamy dostępu do maila?

Jesteśmy ograniczeni przez blockchain.info, jeśli chodzi o ilość możliwych prób wpisania hasła, bowiem po kilku próbach, zostaniemy zablokowani. Możemy natomiast poprosić o backup portfela i spróbować napisać pod niego algorytm do brute-force. Oczywiście pod warunkiem że posiadamy dostęp do maila i możemy potwierdzić nasze prawo do otrzymania backupu od dostawcy.

Nazwijmy naszego klienta Kylie, aby zadbać o jego prywatność. Kylie próbował setek różnych kombinacji hasła (jeszcze zanim pojawił się limit, co do ilości prób wpisania hasła na blockchain.com). Był również od wielu lat w kontakcie z inną firmą, która zajmuje się odzyskiwaniem, ale niestety nie dało to jemu żadnych wymiernych rezultatów.

We wspominaną sobotę, miałem z Kyliem miłą konwersację na temat tego, jak pracuję. Rozmawialiśmy również o teoriach spiskowych związanych z coronavirusem oraz wszelkich innych wątkach naturalnie powiązanych. (ciężko nie wspomnieć o coronie w tych czasach). Zaskoczyła go moja osobowość, która nie przypomniała stereotypowego hakera, który byłby ukryty pod pseudonimem. Oczywiście był w błędzie 🙂 Pomijając ten aspekt, po naszej rozmowie byliśmy przekonani, że obaj przeszliśmy coronavirusa, na długo przed ogłoszeniem pandemii.

Po otrzymaniu wstępnej specyfikacji, jak mogło wyglądać hasło, wziąłem się do pracy, korzystając z moich narzędzi i „podstawowego” zestawu GPU. Na dobry początek zacząłem przeszukiwanie miliarda haseł na sekundę. W rzeczywistości algorytm wykorzystywał 5000 rund szyfrowania, więc w praktyce robiliśmy „tylko” 200 000 rund na sekundę, co wciąż jest całkiem dobrą liczbą w porównaniu z btcrecover.py z github.

Kyle uważał, że hasło jest proste i mógł wziąć pomysł z książki, nad którą pracował w czasie, gdy tworzył portfel. Po otrzymaniu manuskryptu (grubo ponad 10.000 słów) zdecydowałem się napisać skrypt, który rozdzielił cały dokument na pojedyncze słowa. Następnie napisałem drugi skrypt, w którym stworzyłem różne warianty słów w połączeniu z różnymi wskazówkami, które dał mi Kyle. Mogła to być data urodzenia lub zwierzę inspirowane magiczną tęczą.

Sobotnia noc zmieniła się w niedzielny poranek, podczas gdy Kyle i ja wymieniliśmy się wiadomościami na whatsappie.          Potem „zrzucił bombę”, okazało się że być może 99% prawdopodobieństwa formatu i specyfikacji hasła nie wynosiło 99%.              A długość hasła mogła nie być taka krótka (Kyle uważał, że nie ma więcej niż 6 znaków lub maksymalnie 7). Poprzedni usługodawca (odzyskiwania) faktycznie wypróbował wszystkie kombinacje do 6, natomiast korzystali z Amazon Cloud, więc założę się, że Jeff zarobił na nich trochę pieniędzy.

Tak więc byłem w posiadaniu tych wszystkich wskazówek, szybkiego układu GPU i długiego manuskryptu, ale to nadal nie pomagało. Mój zestaw był rozgrzany, przeszedłem przez 9 znaków a dalej do 10 i zacząłem się obawiać, że może jednak zająć to trochę więcej czasu. (Moje najtrudniejsze hasło zajęło 4 miesiące).

W pewnym momencie wpadłem na pomysł, co by było, gdyby zestaw reguł lub format hasła były uruchamiane „wstecz”. Pierwotny pomysł polegał na tym, że musiało to być słowo na początku z wielką literą, po której następowało inne słowo lub może liczba. Mieliśmy jednak do 10 znaków w tym formacie, więc zacząłem być przekonany, że może to zająć trochę czasu, nawet przy 1 miliardach prób na sekundę.

Więc rzuciliśmy monetą i wypróbowaliśmy hasło zaczynające się od cyfr zamiast znaków. 0–6 minęło dość szybko, kilka minut, a potem bum. Aby chronić Kyle’a, nie ujawnię długości, ale była bliższa 10 niż 5. Hasło nie zaczynało się od litery, nie było słowa na początku.

Kyle zarobił 70x na swojej inwestycji w bitcoiny a ja miałem dużo radości. Następny dzień spędziliśmy na wyciąganiu forków, Bitcoin Cash, Bitcoin SV, Bitcoin Gold itp.

Kiedy myślami byłem już przy kolejnym kliencie, czekającym na mnie w Tokyo, Kylie z pewnością otwierał butelkę szampana ze swoją żoną.