Avoimien ja suodatettujen UDP-porttien erottaminen toisistaan

Felix-skannauksessa kaikki muut paitsi kolme open|filtered-porttia olivat closed.Skannaus onnistui siis silti rajaamaan mahdolliset avoimet portit kouralliseen. Näin ei aina ole. Esimerkissä 5.5 on UDP-skannaus, joka kohdistuu voimakkaasti suodatettuun Scanme-sivustoon.

Esimerkki 5.5. Esimerkki UDP-skannauksesta

krad# Starting Nmap ( http://nmap.org )All 1000 scanned ports on scanme.nmap.org (64.13.134.52) are open|filteredNmap done: 1 IP address (1 host up) scanned in 5.50 seconds

Tässä tapauksessa skannaus ei rajannut avoimia portteja lainkaan.Kaikki 1000 ovat open|filtered. Tarvitaan uutta strategiaa.

Taulukosta 5.3, ”Miten Nmap tulkitsee vastaukset UDP-luotaimeen”, käy ilmi, että tila open|filtered esiintyy, kun Nmap ei saa vastauksia UDP-luotaimilta tiettyyn porttiin.Siitä käy kuitenkin myös ilmi, että harvinaisissa tapauksissa porttia kuunteleva UDP-palvelu vastaa samalla tavalla, mikä osoittaa, että portti on auki. Syy siihen, että nämä palvelut eivät usein vastaa, on se, että Nmapin lähettämiä tyhjiä paketteja pidetään virheellisinä. Valitettavasti UDP-palvelut määrittelevät yleensä oman pakettirakenteensa sen sijaan, että ne noudattaisivat yhteistä yleistä muotoa, jonka Nmap voisi aina lähettää. SNMP-paketti näyttää täysin erilaiselta kuin SunRPC-, DHCP- tai DNS-pyyntöpaketti.

Voidakseen lähettää oikean paketin jokaiselle suositulle UDP-palvelulle, Nmap tarvitsisi suuren tietokannan, jossa määriteltäisiin niiden anturien muodot.Onneksi Nmapilla on sellainennmap-service-probes:n muodossa, joka on osa palvelu- ja versiotunnistusosajärjestelmää, joka on kuvattu luvussa 7, Palvelu- ja sovellusversiotunnistus.

Kun versiotarkistus on otettu käyttöön -sV:llä (tai-A:lla), se lähettää UDP-luotaimia jokaiseenopen|filtered porttiin (sekä tunnettuihinopen portteihin). Jos jokin koettimista saa vastauksen open|filtered-portista, tila muuttuu open:ksi. Felix-skannauksen lisäämisen-sV tulokset näkyvät esimerkissä 5.6.

Esimerkki 5.6. Felixin UDP-skannaustulosten parantaminen versiotunnistuksella

krad# Starting Nmap ( http://nmap.org )Nmap scan report for felix.nmap.org (192.168.0.42)Not shown: 997 closed portsPORT STATE SERVICE VERSION53/udp open domain ISC BIND 9.2.167/udp open|filtered dhcpserver111/udp open rpcbind 2 (rpc #100000)MAC Address: 00:02:E3:14:11:02 (Lite-on Communications)Nmap done: 1 IP address (1 host up) scanned in 1037.57 seconds

Tämä uusi skannaus osoittaa, että portit 111 ja 53 ovat varmasti auki.Järjestelmä ei kuitenkaan ole täydellinen – portti 67 on edelleenopen|filtered. Tässä nimenomaisessa tapauksessa portti on auki, mutta Nmapilla ei ole toimivaa versioluotainta DHCP:tä varten.Toinen hankala palvelu on SNMP, joka yleensä vastaa vain, kun annetaan oikea yhteisömerkkijono. Monet laitteet on konfiguroitu yhteisömerkkijonolla public, mutta kaikki eivät ole.Vaikka nämä tulokset eivät ole täydellisiä, kahden portin todellisen tilan selvittäminen kolmesta testatusta portista on silti hyödyllistä.

Kun Felixin tulokset on onnistuttu selvittämään, Ere kääntää huomionsa takaisin Scanmeen, joka listasi edellisellä kerralla kaikki portit open|filtered:ksi. Hän yrittää uudelleen versiotunnistusta, kuten esimerkissä 5.7 näkyy.

Esimerkki 5.7. Scanmen UDP-skannaustulosten parantaminen versiotunnistuksella

krad# Starting Nmap ( http://nmap.org )Nmap scan report for scanme.nmap.org (64.13.134.52)Not shown: 999 open|filtered portsPORT STATE SERVICE VERSION53/udp open domain ISC BIND 9.3.4Nmap done: 1 IP address (1 host up) scanned in 3691.89 seconds

Vinkki

Vaikka Ereet lopulta löysivät avoimen portin, hän teki virheen, kun hän ei päivittänyt Nmap-versiota ensin. Nmapin versiossa 5.10BETA1 ja uudemmissa versioissa on hyötyjärjestelmä, joka lähettää asianmukaisia palveluprotokollapyyntöjä yli kolmeen tusinaan tunnettuun UDP-porttiin, jos ne valitaan porttiskannausta tai isännän löytämistä varten. Vaikka se ei ole yhtä kattava kuin versiotunnistus, se olisi tunnistanut nopeasti avoimen portin 53 esimerkissä 5.5.

Tämän tuloksen saaminen kesti tunnin, kun taas edellisessäScanme-skannauksessa se kesti viisi sekuntia, mutta nämä tulokset ovat itse asiassa hyödyllisiä. Ereetin hymy leventyy ja silmät säihkyvät tämän todisteen nähdessään avoimen ISC BINDnameserverin koneessa, jonka hän haluaa vaarantaa. Kyseisellä ohjelmistolla on pitkä historia tietoturva-aukkoja, joten ehkä hän voi löytää aukon tästä uusimmasta versiosta.

Ereet keskittyy UDP-hyökkäyksissään porttiin 53, koska se on vahvistetusti auki, mutta hän ei unohda muitakaan 999 porttia, jotka on lueteltu osoitteessaopen|filtered. Kuten todistimme Felixin dhcpserver-portin kohdalla, tietyt avoimet UDP-palvelut voivat piiloutua jopa Nmapin versiotunnistukselta. Hän on myös skannannut tähän mennessä vain oletusarvoiset portit, mutta 64529 muuta porttia voi olla mahdollisesti auki. Esimerkiksi 53 on ainoa avoin UDP-portti Scanmessa.

Vaikka tämä versiotunnistustekniikka on ainoa tapa, jolla Nmapto pystyy automaattisesti erottamaan open|filtered-portit, on olemassa pari temppua, joita voi kokeilla manuaalisesti. Joskus erikoistunut traceroute voi auttaa. Voit tehdä traceroute-tutkimuksen tunnettua avointa TCP- tai UDP-porttia vastaan Nmapilla tai Npingin kaltaisella työkalulla.Kokeile sitten samaa epäilyttävää UDP-porttia vastaan. Hyppyjen lukumäärän erot voivat erottaa avoimet ja suodatetut portit toisistaan. Ereet yrittää tätä Scanmea vastaan esimerkissä 5.8. Ensimmäisellä komennolla tehdään UDP-traceroute tunnettua avointa porttia 53 vastaan. Toinen komento tekee saman oletettua suljettua porttia 54 vastaan. Muutama ensimmäinen hyppy on jätetty pois tilan säästämiseksi.

Esimerkki 5.8. Yritys erottaa UDP-portit, joissa on TTL-eroja

krad# Starting Nping ( http://nmap.org/nping )SENT (7.0370s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=8 id=4826 iplen=28RCVD (7.1010s) ICMP 4.69.134.222 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=248 id=38454 iplen=56SENT (8.0400s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=9 id=38166 iplen=28RCVD (8.1050s) ICMP 4.68.18.204 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=247 id=39583 iplen=56SENT (9.0420s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=10 id=6788 iplen=28RCVD (9.1080s) ICMP 4.59.4.78 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=246 id=59897 iplen=56SENT (10.0440s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=11 id=366 iplen=28RCVD (10.1100s) ICMP 69.36.239.221 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=243 id=42710 iplen=56SENT (11.0470s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=12 id=63478 iplen=28SENT (12.0490s) UDP 192.168.0.21:53 > 64.13.134.52:53 ttl=13 id=56653 iplen=28Max rtt: 73.003ms | Min rtt: 0.540ms | Avg rtt: 48.731msRaw packets sent: 13 (364B) | Rcvd: 10 (560B) | Lost: 3 (23.08%)Tx time: 12.02836s | Tx bytes/s: 30.26 | Tx pkts/s: 1.08Rx time: 13.02994s | Rx bytes/s: 42.98 | Rx pkts/s: 0.77Nping done: 1 IP address pinged in 13.05 secondskrad# Starting Nping ( http://nmap.org/nping )SENT (7.0370s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=8 id=56481 iplen=28RCVD (7.1130s) ICMP 4.69.134.214 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=248 id=22437 iplen=56SENT (8.0400s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=9 id=23264 iplen=28RCVD (8.1060s) ICMP 4.68.18.76 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=247 id=50214 iplen=56SENT (9.0430s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=10 id=9101 iplen=28RCVD (9.1070s) ICMP 4.59.4.78 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=246 id=880 iplen=56SENT (10.0450s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=11 id=35344 iplen=28RCVD (10.1110s) ICMP 69.36.239.221 > 192.168.0.21 TTL=0 during transit (type=11/code=0) ttl=243 id=44617 iplen=56SENT (11.0470s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=12 id=53857 iplen=28SENT (12.0490s) UDP 192.168.0.21:53 > 64.13.134.52:54 ttl=13 id=986 iplen=28Max rtt: 76.488ms | Min rtt: 0.546ms | Avg rtt: 48.480msRaw packets sent: 13 (364B) | Rcvd: 11 (616B) | Lost: 2 (15.38%)Tx time: 12.02908s | Tx bytes/s: 30.26 | Tx pkts/s: 1.08Rx time: 13.03165s | Rx bytes/s: 47.27 | Rx pkts/s: 0.84Nping done: 1 IP address pinged in 13.05 seconds

Tässä esimerkissä Ereet pystyi tavoittamaan vain hyppyyn yksitoista sekä avoimesta että suljetusta portista. Joten näitä tuloksia ei voida käyttää erottamaan porttien tiloja tätä isäntää vastaan. Kannatti kokeilla, ja se toimii huomattavassa osassa tapauksia. Se toimii todennäköisemmin tilanteissa, joissa seulova palomuuri on vähintään hyppy tai kaksi hyppyä ennen kohdeisäntää. Scanme puolestaan käyttää omaa Linuxiptableshost-pohjaista palomuuriaan. Suodatettujen ja avointen porttien välillä ei siis ole eroa hyppyjen määrässä.

Toinen tekniikka on kokeilla sovelluskohtaisia työkaluja tavallisia portteja vastaan. Esimerkiksi raakaa SNMP-yhteisön merkkijononmurtajaa voidaan kokeilla porttia 161 vastaan. Kun Nmapin versiotunnistustietokanta kasvaa, tarve täydentää sen tuloksia ulkopuolisilla erikoistuneilla työkaluilla vähenee. Niistä on edelleen hyötyä erikoistapauksissa, kuten SNMP-laitteissa, joissa on mukautettu yhteisömerkkijono.

Vastaa

Sähköpostiosoitettasi ei julkaista.