La NetBios Null Session è un meccanismo che consente ad un utente non autenticato di ottenere informazioni su un host remoto.
Nei sistemi Windows (Nt,2000,XP e 2003), buona parte dei servizi locali sono eseguiti con l'account SYSTEM utilizzato anche per varie operazioni critiche di sistema.
Proprio per la criticita' delle operazioni che va a svolgere, tale account ha privilegi praticamente illimitati e non richiede alcuna password, proprio per evitare che venga utilizzato per effettuare il LogIn .


Qualora l'utente SYSTEM avesse bisogno di accedere ad altre macchine in rete, avra' necessita' di reperire alcune informazioni, come le condivisioni disponibili e gli utenti. Non essendo un reale account con user&pass, si connettera' utilizzando appunto una sessione nulla, funzione implementata nel sistema di networking di windows proprio per questo scopo.

Le sessioni NetBios nulle permettono quindi di sfruttare le funzionalita’ del protocollo SMB (Server Message Block) senza stabilire preventivamente una trust relationship.
Sfortunatamente anche un eventuale aggressore puo' connettersi utilizzando una Sessione Nulla. :-)


Riassumendo, con una sessione nulla possiamo ottenere:

  • Lista di gruppi e utenti

  • Lista di hosts collegati

  • Lista delle condivisioni

  • SID (Security Identifiers) di utenti e host


Le sessioni NetBios NULL sono abilitate di default su Windows 2000 e NT.
Windows XP e 2003 permettono di recuperare l’elenco degli share, ma non degli accounts.


Un tool per effettuare un test sulle sessioni nulle NetBios e’ HUNT.

Parte dell’NT Forensic Toolkit realizzato da Foundstone, rende molto semplice realizzare l’elenco di utenti e shares su un host windows.

Un esempio di output del programma:

C:\tools>hunt \\<IP Address>


share = IPC$ - Remote IPC


share = c -


share = ADMIN$ - Remote Admin


share = C$ - Default share


User = Administrator, , , Built-in account for administering the computer/domain


Admin is <NetBIOS Name>\Administrator


User = Guest, , , Built-in account for guest access to the computer/domain


User = IUSR_<NetBIOS Name>, Internet Guest Account, Built-in account for anonymous access to Internet Information Services, Built-in account for anonymous access to Internet Information Services


User = IWAM_<NetBIOS Name>, Internet Guest Account, Built-in account for anonymous access to Internet Information Services out of process applications, Built-in account for anonymous access to Internet Information Services out of process applications


User = victim_user Victim Name, ,


Altro tool a mio avviso molto utile e’ winfo ( http://ntsecurity.nu/toolbox/winfo/ )

Si tratta di una utility da riga di commando che recupera dall’host la maggior parte delle informazioni ottenibili da una sessione nulla, complete le trust relationships.
Un esempio di output:


C:\>winfo xxx.xxx.xxx.xxx –n
winfo 1.5 - copyright (c) 1999-2001, Arne Vidstrom
- http://www.ntsecurity.nu/toolbox/winfo/
Trying to establish null session...
Null session established.

USER ACCOUNTS:
* Administrator
(This account is the built-in administrator account)
* Guest
(This account is the built-in guest account)
* victim_user

WORKSTATION TRUST ACCOUNTS:


INTERDOMAIN TRUST ACCOUNTS:


SERVER TRUST ACCOUNTS:


SHARES:


* IPC$


* drivec$


(ecc…)


Utilita’ delle sessioni nulle per un eventuale attacker
Senza avere accesso alla macchina e’ possibile conoscere gli shares e gli eventuali utenti che possono accedervi.


Un eventuale malintenzionato puo’ in quel caso avere un elenco di account sui quali concentrarsi: una volta reperite le credenziali di uno degli account elencati potra’ avere accesso allo share che lo interessa.

Fortunatamente da Windows XP in poi questa 'perdita di informazioni' e' stata in parte limitata rendendo di default non possibile l'enumerazione degli utenti.


Disabilitare le sessione NetBios nulle
I controller di dominio per comunicare richiedono sessioni nulle.
Perciò, se state lavorando in un dominio di rete, potete limitare la quantità di informazioni fornite, ma non eliminarle del tutto.


N.B.: applicare limitazioni sulle sessioni nulle nei domain controller e su altri server specifici può compromettere alcune normali operazioni di rete.
E' consigliabile quindi effettuare questa configurazione solo se la macchina in questione e' particolarmente esposta a rischi. Tutte le altre macchine dovrebbero essere protette da un firewall configurato per bloccare NetBIOS e CIFS.


Di seguito le procedure per la limitazione delle sessioni nulle sui vari sistemi operativi:

Windows XP Professional (valido anche per Windows 2000 e XP Home)

1. Modificare la seguente chiave di registro:
HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous=2

2. Riavviare il sistema


Windows Server 2003

1. Aprire Administrative Tools --> Local Security Policy --> Local Policies --> Security Options. Verificare che le seguenti policy siano abilitate:
Network Access: Do not allow anonymous enumeration of SAM accounts: Enabled (Default)
Network Access: Do not allow anonymous enumeration of SAM accounts and shares: Enabled

La stessa operazione puo’ essere effettuata modificando le seguenti chiavi nel registro di configurazione:
HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymous=1 (Disabilita l’enumerazione degli share)
HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymousSAM=1 (Impostazione di default: non permette l’enumerazione degli accounts)

2.Riavviare il sistema


Windows 2000

1. Aprire --> Administrative Tools --> Local Security Settings --> Local Policies --> Security Options


2. Selezionare "Additional restrictions of anonymous connections" nel pannello Policy sulla destra


3. Dal menu "Local policy setting", selezionare: "No access without explicit anonymous permissions"


4. Premere OK


5. L’equivalente modifica dal registro di configurazione: HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymous=2


6. Riavviare il sistema.


Windows NT 4.0 (Service Pack 3 o superiore)



1. Modificare la chiave di registro:
HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous=1

2. Riavviare il sistema