2013. december 3., kedd

Port szkennelés -2-

Zer0Code már régebben írt egy cikket a port szkennelésről, viszont mivel ez egy elég fontos terület úgy döntöttem hogy írok egy még részletesebbet. Vágjunk is bele. Először a portokkal fogunk megismerkedni.
A portszámok 0-65 535-ig terjednek. Azért pont eddig mert a 16bit hosszúságú, ezért pontosan 65 535 féle kombináció lehetséges. A port számokat három különböző csoportba tudjuk rendezni:
-Leggyakrabban használt(well-known): 0-1023
-Regisztrált(registered): 1024-49151
-Dinamikus(dynamic): 49152-65535

Most nézzük meg a fontosabb port számokat:
PortszámProtokolÁtviteli protokol
                    20/21FTPTCP
22SSHTCP
23TELNETTCP
25SMTPTCP
53DNSTCP és UDP
67DHCPUDP
69TFTPUDP
80HTTPTCP
110POP3TCP
135RPCTCP
                137-139NetBiosTCP és UDP
143IMAPTCP
                161/162SNMPUDP
389LDAPTCP és UDP
443HTTPSTCP
445SMBTCP

Ezen a linken találunk egy nagyon részletes listát: http://goo.gl/Ukgzbv
A port scanner-ek az az alap koncepciója hogy átnézik az összes portot. Viszont nyilván ez nagyon sok idő lenne ezért csak az ismertebb portokat szokták scannelni.
Most foglalkozzunk egy kicsit a TCP és az UDP kommunikációval.
Két fajta adatátviteli mód van az átviteli rétegen:
-a kapcsolódás nélküli(connectionless)
-és a kapcsolat-orientált(connection-orianted)

A kapcsolódás nélküli, az UDP. 
Előny:Nagyon gyors Hátrány:Nem megbízható.

A kapcsolat-orientált, a TCP.
Előny:Megbízható. Hátrány: sokkal lassabb mint az UDP.

UDP szegmens szerkezet:

TCP szegmens szerkezet:

Foglalkozzunk egy kicsit a TCP flagekkel. (URG, ACK, PSH, RST, SYN, FIN)
-URG(Urgent-sürgős): Annyit csinál hogy jelzi hogy a következő csomagok amiket küldeni fog azok sürgősek.
-ACK(Acknowledgement-nyugtázás): Nyugtázza a SYN csomagokat. Minden SYN csomag után látnunk kell.  
-PSH(Push): Kényszeríti az adat továbbítását bufferelés nélkül.
-RST: Kényszeríti a kommunikáció leállítását.
-SYN:A kezdeti kommunikáció közben jön létre.(Ezzel kezdeményezzük a kapcsolódást.)
-FIN(Finish):A kommunikáció rendben lezajlott végét jelzi.

Most hogy már tudjuk hogy az egyes TCP flag-ek mire jók, nézzük meg hogy mi is az a három lépcsős kézfogás. Ez egyébként egy sima connect scan.(nmap-ban: -sT paraméter)
 
Láthatjuk hogy a kliens gép először elküld egy SYN csomagot amivel jelzi hogy kapcsolódni akar. A szerver válaszul küld egy SYN-ACK csomagot. Végül annak jeléül hogy megkaptuk a szerver válaszát küldünk egy ACK csomagot, és ezzel létrehozzuk a kapcsolatot. De ennyit az elméletről! Jöjjön a gyakorlat. Az Nmap nevezetű programot fogjuk használni.

Elég egyszerű a szintaktisa.
nmap <szkennelési paraméterek> <cél>

Nmap kapcsolók:
kapcsolóleírás
-sAACK scan
-sFFIN scan
-sIIDLE scan
-sLDNS scan
-sNNULL scan
-sDProtocol scan
-sPPing scan
-sSSYN scan
-sTTCP Connection Scan
-sWWindows Scan
-sXXmas tree scan
-PIICMP ping
-PnNo ping
-PsSYN ping
-PTTCP Ping
-oNNormális kimenet
-oXXML kimenet
-T0Leglassab seb. scan (Soros)
-T1Lassú scan (Soros)
-T2Normális seb. scan (Soros)
-T3Normális seb. scan (Párhuzamos)
-T4Gyors scan. (Párhuzamos)
-T5Leggyorsabb scan. (Párhuzamos)
Nyitott port-nál SYN, SYN-ACK, ACK csomagokat kell látnunk. 
Zárt port esetén: SYN, és RST csomagokat.
Ha a portokat tűzfal védi akkor nem jön vissza semmilyen válasz, nmap-ban filtered-et fogunk látni. 

Most nézzük sorra a fontosabb szkennelési módokat:
-TCP Connect scan(-sT):
Az összes porton végigfuttat egy három lépéses kézfogást. Ezt a legkönyebb detektálni, de nagyon megbízható. Amit ez nyitottnak mond az biztos hogy nyitva is van.
Nyitott port SYN-ACK csomaggal válaszol.
Zárt port pedig RST-vel.
Warning: 192.168.1.1 giving up on port because retransmission cap hit (6).
Nmap scan report for 192.168.1.1
Host is up (1.0s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
9/tcp filtered discard
80/tcp open http
1900/tcp open upnp
9071/tcp filtered unknown
15660/tcp filtered bex-xr
49152/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 339.09 seconds

-SYN scan(-sS):
Úgy is hívják hogy "félig-nyílt scan". Csak a SYN csomagokat küldi ki a portokra. Ugyanazok a válaszok mint a TCP Connect scannél. Tehát:
Nyitott: SYN-ACK
Zárt: RST
Nmap scan report for 192.168.1.1
Host is up (0.0037s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
80/tcp open http
1900/tcp open upnp
49152/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 12.79 seconds

-FIN scan(-sF):
Majdnem a SYN-nek az ellentéte. Annyit csinál hogy elküld egy FIN flages csomagot. Annyira jó hogy tudjuk vele detektálni a zárt portokat. Mivel a zárt portok RST válaszolnak, a nyitott portok pedig nem válaszolnak semmivel.
Nmap scan report for 192.168.1.1
Host is up (0.010s latency).
All 1000 scanned ports on 192.168.1.1 are open|filtered
Nmap done: 1 IP address (1 host up) scanned in 36.06 seconds

-Xmas Tree scan(-sX):
Többféle flaggel küld ki csomagokat. A válaszok ugyanazok mint a FIN scannél. Azért hívják "Karácsonyfa" scan-nek mert a váltakozó bitek be és kikapcsolnak a flag-ben és olyanok mint a karácsonyfán az égők.

Nmap scan report for 192.168.1.1
Host is up (0.00s latency).
All 1000 scanned ports on 192.168.1.1 are open|filtered
Nmap done: 1 IP address (1 host up) scanned in 34.04 seconds
-ACK scan(-sA):
Főleg UNIX alapú rendszerek scannelésére használják. Az ICMP host unreachable üzenetekből próbál következtetni arra hogy melyik port lehet nyitva a tűzfalon.
Nyitott port esetén RST-t kap válaszol.
Zárt port esetén nincs válasz.
Nmap scan report for 192.168.1.1
Host is up (0.0058s latency).
All 1000 scanned ports on 192.168.1.1 are unfiltered
Nmap done: 1 IP address (1 host up) scanned in 13.23 seconds

Ezeken kívül még tudunk további kereséseket végezni a különböző portokon.
-Verzió scan(-sV): Ez anyit csinál hogy felcsatlakozik a különböző portokra és megpróbálja megtudni hogy milyen service fut rajtuk. Így egyből lehet látni hogyha sebezhető szoftvert használnak.
Nmap scan report for 192.168.1.1
Host is up (0.0051s latency).
Not shown: 997 closed ports

PORT STATE SERVICE VERSION
80/tcp open http TP-LINK WR1043ND WAP http config
1900/tcp open upnp ipOS 7.0 (TP-LINK TL-WR1043ND WAP 1.0; UPnP 1.0)
49152/tcp open upnp Portable SDK for UPnP devices 1.6.6 (Linux 2.6.15--LSDK-6.1.1.40; UPnP 1.0)

Service Info: OS: Linux; Device: WAP; CPE: cpe:/o:linux:linux_kernel:2.6.15--lsdk-6.1.1.40
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 23.50 seconds

-OS scan(-O): Az operációs rendszer verzióját mondja meg.
Nmap scan report for 192.168.1.1
Host is up (0.0016s latency).
Not shown: 997 closed port

PORT STATE SERVICE
80/tcp open http
1900/tcp open upnp
49152/tcp open unknown

Device type: WAP
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.15
OS details: Linux 2.6.15 (likely TP-Link WAP)
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.32 seconds

Ha van valami kérdésed, valami nem volt érhető nyugodtan kommenteljetek!