TCP FIN sfrutta una sottile scappatoia nella RFC TCP per distinguere tra porte aperte e chiuse. La pagina 65 di RFC 793 dice che "se lo stato della porta [destinazione] è CLOSED .... un segmento in entrata che non contiene un RST causa l'invio di un RST in risposta." Quindi la pagina successiva discute i pacchetti inviati ad aprire le porte senza i bit SYN, RST o ACK impostati, affermando che: "è improbabile che tu arrivi qui, ma se lo fai, rilascia il segmento e ritorna."
Questo è davvero un vecchio modo per aggirare il filtraggio dei pacchetti, e l'industria ha reso questa scansione (per lo più) obsoleta. Come qualsiasi altra scansione, l'idea è di provarla e vedere se funziona, e confrontarla con altri tipi di scansione per capire se una porta è veramente vicina o aperta.
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:
Null scan ( -sN) Does not set any bits (TCP flag header is 0) FIN scan
(-sF) Sets just the TCP FIN bit. Xmas scan ( -sX) Sets the FIN, PSH,
and URG flags, lighting the packet up like a Christmas tree.
These three scan types are exactly the same in behavior except for the
TCP flags set in probe packets. The key advantage to these scan types
is that they can sneak through certain non-stateful firewalls and
packet filtering routers. Such firewalls try to prevent incoming TCP
connections (while allowing outbound ones) by blocking any TCP packets
with the SYN bit set and ACK cleared.
Fonte: Scansione rete Nmap: la Guida ufficiale del progetto Nmap alla Scoperta della rete e Scansione di sicurezza