Inaktiv scanning

En inaktiv scanning er en TCP- port-scanningsmetode , der bruger hjælpeprogrammer som Nmap og Hping bruger afsendelsespakker med en falsk IP-adresse .

Denne komplekse udnyttelse gør det muligt både at scanne porte på en maskine såvel som at fremhæve de betroede links (baseret på IP-adresser) mellem maskinerne. Angrebet består i at sende falske pakker til en given maskine - målet - for at få information om det, men via en anden maskine - zombien. Opdaget af Salvatore Sanfilippo (også kendt som "Antirez") i 1998, er inaktiv scanning blevet brugt af mange hackere, når de forbereder sig på et angreb for diskret at identificere åbne porte på en målmaskine.

Selvom det oprindeligt blev kaldt "dum scan", blev udtrykket "inaktiv scanning" opfundet i 1999 efter offentliggørelsen af ​​et bevis på koncept kaldet "idlescan" af Filipe Almeida (også kendt som pseudonym for "LiquidK"). Denne type havnescanning kan også kaldes en "zombiescanning". Alle navne skyldes arten af ​​en af ​​de maskiner, der er involveret i angrebet.

Princip

Den inaktive scanning udnytter det faktum, at man under visse betingelser kan forudsige IP- identifikationsnumre (IPID). Angriberen skal først finde en maskine med en forudsigelig IPID-sekvens. For eksempel øges ID-nummeret med 1 hver gang. De nyeste versioner af Linux , Solaris og OpenBSD er ikke egnede mål, da IPID-genereringsalgoritmer er blevet rettet. Maskiner valgt til brug på dette niveau kaldes undertiden "zombier". Når en zombiemaskine er fundet, er det første trin at bestemme maskinens aktuelle IPID-nummer: ved at sende en SYN / ACK-pakke til zombien modtager angriberen en RST-pakke med sekvensnummeret.

Det næste trin er at sende en SYN-pakke til målmaskinen og spoofe zombiens IP-adresse . Hvis målmaskinens port er åben, reagerer den på zombien med en SYN / ACK-pakke. Zombie sender derfor en RST-pakke til målet, fordi den ikke rigtig er afsenderen af ​​den første SYN-pakke. Da zombie-maskinen skal have sendt RST-pakken, øger den sin IPID. Dette er hvad der gør det muligt for angriberen at opdage, om målets port er åben. Det sidste trin er derfor at kontrollere IPID ved at sende en SYN / ACK-pakke igen til zombien.

Hvis IPID'en indeholdt i RST-pakken, der er modtaget som svar, er steget to gange, er det sikkert, at målporten er åben. På den anden side, hvis IPID kun øges en gang, vil angriberen vide, at denne port er lukket eller filtreret.

Demonstration med Hping

Hpings metode til inaktiv scanning giver et eksempel på at udføre denne type scanning på et lavt niveau. I dette eksempel scannes målværten (172.16.0.100) ved hjælp af en ledig vært (172.16.0.105). En åben port og en lukket port testes for at se, hvordan hvert scenarie afspilles.

For det første for at fastslå, at den inaktive vært faktisk er en zombie, skal du sende pakker ved hjælp af hping2 og observere, om sekvensnumrene øges med 1 hver gang. Hvis udviklingen af ​​sekvensnumrene er tilfældig, er værten ikke en potentiel zombie.

[root@localhost hping2-rc3]# ./hping2 -S 172.16.0.105 HPING 172.16.0.105 (eth0 172.16.0.105): S set, 40 headers + 0 data bytes len=46 ip=172.16.0.105 ttl=128 id=1371 sport=0 flags=RA seq=0 win=0 rtt=0.3 ms len=46 ip=172.16.0.105 ttl=128 id=1372 sport=0 flags=RA seq=1 win=0 rtt=0.2 ms len=46 ip=172.16.0.105 ttl=128 id=1373 sport=0 flags=RA seq=2 win=0 rtt=0.3 ms len=46 ip=172.16.0.105 ttl=128 id=1374 sport=0 flags=RA seq=3 win=0 rtt=0.2 ms len=46 ip=172.16.0.105 ttl=128 id=1375 sport=0 flags=RA seq=4 win=0 rtt=0.2 ms len=46 ip=172.16.0.105 ttl=128 id=1376 sport=0 flags=RA seq=5 win=0 rtt=0.2 ms len=46 ip=172.16.0.105 ttl=128 id=1377 sport=0 flags=RA seq=6 win=0 rtt=0.2 ms len=46 ip=172.16.0.105 ttl=128 id=1378 sport=0 flags=RA seq=7 win=0 rtt=0.2 ms len=46 ip=172.16.0.105 ttl=128 id=1379 sport=0 flags=RA seq=8 win=0 rtt=0.4 ms

Åbn port

For at teste en port på målmaskinen sender vi en pakke, der spoofer zombiens IP-adresse. I dette tilfælde port 22 ( ssh ).

# hping2 --spoof 172.16.0.105 -S 172.16.0.100 -p 22 -c 1 HPING 172.16.0.100 (eth0 172.16.0.100): S set, 40 headers + 0 data bytes --- 172.16.0.100 hping statistic --- 1 packets transmitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms

Da pakkeadressen er blevet spoofed, modtages der ikke noget svar, og hping rapporterer, at 100% af pakkerne er gået tabt. Målet reagerede direkte på ledig vært med en SYN / ACK-pakke. Nu skal vi observere zombiens IPID for at se, om den er steget.

# hping2 -S 172.16.0.105 -p 445 -c 1 HPING 172.16.0.105 (eth0 172.16.0.105): S set, 40 headers + 0 data bytes len=46 ip=172.16.0.105 ttl=128 DF id=1381 sport=445 flags=SA seq=0 win=64320 rtt=0.3 ms --- 172.16.0.105 hping statistic --- 1 packets tramitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.3/0.3/0.3 ms

Bemærk, at proxy-IPID er steget fra id = 1379 til id = 1381. Pakke nummer 1380 blev brugt, da zombien reagerede på målets SYN / ACK-pakke med en RST-pakke.

Port lukket

Nu bruger vi den samme proces på en port, som sandsynligvis er lukket. Her port 23 ( telnet ).

Det er nødvendigt at kontrollere zombiens nuværende IPID, før du starter.

# hping2 -S 172.16.0.105 -p 445 -c 1 HPING 172.16.0.105 (eth0 172.16.0.105): S set, 40 headers + 0 data bytes len=46 ip=172.16.0.105 ttl=128 DF id=1382 sport=445 flags=SA seq=0 win=64320 rtt=2.1 ms --- 172.16.0.105 hping statistic --- 1 packets tramitted, 1 packets received, 0% packet loss round-trip min/avg/max = 2.1/2.1/2.1 ms

Derefter sender vi testpakken til målet.

# hping2 --spoof 172.16.0.105 -S 172.16.0.100 -p 23 -c 1 HPING 172.16.0.100 (eth0 172.16.0.100): S set, 40 headers + 0 data bytes --- 172.16.0.100 hping statistic --- 1 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms

Og endelig tjekker vi igen zombiens IPID.

# hping2 -S 172.16.0.105 -p 445 -c 1 HPING 172.16.0.105 (eth0 172.16.0.105): S set, 40 headers + 0 data bytes len=46 ip=172.16.0.105 ttl=128 DF id=1383 sport=445 flags=SA seq=0 win=64320 rtt=0.3 ms --- 172.16.0.105 hping statistic --- 1 packets tramitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.3/0.3/0.3 ms

Bemærk, at IPID denne gang kun steg med en (fra id = 1382 til id = 1383), fordi porten var lukket. Når pakken med den falske IP blev sendt til målet, svarede målet til zombien med en RST-pakke. Værts inaktiv svarede derfor ikke på denne pakke, og dens IPID blev steget under dens svar på angriberen.

Demonstration med Nmap

Den første ting at gøre er at finde en zombiemaskine på netværket.

# nmap -sP 192.168.1.0/24

Denne kommando får Nmap til at scanne et IP-adresseområde og vise, hvilke værter der er online.

Når zombien er fundet, skal du sende pakkerne med den falske IP-adresse:

# nmap -P0 -p <port> -sI <zombi IP> <target IP>

Effektivitet

Selvom mange operativsystemer ikke længere kan bruges som zombier i dette angreb; nogle populære systemer er stadig sårbare. Når en scanning er vellykket, er der intet spor af angriberens IP-adresse i målets firewall eller i loggen til detektion af indtrængen .

Da scanningen udføres fra zombiemaskinen, giver dette muligheden for at omgå en firewall , da zombien kan have flere rettigheder end angriberens maskine.

Noter og referencer

  1. (en) http://seclists.org/bugtraq/1998/Dec/79
  2. (en) http://seclists.org/bugtraq/1999/Oct/263
  3. (da) http://joeljose.pbworks.com/BAIS(Born%20Again%20Idle%20Scan)

eksterne links