
Ottiene credenziali in chiaro di Active Directory se ti trovi sulla rete interna ma al di fuori dell'ambiente AD.
Rompete il ghiaccio con quel simpatico ambiente Active Directory laggiù. Quando siete freddi e soli a fissare una festa di Active Directory senza possedere neppure una singola credenziale AD per unirvi al divertimento, questo strumento fa per voi.
Automatizza sequenzialmente 5 attacchi interni di rete contro Active Directory per fornirvi credenziali in chiaro. Usate l'opzione --auto per acquisire automaticamente privilegi di amministratore di dominio dopo aver ottenuto un punto d'appoggio.
I seguenti attacchi vengono eseguiti sequenzialmente fino al quarto e quinto attacco, che vengono eseguiti in parallelo e indefinitamente.
Tutti gli hash NetNTLMv2 catturati nelle tecniche sottostanti vengono automaticamente craccati con JohnTheRipper e una lista di password specifica per AD di lunghezza 1 milione.
Eseguirà i 5 attacchi di rete sopra menzionati in ordine. Il reverse bruteforce e il caricamento di file SCF di solito sono piuttosto rapidi, poi si ferma sull'attacco 3, Responder.py, per 10 minuti per impostazione predefinita. Trascorso quel tempo, o il tempo specificato dall'utente, si passerà agli ultimi due attacchi, che vengono eseguiti in parallelo e indefinitamente.
Se vengono scoperti host che consentono sessioni SMB nulle, icebreaker userà ridenum per eseguire il RID cycling per nomi utente validi. Se utilizzate l'opzione "-d <somedomain.com>", theHarvester estrarrà eventuali indirizzi email dal sito specificato. Tutti i nomi utente email compatibili con AD verranno aggiunti all'elenco dei nomi utente per il reverse bruteforce. Icebreaker utilizza la libreria asyncio per eseguire il reverse bruteforce usando lo strumento Linux rpcclient con 10 worker asincroni.
L'attacco di caricamento SCF sfrutta i file Shell Command File (SCF) contro condivisioni di rete anonimamente scrivibili. Gli SCF sono file che possono eseguire azioni di base come mostrare il desktop o aprire una finestra di Esplora file. Hanno la curiosa proprietà di permettere di impostare l'icona del file su un percorso di rete. Se impostate questo percorso di rete sulla vostra macchina, gli utenti che aprono la condivisione file in Esplora file invieranno automaticamente il loro hash di password NetNTLMv2 a voi. Icebreaker usa lo script Nmap smb-enum-shares per trovare condivisioni anonimamente scrivibili, quindi genera e carica automaticamente l'SCF payloadato.
L'attacco 3 usa Responder.py per avvelenare i protocolli multicast/broadcast LLMNR, NBT-NS e mDNS. Quando gli utenti navigano verso un percorso di rete inesistente, Responder dirà loro che la vostra macchina attaccante è il percorso corretto. L'hash della password NetNTLMv2 dell'utente è ora vostro. Responder catturerà gli hash inviati tramite l'attacco SCF, ma l'attacco successivo è generalmente più utile per catturare gli hash SCF perché ha il potenziale di utilizzare l'hash per l'esecuzione di comandi.
Il relay SMB è un vecchio attacco di rete in cui gli aggressori si posizionano tra il client SMB e il server SMB. Ciò consente agli aggressori di catturare e inoltrare hash NetNTLMv2 a host che hanno SMBv1 abilitato e la firma SMB disabilitata. ntlmrelayx.py della libreria Impacket viene utilizzato per il relay mentre Responder.py viene utilizzato per il man-in-the-middle delle connessioni SMB. Se l'utente client SMB ha diritti amministrativi su qualsiasi host della rete che ha la firma SMB disabilitata, ntlmrelayx.py eseguirà comandi su quell'host.
Una volta che ntlmrelayx inoltra un hash catturato, eseguirà un comando powershell codificato in base64 che prima aggiunge un utente amministrativo (icebreaker:P@ssword123456) poi esegue una versione offuscata e bypassante AMSI di Mimikatz, seguita da una versione offuscata e bypassante AMSI di Invoke-PowerDump. L'output di Invoke-Mimikatz e Invoke-PowerDump viene analizzato per password in chiaro o hash NTLM e viene consegnato all'utente nell'output standard e anche nel file found-passwords.txt. Gli hash NTLM, a differenza degli hash NetNTLMv2, possono essere usati proprio come una password in chiaro per l'autenticazione ad altri host AD. L'unica avvertenza è che da quando è stata applicata la patch KB2871997 di Microsoft, solo l'account amministratore locale builtin RID 500 può essere utilizzato negli attacchi pass-the-hash.
L'attacco finale usa lo strumento mitm6 per eseguire un attacco man-in-the-middle DNS IPv6 contro l'intera rete. Questo costringe gli host della rete a utilizzare la macchina dell'attaccante come server DNS. Una volta impostato come server DNS, l'attaccante serve file di configurazione proxy WPAD malevoli alle vittime e raccoglie i loro hash NetNTLMv2. Questi hash vengono inoltrati usando ntlmrelayx.py per ulteriori possibilità di esecuzione di codice da remoto. Una cosa da notare è che questo attacco è incline a causare problemi sulla rete. Spesso causa errori di certificato sui computer client nel browser. Probabilmente rallenterà anche la rete. La bellezza di questo attacco, tuttavia, è che gli ambienti Windows AD sono vulnerabili per impostazione predefinita.
Se icebreaker viene eseguito con il flag --auto [tmux/xterm], al raggiungimento dell'attacco 4 icebreaker eseguirà Empire e DeathStar in una sessione tmux o finestre xterm. Con questa opzione, invece di eseguire mimikatz sull'host remoto a cui abbiamo inoltrato l'hash, icebreaker aggiungerà un utente amministrativo e poi eseguirà il codice di lancio powershell di Empire per ottenere un agente sulla macchina remota. DeathStar userà questo agente per automatizzare il processo di ottenimento dell'amministratore di dominio. Empire e DeathStar non si chiuderanno quando uscite da icebreaker.
Il cracking delle password viene eseguito con JohnTheRipper e una wordlist personalizzata. L'origine di questa lista è da merged.txt che è ogni password dal repository GitHub SecLists combinata. La wordlist è stata potata e non include password con: tutto minuscolo, tutto maiuscolo, tutti simboli, meno di 7 caratteri, più di 32 caratteri. Queste regole sono conformi ai requisiti predefiniti delle password di Active Directory e hanno portato l'elenco da 20 milioni a poco più di 1 milione, il che rende il cracking delle password estremamente veloce.
Come root:
./setup.sh
pipenv install --three
pipenv shell
Potreste ricevere un errore dopo aver eseguito pipenv install. Aggiornate a una versione di pipenv superiore alla 11.9.0 se è il caso. Potete fare git clone di pipenv da github e semplicemente apt-get remove python-pipenv && python setup.py install dalla cartella.
Ancora alcuni bug da risolvere con l'immagine docker, quindi è probabile che dia errore, ma è quasi pronta. Dal repository Git:
docker build --rm -t danmcinerney/icebreaker .
docker run danmcinery/icebreaker
Oppure aggiungete i comandi che normalmente aggiungereste a icebreaker (non dimenticate di mappare i volumi):
docker run -v $(pwd)/logs:/icebreaker/logs -v $(pwd)/hashes:/icebreaker/hashes -v $(pwd)/icebreaker-scan.xml:/icebreaker/icebreaker-scan.xml -v $(pwd)/submodules:/icebreaker/submodules -e PYTHONUNBUFFERED=0 danmcinerney/icebreaker -x icebreaker-scan.xml
**Nota: Dovrete mappare le porte per i listener con il flag -p <host>:<container> di docker.
Eseguire come root. Leggere da un elenco separato da nuove righe di indirizzi IP (singoli IP o intervalli CIDR) e invece di far aggiungere un utente ed eseguire mimikatz sulla vittima dopo il relay dell'hash, far eseguire un comando personalizzato sulla macchina vittima. In questo esempio gli stiamo dando un comando simile a quello che Empire potrebbe darci per un one-liner powershell launcher.
./icebreaker -l targets.txt -c "powershell -nop -w hidden -exec bypass -enc WwFk..."
Leggere da un hostlist, dire a Responder di usare l'interfaccia eth0 invece dell'interfaccia gateway predefinita, far eseguire Responder per 30 minuti invece dei soliti 10 minuti, ed eseguire i comandi post-relay predefiniti di ntlmrelayx per scaricare il SAM dal server vittima.
./icebreaker -l targets.txt -i eth0 -t 30 -c default
Usare un file XML di output di Nmap, saltare tutti e cinque gli attacchi più non craccare automaticamente gli hash, e usare una lista di password personalizzata per l'attacco reverse bruteforce (notate che poiché questo esempio salta l'attacco 1 tramite '-s rid', la lista di password specificata non verrà nemmeno utilizzata; questo è solo un esempio)
./icebreaker.py -x nmapscan.xml -s rid,scf,llmnr,relay,dns,crack -p /home/user/password-list.txt
Uso "fire-and-forget": inserire il file dei target, estrarre i nomi utente email da companydomain.com da aggiungere all'attacco reverse bruteforce, saltare l'avvelenamento DNS IPv6 di mitm6, ed eseguire Empire e DeathStar in finestre tmux o xterm una volta iniziato l'attacco 4 per ottenere l'amministratore di dominio automaticamente. L'obiettivo di questo utilizzo è lanciare il comando il lunedì alle 9:00 e poi fare una breve pausa ininterrotta fino al venerdì alle 16:30, momento in cui torniamo a una shell di amministratore di dominio che ci aspetta. Saltiamo l'attacco 5 (mitm6) perché a volte può causare problemi di rete e non vogliamo clienti arrabbiati che interrompono la nostra pausa tanto sudata.
./icebreaker.py -l targets.txt -d companydomain.com -s dns --auto [tmux/xterm]