Odzyskiwanie klucza prywatnego certyfikatu oraz hasła z pamięci

dodał 19 lutego 2015 o 16:17 w kategorii Krypto  z tagami:
Odzyskiwanie klucza prywatnego certyfikatu oraz hasła z pamięci

(źródło: takacsi75)

Wiadomością dzisiejszego dnia jest odkrycie na laptopach Lenovo uniwersalnego certyfikatu SSL umożliwiającego ataki typu MiTM. Jak jednak odzyskać jego klucz prywatny oraz związane z nim hasło? Oto instrukcja krok po kroku.

Robert Graham opisał na swoim blogu sposób, w jaki zdobył klucz prywatny certyfikatu Superfish oraz jego hasło. Trzeba przyznać, że jego metoda jest bardzo prosta i skuteczna.

Nie musi być ładnie, ma być szybko i skutecznie

Klasycznym podejściem do uzyskania klucza prywatnego certyfikatu zaszytego w oprogramowaniu może być analiza kopii programu. W wypadku produktu firmy Superfish program ten jest spakowany oraz zaszyfrowany. Osoby zajmujące się analizą wsteczną mogą uruchomić swoje deasemblery i próbować prześledzić kod programu w celu znalezienia momentu, w którym odczytywany jest klucz prywatny. Robert pokazał jednak dużo prostszą metodę, którą pewnie potrafi wykorzystać większość naszych Czytelników.

Zamiast mozolnie odpakowywać i odszyfrowywać program w deasemblerze dużo szybciej jest pozwolić mu wykonać tę operację samemu. Wystarczy uruchomić omawiany program (oczywiście w maszynie wirtualnej) i następnie uruchomić narzędzie procdump niezawodnego Marka Russinovicha, które wykona zrzut pamięci działającego procesu badanego programu.

Kolejnym krokiem jest lokalizacja odpowiednich struktur pamięci. My jednak wiemy dobrze, czego szukamy, zatem wystarczy nam polecenie strings i find:

W pliku wynikowym szukamy ciągu „PRIVATE KEY” i od razu znajdujemy poszukiwany klucz prywatny.

Klucz mamy, a co z hasłem?

Kiedy jednak próbujemy go importować, natrafiamy na kolejne wyzwanie, czyli hasło, którego nie znamy. Jako że Robert nie znalazł w sieci żadnego gotowego crackera haseł certyfikatów, napisał swój, korzystający z API OpenSSL. Nie jest demonem prędkości, ale działa.

Teraz potrzebujemy już tylko listy haseł – kandydatów. Gdzie ich szukać? Oczywiście w pamięci procesu.

Strzelając na chybił-trafił na dobry początek wybieramy tylko słowa składające się z małych liter i traktujemy tak wygenerowanym słownikiem nasz klucz prywatny. Po paru sekundach okazuje się, że hasło to komodia – przez zbieg okoliczności tak własnie nazywa się firma oferująca bibliotekę do podsłuchiwania połączeń SSL…

Klucz prywatny

Klucz prywatny

Przykład powyżej Ameryki nie odkrywa, ale pokazuje, że czasem do całkiem złożonych problemów wystarczają naprawdę najprostsze rozwiązania – wystarczy odrobina kreatywności. No i przy okazji teraz już na 100% wiadomo, że każdy może podszyć się pod serwer HTTPS dla komputera z programem Superfish.