Warsztaty internetowe: Narzędzia i techniki ataków na komputery w sieci
Nmap - skanowanie portów TCP
Podstawową metodą skanowania jest próba nawiązania połączenia z otwartym portem zdalnego
hosta (opcja -sT). W następnym przykładzie, nmap spróbuje połączyć się z portami od 1-1024
(tzw. dobrze znane porty - well known ports) hosta o adresie IP 192.168.137.129. Porty 1-1024
skanowane są domyślnie, jeżeli istnieje potrzeba skanowania portów powyżej 1024, należy to
sprecyzować podczas uruchamiania programu (szczegóły niebawem). Te porty, które odpowiedzą
inaczej niż pakietem z ustawioną flagą RST uznaje się za otwarte, pozostałe traktowane są jako
zamknięte.
nmap -sT 192.168.137.129
Starting nmap V. 3.00 ( www.insecure.org/nmap )
Interesting ports on w2ks (192.168.137.129):
(The 1575 ports scanned but not shown below are in state: closed)
Port State Service
7/tcp open echo
9/tcp open discard
13/tcp open daytime
17/tcp open qotd
19/tcp open chargen
21/tcp open ftp
25/tcp open smtp
42/tcp open nameserver
53/tcp open domain
80/tcp open http
119/tcp open nntp
135/tcp open loc-srv
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
515/tcp open printer
563/tcp open snews
637/tcp open lanserver
1002/tcp open unknown
1025/tcp open NFS-or-IIS
1026/tcp open LSA-or-nterm
1029/tcp open ms-lsa
1033/tcp open netinfo
2105/tcp open eklogin
3372/tcp open msdtc
3389/tcp open ms-term-serv
Nmap run completed -- 1 IP address (1 host up) scanned in 390 seconds
Nmap nawiązuje połączenie z każdym portem hosta, ale zaraz po "uściśnięciu dłoni" wysyła pakiet
RST.
W celu wykrycia usług RPC (Remote Procedure Call), należy wprowadzić opcję -sR. Usługi RPC
pozwalają na zdalne wykonywanie zadań (np. SSH, X11, HTTP i inne). Następny przykład
pokazuje jak szybko nmap radzi sobie z usługami RPC (2 sekundy) uruchomionymi w systemie
192.168.137.131.
nmap -sR 192.168.137.131
Starting nmap V. 3.00 ( www.insecure.org/nmap )
Interesting ports on M82_FULL (192.168.137.131):
(The 1590 ports scanned but not shown below are in state: closed)
Port State Service (RPC)
22/tcp open ssh
53/tcp open domain
80/tcp open http
111/tcp open sunrpc
139/tcp open netbios-ssn
443/tcp open https
766/tcp open unknown
887/tcp open unknown
1024/tcp open kdm
1026/tcp open LSA-or-nterm
6000/tcp open X11
Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds
Ciekawy jest sposób, w jaki nmap działa w zależności od podanej opcji. W przypadku opcji -sT, -
sR i -sP zawsze najpierw wysyłany jest pakiet SYN. Gdy zostanie wysłana odpowiedź SYN/ACK,
nmap odpowiada pakietem ACK i od razu wysyła pakiet RST kończąc w ten sposób wymianę
pakietów. Wynikiem działania jest informacja, że skanowany port jest otwarty, a host jest
Page 1 of 4
haker.pl Krzysztof Satoła
2008-06-30
http://www.haker.pl/haker_start.pl?warsztaty1_temat=4
dostępny. Gdy nmap otrzyma odpowiedź RST, oznacza to zamknięty port, ale skanowany
komputer jest dostępny (działa). Gdy nie ma odpowiedzi, zakłada się, że port jest zablokowany
przez zaporę sieciową lub skanowany host nie działa (nie ma go albo jest wyłączony).
Jest tylko jeden problem. Połączenia nawiązywane w powyższy sposób raczej na pewno zostaną
odnotowane w logach systemowych skanowanej maszyny. Z punktu widzenia włamywacza jest to
absolutnie nie do zaakceptowania, natomiast specjalista ds bezpieczeństwa IT może przekonać się
ile warte są systemy monitorujące i czego nie są w stanie odnotować. I właśnie tutaj okazuje się
jak bardzo wszechstronnym narzędziem jest nmap.
Opcja -sS powoduje, że program nawiązuje sesję ze skanowanym hostem, wysyłając pakiet SYN,
ale potem zachowuje się niezgodnie ze specyfikacją protokołu TCP. Gdy otrzyma pakiet z
ustawioną flagą RST nie ma problemu. Oznacza to, że port jest zamknięty. Natomiast jeśli
otrzyma w odpowiedzi pakiet SYN/ACK, zamiast wysłać pakiet ACK (zgodnie ze specyfikacją)
wysyła pakiet RST. Ponieważ zachowanie to powoduje zerwanie procesu ustanawiania sesji, wiele
usług potraktowanych w ten sposób nie odnotuje takiego połączenia w logach bezpieczeństwa.
Skoro nie ma śladu w logach, intruz może spokojnie skanować wszystkie porty. Najnowsze
systemy operacyjne i systemy zapisujące zdarzenia odnotowują wszelkie zdarzenia, także nie do
końca nawiązane sesje lub wszelkie anomalia (zdarzenia niezdefiniowane protokołem). Jednak w
Internecie funkcjonuje sporo starszych systemów, często w żaden sposób niezabezpieczonych.
Spróbujmy więc skanowania niewidzialnego (stealth) typu SYN.
nmap -sS 192.168.137.131
Starting nmap V. 3.00 ( www.insecure.org/nmap )
Interesting ports on M82_FULL (192.168.137.131):
(The 1590 ports scanned but not shown below are in state: closed)
Port State Service
22/tcp open ssh
53/tcp open domain
80/tcp open http
111/tcp open sunrpc
139/tcp open netbios-ssn
443/tcp open https
766/tcp open unknown
887/tcp open unknown
1024/tcp open kdm
1026/tcp open LSA-or-nterm
6000/tcp open X11
Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds
Mimo że większość usług nie odnotuje przerwanego nawiązywania sesji, większość systemów IDS
(Intrusion Detection System) oraz zapór ogniowych (firewalls) jest bardzo uczulona na podobne
praktyki.
Jednym z pomysłów na ominięcie powyższej niedogodności (nie gwarantuję jednak
stuprocentowej skuteczności i niewykrywalności) jest wykorzystanie pewnej cechy protokołu TCP.
Gdy skanowany port jest zamknięty, zwracany jest pakiet RST. A co się stanie, jeśli zamiast
poprawnego pakietu SYN, który ma rozpocząć nawiązywanie sesji wyślemy jakiś inny - bez sensu
z punktu widzenia specyfikacji TCP?
Opcja -sF uruchamia skanowanie FIN typu stealth. Pakiet TCP z ustawioną flagą FIN normalnie
kończy sesję między dwoma hostami. Gdy jednak zostanie wysłany bez wcześniejszego
ustanowienia sesji, otwarte porty powinny go zignorować, natomiast w przypadku portów
zamkniętych powinien zostać wysłany pakiet RST.
nmap -sF 192.168.137.2
Starting nmap V. 3.00 ( www.insecure.org/nmap )
All 1601 scanned ports on (192.168.137.2) are: filtered
Nmap run completed -- 1 IP address (1 host up) scanned in 160 seconds
W powyższym przykładzie między hostem skanującym, a skanowanym funkcjonuje zapora
ogniowa z kontrolą stanów. Jak widać nie przepuszcza ona pakietów "bez sensu" i dlatego nmap
nie otrzymawszy odpowiedzi po 160 sekundach uznał, że dostęp do hosta 192.168.137.2 jest
filtrowany.
Nmap oferuje też dwie inne metody skanowania "niewidzialnego". Pierwszą z nich jest tzw.
drzewko bożonarodzeniowe (Xmas tree). Program wysyła pakiet z aż trzema "bez sensu" (z
punktu widzenia specyfikacji protokołu TCP) ustawionymi flagami: FIN, URG oraz PUSH. Ilość flag
przypomina bombki choinkowe na drzewku bożonarodzeniowym i stąd nazwa (opcja -sX).
nmap -sX 192.168.137.131
Starting nmap V. 3.00 ( www.insecure.org/nmap )
Interesting ports on M82_FULL (192.168.137.131):
(The 1590 ports scanned but not shown below are in state: closed)
Port State Service
22/tcp open ssh
53/tcp open domain
80/tcp open http
111/tcp open sunrpc
139/tcp open netbios-ssn
443/tcp open https
766/tcp open unknown
887/tcp open unknown
1024/tcp open kdm
Page 2 of 4
haker.pl Krzysztof Satoła
2008-06-30
http://www.haker.pl/haker_start.pl?warsztaty1_temat=4
1026/tcp open LSA-or-nterm
6000/tcp open X11
Nmap run completed -- 1 IP address (1 host up) scanned in 8 seconds
Przykład powyżej (host 192.168.137.131)pokazuje pomyślny wynik działa programu, natomiast
poniżej (host 192.168.137.129) wydaje się być wyłączony.
nmap -sX 192.168.137.129
Starting nmap V. 3.00 ( www.insecure.org/nmap )
All 1601 scanned ports on w2ks (192.168.137.129) are: closed
Nmap run completed -- 1 IP address (1 host up) scanned in 8 seconds
Kolejną ciekawą metodą skanowania niewidzialnego jest skanowanie puste (opcja -sN). Nmap
próbuje nawiązać połączenie wysyłając pakiet bez ustawionych flag. Jak widać, host
192.168.137.129 nie daje oznak życia.
nmap -sN 192.168.137.129
Starting nmap V. 3.00 ( www.insecure.org/nmap )
All 1601 scanned ports on w2ks (192.168.137.129) are: closed
Nmap run completed -- 1 IP address (1 host up) scanned in 8 seconds
Niestety nie wszystkie systemy operacyjne mają prawidłowo (zgodnie z zaleceniem)
zaimplementowaną obsługę stosu protokołów TCP/IP. Oznacza to, że nie muszą się zachowywać
tak, jak opisano wcześniej. Dla nas oznacza to tylko tyle, że musimy być ostrożni w interpretacji
wyników otrzymywanych podczas skanowania. Dwa powyższe przykłady pokazują, że host o
adresie IP 192.168.137.129 nie działa. Niestety prawda jest inna. Host ten działa, ale pod
kontrolą Windows. Podsystem TCP/IP systemów Windows nie wysyła pakietów RST, gdy port jest
zamknięty, dlatego zarówno skanowanie Xmas jak i Null nie przyniosło efektu.
Dobrze zabezpieczone hosty mogą też wysyłać fałszywe odpowiedzi. Istnieje też grupa
inteligentnych zapór ogniowych, które zapisują w swoich tablicach stanów historię przepływu
pakietów potrafiąc wyciągać wnioski i odpowiednio do potrzeb działać na podstawie ruchu
pakietów odbywającego się w określonym czasie. Prawdziwie zmyślne bestie!
Jeśli chcesz sprawdzić skuteczność swojego firewalla, spróbuj dokonać skanowania hostów
znajdujących się za nim wysyłając pakiety ACK. Wtedy oczekuje się pakietu RST, ponieważ sesja
nie została wcześniej ustanowiona i akceptowanie czegoś, czego nie było nie ma sensu (opcja -
sA).
nmap -sA 192.168.137.125
Starting nmap V. 3.00 ( www.insecure.org/nmap )
All 1601 scanned ports on w2ks (192.168.137.129) are: UNfiltered
Nmap run completed -- 1 IP address (1 host up) scanned in 8 seconds
Jak widać host 192.168.137.125 stojący za firewallem odebrał wszystkie nasze pakiety i nawet
odesłał odpowiedzi RST, których zapora sieciowa nie zatrzymała.
Skanowanie tego typu pozwala stwierdzić, czy pakiety są filtrowane lub blokowane przez zaporę
sieciową. Gdy w odpowiedzi nmap otrzyma pakiet RST oznacza to, że transmisja nie jest
filtrowana. W przeciwnym razie, gdy nmap otrzyma komunikat ICMP Host unreachable (host
niedostępny), port jest zablokowany przez zaporę (gdy host jest włączony). Oczywiście metoda ta
daje rezultaty, gdy możemy w inny sposób sprawdzić, czy skanowany host funkcjonuje w sieci,
np. łącząc się z nim poprzez HTTP (HyperText Transfer Protocol)lub w inny dozwolony przez
zaporę sposób.
Najlepsze efekty dają metody łączenia różnych typów skanowania. Aby dowiedzieć się, czy
skanowany host jest chroniony przez zaporę z inspekcją stanów czy tylko blokującą pakiety SYN
można połączyć skanowanie ACK z SYN. Najpierw więc sprawdzamy metodą SYN.
nmap -sS 192.168.137.138
Starting nmap V. 3.00 ( www.insecure.org/nmap )
Interesting ports on M84_FULL (192.168.137.138):
(The 1590 ports scanned but not shown below are in state: closed)
Port State Service
22/tcp filtered ssh
53/tcp open domain
80/tcp open http
111/tcp open sunrpc
139/tcp open netbios-ssn
443/tcp open https
766/tcp open unknown
887/tcp filtered unknown
1024/tcp open kdm
1026/tcp open LSA-or-nterm
6000/tcp open X11
Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds
A potem techniką ACK.
nmap -sA 192.168.137.138
Page 3 of 4
haker.pl Krzysztof Satoła
2008-06-30
http://www.haker.pl/haker_start.pl?warsztaty1_temat=4
Starting nmap V. 3.00 ( www.insecure.org/nmap )
All 1601 scanned ports on w2ks (192.168.137.138) are: UNfiltered
Nmap run completed -- 1 IP address (1 host up) scanned in 8 seconds
Nasza zapora blokuje więc tylko wybrane porty TCP (u nas 22 oraz 887) i nie jest zaporą z
inspekcją stanów.
|
Strona główna
|
Projekty
|
Zagrożenia
|
Kontakt
|
© 2000-2007
Krzysztof
Satoła. Wszelkie prawa zastrzeżone.
odwiedzin:
698164
Page 4 of 4
haker.pl Krzysztof Satoła
2008-06-30
http://www.haker.pl/haker_start.pl?warsztaty1_temat=4