Categorie di Script NSE Essenziali e Script Rilevanti per la Sicurezza

L'Architettura del NSE Scripting Engine

Il Nmap Scripting Engine (NSE) trasforma Nmap da un port scanner in una piattaforma di valutazione completa con oltre 600 script organizzati in categorie che ne dettano il comportamento, il profilo di sicurezza e il caso d'uso previsto. Comprendere queste categorie non è meramente accademico—una classificazione errata può causare crash di sistemi in produzione, attivare sistemi di rilevamento delle intrusioni o esporre gli operatori a responsabilità legali. Il portfolio di script che si assembla deve essere allineato con il proprio ambito di autorizzazione, la criticità dell'ambiente target e i vincoli temporali della propria valutazione.

Il sistema di categorie opera su molteplici assi: safe, intrusive, vul, exploit, auth, broadcast, brute, discovery, external, fuzzer, intrusive, malware, safe, version e vuln. Un singolo script può riportare più tag di categoria, e l'interazione tra questi tag determina sia il comportamento di esecuzione predefinito che l'esposizione al rischio.

Scansione delle Vulnerabilità: La Categoria vuln e le Sue Limitazioni

La categoria vuln contiene script che identificano debolezze di sicurezza note attraverso analisi di banner, fingerprinting di versione e test attivi limitati. Questi script rappresentano la categoria più sensibile dal punto di vista legale poiché testano condizioni di difetto specifiche che possono costituire accesso non autorizzato in varie giurisdizioni.

Struttura della categoria ed esecuzione:

nmap --script vuln -p 80,443 target.example.com

Questo esegue tutti i script taggati vuln, inclusi http-vuln-cve2017-5638 (Apache Struts), ssl-heartbleed e smb-vuln-ms17-010. Tuttavia, il divario di correlazione NVD rappresenta una sfida operativa critica. Gli script di vulnerabilità NSE tipicamente accumulano un ritardo di 30–90 giorni rispetto alla pubblicazione del National Vulnerability Database a causa del ciclo di rilascio di Nmap e dello sforzo ingegneristico richiesto per sviluppare metodi di rilevamento affidabili e non distruttivi. Gli script possono fare riferimento a CVE che sono state superate da vettori di attacco modificati, o perdere completamente vulnerabilità dove non esiste una firma di rilevamento stabile.

La gestione dei falsi positivi richiede una sistematica classificazione:

| Indicatore | Azione | |-----------|--------| | Rilevamento basato su versione senza prova di sfruttamento attivo | Segnalare per verifica manuale con searchsploit o proof-of-concept personalizzato | | Mancata corrispondenza del banner di servizio (es. patch backport) | Correlare con le date di ssh-hostkey o ssl-cert; verificare i bollettini di sicurezza del vendor | | Affermazioni di vulnerabilità concatenate | Validare ogni anello in modo indipendente; gli script NSE raramente testano catene di attacco complete |

Lo script ssl-enum-ciphers esemplifica sia la potenza che la limitazione degli script della categoria vulnerabilità. Enumera le suite di cifre supportate e segnala le configurazioni deprecate senza eseguire un exploit completo di handshake TLS:

nmap --script ssl-enum-ciphers -p 443 target.example.com --script-args tls.servername=target.example.com

Tuttavia, non può rilevare difetti specifici dell'implementazione come la CVE-2014-0160 di OpenSSL (Heartbleed) senza lo script complementare ssl-heartbleed, che sonda attivamente la vulnerabile pattern di disclosure della memoria.

Autenticazione e Brute-Force: Le Categorie auth e brute

Gli script nelle categorie auth e brute testano la robustezza delle credenziali attraverso decine di protocolli. Questi comportano il rischio legale più elevato e richiedono una meticolosa disciplina operativa.

L'implementazione del rate limiting previene interruzioni del servizio e rilevamento:

nmap --script ssh-brute --script-args brute.mode=creds,brute.credfile=./controlled_creds.txt,brute.delay=3s -p 22 target.example.com

L'argomento brute.delay impone una spaziatura tra i tentativi, mentre brute.mode=creds limita il test alle coppie username/password che si controllano—essenziale per le valutazioni autorizzate. La modalità predefinita brute.mode=pass itera le password contro username scoperti o forniti e non deve mai essere eseguita senza esplicita autorizzazione scritta che specifichi elenchi di credenziali accettabili.

La gestione degli elenchi di credenziali richiede una verifica crittografica:

# Verificare l'integrità del wordlist prima del deployment
sha256sum /usr/share/seclists/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt
# Mantenere log di catena di custodia
echo "$(date -Iseconds) $(whoami) $(sha256sum ./custom_creds.txt)" >> ~/.nmap_credential_audit.log

Le considerazioni legali variano per giurisdizione ma richiedono universalmente: autorizzazione esplicita corrispondente all'ambito target; rate limiting che eviti condizioni di denial-of-service; e logging che dimostri il dovere professionale di diligenza. Gli script http-form-brute e snmp-brute hanno causato accuse penali quando deployati contro infrastrutture senza autorizzazione documentata.

Raccolta di Informazioni e Ricognizione

Le categorie discovery, version e gli script di default forniscono intelligence fondamentale senza il profilo di rischio degli script di vulnerabilità o brute-force. Questi rappresentano il portfolio standard di ricognizione.

Banner grabbing ed enumerazione dei servizi:

Lo script http-enum esegue fingerprinting di directory e applicazioni comparabile a strumenti specializzati come Gobuster o Nikto:

nmap --script http-enum -p 80,8080,8443 --script-args http-enum.displayall=1 target.example.com

Questo script sonda interfacce amministrative comuni, backup di configurazione (backup.zip, web.config.bak) e percorsi specifici per applicazione. L'argomento http-enum.displayall=1 rivela risultati negativi che aiutano a confermare l'assenza rispetto a un rilevamento fallito.

Script di estrazione specifici per servizio:

| Script | Target | Dati Critici | |--------|--------|--------------| | mongodb-databases | MongoDB ≥2.6 | Nomi dei database, dimensioni, conteggi delle collezioni senza autenticazione | | redis-info | Redis | Configurazione, client connessi, utilizzo memoria, statistiche keyspace | | smb-os-discovery | SMB/CIFS | Versione del sistema operativo, dominio/workgroup, nome computer, ora server | | dns-zone-transfer | DNS | File di zona completi quando AXFR è malconfigurato |

Lo script dns-zone-transfer richiede particolare attenzione allo scope creep—può attraversare sottodomini delegati al di fuori del proprio range autorizzato:

nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=example.com,dns-zone-transfer.server=ns1.example.com -p 53

Validare sempre i dati di zona ottenuti rispetto ai propri confini di autorizzazione prima di ulteriori test degli host scoperti.

Gli script di estrazione di metadati come http-git e http-svn-enum rivelano strutture di repository, cronologie di commit e identità di sviluppatori che frequentemente espongono dettagli di infrastruttura interna o credenziali incorporate.

Rilevamento di Malware e Backdoor

La categoria malware identifica indicatori di compromissione attraverso anomalie di fingerprinting di servizio e firme note di Remote Access Trojan (RAT). Questi script operano su rilevamento comportamentale e basato su firme piuttosto che analisi statica di file.

Rilevamento di firme note:

Script come auth-spoof identificano server SMTP con configurazioni di open relay comunemente sfruttate da infrastrutture di spam, mentre http-malware-host verifica pattern di URL malevoli noti. Lo script irc-unrealircd-backdoor rileva la backdoor storica in UnrealIRCd 3.2.8.1 testando una specifica firma di esecuzione comandi.

Identificazione di anomalie nel fingerprinting dei servizi:

Piuttosto che confrontare firme di malware note, anomalie service-fingerprints—come server SSH con stringhe di versione non standard, servizi HTTP su porte tradizionalmente non-HTTP, o servizi Telnet con pattern di banner insoliti—possono indicare compromissione. Lo script banner con sondaggio aggressivo di versione assiste questa analisi:

nmap -sV --version-intensity 9 --script banner -p 1-65535 target.example.com

Incrociare risultati anomali con dati storici di shodan o censys per distinguere configurazioni non standard intenzionali da modifiche post-compromissione.

Scoperta di Rete e Broadcast su Larga Scala

Gli script broadcast e multicast abilitano la scoperta di infrastrutture senza targeting di host individuali, critici per valutazioni di reti estese e identificazione di shadow IT.

Enumerazione specifica per protocollo:

# Scoperta di community string SNMP e traversal MIB
nmap --script snmp-brute,snmp-sysdescr,snmp-interfaces,snmp-netstat -p 161 --script-args snmp-brute.communitiesdb=./community_strings.txt 192.168.0.0/24

# Mapping di endpoint MSRPC e enumerazione named pipe
nmap --script msrpc-enum,rpc-grind -p 135,593 target.example.com

# Scoperta DHCP per identificazione di server non autorizzati
nmap --script broadcast-dhcp-discover -e eth0

Enumerazione dell'infrastruttura DNS:

Oltre a dns-zone-transfer, lo script dns-service-discovery identifica annunci mDNS/Bonjour che rivelano pubblicità di servizi interni, e dns-srv-enum localizza server Kerberos, LDAP e SIP attraverso query di record SRV.

Considerazioni di scala: Gli script broadcast generano traffico di rete significativo. La categoria broadcast eseguita contro reti /16 ha causato esaurimento dei buffer degli switch. Utilizzare --script-timeout e limitare l'esecuzione concorrente:

nmap --script broadcast-* --script-timeout 30s --max-parallelism 10 192.168.0.0/16

Categorie Safe, Intrusive e Distruttive: Flusso di Valutazione

Gli script NSE riportano classificazioni di sicurezza che determinano il comportamento di esecuzione predefinito. Comprendere i confini precisi previene impatti accidentali sul target.

| Categoria | Garanzia Comportamentale | Esempi | Inclusione Predefinita | |-----------|-------------------------|--------|----------------------| | safe | Nessun impatto sul target oltre la normale connessione di rete; nessuno sfruttamento, nessun esaurimento di risorse | banner, ssh-hostkey, dns-zone-transfer | Sì (con -sC o --script default) | | intrusive | Può causare crash di servizi vulnerabili, consumare risorse significative, o registrare attività vistosa | http-sql-injection, smb-double-pulsar-backdoor, script vuln | No | | exploit | Tentativi di privilege escalation o esecuzione di codice; intrinsecamente modificante per il target | http-shellshock con payload di esecuzione, smb-exec | No | | fuzzer | Invia dati malformati per scatenare crash; esplicitamente distruttivo | dns-fuzz, http-form-fuzzer | No |

Il flusso di valutazione --script-help deve precedere ogni esecuzione di script:

# Passo 1: Recuperare la documentazione completa dello script
nmap --script-help ssl-enum-ciphers,http-enum

# Passo 2: Ispezionare il codice sorgente dello script per comprendere il comportamento esatto
cat /usr/share/nmap/scripts/ssl-enum-ciphers.nse | head -80

# Passo 3: Validare la classificazione di sicurezza e l'appartenenza alla categoria
nmap --script-help ssl-enum-ciphers | grep -A5 "Categories:"

# Passo 4: Tracciare l'esecuzione per il debug di comportamenti inaspettati
nmap --script http-enum --script-trace -p 80 target.example.com 2>&1 | tee http-enum-trace.log

L'argomento --script-trace visualizza tutto il traffico di rete generato dagli script, essenziale per capire perché uno script fallisce o genera carico inaspettato sul target. Combinare con --packet-trace per l'analisi completa del traffico.

Portfolio collaudato per scenari comuni:

| Tipo di Valutazione | Selezione di Script | Razionale di Sicurezza | |---------------------|-------------------|------------------------| | Ricognizione esterna | banner,dns-zone-transfer,http-enum,ssl-enum-ciphers,whois-ip | Tutti safe o safe-con-riserve; nessun rischio di sfruttamento | | Audit di rete interna | safe,discovery,snmp-sysdescr,smb-os-discovery | Categoria safe di default più accesso SNMP autorizzato | | Validazione vulnerabilità | Categoria vuln con revisione manuale --script-help; correlare con searchsploit | Esplicitamente intrusive; richiede corrispondenza dell'ambito di autorizzazione | | Risposta agli incidenti | malware,safe più script IOC specifici come identificati | Bilancia profondità di rilevamento contro preservazione delle prove |

L'uso responsabile richiede che ogni selezione di script sia giustificabile sia verso colleghi tecnici che autorità legali. Documentare la propria razionale, verificare le classificazioni, e non assumere mai che gli script di "scansione" siano intrinsecamente non distruttivi.