Metodologie complete di scansione delle porte

La Semantica della Scansione TCP SYN (-sS)

La scansione TCP SYN resta la tecnica predefinita e più fondamentale di Nmap, sfruttando una deliberata violazione del protocollo di instaurazione della connessione definito in RFC 793. In condizioni normali, un three-way handshake (SYN → SYN-ACK → ACK) completa una connessione. Nmap invia solo il SYN iniziale, riceve il SYN-ACK se la porta è aperta, e immediatamente interrompe la connessione embrionaria con RST invece di completarla con ACK.

Attacker          Target
  |    SYN        |
  | ------------> |
  |   SYN-ACK     |  <- Porta aperta: l'handshake non si completa mai
  | <------------ |
  |    RST        |
  | ------------> |

Comportamento RFC sfruttato: RFC 793 §3.4 prescrive che un SYN ricevuto nello stato CLOSED deve generare RST se non esiste un listener, o SYN-ACK se ne esiste uno. Il protocollo non richiede di registrare handshake incompleti a livello applicativo. Questo crea un'asimmetria: lo stack TCP del sistema operativo vede il tentativo di connessione, ma molti log applicativi no.

Implicazioni IDS: La reputazione di "stealth" è in gran parte storica. I firewall stateful moderni e i sistemi IDS/IPS mantengono tabelle di connessioni embrionarie (stati SYN_RECV) e segnalano sequenze rapide di SYN senza completamento dell'handshake. L'handshake incompleto diventa esso stesso una firma. Contro i filtri di pacchetti stateless, tuttavia, la tecnica resta efficace—questi dispositivi esaminano singoli pacchetti senza contesto di stato della connessione e possono far passare pacchetti SYN che bloccherebbero una full connect().

Requisito di privilegi: La costruzione di raw socket richiede root/capabilities, poiché la tecnica richiede di creare pacchetti con flag TCP arbitrari piuttosto che utilizzare lo stack TCP del sistema operativo.

Scansione TCP Connect (-sT): Il Meccanismo di Fallback

Quando i raw socket non sono disponibili—esecuzione non privilegiata, determinati ambienti containerizzati, o configurazioni IPv6 senza supporto kernel—Nmap ricorre alla chiamata di sistema connect(). Questo completa il full three-way handshake attraverso le API socket standard del sistema operativo.

Conseguenze sulla registrazione di audit: Il handshake completo attiva la registrazione a livello applicativo. /var/log/secure, Windows Security Event Log, e i log di connessione applicativi registrano la connessione completata. Le voci della tabella delle connessioni appaiono in netstat. La scansione diventa completamente visibile al rilevamento di intrusioni basato su host e all'analisi forense delle timeline.

Traversamento di proxy a livello applicativo: La connessione TCP genuina della scansione Connect permette il traversamento di proxy SOCKS4/5 e HTTP CONNECT. Il proxy instaura la connessione TCP in uscita per conto dello scanner, offuscando l'origine. Questo non è evasione ma necessità funzionale in ambienti con proxy:

# Forza la scansione connect attraverso proxychains
proxychains nmap -sT -Pn -n --proxies socks4://192.168.1.10:1080 10.0.0.0/24

Penalità di performance: Il kernel gestisce ritrasmissioni, stato della connessione e teardown; la granularità del timeout degrada dal controllo dei pacchetti a livello di microsecondi alla risoluzione dei timer del kernel.

Scansione UDP (-sU): La Sfida Stateless

La scansione UDP affronta l'assenza fondamentale dello stato della connessione. RFC 768 non offre alcun meccanismo di acknowledgment—i datagrammi possono essere silenziosamente scartati dai firewall, filtrati da ACL, o accettati da servizi in ascolto senza alcuna risposta obbligatoria.

Interpretazione ICMP port unreachable: Secondo RFC 1122 §3.2.2.1, gli host devono generare ICMP Type 3 Code 3 (Destination Unreachable, Port Unreachable) quando un datagramma UDP arriva a una porta chiusa senza listener. Nmap interpreta questo come closed. L'assenza di qualsiasi risposta, dopo la ritrasmissione, indica open|filtered—la porta potrebbe accettare datagrammi, o un firewall potrebbe scartarli silenziosamente.

Amplificazione del timeout: La scansione UDP richiede significativamente più tempo delle tecniche TCP. La risposta ICMP unreachable può essere rate-limited (Linux default a 1/secondo), soppressa dai firewall, o persa in transito. L'algoritmo di Nmap incrementa aggressivamente i valori di timeout. Una scansione UDP completa di 65.535 porte contro un host con firewall può richiedere ore.

Imperativo di ottimizzazione: Limitare sempre le scansioni UDP con specifiche -p o --top-ports:

# Scansiona solo DNS, SNMP e NTP—servizi dove UDP è trasporto primario
nmap -sU -p 53,161,123 --max-rtt-timeout 500ms 192.168.1.1

Il database nmap-services classifica le porte per frequenza; --top-ports 20 per scansioni UDP copre domain(53), ntp(123), snmp(161), isakmp(500), e syslog(514), coprendo la maggioranza dei servizi UDP individuabili in ambienti tipici.

Scansioni Null, FIN, Xmas e ACK: Teoria della Manipolazione dei Flag

Queste tecniche sfruttano discrepanze tra le implementazioni della macchina a stati RFC 793 e la logica di elaborazione delle regole firewall.

Il comportamento RFC sottostante: RFC 793 §3.9 specifica che pacchetti senza flag impostati (Null), FIN-only, o FIN-PSH-URG ("Xmas," così chiamato per i flag accesi come le luci dell'albero) arrivati a una porta chiusa devono generare RST. Per porte aperte, RFC è ambigua—le implementazioni tipicamente scartano silenziosamente questi pacchetti illegali.

Null scan (-sN):    [ 0 0 0 0 0 0 ]  Nessun flag impostato
FIN scan (-sF):     [ 0 0 0 0 0 1 ]  Solo FIN
Xmas scan (-sX):    [ 0 1 1 0 0 1 ]  FIN, PSH, URG
ACK scan (-sA):     [ 0 0 1 0 0 0 ]  Solo ACK (senza SYN)

Interpretazione delle risposte: | Risposta | Null/FIN/Xmas | ACK scan | |----------|---------------|----------| | RST | Closed | Alive (firewall/tabella di stato esiste) | | Nessuna risposta | Open|Filtered | Filtered (firewall stateful ha scartato) | | ICMP unreachable | Filtered | Filtered |

Evasione dell'ispezione stateful: Le scansioni Null, FIN e Xmas aggirano i filtri di pacchetti stateless che esaminano solo i flag SYN per decisioni di "nuova connessione". Tuttavia, i firewall con ispezione stateful (Netfilter conntrack, Cisco ASA, Palo Alto) tracciano lo stato della connessione e riconoscono questi pacchetti come invalidi al di fuori di connessioni stabilite, scartandoli e registrando anomalie. La "stealth" ha successo contro ACL stateless mal configurate; fallisce contro infrastrutture stateful moderne, spesso generando più allarmi delle scansioni standard a causa delle combinazioni anomale di flag.

Ruolo unico della ACK scan: Poiché i pacchetti ACK sono validi solo all'interno di connessioni stabilite, la scansione ACK non può determinare lo stato open/closed. Invece, mappa i set di regole firewall—distinguendo configurazioni stateless (risposta RST) da stateful/filtered (drop/silenzio).

Scansioni Window, Maimon e TCP Personalizzate per Evasione Specializzata

TCP Window scan (-sW): Sfrutta comportamenti idiosincratici del campo TCP window in determinate implementazioni dello stack TCP (in particolare Cisco IOS più datati, derivati BSD). Quando un RST viene restituito a una probe, il valore del campo window differisce tra porte aperte e chiuse in queste implementazioni specifiche. Questo fornisce differenziazione open/closed dove le scansioni standard restituiscono risultati ambigui. La tecnica è altamente dipendente dal target—gli stack Linux e Windows moderni hanno standardizzato window=0 su RST, rendendo -sW inefficace.

Maimon scan (-sM): Intitolato a Uriel Maimon che ha documentato la tecnica in Phrack 49. Probe con flag FIN-ACK. Base teorica: RFC 793 implica RST per porte chiuse a qualsiasi pacchetto inatteso, ma certe implementazioni TCP (ancora, storicamente BSD) trattavano FIN-ACK diversamente dal FIN semplice. L'utilità contemporanea è minima; inclusa principalmente per completezza contro infrastrutture legacy.

Scansioni TCP personalizzate (--scanflags): Nmap permette la costruzione arbitraria di flag per ricerca ed evasione specializzata:

# Costruisce un probe ECE-CWR per testare il filtering ECN-aware
nmap --scanflags ECE,CWR,ACK -p 80,443 10.0.0.1

# Frammenta il probe su multipli pacchetti per aggirare il simple pattern matching
nmap -f --scanflags SYN,ACK -p 22 10.0.0.1

Queste richiedono comprensione approfondita del comportamento dello stack target. Combinazioni casuali di flag contro target sconosciuti producono risultati privi di significato.

Scansioni SCTP INIT e COOKIE-ECHO: Ambienti di Telecomunicazione

Lo Stream Control Transmission Protocol (RFC 4960) sottende SIGTRAN, l'architettura di trasporto dei segnali per SS7-over-IP nelle reti cellulari (core 3G/4G/5G, IMS, interfacce HLR/HSS).

SCTP INIT scan (-sY): Analoga alla scansione TCP SYN. Invia chunk SCTP INIT; si aspetta INIT-ACK per porte aperte, ABORT per chiuse, o silenzio per filtrate. Richiede privilegi di raw socket.

SCTP COOKIE-ECHO scan (-sZ): Invia chunk COOKIE-ECHO senza handshake INIT precedente. Gli stack SCTP aperti dovrebbero rispondere con COOKIE-ACK; porte chiuse con ABORT. Questa tecnica avanzata testa implementazioni SCTP con comportamento non standard della macchina a stati.

Contesto operativo: Queste scansioni prendono di mira infrastrutture di telecomunicazioni specifiche—Diameter (RFC 6733), interfacce S1-MME, associazioni SIGTRAN M2UA/M3UA. Le reti enterprise standard espongono raramente SCTP; incontrarlo suggerisce o una errata configurazione o un deployment deliberato di infrastruttura telco/VoIP.

Specificazione delle Porte, Ottimizzazione e il Database nmap-services

La scansione intelligente richiede il targeting preciso delle porte. La sintassi -p supporta multiple specificazioni:

nmap -p 22,80,443            # Porte discrete
nmap -p 1-1024               # Intervallo
nmap -p ssh,http,https       # Servizi nominati (risolti via nmap-services)
nmap -p U:53,T:22,25,80      # Specifico per protocollo
nmap -p-                     # Tutte le 65535 porte (equivalente a -p 1-65535)
nmap --top-ports 1000        # Le 1000 più frequenti secondo le classifiche nmap-services

Il database nmap-services deriva le classifiche di frequenza da dati empirici di scansioni a livello Internet. Non sono assegnazioni arbitrarie—http(80) si classifica più alta globalmente, ma le reti interne possono divergere significativamente. Il database supporta voci personalizzate in ~/.nmap/nmap-services per la taratura della frequenza delle porte specifica dell'organizzazione.

Quando la "Stealth" Diventa Mito

La distinzione storica tra scansioni "stealth" e "rumorose" si è erosa. L'infrastruttura moderna di sicurezza di rete rileva le scansioni attraverso firme comportamentali: analisi dei tempi (sweep a N pacchetti/secondo), pattern di distribuzione delle sorgenti, e entropia del payload. Una scansione SYN a -T5 genera più intelligenza azionabile per i difensori di una scansione Connect a -T1 con rotazione della sorgente.

La selezione intelligente della scansione prioritizza l'accuratezza funzionale sotto i vincoli del target rispetto alla stealth da culto della cargo. Le scansioni SYN hanno successo dove i raw socket funzionano e i firewall mancano di tracciamento dello stato. Le scansioni Connect hanno successo in ambienti ristretti. Le scansioni UDP richiedono pazienza e precisione. Le scansioni di manipolazione dei flag rivelano dettagli specifici dell'implementazione dei firewall. Il praticante sofisticato abbina la tecnica all'architettura di rete, non a nozioni deprecate di indetectabilità.