19.02.2015 | 16:17

Adam Haertle

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

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.

procdump -am VisualDiscovery.exe super.dmp

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

strings super.dmp > super.txt

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.

grep "^[a-z]$" super.txt | sort | uniq > super.dict

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.

Powrót

Komentarze

  • 2015.02.19 19:14 Michal

    Ale dlaczego ten artykuł jest w zasadzie C&P przetłumaczonym na język polski?

    Odpowiedz
    • 2015.02.19 20:14 Adam

      A dlaczego ten komentarz jest w zasadzie nic nie wnoszącym pytaniem?

      Odpowiedz
  • 2015.02.19 19:16 tomek

    hehe, metoda prawie identyczna (zamiast duetu procdump/strings starczyl process exprorer z zakladka strings) jak zdobycie hasla BAZINGA do pewnego crackme na pewnej konferencji ;)

    Odpowiedz
  • 2015.02.19 22:04 max

    A’propos szyfrowania, to wczoraj wstawili update audytu truecrypta.
    http://blog.cryptographyengineering.com/2015/02/another-update-on-truecrypt-audit.html
    Z (dość aroganckiego) wpisu wynika, że niewiele wynika z ich pracy przez ostatni rok a wisienką na torcie jest punkt 4ty :)
    Jednym z większych donatorow audytu jest Open Technology Fund który jest funduszem …. rządowym USA, którego zarząd nota bene odmówił wydania dokumentów odnośnie tej dotacji.
    http://politynews.tumblr.com/post/87341452163/polity-news-files-truecrypt-freedom-of-information
    http://www.scribd.com/doc/235397974/US-Government-Refuses-to-Release-TrueCrypt-Audit-Documents#scribd
    Sam pomysł audytowania TC przez amerykańska firmę był już szaleństwem samym w sobie, ale widzę, ze groteska sięga zenitu, gdzie najwyraźniej czas domniemanego audytowania jest wprost-proporcjonalny do wielkości środków przelanych przez amerykański rząd. :)
    To tyle spiskowych teorii. Czekamy na zrzutkę uczciwych naukowców lub kilku przyzwoitych prywaciarzy, którzy rzuca parę groszy jakiejś firmie z Niemiec, Szwajcarii, Islandii a może i Rosji i zrobią to jak trzeba. Nie ma chyba nic gorszego niz pozytywny audyt programu szyfrującego finansowanego przez amerykańska administracje rozsyłającą dziwne sądowe groźby.

    Odpowiedz
  • 2015.02.19 22:18 max

    Oczywiscie chodzi o 4ty punkt z update’u w ktorym wymieniony jest OTF jako jeden z darczynców z 20 grudnia 2013.

    Odpowiedz
  • 2015.02.20 12:17 Czesław

    Chyba niewłaściwy przełącznik, nie powinno być -ma ?

    Odpowiedz
  • 2015.02.21 09:31 max

    Warto zaznaczyć, że superfish jest też dostępny na iOS i Androida i też zdaje się grzebać nie tam gdzie powinien.
    http://www.zdziarski.com/blog/?p=4903

    Odpowiedz

Zostaw odpowiedź

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

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

Komentarze