Tutorials

3. NSE Nmap Scripting Engine

NSE - Nmap Scripting Engine ---

#enumeration#nmap

NSE - Nmap Scripting Engine


Introduzione a NSE

L'Nmap Scripting Engine (NSE) consente di estendere le funzionalità di Nmap attraverso script scritti in Lua. Gli script NSE possono eseguire una varietà di operazioni come la raccolta di informazioni, la rilevazione di vulnerabilità, l'autenticazione, la bruteforce e persino l'exploit di sistemi vulnerabili.


Categorie degli Script NSE

Gli script NSE sono suddivisi in diverse categorie:

  • auth → Test di autenticazione su vari protocolli.
  • broadcast → Scansioni di rete per identificare dispositivi e servizi.
  • brute → Attacchi brute-force su login di vari servizi.
  • default → Eseguiti con l'opzione -sC, forniscono informazioni generali.
  • discovery → Identificazione di host e servizi.
  • dos → Test di Denial-of-Service (DoS).
  • exploit → Sfruttamento di vulnerabilità conosciute.
  • external → Script che richiedono connessioni a risorse esterne.
  • fuzzer → Test di fuzzing per identificare vulnerabilità.
  • intrusive → Operazioni più aggressive, potenzialmente dannose.
  • malware → Rilevamento di malware su sistemi remoti.
  • safe → Operazioni non intrusive, sicure.
  • version → Rilevamento dettagliato delle versioni dei servizi.
  • vuln → Identificazione di vulnerabilità note.

Gestione degli Script NSE

Elencare gli script disponibili

bash
ls /usr/share/nmap/scripts/

Cercare uno script specifico

bash
ls /usr/share/nmap/scripts | grep "nome_script"

Ottenere informazioni su uno script

bash
nmap --script-help=nome_script

Eseguire uno script specifico

bash
nmap --script=nome_script target

Eseguire più script dello stesso tipo

bash
nmap --script=ftp* target

Eseguire una scansione con tutti gli script della categoria 'vuln'

bash
nmap --script=vuln target

Esempi Pratici

Scansione di vulnerabilità generali

bash
nmap -sV --script=vuln 192.168.1.1

Scansione di servizi FTP e rilevamento di vulnerabilità note

bash
nmap -p 21 --script=ftp-vuln-cve2010-4221 192.168.1.1

Forzare le credenziali di accesso su un servizio SSH

bash
nmap --script=ssh-brute -p 22 192.168.1.1

Enumerazione delle cartelle condivise SMB

bash
nmap --script=smb-enum-shares -p 445 192.168.1.1

Enumerazione di utenti su Active Directory (LDAP)

bash
nmap --script=ldap-search -p 389 192.168.1.1

Scrivere uno Script NSE Personalizzato

Un tipico script NSE è composto da:

1. Regole di esecuzione: Quando lo script deve essere eseguito. 2. Funzioni di azione: Cosa fa lo script. 3. Output: Come vengono presentati i risultati.

Esempio di script personalizzato (scan-http-title.nse)

lua
local http = require "http"
local stdnse = require "stdnse"

portrule = function(host, port) return port.protocol == "tcp" and port.state == "open" end

action = function(host, port) local response = http.get(host, port, "/") if response and response.body then return stdnse.format_output(true, "Titolo della pagina: " .. response.body:match("<title>(.-)</title>")) end return "Nessun titolo trovato." end

Salvataggio ed esecuzione dello script

1. Salvare il file nella cartella degli script di Nmap: /usr/share/nmap/scripts/scan-http-title.nse 2. Aggiornare il database degli script:
bash
nmap --script-updatedb
3. Eseguire lo script personalizzato:
bash
nmap --script=scan-http-title 192.168.1.1

Conclusione

L'Nmap Scripting Engine è uno strumento estremamente potente per ampliare le funzionalità di Nmap. Permette di automatizzare test di sicurezza, rilevare vulnerabilità e personalizzare scansioni avanzate. La conoscenza del linguaggio Lua è utile per scrivere script personalizzati, migliorando le capacità di rilevamento e analisi in attività di penetration testing.