La documentazione di nmap riporta quanto segue per NULL
, FIN
e Xmas
scansioni:
When scanning systems compliant with this RFC text, any packet not containing SYN, RST, or ACK bits will result in a returned RST if the port is closed and no response at all if the port is open. As long as none of those three bits are included, any combination of the other three (FIN, PSH, and URG) are OK. Nmap exploits this with three scan types
Come puoi vedere, se la porta è aperta non verrà restituita alcuna risposta. Ciò potrebbe funzionare in scenari ideali, ma è possibile che si stia effettuando la scansione attraverso un firewall che potrebbe bloccare l'accesso a determinati servizi.
Ad esempio, hai una web application sulla porta 80 che dovrebbe essere accessibile a tutti ma non vuoi che tutti siano in grado di accedere alla tua porta ssh, quindi configura il firewall per eliminare i pacchetti con il flag SYN
su porta 22 se non proviene da un IP autorizzato e risponde a RST
In questo esempio, l'utilizzo di una scansione con il flag SYN
restituirà un RST
che significa che la porta è chiusa. Invece, se usiamo una scansione NULL
per esempio - che non ha il flag SYN
- non verrà eliminato dal firewall e restituirà RST
se la porta è chiusa o nulla se è aperta.
How do I decide when to use XMAS or FIN scans when both have the same response and same limitations?
Nella maggior parte dei casi queste scansioni dovrebbero funzionare allo stesso modo, l'unica ragione per cui posso scegliere di scegliere l'una rispetto all'altra è di aggirare certi filtri firewall. Nell'esempio precedente, il firewall può anche eliminare pacchetti da una scansione NULL
poiché non vi sono flag in esso, quindi interpretarli come pacchetti corrotti. In questo caso dovresti usare una scansione con alcuni flag ma che non contiene il flag SYN
, come FIN
o Xmas
scansioni
Nota che non sarai in grado di sapere se la porta è effettivamente aperta se non ricevi alcuna risposta poiché è anche possibile che il firewall abbandoni la risposta di RST
quando una porta è chiusa, quindi la interpreti erroneamente come aperta quando è non. Affinché questo tipo di scansioni funzioni correttamente, è necessario avere una conoscenza precedente di come il server risponde a questo tipo di scansioni utilizzando una porta per la quale si conosce lo stato esatto (nel nostro esempio potrebbe essere la porta 80) e analizzare le diverse risposte per ogni tipo di scansione