documentația nmap prevede următoarele pentru NULL
FIN
și Xmas
scanează:
la scanarea sistemelor conforme cu acest text RFC, orice pachet care nu conține biți syn, RST sau ACK va avea ca rezultat un RST returnat dacă portul este închis și niciun răspuns dacă portul este deschis. Atâta timp cât niciunul dintre acești trei biți nu este inclus, orice combinație a celorlalți trei (FIN, PSH și URG) este OK. Nmap exploateaza acest lucru cu trei tipuri de scanare
dupa cum puteti vedea, daca portul este deschis nici un raspuns nu va fi returnat. Acest lucru poate funcționa în scenarii ideale, dar este posibil să scanați printr-un firewall care poate bloca accesul la anumite servicii.
de exemplu, aveți o aplicație web pe portul 80 care ar trebui să fie accesibilă pentru toată lumea, dar nu doriți ca toată lumea să poată accesa portul ssh, așa că configurați firewall-ul pentru a arunca pachete cuSYN
la portul 22 dacă nu este de la un IP autorizat și răspundeți la unRST
în acest exemplu, folosind cuSYN
steagul va returna unRST
ceea ce înseamnă că portul este închis. În schimb, dacă vom folosi un NULL
scanare de exemplu – care nu are SYN
pavilion – nu va fi abandonat de firewall și va reveni RST
dacă portul este închis sau nimic dacă este deschis.
cum decid când să folosesc scanările XMAS sau FIN când ambele au același răspuns și aceleași limitări?
în majoritatea cazurilor aceste scanări ar trebui să funcționeze la fel, singurul motiv pentru care mă pot gândi să aleg una peste alta este să ocolesc anumite filtre de firewall. În exemplul anterior, firewall-ul poate, de asemenea, să renunțe la pachete dintr-un NULL
scanare deoarece nu există steaguri în el, interpretându-l astfel ca pachet corupt. În acest caz, ar trebui să utilizați o scanare care are unele steaguri, dar care nu conține SYN
, cum ar fi FIN
sau Xmas
scanează
rețineți că nu veți putea ști dacă portul este de fapt deschis dacă nu primiți niciun răspuns, deoarece este posibil ca firewall scade RST
răspuns atunci când un port este închis, prin urmare, interpretând greșit ca deschis atunci când nu este. Pentru ca acest tip de scanări să funcționeze corect, ar trebui să aveți cunoștințe anterioare despre modul în care serverul răspunde la acele tipuri de scanări folosind un port pentru care cunoașteți starea exactă (în exemplul nostru ar putea fi portul 80) și să analizați diferitele răspunsuri pentru fiecare tip de scanare