
3 strumenti che lavorano insieme per semplificare la ricognizione delle condivisioni file Windows
Uno dei compiti più dispendiosi in termini di tempo per un red teamer è addentrarsi nei file system e nelle condivisioni, cercando di identificare informazioni potenzialmente sensibili. SMBCrunch permette a un red teamer di identificare rapidamente le Windows File Shares in una rete, esegue un elenco ricorsivo delle directory delle condivisioni fornite e può persino scaricare un file dalla condivisione remota se sembra un obiettivo interessante.
Ci sono tre (3) diversi strumenti che lavorano insieme. Leggi tutte e tre le sezioni qui sotto per capire come funzionano insieme.
Dato un file (o un file gnmap), SMBHunt trova tutte le Windows File Shares associate ai server forniti (se viene fornito un file gnmap, cerca i server con la porta 445 aperta). Se non vengono fornite credenziali per eseguire il controllo, verificherà la presenza di sessioni nulle sulle condivisioni.
Attenzione: Se il tuo utente ha accesso a una condivisione sul server, lo script mostrerà tutte le condivisioni ospitate da quel server. Se una condivisione è elencata in questo output, non significa che hai accesso a quella condivisione. Usa il prossimo strumento per quello.
Questo script ti avvisa se le credenziali fornite falliscono per evitare il blocco degli account di dominio. L'opzione "-f" sovrascrive questa protezione.
Questo script controlla un server utilizzando una sola credenziale. Questo è intenzionale poiché il server risponderà con un elenco completo di condivisioni se l'utente ha accesso a una sola condivisione sul sistema
./SMBHunt.pl [-a <account>] -i <file> [-o <file_output>]
./SMBHunt.pl -a 'testdominio\john:hunter2' -i portscan445.gnmap -o condivisioni_trovate.txt
./SMBHunt.pl -h
-a, --account <stringa>
Credenziali utente da testare. I nomi utente sono accettati nella forma 'Dominio\NomeUtente:Password' ('Dominio' è opzionale) Se non viene fornito alcun account, lo script verifica le sessioni nulle sulle condivisioni
-i, --inputFile <file>
Un file di sistemi separati da una nuova riga, o un file gnmap di una scansione di porte contenente la porta 445. Ogni server con la porta 445 aperta verrà controllato per le condivisioni SMB
-o, --output <file>
Stampa i risultati in un file
-f, --force
Forza lo script a continuare anche se la credenziale di dominio potrebbe essere errata.
--noipc
Non mostrare le condivisioni IPC (IPC$)
--nohidden
Non mostrare le condivisioni nascoste (C$, IPC$, ADMIN$, ecc.)
SMBList prenderà il file di output da "SMBHunt.pl" (o un file di condivisioni separate da una nuova riga nel formato "\server\condivisione") ed eseguirà un elenco ricorsivo delle directory di tali condivisioni utilizzando le credenziali fornite. SMBList tenterà di autenticarsi alla condivisione finché non viene trovata una credenziale valida dall'elenco fornito. Salverà quindi gli elenchi delle directory in una sottocartella specificata.
Questo rende l'elenco dei file estremamente facile da esaminare con grep!
** Il miglior file di risultati da utilizzare è: /ALL_COMBINED_RESULTS.txt **
./SMBList.pl -c <credenziale/file> -s <condivisione/file> -o <directory inesistente>
./SMBList.pl -c credenziali_trovate.txt -s condivisioni_trovate.txt -o elenco_condivisioni -m 150
./SMBList.pl -h
-c, --credentials <credenziale/file>
Una singola credenziale o un file di credenziali da testare. Le credenziali sono accettate nella forma 'Dominio\NomeUtente:Password' separate da una nuova riga (se si fornisce un file)
-s, --shares <condivisione/file>
Una singola condivisione o un file di condivisioni da testare. Ogni credenziale verrà testata per l'autorizzazione finché non se ne trova una valida. Le condivisioni dovrebbero essere nel formato "\server\condivisione", separate da una nuova riga (se si fornisce un file)
-o, --output <directory inesistente>
Verrà creata una nuova directory con questo nome. Per protezione dell'output, lo script non può essere eseguito con questa directory esistente. Deve essere una directory che non esiste!
-m, --maxexec <secondi>
Il tempo massimo trascorso per scaricare una qualsiasi condivisione, in secondi. Il valore predefinito è 300 secondi (5 minuti)
-f, --force
Non rimuovere mai una condivisione dall'elenco se genera un errore e non rimuovere mai una credenziale se riceve un messaggio di accesso fallito. Se stai usando questo flag, assicurati di sapere cosa stai facendo! Potresti bloccare account se non stai attento!
-n, --nocreds
Non includere le credenziali nell'output. ATTENZIONE: Se usi questa opzione, non puoi utilizzare l'output con il prossimo strumento, "SMBGrab.pl".
Gli elenchi di file da SMBList.pl possono essere reindirizzati a questa utility per scaricare i file desiderati dalle condivisioni. L'elenco originale da SMBList.pl dovrebbe essere esaminato con "grep" prima di passarlo a questo script, altrimenti tutti i file verranno scaricati (il che equivale a copiare l'intera condivisione ed è sconsigliato)
Questo script richiede che SMBList.pl sia reindirizzato in ingresso. Guarda "Esempio di utilizzo" qui sotto
./SMBGrab.pl [-s <directory>]
grep -i 'password.txt' elenco_condivisioni/ALL_COMBINED_RESULTS.TXT | ./SMBGrab.pl -s file_salvati
./SMBGrab.pl -h
Se non vengono forniti argomenti, il file viene recuperato dalla condivisione e visualizzato all'utente. Non viene salvato.
-s, --savedir <directory>
Una directory in cui salvare tutti i file scaricati. Se questa directory non esiste, verrà creata. Usando questo argomento si salvano i file ma si impedisce la stampa a schermo dei file
-a, --all
Legge tutti i file reindirizzati. Senza questa opzione, lo script protegge dal download accidentale di enormi quantità di file limitando l'input a 100 file.
-n, --noedit
Conserva i file nella loro forma originale. Se questa opzione non viene utilizzata, verrà aggiunta una nota in fondo a ciascun file contenente informazioni sui metadati del file (orari di lettura/scrittura, posizione del file nella condivisione, ecc.)
-h, --help
Mostra un menu di aiuto
Sentiti libero di contattarmi per qualsiasi modifica o richiesta di funzionalità!