
Audit di una rete locale con Nmap e Wireshark È uno dei modi più efficaci per capire cosa sta realmente accadendo nella tua infrastruttura, rilevare servizi sovraesposti e vedere quali informazioni potrebbe vedere un aggressore se si infiltrasse nel tuo segmento di rete. Si tratta di due strumenti consolidati, ampiamente utilizzati sia dagli amministratori che dai penetration tester. Se combinati efficacemente, consentono di passare da una semplice istantanea delle porte aperte a un'analisi dettagliata di ogni pacchetto in transito.
In questo articolo riuniremo Tutto ciò che ti serve per impostare un audit completo Da una rete locale: dai concetti di scansione delle porte, flag TCP e tipi di scansione in Nmap, al filtraggio avanzato con Wireshark per rilevare queste scansioni e giocare al gatto e al topo con tecniche di elusione. Vedrai anche esempi di ambienti didattici con macchine virtuali, tipiche esercitazioni di laboratorio (ping sweep, scansione SYN, scansione NULL, MITM con Bettercap) e diversi strumenti aggiuntivi che completano Nmap e Wireshark.
Che cos'è una scansione delle porte e perché è importante in un audit?
Una scansione delle porte Si tratta di un processo automatizzato che invia pacchetti a tutte o ad alcune delle 65.535 porte TCP/UDP su uno o più computer per vedere quali rispondono e come. Da queste risposte, possiamo dedurre quali servizi sono attivi, quale sistema operativo potrebbe essere in esecuzione e persino se sono presenti firewall che filtrano i dati.
Per un aggressore, una buona scansione delle porte è il modo per individuare i “punti di ingresso” e i punti deboliQuesto può rivelare: servizi non configurati correttamente, versioni obsolete con vulnerabilità note o protocolli aperti come Telnet, FTP o HTTP. Per un amministratore o un revisore, la stessa scansione può identificare cosa è esposto, cosa deve essere disattivato e cosa richiede una protezione migliore.
È importante essere chiari sul fatto che Non è una buona idea aprire più porte del necessarioMolti router, server o applicazioni possono lasciare le porte aperte "semplicemente perché", o perché qualcuno le ha aperte per un test e nessuno le ha mai più chiuse. Scansionare la propria rete con Nmap aiuta a ottenere un inventario accurato di ciò che è accessibile dall'interno o dall'esterno.
Oltre all'inventario, è importante Utilizzare firewall e sistemi di rilevamento delle intrusioni che filtrano gli accessi indesiderati e registrano i tentativi di connessione sospetti. E, naturalmente, mantengono aggiornati sistemi, router e servizi per ridurre l'impatto di eventuali porte che, per motivi aziendali, è assolutamente necessario tenere aperte.

Che cos'è Nmap e cosa può fare su una rete locale?
Nmap (mappatore di rete) È un'utilità gratuita e open source progettata per rilevare i dispositivi in rete, analizzare quali porte sono aperte e quali servizi sono in ascolto in background. Funziona tramite riga di comando su Linux, Windows e macOS e dispone di un'interfaccia grafica opzionale chiamata Zenmap.
Con Nmap puoi rilevare gli host sia sulla rete locale che su Internet: computer, router, switch, dispositivi IoT, server, ecc. Oltre a elencare quali porte sono aperte o filtrate, può tentare di identificare il sistema operativo, la versione dei servizi e avviare script di sicurezza (NSE) che automatizzano i test di penetrazione.
Tra le sue caratteristiche più rilevanti c'è il supporto per diversi tipi di scansioniSupporta TCP (SYN, connect, FIN, NULL, Xmas…), UDP, ICMP e alcuni metodi più avanzati che tentano di eludere determinati firewall. Permette inoltre di lavorare con IPv4 e IPv6 e di scansionare singoli host, intervalli IP o intere subnet.
Uno dei punti di forza di Nmap è che Permette di scansionare grandi volumi di obiettivi. In modo piuttosto efficiente. Può controllare il livello di aggressività, la velocità di trasmissione dei pacchetti e il grado di parallelismo. Questo è utile sia per audit pianificati di reti aziendali che per simulazioni in laboratori didattici.
Stati delle porte e tipi di scansione in Nmap
Quando Nmap termina una scansioneClassifica ogni porto in uno dei vari stati che è importante comprendere, perché la loro interpretazione è fondamentale per l'audit:
- aprireC'è un'applicazione che accetta connessioni su quella porta (TCP o UDP). Questa è un'evidente superficie di attacco.
- chiusoLa porta risponde, ma nessun servizio è in ascolto. L'host è attivo, ma quella porta specifica non fornisce traffico. Idealmente, dovrebbe essere bloccata da un firewall.
- filtratoUn firewall o un filtro impedisce a Nmap di determinare se è aperto o chiuso (nessuna risposta chiara).
- aperto|filtrato: Non è possibile sapere se è aperto o filtrato, cosa tipica di alcune scansioni UDP o TCP speciali (FIN, NULL, Xmas).
- chiuso|filtrato: stato ambiguo utilizzato in tecniche molto specifiche come la scansione IP inattiva.
In un audit reale, di solito iniziamo con scansioni rapide delle porte più comuni per ottenere una prima foto:
nmap 192.168.1.2
Se vogliamo andare fino in fondo, è possibile scansione forzata di tutte le 65.535 porte da un host:
nmap -p 1-65535 192.168.1.2
È anche molto comune limitare l'intervallo a porte o blocchi specifici che ci interessano. Ad esempio, da 20 a 200:
nmap -p 20-200 192.168.1.2
Oltre allo stato della porta, Nmap ti consente di fare rilevamento della versione del sistema operativo e del servizio con un singolo comando, a costo di essere un po' più rumoroso:
nmap -A -v 192.168.1.2
Questo rilevamento del sistema operativo non è perfetto, ma di solito è complessivamente abbastanza accurato. Nel mondo Linux, individuare il modello esatto e la versione specifica è tutta un'altra storia.
Flag TCP, tipi di scansione e come rilevarli
Nmap sfrutta i diversi flag TCP (SYN, ACK, FIN, RST, PSH, URG…) per eseguire scansioni più o meno furtive. Nelle sfide di tipo CTF, ad esempio, è comune utilizzare una scansione SYN "furtiva". In ambienti difensivi, è utile riconoscere questi schemi nei log o in Wireshark.
Per comprendere le scansioni, è necessario avere chiaro il Handshake TCP classicoSYN → SYN/ACK → ACK. Da lì, è possibile riprodurre varianti che inviano o meno determinati flag e interrompono la connessione con un RESET invece di terminare il ciclo normalmente.
Molte spiegazioni assegnano valori numerici ai flag TCP in modo che possano essere sommati e filtrati. Ad esempio:
| Testa | valore |
|---|---|
| SYN | 1 |
| SYN / ACK | 2 |
| ACK | 4 |
| DATA | 8 |
| END | 16 |
| RESET | 32 |
Con questo metodo di codifica è possibile, ad esempio, utilizzare il campo in Wireshark tcp.completeness e filtrare in base alla somma dei flag che appaiono in un flusso specifico per individuare i modelli di scansione.
Handshake TCP completo (scansione di connessione)
In una scansione “completa” con Nmap (quella che è conosciuta come Scansione di connessione TCP, opzione -sT), il client stabilisce l'intera connessione con il server: SYN → SYN/ACK → ACK e, dopo aver scambiato un po' di traffico, la chiude con un RESET o un normale FIN.
Se catturi questa sequenza in Wireshark e sommi i valori dei flag secondo la tabella sopra (ad esempio SYN + SYN/ACK + ACK + RESET), puoi filtrare con tcp.completezza = 39 per individuare connessioni che sono state stabilite e completamente interrotte.
Questo tipo di scansione è il più facile da rilevare, poiché Lascia una traccia nei registri di servizio. (web, FTP, Telnet, IMAP, ecc.) e nei file di registro di sistema. In un tipico laboratorio, se rsyslog è in esecuzione, vedrai i messaggi in /var/log/syslog, /var/log/auth.log, /var/log/daemon.log e servizi simili quando Nmap completa l'handshake a servizi come in.fingerd, inetd, telnetd, ftpd, dovecot o postfix/smtpd.
Scansione “stealth” SYN
El Scansione SYN o scansione “stealth” (opzione -sSQuesto è uno dei metodi più comunemente utilizzati perché è veloce e, in linea di principio, meno evidente. In questo caso, Nmap invia un segnale SYN. Se la porta è aperta, il server risponde con un SYN/ACK e, invece di rispondere con un ACK per completare la connessione, lo scanner si disconnette con un RESET.
Dal punto di vista di Wireshark, la sequenza tipica di una porta aperta sarà SYN → SYN/ACK → RST, la cui somma di flag secondo lo schema precedente sarebbe (1 + 2 + 32) = 35. Filtrando per quel valore di tcp.completeness È possibile individuare connessioni che sembrano scansioni SYN senza un handshake completo.
A livello di registro dell'applicazione, questo metodo è più discreto perché La maggior parte dei servizi non riesce a registrare una sessioneTuttavia, se il sistema dispone di regole firewall che registrano i pacchetti SYN di avvio della connessione, verranno visualizzate le voci relative ai tentativi di connessione.
Scansione NULL e altre scansioni "strane"
Un'altra tecnica classica è la Scansione NULL (opzione -sN), in cui Nmap invia pacchetti TCP senza flag attivi. Anche se può sembrare strano, alcuni stack TCP reagiscono in modo diverso alle porte aperte o chiuse, consentendo a Nmap di dedurre lo stato della porta.
In una scansione NULL, Se la porta è chiusa, solitamente restituisce un RST.Se invece è aperto o filtrato, potrebbe non rispondere. Per rilevarlo con Wireshark, puoi usare i filtri su... tcp.flags e lasciare solo i segmenti con tutti i flag impostati su zero.
Sulla stessa linea, abbiamo scansioni come la Scansione di Natale (FIN + PSH + URG), la scansione FIN o combinazioni simili, che tentano di sfruttare le sfumature dello standard TCP o implementazioni specifiche per scoprire le porte senza seguire i tipici schemi di handshake.
Controllo delle dimensioni della finestra come suggerimento Nmap
Un'altra caratteristica che può essere utilizzata per rilevare le scansioni è la Dimensione finestra TCPLa dimensione della finestra è la quantità di dati che un host dichiara di poter ricevere. Alcune versioni di Nmap utilizzano valori fissi per alcuni tipi di scansione.
Ad esempio, è comune in una scansione SYN Nmap standard trovare I pacchetti SYN hanno una dimensione della finestra di 1024 byte, mentre nelle connessioni “normali” di un sistema specifico vengono utilizzati valori diversi (ad esempio 64240 o 65535, a seconda del sistema operativo e della configurazione).
In Wireshark potresti applicare un filtro come tcp.window_size == 1024 combinato con determinati flag per individuare schemi sospetti. Come aggressore o penetration tester, Nmap consente di modificare questo comportamento con parametri come --win per evitare di lasciare una firma così evidente.

Rilevamento e analisi delle scansioni Wireshark e delle porte "insolite"
Wireshark È l'analizzatore di protocollo per eccellenza Nel mondo della sicurezza di rete, cattura i pacchetti, li decodifica strato per strato (Ethernet, IP, TCP/UDP, HTTP, TLS, ecc.) e consente di applicare filtri molto precisi per trattenere solo il traffico che si è interessati a esaminare.
Un modo molto pratico per rilevare le scansioni è filtrare per attività in porti insolitiSe si dispone di un server web legittimo, è normale vedere traffico verso le porte 80 o 443. Ciò che non è così normale è vedere molti tentativi verso porte casuali come 1234, 31337 o 4444.
In una rete aziendale, è possibile stabilire un elenco di Porte “sospette” associate a framework dannosi o strumenti di attacco utilizzati di frequente, e filtrare in Wireshark in base a tali porte per verificare la presenza di sonde o connessioni inaspettate. Questa operazione può essere supportata da fogli di calcolo pubblici che compilano le porte associate a malware e framework di exploit.
Da un punto di vista difensivo, Wireshark consente anche Guarda come si comportano i diversi tipi di scansioni Nmap che ti lanci nel tuo laboratorio, per imparare a riconoscerli: numero di pacchetti per porta, flag, tempi tra i pacchetti, risposte del sistema, ecc.
Combinando filtri come tcp.completeness, tcp.flagsIl numero di porte diverse toccate in un breve lasso di tempo e le dimensioni delle finestre consentono di creare regole manuali o di trarre ispirazione per le regole IDS/IPS.
Laboratorio tipico: scansione con Nmap e acquisizione con Wireshark
In molti contesti educativi, un ambiente di rete virtualizzato con VirtualBox per eseguire scansioni e analisi del traffico senza rischi. Un esempio tipico include tre macchine GNU/Linux su una rete interna: interno1 (192.168.100.11), interno2 (192.168.100.22) y observador (192.168.100.33), ciascuno con un indirizzo MAC fisso.
I servizi che vengono lasciati in esecuzione di default su queste macchine sono solitamente numerosi: Apache 2, Telnet, SSH, FTP, Finger, MySQL, SMTP (Postfix), POP3 e IMAP (Dovecot), DNS (BIND)… ideale per uno scanner come Nmap avere un buon numero di porte da trovare.
Il primo passo in quel laboratorio è solitamente Abilita rsyslog su internal1 per registrare tutto ciò che accade: si attiva con systemctl enable rsyslog y systemctl start rsyslogPertanto, i file di registro iniziano a riempirsi /var/log come syslog, auth.log, daemon.log o kernel.log.
Dalla macchina osservatrice, un ping sweep Utilizzare Nmap per scoprire quali dispositivi sono attivi sulla rete 192.168.100.0/24:
nmap -sP 192.168.100.0/24
Una volta identificati gli host attivi (escluso l'osservatore stesso), vengono eseguite scansioni del tipo Connessione TCP contro ciascuno di essi per vedere quali porte sono aperte e quali servizi sono in esecuzione:
nmap -sT -v -T4 192.168.100.11
nmap -sT -v -T4 192.168.100.22
Quindi si ripete contro internal1 aggiungendo sistema operativo e rilevamento della versione di servizi:
nmap -sT -O -sV -T4 192.168.100.11
Successivamente vengono consultati i log di interno1, ad esempio con tail -200 /var/log/syslog | lesscontrollare come sono state registrate queste scansioni? nei vari demoni e servizi e apprezzare la traccia lasciata da una scansione di connessione TCP.
Confronto tra scansioni rumorose e "furtive" con firewall e log
Per vedere la differenza di traccia tra le varie tecniche Nmap, nello stesso laboratorio un regola iptables su internal1 che registra ogni tentativo di avviare una connessione TCP (pacchetti SYN con stato NEW) con un prefisso facilmente riconoscibile:
iptables -A INPUT -i enp0s3 -p tcp \
--tcp-flags SYN SYN -m state --state NEW \
-j LOG --log-prefix "INICIO CONEXION:"
Mentre il file è monitorato /var/log/syslog con tail -fDall'osservatore vengono testate tre diverse scansioni rispetto a internal1:
- Scansione della connessione TCP (
-sT). Genera voci “START CONNECTION:” e, inoltre, registra i servizi che completano l’handshake. - Scansione SYN (
-sS). Produce voci "START CONNECTION:", ma la maggior parte dei servizi non registra una sessione perché la connessione non è stata completata. - scansione NULL (
-sNNon solleva il flag SYN, quindi non corrisponde alla regola del firewall e Il prefisso non appare nei registri, rendendolo più discreto agli occhi di quella specifica politica.
Questo confronto ci aiuta a capire che Non tutti i tipi di scansione vengono rilevati utilizzando le stesse regole. E che, come difensori, dobbiamo andare oltre il "solo SYN" se vogliamo vedere più tentativi camuffati.
Dalla scansione al MITM: Bettercap, Wireshark e servizi crittografati
In una seconda parte della pratica, la macchina osservatrice viene utilizzata per Eseguire attacchi di avvelenamento ARP e MITM con Bettercap e poi analizzare il traffico catturato con Wireshark o con il modulo stesso net.sniff di Bettercap. L'obiettivo è confrontare l'esposizione di protocolli trasparenti (Telnet, HTTP) rispetto ad alternative crittografate (SSH, HTTPS).
Prima di questo, il supporto SSL è abilitato in Apache su interno2, generando un certificato autofirmato con make-ssl-cert a /etc/apache2/ssl/apache.pem, configurando default-ssl.conf per utilizzare quel file come certificato e chiave, attivare il modulo SSL con a2enmod ssl e il sito SSL predefinito con a2ensite default-ssle riavviare Apache.
Il primo controllo viene eseguito tshark in osservatore In ascolto sull'interfaccia di rete interna, e nel frattempo, le sessioni Telnet e HTTP vengono aperte da internal1 a internal2. Poiché non vi è alcun attacco man-in-the-middle, il traffico scorre direttamente tra internal1 e internal2 e tshark non vede quasi nulla di questo flusso. Questo dimostra che, senza ulteriori accorgimenti, un terzo host sulla stessa rete non sempre vede il traffico esterno.
Se si esaminano le tabelle ARP per internal1 e internal2 (arp -n), si osserva come ognuno associ l'IP dell'altro al suo MAC reale, già osservatore solo del suo IP e del suo MAC, senza interferenze.
Avvelenamento ARP e cattura del traffico
Il passo successivo è avviare Bettercap in modalità osservatore e attivare i moduli net.recon y net.probe Per rilevare i dispositivi sulla rete e verificare che 192.168.100.11, 192.168.100.22 e 192.168.100.33 siano visualizzati con i rispettivi indirizzi MAC. Facoltativamente, è possibile abilitare l'interfaccia web di Bettercap, sebbene non sia essenziale ai fini pratici.
Parallelamente viene rilanciato tshark in osservatore per vedere quali frame ARP vengono visualizzati. Gli obiettivi del modulo sono configurati dalla console Bettercap. arp.spoof (interno1 e interno2) e l'attacco viene attivato con:
set arp.spoof.internal true
set arp.spoof.targets 192.168.100.11,192.168.100.22
arp.spoof on
A quel punto, Bettercap inizia a inviare risposte ARP false assicurando a ciascuna macchina che l'indirizzo IP dell'altro host (interno1 o interno2) corrisponda all'indirizzo MAC dell'osservatore. Tenendo conto del Domanda 1I messaggi ARP inviati sono essenzialmente risposte "gratuite" (non richieste) che aggiornano la cache ARP delle vittime. Di conseguenza, nelle tabelle ARP di internal1 e internal2, l'indirizzo IP dell'altro computer inizia a puntare all'indirizzo MAC 08:00:27:33:33:33 (quello dell'osservatore), trasformandolo di fatto in un "man-in-the-middle".
Confronto tra Telnet, SSH, HTTP e HTTPS in MITM
Con MITM attivo, il modulo viene utilizzato net.sniff da Bettercap Per scaricare il traffico tra internal1 e internal2 in file .pcap diversi a seconda del servizio testato, escludendo ARP con un filtro:
set net.sniff.filter "not arp"
set net.sniff.output /tmp/telnet.pcap
net.sniff on
Nel frattempo, da internal1 viene aperta una sessione Telnet verso internal2 con nome utente "username" e password "username", vengono elencati i file e la sessione termina. Il file /tmp/telnet.pcap Viene poi analizzato con Wireshark, ed è banale vedere credenziali e comandi in testo normale seguendo il flusso TCP corrispondente.
L'esperimento viene ripetuto utilizzando SSH, salvando in /tmp/ssh.pcapE questa volta, sebbene sia possibile osservare l'instaurazione della connessione SSH e lo scambio di chiavi, I dati relativi a nome utente e password sono crittografati.In Wireshark non è possibile visualizzare le credenziali, ma solo i frame crittografati.
Lo stesso vale per HTTP rispetto a HTTPS: con net.sniff che esegue il dumping su /tmp/http.pcap, una navigazione con Lynx o un browser grafico verso http://interno2.ssi.net Lascia le richieste e le risposte HTTP completamente leggibili (intestazioni, cookie, parametri, ecc.). Tuttavia, se ripetuto con https://interno2.ssi.net e analizzando /tmp/https.pcap, si osserva il Handshake TLS (ClientHello, ServerHello, certificati, ecc.) e quindi solo il traffico crittografato etichettato come TLS 1.3.
Con il filtro in mano, puoi focalizzare il tuo sguardo su tls All'interno di Wireshark, segui il flusso TCP corrispondente e verifica che, sebbene tutto il traffico passi attraverso l'attaccante, non ha accesso al contenuto in chiaro a meno che non riesca in qualche modo a violare o abusare della crittografia.
Personalizzazione, Nmap NSE e integrazione con altre soluzioni
Uno dei motivi per cui Nmap rimane così potente oggi è il suo alto grado di personalizzazione e automazioneA livello di riga di comando, quasi tutto è configurabile: porte specifiche, timeout, numero di tentativi, grado di parallelismo, livello di stealth (profili da T0 a T5), frammentazione dei pacchetti, IP sorgente e MAC falsificati, ecc.
Inoltre c'è il Motore di scripting Nmap (NSE)Questo ecosistema di script consente di andare ben oltre il semplice controllo di "porta aperta/chiusa". Sono disponibili script per attacchi brute-force su SSH o FTP, per rilevare configurazioni non sicure, per verificare vulnerabilità note, per ottenere banner dettagliati, per testare server web, Samba, DNS e altro ancora.
Ad esempio, per tentare un attacco brute-force sulla porta SSH 22 di un host specifico utilizzando due dizionari, è possibile utilizzare:
nmap -p 22 --script ssh-brute --script-args userdb=usuarios.txt,passdb=claves.txt,ssh-brute.timeout=4s 99.99.99.99
Allo stesso modo, per verificare se un server FTP consente l'accesso anonimo o per forzare le credenziali, esistono script come ftp-anon o ftp-brute. Questi vengono lanciati incatenati a un -sV -sC o individualmente, a seconda dei casi.
Un altro vantaggio è questo Nmap si integra molto bene con altri strumenti. I risultati possono essere salvati in più formati (testo normale, XML, grep-friendly, combinato con -oA) e quindi alimentare elaborazioni successive, dashboard o persino strumenti come Metasploit, sistemi di inventario o motori di correlazione degli eventi.
A livello aziendale, l'implementazione di Nmap come parte di un programma di sicurezza implica la definizione politiche di utilizzo, pianificazione delle scansioni, analisi dei risultati e aggiornamenti continuiNon è molto utile eseguire una scansione una volta e poi metterla in un cassetto: bisogna ripetere, confrontare e agire in base ai risultati.
Nel complesso, l'utilizzo di Nmap e Wireshark per l'audit di una rete locale, integrato da altri strumenti, fornisce un quadro molto completo del comportamento dei servizi, di ciò che è effettivamente esposto e di quali informazioni un aggressore potrebbe vedere o manipolare, chiarendo perché vale la pena investire nella crittografia (SSH, HTTPS), chiudere le porte non necessarie, una buona configurazione del firewall e un monitoraggio costante dei log e del traffico di rete.