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à.