Evasione, offuscamento e tecniche avanzate di scansione
Realità della Frammentazione IP e del Riordino Stateful
La frammentazione IP rimane una delle funzionalità di evasione di Nmap più incomprese. Il flag -f frammenta i pacchetti probe in payload di 8 byte (post-header-IP), mentre --mtu permette la specifica esplicita delle dimensioni dei frammenti, vincolate a multipli di 8 a causa della granularità di 8 byte del campo offset di frammento a 13 bit nell'header IPv4.
Funzionamento meccanico: Quando si esegue nmap -f -p 80 192.168.1.1, Nmap divide un pacchetto TCP SYN standard in più frammenti. Un tipico header TCP di 20 byte più header IP di 20 byte diventa ingovernabile: con -f, il primo frammento trasporta 8 byte di header TCP, i frammenti successivi trasportano il resto. Per --mtu 24, si specifica la dimensione totale del frammento incluso l'header IP—significando 4 byte di payload per frammento, sempre vincolato a multipli di 8 per il calcolo dell'offset.
La teoria dell'evasione presuppone che i sensori IDS/IPS manchino di capacità di riordino, esaminando i frammenti in isolamento. Le difese moderne operano diversamente. I firewall stateful, Suricata e Snort 3.0 mantengono buffer di riordino dei frammenti indicizzati per (IP sorgente, IP destinazione, protocollo, IP ID). Questi sistemi tipicamente implementano:
- Eviction basata sul tempo: Frammenti mantenuti per 60–120 secondi prima dello scarto
- Gestione delle sovrapposizioni: Preferenza per first-seen, last-seen o policy specifiche di Linux/BSD secondo RFC 5722
- Limiti delle risorse: Limiti di assemblaggio dei frammenti per-host o globali per prevenire attacchi di esaurimento della memoria
Perché -f fallisce frequentemente: Gli ambienti enterprise incontrano raramente frammentazione legittima. Il path MTU discovery e la negoziazione TCP MSS hanno largamente eliminato la frammentazione sulle reti moderne. I team di sicurezza segnalano routinariamente il traffico frammentato come sospetto per sé. L'implementazione dei frammenti di Nmap esibisce inoltre impronte digitali: sequenze IP ID consistenti, timing prevedibile tra i frammenti e porte sorgente di default che non corrispondono al comportamento tipico delle applicazioni.
Quando la frammentazione mantiene utilità: Targetizzando sistemi embedded legacy con stack TCP/IP minimi, specifici ambienti ICS/SCADA, o implementazioni di appliance con bug di riordino noti. Per l'evasione diretta, combinare con --send-eth per controllare il timing della trasmissione a livello di link-layer, sebbene questo richieda privilegi di root.
# Frammentazione con MTU esplicito, timing lento e IP ID randomizzati
sudo nmap -f --mtu 16 -T2 --ip-options "R" -p 443 10.0.0.5
Scanning con Decoy: Il Problema Half-Open e la Correlazione dei Log
Lo scanning con decoy (-D decoy1,decoy2,...,ME) tenta di offuscare l'indirizzo sorgente reale dello scanner intercalando probe identici da multiple sorgenti spoofate o legittime. La parola chiave posizionale ME determina dove l'IP reale dello scanner appare nella sequenza; ometterlo appende l'indirizzo reale in ultima posizione.
La meccanica di selezione dei decoy conta enormemente. I decoy responsivi—host live che rispondono al target—generano traffico di backscatter che il target logga, complicando l'attribuzione dell'attacco. I decoy non responsivi (indirizzi inutilizzati nella subnet del target) non producono risposte SYN-ACK, creando pattern asimmetrici rilevabili attraverso semplice analisi dei log:
# Scan con sei decoy, indirizzo reale in terza posizione
sudo nmap -D 192.168.1.50,10.2.3.4,ME,172.16.5.5,decoy.example.com,RND:5 -p 22,80,443 203.0.113.10
Il RND:5 genera cinque indirizzi casuali. Questo è praticamente inutile: IP casuali attraverso internet non instraderanno le risposte del target, creando ovvi pattern di non-risposta. Strategie di decoy migliori:
- Decoy responsivi: Host compromessi, nodi di uscita VPN, o macchine legittime nello spazio di indirizzi del target che ricevono e rispondono ai pacchetti SYN
- Distribuzione geografica: Decoy che si estendono su multipli ASN e paesi, complicando la correlazione dei log cross-giurisdizionale
- Matching comportamentale: Decoy con valori TTL simili, dimensioni di finestra e timing allo stack TCP reale dello scanner
Il problema half-open: Lo scanning con decoy funziona solo contro TCP SYN scan (-sS) dove non avviene il completamento del handshake. I connect scan (-sT), gli UDP scan, o il rilevamento della versione (-sV) richiedono comunicazione bidirezionale impossibile attraverso indirizzi spoofati. Lo scanner deve ricevere risposte per determinare lo stato della porta, facendo collassare l'illusione dei decoy per qualsiasi cosa oltre lo stato iniziale della porta.
Critica limitazione del segmento locale: Su segmenti Ethernet, la risoluzione ARP espone il vero indirizzo MAC dello scanner indipendentemente dai decoy a livello IP. La cache ARP del target registra scanner_ip -> scanner_mac quando i decoy usano indirizzi non-locali che richiedono la risoluzione del gateway, ma per indirizzi decoy locali sarebbero necessarie ARP gratuite o entry statiche. Le implementazioni di port security che legano MAC alle porte dello switch rendono lo scanning con decoy localmente trasparente agli amministratori di rete.
Sfide di correlazione dei log: I SIEM moderni normalizzano tuple (timestamp, IP sorgente, IP destinazione, porta destinazione). Gli scan con decoy creano cluster ovvi—sequenze di porte identiche da multiple sorgenti nel giro di microsecondi. La correlazione sofisticata identifica lo scanner come l'IP che esibisce caratteristiche uniche: l'unica sorgente che riceve RST da porte chiuse invece di scartarli silenziosamente, o l'unico indirizzo con successivo comportamento di sessione completa sulle porte aperte scoperte.
Spoofing dell'Indirizzo Sorgente e Routing Asimmetrico
Il flag -S abilita la specifica esplicita dell'IP sorgente, funzionando correttamente solo quando lo scanner può ricevere risposte attraverso routing asimmetrico o quando combinato con interfacce di cattura (-e). Questo serve due scenari distinti:
Scanner multi-homed: Sistemi con interfacce attraverso confini di sicurezza (es. jump box red team con interfacce DMZ e interne). Specificare -S 10.0.10.5 -e eth1 assicura che i probe originino dall'indirizzo corretto per la subnet del target, evitando l'ambiguità della tabella di routing.
Sfruttamento del routing asimmetrico: Quando lo scanner controlla l'infrastruttura di routing o opera attraverso posizioni di rete specifiche dove le risposte del target attraversano interfacce di cattura monitorate nonostante sorgenti spoofate. Questo richiede:
- Capacità di BGP hijacking o iniezione di route
- Controllo degli hop intermedi nel percorso di ritorno del target
- Posizionamento su segmenti di rete condivisi dove la modalità promiscua cattura le risposte
# Spoofing della sorgente attraverso interfaccia specifica, senza reverse DNS
sudo nmap -S 198.51.100.25 -e tun0 --disable-arp-ping -Pn -p 80 203.0.113.0/24
Il --disable-arp-ping e -Pn sono obbligatori: la risoluzione ARP rivelerebbe il vero MAC, e il host discovery con sorgenti spoofate fallisce senza capacità di cattura delle risposte. Questa modalità di scan è fondamentalmente cieca—nessuna conferma positiva di porte aperte senza infrastruttura di packet capture.
Inserimento di Payload Personalizzato per Evasione delle Signature
Le opzioni --data, --data-string e --data-length di Nmap appendono payload arbitrario ai pacchetti probe, influenzando principalmente gli UDP scan e i probe specifici del protocollo. La loro utilità di evasione si concentra sulla manipolazione delle signature IDS piuttosto che sul mascheramento a livello di protocollo.
Distinzioni di meccanismo:
--data-length 50: Appende 50 byte casuali, alterando la dimensione del pacchetto per evadere signature basate sulla lunghezza--data-string "GET / HTTP/1.0\r\n\r\n": Inserisce sequenze di byte specifiche, potenzialmente innescando elaborazione a livello applicazione o mascherandosi come traffico protocollo legittimo--data 0xdeadbeef: Payload arbitrario in codifica esadecimale
Per il tunneling di protocollo, queste opzioni abilitano un'incapsulazione rudimentale. Un probe UDP alla porta 53 con payload in formato DNS può attraversare firewall che permettono DNS pur trasportando contenuto non-DNS. Tuttavia, l'implementazione di Nmap manca di vere macchine a stati di protocollo di tunneling—nessun numero di sequenza, acknowledgement, o logica di riordino.
Evasione pratica delle signature: Le signature di Suricata e Snort targetizzano frequentemente i contenuti dei probe di default di Nmap. I probe del service detection nmap -sV contengono stringhe distintive (es. NULL, GenericLines, Help). L'inserimento di payload personalizzato sostituisce questi, sebbene l'accuratezza del rilevamento della versione si degradi senza risposte attese ai probe standard.
# UDP scan con payload mimante-DNS alla porta 53
sudo nmap -sU -p 53 --data-string "$(printf '\x12\x34\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07example\x03com\x00\x00\x01\x00\x01')" 10.0.0.1
Proxy Chains e Tecniche di Relay Ncat
L'opzione --proxies supporta proxy chain HTTP CONNECT e SOCKS4/5 solo per TCP connect scan. Questa limitazione fondamentale—nessun supporto per raw socket attraverso proxy—restringe l'utilità a connect scan -sT, ricognizione a livello applicazione, e scenari dove le proxy chain forniscono offuscamento geografico o organizzativo piuttosto che stealth tecnico.
Configurazione della chain: Specifiche di proxy separate da virgole con semantica di failover. Lo scanner si connette attraverso ogni proxy sequenzialmente; il fallimento di un proxy interrompe il probe invece di tentare alternative.
# Chain HTTP CONNECT attraverso due proxy
nmap -sT -Pn -p 80,443 --proxies http://proxy1.example.com:8080,http://proxy2.internal:3128 target.com
La tecnica di relay Ncat fornisce redirezione più flessibile:
# Sul host relay: inoltra porta locale 8080 a target:443
ncat -l 8080 --sh-exec "ncat target.example.com 443"
# Scanner si connette attraverso relay
nmap -sT -p 8080 relay-host.example.com
Per relay multi-hop, istanze Ncat concatenate creano topologie arbitrarie. Combinando con wrapping SSL (--ssl) e controlli di accesso (--allow) si producono canali coperti rudimentali. Tuttavia, ogni relay introduce latenza e potenziali punti di fallimento o logging.
Limitazioni della topologia Zenmap: La vista topologia di Zenmap grafico visualizza route scoperte e relazioni tra host basate su dati traceroute e timing degli scan. Per scanning offuscato, questa visualizzazione diventa attivamente fuorviante—i relay appaiono come connessioni dirette, gli endpoint proxy come origini degli scan, e le sorgenti decoy possono generare nodi topologici fantasma se qualsiasi risposta viene catturata. La vista topologia non ha supporto nativo per annotare tecniche di offuscamento dello scan, rendendola utile per l'analisi post-scan della struttura di rete ma non per comprendere l'esposizione di attribuzione dello scan.
Spoofing dell'Indirizzo MAC e Realità del Segmento Locale
L'opzione --spoof-mac opera esclusivamente su segmenti Ethernet locali, accettando prefissi vendor, indirizzi specifici, o 0 per generazione casuale. La sua funzionalità affronta due scenari distinti:
Bypass di port security: Le implementazioni di switch che legano indirizzi MAC specifici a porte fisiche (Cisco port-security, Juniper MAC limiting) scartano frame da MAC sorgente non autorizzati. Lo spoofing di un MAC autorizzato permette la trasmissione del frame, sebbene la collisione con l'host legittimo produca instabilità ARP e potenziale rilevamento.
Anonimato del segmento locale: All'interno dei domini di broadcast, l'indirizzo MAC sorgente identifica l'host fisico di scanning indipendentemente dall'offuscamento a livello IP. Cambiare indirizzi MAC tra probe o scan complica la correlazione delle tabelle CAM degli switch e il tracciamento degli host.
# MAC casuale con prefisso vendor Apple per plausibile dispositivo mobile
sudo nmap --spoof-mac Apple -e eth0 -sn 192.168.1.0/24
Vincoli critici: Lo spoofing MAC non fornisce protezione oltre il segmento locale. I dispositivi di Layer-3 riscrivono gli indirizzi MAC sorgente; la visibilità upstream dipende interamente dai controlli a livello IP. Combinato con lo scanning con decoy, lo spoofing MAC affronta l'esposizione locale che i decoy non possono—tuttavia l'uso simultaneo crea contraddizioni: decoy con indirizzi IP diversi ma indirizzi MAC identici appaiono come IP spoofing a qualsiasi analista attento.
Valutazione Onesta: Negabilità Plausibile Versus Indetectabilità
La difesa di rete contemporanea ha catalogato esaustivamente le tecniche di evasione di Nmap. La natura open-source dello strumento assicura che database di signature, modelli comportamentali e analisi accademiche coprano ogni opzione qui descritta. Nessuna singola tecnica o combinazione fornisce indetectabilità contro un monitoraggio determinato e risorse.
Ciò che rimane raggiungibile è negabilità plausibile e complessità di attribuzione:
- Gli scan con decoy forzano gli investigatori a provare quale sorgente ha condotto lo sfruttamento successivo, non semplicemente quali sorgenti hanno effettuato probe
- Le proxy chain introducono frizione giurisdizionale e organizzativa all'acquisizione dei log
- La frammentazione e la manipolazione del payload consumano tempo dell'analista e possono innescare pipeline di rilevamento meno tarate diversamente rispetto agli scan standard
- Lo spoofing MAC e la manipolazione dell'indirizzo sorgente richiedono accesso locale, spostando il focus investigativo dall'attribuzione remota alla sicurezza fisica
Il pratico onesto tratta queste tecniche come meccanismi di ritardo e complicazione, non soluzioni di evitamento e evasione. Il loro valore risiede nella sicurezza operativa per testing autorizzato—prevenendo il rilevamento prematuro che indurrebbe gli amministratori del target a alterare le configurazioni—piuttosto che nell'intrusione non autorizzata contro difensori competenti.