background image

 

 

 
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

background image

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

background image

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

background image

 
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