NBTScan: Scansione NetBIOS su Linux per il Recon Windows

NBTScan su Linux: scopri come scansionare host Windows, identificare nomi NetBIOS, domini, workgroup e informazioni utili per il network reconnaissance.
- Pubblicato il 2026-01-22
- Tempo di lettura: 5 min
NBTScan: Scansione NetBIOS per il Recon di Reti Windows #
nbtscan è il tool da riga di comando per la scansione NetBIOS di una rete Windows: interroga UDP 137 e restituisce nomi host, dominio/workgroup e ruoli (DC, file server, browser) in pochi minuti, senza dipendere da DNS. In questa guida trovi i comandi nbtscan essenziali — sweep di subnet, deep dive su un host, export per parsing — e come leggere i suffix per capire cosa hai davanti prima del follow-up SMB/AD.
Cos’è nbtscan e dove si incastra nel workflow #
nbtscan invia query NetBIOS (tipicamente su UDP 137) e restituisce nomi, user loggato e tabella nomi/servizi. Non è uno scanner generico: è un acceleratore di NetBIOS intelligence, utile per distinguere “host qualsiasi” da “host Windows interessante” (file server, DC, browser master).
Quando usarlo (in lab):
- Hai una subnet interna e vuoi nomi/ruoli senza dipendere da DNS.
- Vuoi identificare rapidamente host con File Server Service o segnali di Domain Controller per guidare i passi SMB/AD successivi.
Quando NON usarlo:
- Su segmenti non Windows (router/IoT): NetBIOS spesso non risponde.
- Per enumerare condivisioni: nbtscan non fa share scanning, è volutamente fuori scope.
Installazione e Quick Check #
sudo apt update && sudo apt install -y nbtscan
nbtscan --help | head -40Output atteso (può variare per versione):
NBTscan version 1.7.2.
Usage:
nbtscan [-v] [-d] [-e] [-l] [-t timeout] [-b bandwidth] [-r] [-q] [-s separator] [-m retransmits] (-f filename)|(<scan_range>)
...-r può richiedere privilegi elevati perché tenta il bind sulla porta locale 137: se fallisce, rilancia con sudo o accetta di perdere qualche risposta senza. L’unità del timeout (-t) varia tra build: verifica sempre con --help sul tuo sistema prima di affidarti al valore di default. Il sorgente e il changelog delle opzioni sono mantenuti sul repo ufficiale del progetto.
Sintassi Base e 3 Pattern #
Pattern 1 — Sweep subnet #
sudo nbtscan -r 10.10.10.0/24IP address NetBIOS Name Server User MAC address
-----------------------------------------------------------------------
10.10.10.10 WS-DEV <server> DEV\devuser 00:0c:29:12:34:56
10.10.10.20 FILESRV <server> <unknown> 00:0c:29:aa:bb:cc
10.10.10.25 DC01 <server> <unknown> 00:0c:29:11:22:33DC01 e FILESRV entrano subito nella shortlist per il follow-up SMB/AD. Se non ottieni risultati, prova senza -r o verifica che UDP 137 non sia filtrato nel lab.
Pattern 2 — Deep dive su un host #
nbtscan -v -h 10.10.10.25NetBIOS Name Table for Host 10.10.10.25:
Name Service Type
-----------------------------------------------
DC01 <00> UNIQUE
LAB <00> GROUP
DC01 <20> UNIQUE
LAB <1B> UNIQUE
LAB <1C> GROUP
..__MSBROWSE__.. <01> GROUP-h funziona solo insieme a -v; senza, usa solo -v e interpreta i suffix manualmente.
Pattern 3 — Target list da file #
printf "10.10.10.10\n10.10.10.20\n10.10.10.25\n" > targets.txt
nbtscan -f targets.txtUtile quando il discovery L2 è già stato fatto (es. con ARP-Scan): nbtscan diventa identificazione e priorità, non discovery puro. Assicurati che il file abbia un IP per riga senza spazi o CRLF residui.
Interpretare i Suffix NetBIOS #
I suffix più utili in un lab Windows/AD:
<00>: Workstation Service (nome macchina) o Domain Name (group)<20>: File Server Service — candidato naturale per il follow-up SMB<1B>: Domain Master Browser<1C>: Domain Controllers (group)<1D>/<1E>: Master Browser / Browser elections__MSBROWSE__<01>: segnali legati al browser service
Attenzione: <1C> identifica il gruppo Domain Controllers, non certifica da solo che quell’host specifico sia un DC — è un indicatore forte, da correlare con altri dati (porte aperte, risposta LDAP/Kerberos) prima di trattarlo come conferma.
nbtscan -v 10.10.10.25Il MAC 00-00-00-00-00-00 può comparire su Samba o sistemi non Windows: nbtscan stampa quello che riceve, non lo inventa.
Casi d’Uso Offensivi da Lab #
Selezionare target SMB senza perdere tempo #
nbtscan -v 10.10.10.0/24 | grep "<20>" | awk '{print $1}' > smb_targets.txtOttieni una lista di IP con motivo, non una subnet a caso, da passare a tool SMB come smbclient. Se l’output non è nel formato atteso, usa -s per un separatore custom e fai parsing robusto (vedi sezione successiva).
Nomi NetBIOS come base per test di poisoning (solo lab) #
I nomi macchina raccolti sono utili anche per costruire scenari controllati legati a risoluzione nomi debole in LAN — lo step naturale successivo, sempre in ambiente autorizzato, è Responder per LLMNR/NBT-NS/WPAD. In quel contesto conviene già pensare alle mitigazioni lato difesa: disabilitare LLMNR/NBNS dove non serve e abilitare SMB signing.
Parsing e Automazione #
sudo nbtscan -r -s ',' 10.10.10.0/24 > nbtscan.csv
head -5 nbtscan.csv10.10.10.10,WS-DEV,<server>,DEV\devuser,00:0c:29:12:34:56
10.10.10.20,FILESRV,<server>,<unknown>,00:0c:29:aa:bb:cc
10.10.10.25,DC01,<server>,<unknown>,00:0c:29:11:22:33Output senza header e con separatore scelto, pronto per filtri o pipeline verso strumenti successivi come CrackMapExec/NetExec. -s non si combina con la modalità dump: per debug usa -v o -d.
Errori Comuni #
Nessun risultato su una subnet Windows nota: firewall locale o segmentazione blocca UDP 137, oppure NetBIOS è disabilitato. Prova su un host singolo certo, oppure usa -f se hai già una lista da discovery L2.
Permission denied con -r: richiede il bind sulla porta locale 137, serve sudo. Se non puoi elevare i privilegi, ometti -r accettando minore affidabilità.
“Connection reset by peer” o simili su host legacy: spesso è solo un ICMP “port unreachable” riportato come errore applicativo — ignorabile se stai scansionando un range con host che non parlano NetBIOS.
Alternative e Tool Correlati #
nbtscan copre solo la NetBIOS name intelligence. Per il resto del workflow:
- Discovery L2 più affidabile: ARP-Scan o Netdiscover
- Enumerazione share e permessi SMB: smbclient
- Posture SMB/AD e triage rapido: CrackMapExec/NetExec
- Analisi del traffico generato: Wireshark
nbtscan non sostituisce uno scanner di porte né un framework SMB: resta uno strumento mirato su NetBIOS.
Hardening e Detection #
Hardening:
- Disabilita NetBIOS over TCP/IP dove non serve, soprattutto su client moderni.
- Filtra e segmenta UDP 137 / TCP 139 tra VLAN.
- Disabilita LLMNR/NBNS e configura WPAD in modo esplicito.
- Abilita SMB signing e controlla l’esposizione delle share.
Detection:
- Spike di query NetBIOS su una subnet (pattern sweep) — è un segnale evidente, non uno scan silenzioso.
- Un singolo host che interroga molti IP su UDP 137 in poco tempo.
- Correla con eventi SMB successivi: tentativi di login, enumerazioni, share listing.
Scenario Pratico: NBTScan su una Macchina HTB/PG #
Ambiente: attacker Kali (lab), subnet target 10.10.10.0/24, host interessante 10.10.10.10.
1. Sweep rapido
sudo nbtscan -r 10.10.10.0/242. Conferma ruolo (verbose)
nbtscan -v -h 10.10.10.10Cerca <20> (file server) o <1C> (Domain Controllers) nella tabella.
3. Follow-up SMB controllato
smbclient -L //10.10.10.10 -NUn elenco share (anche vuoto) o un accesso negato sono comunque informazione da riportare. Lo sweep NetBIOS genera traffico ben visibile su UDP 137: in un ambiente monitorato lo si nota facilmente, quindi in lab conviene documentare anche questo aspetto insieme al risultato tecnico.
Checklist Operativa #
- Contesto sempre autorizzato: lab/CTF/HTB/PG o VM personali.
- Verifica
nbtscan --helpprima di fidarti dell’unità di-t. - Con
-r, esegui consudo(bind sulla porta 137). - Parti da una subnet piccola, poi scala.
- Usa
-vsugli host selezionati per leggere i suffix. <20>= candidato SMB;<1C>= indicatore di gruppo DC, da correlare.- Per output parsabile, usa
-se salva su file. - “Nome trovato” non è “accesso ottenuto”: sono cose diverse.
- Se hai già discovery L2, usa
-f targets.txtinvece dello sweep completo. - Logga comandi e risultati.
Riassunto 80/20 #
| Obiettivo | Comando |
|---|---|
| Scoprire host Windows | sudo nbtscan -r 10.10.10.0/24 |
| Capire ruolo di un host | nbtscan -v -h 10.10.10.10 |
| Esportare per parsing | sudo nbtscan -r -s ',' 10.10.10.0/24 > nbtscan.csv |
| Target SMB rapidi | nbtscan -v 10.10.10.0/24 | grep '<20>' |
| Follow-up share enum | smbclient -L //10.10.10.10 -N |
Concetti Controintuitivi #
- “Se nbtscan vede un host, posso entrare” — no, dà intelligence, non accesso. Usalo per priorità e follow-up.
- "
-rè stealth" — no, è più affidabile, non invisibile: uno sweep UDP 137 a raffica è un segnale forte in detection. - “NetBIOS = sempre Windows” — spesso sì, ma anche Samba risponde. Interpreta output e contesto, non solo il nome.
- “Il MAC è sempre affidabile” — su alcuni sistemi (Samba) può arrivare nullo: è un limite della risposta ricevuta, non un errore di comando.
FAQ #
A cosa serve nbtscan? Interroga NetBIOS per ottenere nomi host, informazioni sui servizi e altri dati utili al recon di una rete Windows, senza dipendere da DNS.
Quali porte usa nbtscan? Tipicamente UDP 137. Se è filtrata o NetBIOS è disabilitato, otterrai pochi o zero risultati.
Perché -r richiede sudo?
Tenta il bind sulla porta locale 137, e su Unix il bind su porte basse richiede privilegi elevati.
Perché vedo “Connection reset by peer”? Può capitare quando l’host risponde con ICMP “port unreachable” esposto come errore applicativo — spesso ignorabile scansionando un range.
nbtscan può enumerare le condivisioni SMB? No, per design non fa share scanning: usa un tool SMB dedicato per quel passo.
-t è in secondi o millisecondi?
Dipende dalla build: verifica sempre con nbtscan --help e calibra su un host singolo prima di scansionare una subnet intera.








