Red Hot Cyber
La cybersecurity è condivisione. Riconosci il rischio, combattilo, condividi le tue esperienze ed incentiva gli altri a fare meglio di te.
Cerca

LLMNR Poisoning su Microsoft Active Directory: Analisi e Contromisure Efficaci

Alessandro Molinari : 13 Settembre 2023 08:41

Questo articolo fa seguito ai tre precedenti nei quali abbiamo creato un laboratorio AD. Vi invito a prenderne visione prima di proseguire, se ancora non l’aveste fatto poiché dopo un introduzione teorica passeremo alla dimostrazione pratica di questa prima sezione concernente gli attacchi che possiamo mettere in pratica su AD.

Dopo la parte pratica indicheremo come sia possibile mitigare l’eventualità di tali attacchi, la cosa da notare é che non sfruttiamo delle falle nel sistema ma delle caratteristiche intrinseche di Windows AD.

L’attacco:

Un attacco LLMNR (Link-Local Multicast Name Resolution) poisoning è una forma di attacco “on path” (precedentemente conosciuto come Man In the Middle e rinominato per motivi di partitá dei sessi) che mira a compromettere la risoluzione dei nomi di host su una rete locale.

Vuoi diventare un Ethical Hacker?
Non perdere i nostri corsi e scrivi subito su WhatsApp al numero
375 593 1011  per richiedere informazioni dicendo che hai trovato il numero sulle pagine di Red Hot Cyber

Supporta RHC attraverso:


Ti piacciono gli articoli di Red Hot Cyber? Non aspettare oltre, iscriviti alla newsletter settimanale per non perdere nessun articolo.

L’LLMNR è un protocollo utilizzato da sistemi Windows per risolvere i nomi di host quando il servizio DNS (Domain Name System) non è disponibile o non riesce a fornire una risposta. Questo protocollo opera tramite richieste di multicast inviate su una rete locale.

Ecco come funziona un attacco LLMNR poisoning:

  1. Un dispositivo malevolo si inserisce nella rete locale e monitora il traffico LLMNR sulla rete, se stiamo conducendo un pentest, é utile lanciare lo strumento che useremo “responder” al mattino appena la maggior parte delle persone che lavorano nell’azienda che ci ha ingaggiati o subito dopo pranzo, quando le perse tornano al lavoro dopo la pausa, al fine di avere più traffico a disposizione da poter intercettare .
  2. Quando un dispositivo inizia a cercare di risolvere un nome di host utilizzando LLMNR, il dispositivo malevolo risponde con informazioni falsificate, affermando di essere il sistema cercato.
  3. Il dispositivo che ha effettuato la richiesta di risoluzione del nome riceve quindi una risposta falsificata ed inizia a comunicare con il dispositivo malevolo anziché con il dispositivo legittimo inviando il proprio IP , il nome utente e l’NTLM hash della password dell’utente.
  4. Tale hash (dipendendo dalla complessità della password) può essere craccato con uno strumento come Hashcat od addiritura utilizzato cosi com’è con un attacco “pass the hash”

Le conseguenze di un attacco LLMNR poisoning possono variare a seconda degli obiettivi dell’attaccante. Tuttavia, in generale, ciò può consentire all’attaccante di intercettare o manipolare il traffico di rete, compiere attacchi di tipo “man-in-the-middle” (MITM) e ottenere accesso non autorizzato a risorse o informazioni di rete sensibili.

Bene questa é la teoria, ma rimbocchiamoci ora le maniche ( o tiriamoci su il cappuccio della nostra “hoodie” 🙂) ,e passiamo alla pratica sul laboratorio creato in precedenza.

Dalla sezione “macchine virtuali” del nostro lab avviamo tutte e 4 le macchine:

e connettiamoci tramite SSH con la macchina kali, controllando successivamente che le atre macchine siano visibili sulla nostre rete:

controlliamo la nostra interfaccia di rete con il comando IP A ( eth0 ):

ed avviamo responder, per cercare di intercettare il traffico di rete che ci interessa:

responder -I eth0 -dwv

senza preoccuparci troppo, per ora. delle impostazioni che possiamo consultare con -help / man.

Ora come vediamo qui sopra , vediamo tutti i servers che RESPONDER ha attivato e che saranno “in the middle” tra noi e la vittima, RESPONDER sta inoltre ascoltando che avvenga un “evento” cioé la richiesta di risoluzione di una risorsa di rete , noi simuleremo la ricerca di una share di rete che non esiste, in modo che, quando il server risponderà in maniera negativa , tale richiesta sarà inoltrata a tutta la rete, e noi vi risponderemo spacciandoci per la risorsa richiesta.

Su una delle macchine windows cerchiamo una risorsa inesistente, una cosa che può capitare a qualsiasi utente per vari motivi (qui per semplicità ai fini della dimostrazione punto all IP della macchina KALI):

qui avremo in “agguato” il server SMB creato da responder che intercetterà il traffico dell’utente “sesposito”:

IP

username

NTLMv2 hash

da qui in avanti abbiamo due scelte: cercare di indovinare una password contro una lista di password deboli o molto usate (nel caso in cui sia in vigore un password policy debole potremmo avere successo) od usare l’hash cosi com’é in un attacco “pass the hash”.

Vediamo tramite il tool “hashcat” come si potrebbe fare nel primo caso.

Copiamo il nostro hash e lo inseriamo in un file di testo:

HASH CRACKING CON HASHCAT

prima di tutto settiamo HASHCAT sul tipo di hash da crakkare , tra poco spiegherò meglio di cosa si tratta:

hashcat -m 5600 ntlmhash.txt wordlist

5600 corrisponde al tipo di hash NTLMv2 , tramite il comando —help e filtrando (la lista come vedrete è lunghissima, basta digitare “hashcat —help” per vederla tutta) con “grep” , otteniamo tale numero di modulo:

dopodiché ci servira una “wordlist” una lista di parole contro cui hashcat cercherà di crakkare il nostro hash, qui useremo la famosa “rockyou” 140 mega circa , milioni e milioni di password , ma vi soni moltissime liste a disposizione contenenti svariati miliardi di password,

https://github.com/danielmiessler/SecLists

ne troverete moltissime e di diverso tipo, ovviamente più la password è complessa e più sarà lungo il processo anche in diretta relazione alla CPU o meglio GPU che useremo.

ho copiato per comodità sulla mia home e decompresso la lista :

ora possiamo procedere :

hashcat -m 5600 ntlmhash.txt rockyou.txt

e…non funzionerà , perchè la vm a nostra disposizione non è abbastanza potente (in pratica stiamo chiedendo troppa potenza di calcolo rispetto a quella allocata da Azure per noi); fortunatamente possiamo fare tutto sulla nostra macchina locale! andiamo allora:

installiamo hashcat sulla macchina FISICA che stiamo usando (un mac per me) , scarichiamo la lista “rockyou ” e copiamo ed incolliamo il nostro hash in un file di testo:

e da qui la sintassi é la stessa:

ed ecco la password dell’utente “sesposito” :

So che starete pensando che nella vita reale, in un pentesting vero, la password sarebbe sicuramente piu complessa, ed é molto probabile ma in un pentest vero avreste probabilmente a disposizione un hardware per il cracking molto ma molto più potente una o meglio varie GPU (molto piu efficienti delle CPU) che lavorando insieme possono utilizzare
La velocità di un sistema di cracking basato su GPU può variare notevolmente in base a fattori come i modelli di GPU, il numero di GPU, l’ottimizzazione del software, la VRAM, la frequenza di clock e la complessità degli algoritmi e delle password. Le GPU di fascia alta possono eseguire miliardi o trilioni di operazioni al secondo. Più GPU, software ben ottimizzato e una maggiore VRAM generalmente si traducono in velocità di cracking più elevate. Tuttavia, la velocità effettiva dipende dalla configurazione specifica e dalla complessità del compito, con valori che vanno da migliaia a milioni di hash o tentativi di password al secondo. Hardware veloci ed ottimizzati in meno di un’ora possono quindi esaurire molti miliardi di passwords, e generalmente gli esseri umani non hanno un grande inventiva o sono semplicemente pigri. Inoltre conviene spesso provare combinazioni di password relative al nome dell’azienda magari con qualche numero del tipo : “Nomeazienda1*” o “Nomeazienda10!”.

MITIGAZIONE

Per difendersi dagli attacchi di LLMNR (Link-Local Multicast Name Resolution) Poisoning, è importante adottare diverse misure di sicurezza:

  1. Disabilitare LLMNR: La soluzione più efficace è disabilitare completamente LLMNR nelle impostazioni del sistema operativo dei tuoi dispositivi. Questo impedisce agli aggressori di sfruttare questo protocollo.
  2. Utilizza DNS: Assicurati che la tua rete utilizzi un server DNS affidabile e configura tutti i dispositivi per utilizzare esclusivamente il server DNS specificato. In questo modo, i dispositivi non cercheranno di risolvere i nomi tramite LLMNR.
  3. Implementa DHCP sicuro: Utilizza il protocollo DHCP (Dynamic Host Configuration Protocol) in modo sicuro per assegnare indirizzi IP ai dispositivi nella tua rete. Questo impedirà ai dispositivi di utilizzare indirizzi IP autoassegnati, che possono essere utilizzati per gli attacchi LLMNR Poisoning.
  4. Aggiorna e patcha: Mantieni sempre aggiornati i tuoi sistemi operativi, le applicazioni e i dispositivi. Le patch e gli aggiornamenti spesso correggono le vulnerabilità note.
  5. Firewall: Configura un firewall per bloccare il traffico LLMNR in ingresso e in uscita, a meno che non sia strettamente necessario. Questo può impedire agli aggressori di sfruttare il protocollo.
  6. Monitoraggio del traffico: Implementa un sistema di monitoraggio del traffico di rete per individuare attività sospette o anomalie che potrebbero indicare un attacco LLMNR Poisoning in corso.
  7. Educa gli utenti: Fornisci formazione agli utenti sulla sicurezza delle reti. Insegnagli a riconoscere i potenziali segni di attacchi e come segnalare comportamenti sospetti.
  8. Utilizza VPN: Utilizza una VPN (Virtual Private Network) per crittografare il traffico di rete tra i dispositivi nella tua rete. Questo può proteggere il traffico da attacchi di intercettazione.
  9. Segmenta la rete: Suddividi la tua rete in segmenti isolati in base alle funzioni e ai livelli di sicurezza necessari. Questo può limitare la diffusione di attacchi in caso di compromissione di un segmento.
  10. Regole di accesso (NAC): Configura regole di accesso per controllare chi può accedere ai tuoi dispositivi e alle risorse di rete. Limita l’accesso solo a utenti autorizzati.

Nel prossimo articolo vedremo come utilizzare l’hash senza doverlo crackare.

Th3R3dP1ll
Direttore di Crociera per 6 mesi all'anno, parla Italiano, Inglese, Tedesco, Francese, Spagnolo, Portoghese, Russo e sta attualmente studiando Giapponese (quest'ultima senza grandi risultati... :) ). Detiene Comptia A+ , Network+ , Security+ Pentest+ ed eJPT e sta studiando per eCCPT e PNPT. Nel tempo libero fa sport e legge/ascolta libri dai 60 ai 120 minuti al giorno. Sostiene che con grandi poteri arrivino grandi responsabilitá, come quelle di educare chi ha difficoltà a navigare il mondo digitale ed eventualmente difenderlo/a dai “pirati” e dalle entità che danneggiano il pianeta e la libertà delle persone. Sostiene inoltre che il futuro naturale della vita biologica sia la fusione ed integrazione con il digitale, transizione che tra l'altro è già iniziata con il movimento del transumanesimo del quale é sostenitore.