Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Wykradanie haseł z pamięci systemów Windows

06 marca 2013, 22:55 | Narzędzia, Teksty | komentarze 23

Możecie wierzyć lub nie, ale system Windows przechowuje wasze hasło w pamięci operacyjnej w zupełnie jawnej postaci, a jego wyciągnięcie jest banalnie proste. Również przez innych użytkowników zalogowanych do tego samego systemu…

By przekonać się o powyższym na własnej skórze, wystarczy przeprowadzić prosty test. Logujemy się do własnego systemu, zrzucamy zawartość pamięci operacyjnej do pliku (potrzebne będą uprawnienia administracyjne) i odnajdujemy w nim własne hasło. Zrzut pamięci fizycznej można wykonać na przykład z wykorzystaniem oprogramowania MDD, natomiast zawartość zrzutu możemy skutecznie przeszukać za pomocą Sysinternals Strings.

Zrzut pamięci operacyjnej zawiera moje hasło

Zrzut pamięci operacyjnej zawiera moje hasło

Jak widać na zaprezentowanym przykładzie, zrzuciłem zawartość pamięci fizycznej do pliku o nazwie dump i następnie odnalazłem w nim swoje aktualne hasło! Cóż to oznacza?

Po pierwsze, jeśli ktoś uzyska dostęp do naszego systemu w momencie, gdy jesteśmy zalogowani, w prosty sposób może poznać nasze hasło. Po drugie, każdy zalogowany użytkownik z uprawnieniami administracyjnymi może poznać hasła i inne poświadczenia pozostałych zalogowanych do tego samego systemu użytkowników i to nie tylko te przechowywane lokalnie w systemie!

Hasła możemy wyciągnąć ręcznie z pamięci, możemy też skorzystać z odpowiedniego oprogramowania, takiego jak Windows Credentials Editor. WCE pozwala m.in. na wyświetlenie oraz edycję rozmaitych form poświadczeń (haseł w jawnej postaci, hashy LM/NT oraz biletów Kerberosa) dla wszystkich bieżących sesji użytkowników. Z jego pomocą możliwe jest na przykład przejęcie poświadczeń innego administratora (np. domenowego!) zalogowanego akurat na tym samym serwerze. Spójrzmy.

WCE odnalazł w pamięci hasła wszystkich zalogowanych użytkowników!

WCE odnalazł w pamięci hasła wszystkich zalogowanych użytkowników!

WCE poradził sobie z wyświetleniem wszystkich haseł dla poszczególnych zalogowanych użytkowników. Obecnie program obsługuje następujące wersje systemów Windows:

  • Windows XP,
  • Windows 2003,
  • Vista,
  • Windows 7,
  • Windows 2008.

Warto dodać, że WCE nie korzysta z bufora informacji o logowaniu, wobec czego wyłączenie takiego buforowania nie ustrzeże przed zagrożeniem. Program w ogóle nie korzysta również z lokalnej bazy SAM, wszystkie informacje zbiera wprost z pamięci operacyjnej, w której Windows (a dokładnie pakiety Windows security, takie jak Digest Authentication Security Package — wdigest.dll) przechowuje wszystkie hasła i inne poświadczenia w postaci jawnej! Szczegółowe informacje na temat zasady działania WCE można znaleźć w prezentacji przygotowanej przez autora oprogramowania.

Uwaga! Część programów antywirusowych rozpoznaje Windows Credentials Editor jako potencjalne zagrożenie (HackTool).

Do czego WCE może się nam więc przydać?

Przede wszystkim program może zostać wykorzystany w czasie testów penetracyjnych na etapie uzyskania dostępu do jednego z windowsowych serwerów i chcielibyśmy uzyskać dostęp do kolejnych systemów. WCE może nam w tym pomóc za pomocą metod takich jak:

  • Pass-the-hash (NTLM),
  • Pass-the-ticket (Kerberos),
  • Wykorzystanie haseł odzyskanych wprost z pamięci operacyjnej(!).

Na koniec warto jeszcze raz zwrócić uwagę na metodę, od której rozpoczęliśmy powyższe rozważania. Jeśli chcielibyśmy stwierdzić, czy jakiś system lub aplikacja nie przechowuje przypadkiem w pamięci haseł w postaci jawnej, wystarczy tylko przeszukać zrzut pamięci na obecność własnego hasła. Przeprowadzając tego typu testy, można się zdziwić, jak wiele rozmaitych haseł jest dostępnych wprost w fizycznej pamięci naszego komputera! Warto więc zawsze pamiętać, że inni korzystający z tych samych systemów mogą w ten sposób poznać wasze poświadczenia.

Zachęcam również do zapoznania się z naszym Kompendium bezpieczeństwa haseł!

Wojciech Smol, (wojciech.smol<at>sekurak.pl)

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Lrm

    Może coś o odczytywaniu haseł z SAM? :)

    Odpowiedz
    • @Lrm,
      Odczytanie haseł z bazy SAM nie jest możliwe, gdyż haseł tam nie znajdziemy. Znajdują się tam jedynie skróty haseł (LM hash/NTLM hash). Od powyższej metody różni się to przede wszystkim tym, że nie mamy pewności, czy uda się dane hasło z odpowiadającego mu hasha odzyskać. Z drugiej strony atak na bazę SAM ma tę zaletę, że pozwala na zdobycie skrótów haseł wszystkich lokalnych użytkowników, a nie tylko tych aktualnie zalogowanych w systemie, jak ma to miejsce w opisanym powyżej przykładzie.

      Odpowiedz
    • J@siek

      Hasło z SAM można odzyskać programem ophcrack.

      Odpowiedz
  2. blad201

    Na waszej stronie http://sekurak.pl/keepass-system-zarzadzania-haslami/ w artykule „Keepass – system zarządzania hasłami”, który popieram, bo sam od lat używam KeePass-a można wyczytać, że:
    'Dane przenoszone są do schowka w sposób szyfrowany (programy podsłuchujące schowek nie są w stanie ich interpretować). Po krótkim czasie (np. 30 sekund) dane te są automatycznie usuwane ze schowka.’
    Czy dałoby radę sprawdzić taki dump, czy skopiowane hasło też można wyciągnąć z pamięci.
    KeePass pozwala na przeciąganie haseł ze swojej bazy wprost do pola przeznaczonego na hasło – czy w tym wypadku również coś w pamięci pozostaje z tego hasła??
    Sprawdzcie to proszę – może więcej ludzi przekona się do KeePassa jeśli jest tak dobrze chroniony

    Odpowiedz
    • @blad201,
      Zrzut i przeszukanie pamięci operacyjnej można zrobić w taki sam sposób, jak to pokazałem w artykule. Zachęcam do własnoręcznych eksperymentów — dają najwięcej frajdy ;).

      Odpowiedz
  3. Tą metodą nie odczytasz hasła kogoś, którego hasła nie znasz. Robi się to przez zestawienie offsetów SYSTEM (\WINDOWS\system32\config\SYSTEM) oraz SAM (\WINDOWS\system32\config\SAM) dzięki czemu uzyskuje się listę hashy użytkowników. Format takiej przykładowej listy hashy wygląda następująco:
    Administrator:500:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c:::
    Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
    HelpAssistant:1000:4e857c004024e53cd538de64dedac36b:842b4013c45a3b8fec76ca54e5910581:::
    SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:8f57385a61425fc7874c3268aa249ea1:::

    Odpowiedz
  4. Antoni444

    Wchodzimy w trybie awaryjnym.Usuwamy konto.Włączamy i mamy pełen dostęp do wszystkich plików.

    Odpowiedz
    • @Antoni444,
      W powyższej metodzie nie chodzi o uzyskanie dostępu do plików, ale o sposób na przejęcie poświadczeń innych użytkowników!

      Odpowiedz
  5. @Wojciech Smol,
    Jest tylko jedno „ale”, ponieważ bez uprawnień administratora nie wyciągniesz tych informacji z pamięci o innych użytkownikach… więc trochę mija się to z celem.

    Odpowiedz
    • @Adam Ziaja,
      Zdobycie poświadczeń innych użytkowników i administratorów (np. domenowych, posiadających inne uprawnienia do innych systemów, itd.!) korzystających akurat z tego samego systemu/serwera z wykorzystaniem (lokalnych!) uprawnień administracyjnych mija się z celem?

      Odpowiedz
  6. kam

    W systemie Windows 7 nie wyciagniesz tym sposobem hasla – przed chwila z ciekawosci sprawdzilem. Czy mozecie to potwierdzic? Oczywiscie bylem w stanie zrzucic pamiec- mam prawa administrator (tak uprzedzajac pytanie ;) ). Czy probowal ktos rowniez te motode?

    Odpowiedz
    • @kam,
      Sprawdziłem na Win7 x64, Windows Credentials Editor działa bez problemu, wyciąga hasła wszystkich zalogowanych użytkowników.

      Odpowiedz
  7. Kacper Nowak

    Jakis rok z hakiem jestescie do tylu z tymi informacjami, ale fajnie ze ktos o tym pisze! Mozna bylo rowniez wspomniec o mimikatz, ktory jako pierwszy program odzyskiwal hasla z pamieci. Oryginal w wersji francuskiej anti-script-kiddies, ale niedawno kilka osob sie dosiadlo i przetlumaczyli go na angielski ;)

    Pozdrawiam.

    Odpowiedz
  8. kk

    no i teraz pojawia się jeszcze inne pytanie: czy poza nielogowaniem się z konta administratora domeny oraz ograniczaniem uprawnień użytkowników można jeszcze coś innego zrobić, żeby się obronić przed takim atakiem.

    Odpowiedz
    • Andrzej

      Applocker,

      Odpowiedz
  9. Grzegorz

    Nie jestem w temacie ale jak zrobic zrzut pamieci mianowicie czym jest plik o nazwie dump??

    Odpowiedz
  10. Marek

    No dobra Panowie a da się wykraść hasło admina będąc zalogowany jako użytkownik wszystko w domenie (nie mając praw admina) w win 7

    Odpowiedz
  11. Kuba

    A gdzie mogę znaleźć ten słynny pilk .dump?

    Odpowiedz
  12. Bodzio

    …tak jak Kuba napisał, potrzebuję takiego dostępu, ponieważ admin ograniczył wiele praw, np. instalki.
    Prosimy o odpowiedź.

    Odpowiedz
  13. J@siek

    Mam komputer, na którym logował się użytkownik domenowy. Potrzebuję zalogować się na jego profil a nie znam hasła. Czy można podmienić hasha hasła w Cached credentials i zalogować się (jeżeli tak to proszę o instrukcję) czy robi się to w inny sposób. Wiem, że hasha hasła można złamać, ale trwa to bardzo długo więc szukam alternatywnej metody. Wiem również, że mogę mieć dostęp do jego danych z poziomu admina lokalnego, ale ja potrzebuję zalogować się na jego profil żeby wyexportować certyfikat…

    Odpowiedz
  14. Irek

    Jeśli ktoś o niecnych zamiarach będzie miał dostęp do naszego komputera gdy jesteśmy akurat zalogowani to obluka co będzie chciał i nie będzie się pier*olił z jakimiś zrzutami, kopiami, itp.

    Znacznie szybciej i łatwiej można wyssać interesujące nas dane z jakiegoś kompa z Windowsem dzięki Ubuntu na pendrajwie…i aby tego dokonać nie potrzebujemy znać hasła.

    Odpowiedz
  15. Jonaszek

    Używam obecnie programów z oferty hackita mają tam właśnie jakiś program do wifi jak i innych rzeczy osobiście z maila kożystam i jestem bardzo zadowolony

    Odpowiedz

Odpowiedz