Ricognizione di rete e rilevamento degli host
Metodologie di Ricognizione Passiva vs. Attiva
La ricognizione di rete inizia con una decisione critica: quanto visibili si vuole essere? La ricognizione passiva raccoglie informazioni senza mai toccare l'infrastruttura del target. Si estraggono dati da registri pubblici, registri DNS, log di trasparenza dei certificati e social media. Questa fase non lascia alcuna impronta nei log del target ed è ideale quando la stealth è fondamentale: engagement di red team, intelligence competitiva o definizione dello scope pre-engagement.
La ricognizione attiva interagisce direttamente con i sistemi target: sonda le porte, invia pacchetti craftati e misura le risposte. Fornisce dati precisi in tempo reale ma genera rumore rilevabile. I log dei firewall, gli allarmi IDS e i playbook SOC sono progettati per catturare queste sonde.
| Scenario | Approccio Preferito | Razionale |
|---|---|---|
| Red team esterno, assumed breach sconosciuto | Prima passiva, poi attiva | Costruire la lista dei target senza rilevazione precoce |
| Audit di rete interna, accesso autorizzato | Attiva, a pieno regime | Time-boxed, permesso concesso, massimizzare la copertura |
| Bug bounty, ambiente di produzione | Prevalentemente passiva, attiva selettiva | Minimizzare il disruption dei servizi live |
| Incident response, infrastruttura threat actor | Attiva, aggressiva | La velocità supera la stealth; l'avversario è già consapevole |
L'operatore maturo tratta queste come fasi complementari. L'intelligence passiva restringe lo scope attivo; i risultati attivi validano e arricchiscono i risultati passivi.
Il Nmap Scripting Engine: Enumerazione Precisa dei Servizi
Nmap trascende la scansione di porte base attraverso il suo Scripting Engine (NSE). Con oltre 600 script nella distribuzione di default, NSE trasforma Nmap da scanner di porte in piattaforma di ricognizione application-aware. Gli script vengono eseguiti durante la fase di scansione, sondando i servizi scoperti per accuratezza della versione, indicatori di vulnerabilità e configuration drift.
I template di timing controllano il compromesso tra velocità e rilevabilità:
| Template | Flag | Comportamento | Caso d'Uso |
|---|---|---|---|
| Paranoid | -T0 |
Scansione seriale, timeout di 5 minuti tra le sonde | Evasione IDS, singolo target, stealth estrema |
| Sneaky | -T1 |
Intervalli di 15 secondi | Scansioni lente, evasive |
| Polite | -T2 |
Ritardi di 400ms, riduce la banda | Evitare di perturbare target fragili |
| Normal | -T3 |
Default, bilanciato | Engagement standard |
| Aggressive | -T4 |
Timeout di 1 secondo, sonde parallele | Reti veloci, infrastruttura affidabile |
| Insane | -T5 |
Timeout di 500ms, parallelismo massimo | Reti locali, tolleranza di banda |
Le tecniche di evasione diventano necessarie quando le scansioni standard attivano le difese:
# Pacchetti frammentati per evadere il semplice pattern matching
sudo nmap -f --mtu 24 target.example.com
# Scansione con decoy: apparire come proveniente da multiple IP
sudo nmap -D RND:10,ME,8.8.8.8 target.example.com
# Spoof della porta sorgente (sfruttare la fiducia nelle risposte DNS)
sudo nmap --source-port 53 target.example.com
# Combinare con NSE per sondaggio approfondito dei servizi
sudo nmap -sS -T2 -f -D RND:5,ME --script=banner,vulners \
--script-args vulners.cvssbase=min(7.0) \
-p- -oA target_full_scan target.example.com
I formati di output per il chaining degli strumenti contano enormemente nei flussi di lavoro multi-tool:
-oN(Normal): Leggibile dall'uomo, grep-friendly-oX(XML): Parsato da Metasploit, Dradis, pipeline custom-oG(Grepable): Una linea per host, ideale per estrazione conawk-oA(All): Genera tutti e tre i formati simultaneamente
Convertire XML in JSON actionable per l'automazione a valle:
nmap-parse-output nmap-scan.xml host-ports-protocol > targets.json
Masscan: Scansione di Porte su Scala Internet
Quando lo scope comprende interi ASN o range IP a livello nazionale, Masscan sostituisce Nmap. La sua architettura asincrona invia sonde alla massima velocità del kernel senza attendere le risposte. Una singola istanza di Masscan può saturare un link 10Gbps, scansionando l'intero spazio IPv4 per una singola porta in meno di cinque minuti.
L'insight architetturale: Masscan reimplementa il proprio stack TCP/IP in user space. Bypassa il connection tracking del kernel, eliminando i colli di bottiglia. Questa stessa caratteristica richiede una configurazione attenta dell'interfaccia:
# Scansiona 10,000 IP casuali su tutte le porte a 100,000 pacchetti/secondo
sudo masscan 0.0.0.0/0 -p0-65535 \
--max-rate 100000 \
--randomize-hosts \
--banners \
--range 192.0.2.0/24 \
-oL masscan-results.txt
Critico: evitare gli alert di abuso dell'ISP. La velocità di Masscan attiva il rilevamento automatico degli abusi. Strategie di mitigazione:
- Enforcement del rate:
--max-rateal di sotto della soglia del provider (tipicamente 10,000 pps per circuiti commerciali) - File di esclusione: Mantenere
--excludefilecon honeypot noti, range delle forze dell'ordine e infrastruttura critica - Distribuzione temporale: Usare
--sharde--seedper scansioni distribuite su multiple fonti e finestre temporali - Banner con cautela:
--bannersrichiede TCP stateful; abilitare solo dopo che la scoperta iniziale delle porte ha ristretto lo scope
Per una ricognizione responsabile su larga scala, preferire lo sharding alla velocità:
# Dividi la scansione su 10 istanze, ognuna gestisce uno shard
sudo masscan 192.0.2.0/24 -p443 --shard 1/10 --seed 2024
sudo masscan 192.0.2.0/24 -p443 --shard 2/10 --seed 2024
# ... etc
Integrazione OSINT: theHarvester, Shodan e Maltego
La ricognizione moderna unisce la raccolta OSINT automatizzata con la scansione tecnica.
theHarvester aggrega indirizzi email, sottodomini, host e nomi di dipendenti da motori di ricerca, database di certificati e piattaforme social:
theHarvester -d subsidiary.example.com -b all -f harvester_output
# Fonti: Bing, Google, DuckDuckGo, Baidu, LinkedIn, CRT.sh, Shodan
Shodan fornisce fingerprint di servizio storici e attuali su scala Internet. Il suo linguaggio di query (apache city:"Singapore" ssl:"Example Corp") identifica asset esposti senza scansione diretta. La CLI di Shodan si integra nell'automazione:
shodan search --fields ip_str,port,org,ssl.cert.subject.cn \
"org:'Example Subsidiary LLC' apache"
Maltego visualizza queste relazioni. Gli hub di transform collegano i record DNS ai netblock, i registrar WHOIS ai domini associati, e gli indirizzi email ai dati di breach. Il valore è emergente: un singolo pivot di dominio rivela pattern infrastrutturali—provider di hosting, uso di CDN, autorità di certificazione—che predicono l'architettura del target.
Flusso di lavoro OSINT efficace: theHarvester scopre i sottodomini; Shodan conferma i servizi live con versioni vulnerabili; Maltego mappa le relazioni organizzative per prioritizzare quale sussidiaria o acquisizione presenti il punto di ingresso più debole.
Diagrammazione della Attack Surface e Prioritizzazione dei Target
L'output grezzo della scansione richiede sintesi. La diagrammazione della attack surface trasforma le liste IP in intelligence strategica.
La metodologia di scoperta progressiva costruisce la comprensione strato per strato:
- Confine organizzativo: WHOIS, registri aziendali, filing SEC
- Allocazione di rete: query RIPE/ARIN mappano ASN a range IP
- Fingerprint infrastrutturale: CDN, provider cloud, geografia dell'hosting
- Conferma host live: ICMP, TCP SYN, sonde application-layer
- Profondità del servizio: Enumerazione versione, test credenziali di default, analisi configurazione
Esempio Pratico: Ricognizione Contro Subsidiary Corp
Target: subsidiary.example.com, divisione recentemente acquisita di Example Corp, si rumoreggia abbia integrato una nuova infrastruttura cloud senza revisione della sicurezza.
Fase 1: Fondamento passivo
# WHOIS rivela il registrant e i name server
whois subsidiary.example.com | grep -E "Registrant|Name Server|Creation Date"
# Mapping ASN traccia upstream
whois -h whois.radb.net '!gAS64500' | grep ^route
# I log di Certificate Transparency espongono host pre-produzione
curl -s "https://crt.sh/?q=%.subsidiary.example.com&output=json" | \
jq -r '.[].name_value' | sort -u
Output: 47 sottodomini unici, inclusi dev.subsidiary.example.com, mail.subsidiary.example.com e legacy-vpn.subsidiary.example.com.
Fase 2: Conferma attiva con stealth
# Nmap con timing paranoico contro la scoperta ad alto valore
sudo nmap -sS -T1 -Pn -p22,80,443,8080,8443 \
-f --source-port 53 \
--script=ssl-cert,http-title,ssh-hostkey \
-iL live-hosts.txt -oA phase2_stealth
Fase 3: Conferma su scala Internet con Masscan
# Masscan sul /22 annunciato a rate conservativo
sudo masscan 203.0.113.0/22 -p0-65535 \
--max-rate 5000 \
--banners \
--excludefile exclude-reserved.txt \
-oL masscan_phase3.txt
Masscan identifica 312 host live, 14 con porte SSH non standard, 3 con Telnet esposto.
Fase 4: Correlazione OSINT
# Dati storici di Shodan per l'ASN
shodan stats --facets port,product,os "net:203.0.113.0/22"
# Transform Maltego: dominio → netblock → organizzazioni correlate
# Riveli hosting condiviso con entità sanitaria non correlata
Fase 5: Matrice di prioritizzazione
| Target | Servizi | Indicatori di Rischio | Priorità |
|---|---|---|---|
dev.subsidiary.example.com |
80,443,3306,6379 | MySQL e Redis esposti, nessun WAF | P1 |
legacy-vpn.subsidiary.example.com |
443,22 | Versione OpenSSL end-of-life | P1 |
mail.subsidiary.example.com |
25,587,993 | Configurazione standard, patch recenti | P3 |
| Vicino di hosting condiviso | 80,443 | Dati sanitari, rischio compliance | P2 (laterale) |
L'esposizione del database nell'ambiente di sviluppo e lo stack TLS obsoleto della VPN diventano candidati per l'accesso iniziale. Il vicino di hosting condiviso, scoperto attraverso il pivoting ASN, presenta un percorso di movimento laterale amplificato dalla compliance se la compromissione diretta si rivela difficile.
Questa progressione strutturata—dall'intelligence passiva attraverso la conferma attiva controllata fino alla selezione dei target prioritizzati—garantisce che ogni fase successiva del penetration testing operi contro infrastruttura validata e compresa, piuttosto che ipotesi.