
Strumento di analisi di rete

BruteShark è uno strumento di analisi forense di rete (NFAT) che esegue elaborazione e ispezione approfondita del traffico di rete (principalmente file PCAP, ma è anche in grado di catturare live direttamente da un'interfaccia di rete). Include: estrazione di password, creazione di una mappa di rete, ricostruzione di sessioni TCP, estrazione di hash di password crittografate e persino conversione in formato Hashcat per eseguire un attacco offline di forza bruta.
L'obiettivo principale del progetto è fornire una soluzione ai ricercatori di sicurezza e agli amministratori di rete per l'analisi del traffico di rete, mentre cercano di identificare vulnerabilità che potrebbero essere utilizzate da un potenziale aggressore per ottenere l'accesso a punti critici della rete.
Sono disponibili due versioni di BruteShark: un'applicazione GUI (Windows) e uno strumento a riga di comando (Windows e Linux).
I vari progetti nella soluzione possono anche essere utilizzati indipendentemente come infrastruttura per l'analisi del traffico di rete su macchine Linux o Windows. Per ulteriori dettagli, vedere la sezione Architettura.
Il progetto è stato sviluppato nel mio tempo libero per soddisfare due grandi passioni: l'architettura del software e l'analisi dei dati di rete.
Adoro ricevere feedback dagli utenti di BruteShark, la tua opinione è importante per me! Sentiti libero di contattarmi a [email protected] o di creare una nuova issue.
Per favore, metti ⭐️ a questo repository se il progetto ti è stato utile!
wget https://github.com/odedshimon/BruteShark/releases/latest/download/BruteSharkCli
./BruteSharkCli
Costruzione di una mappa di rete
https://user-images.githubusercontent.com/18364847/131922221-5714f351-85f7-4490-bec9-8da4339b66b3.mp4
Esempio di utilizzo di BruteSharkCli - Estrazione di più password e hash (disponibile anche su YouTube)
https://user-images.githubusercontent.com/18364847/131924013-8b2aa18b-0941-456e-a09d-799902554166.mp4





In generale, si consiglia di caricare, eseguire ed esplorare i risultati.
I file PCAP di esempio che contengono scenari che dimostrano tutte le capacità di BruteShark possono essere scaricati da qui.
Nota: l'analisi del traffico di rete è un'operazione che consuma tempo e risorse, quindi si consiglia di selezionare solo i moduli necessari quando vengono caricati file di grandi dimensioni.
Prestare particolare attenzione alle opzioni "Build TCP Sessions" / "Build UDP Sessions".
La GUI è abbastanza autoesplicativa: basta caricare i file desiderati, configurare i moduli desiderati e premere il pulsante di esecuzione.
BruteSharkCli è la versione CLI di BruteShark per utenti Linux e Windows. Ha tutte le funzionalità di BruteSharkDesktop ed è progettato per funzionare da una shell. Come classico strumento CLI, funziona ricevendo tutti i parametri pertinenti per l'elaborazione e poi stampando i risultati su stdout o su file.
Stampa il menu di aiuto:
BruteSharkCli --help
Ottieni le credenziali da tutti i file in una directory (le password e gli hash verranno stampati su stdout):
BruteSharkCli -m Credentials -d "C:\Users\King\Desktop\Pcap Files"
Ottieni le credenziali da tutti i file in una directory ed esporta anche gli hash estratti (se trovati) in file di input per Hashcat.
BruteSharkCli -m Credentials -d C:\Users\King\Desktop\Pcap_Examples -o C:\Users\King\Desktop\Results
Esegui più moduli su tutti i file in una directory ed esporta anche tutti i risultati.
BruteSharkCli -m Credentials,NetworkMap,FileExtracting -d C:\Users\King\Desktop\Pcap_Examples -o C:\Users\King\Desktop\Results
Sniffa un'interfaccia chiamata "Wi-Fi", esegui più moduli ed esporta anche tutti i risultati in una directory (i risultati verranno esportati solo quando si ferma lo sniffer premendo CTRL + C).
BruteSharkCli -l Wi-Fi -m Credentials,NetworkMap,FileExtracting,DNS -o C:\Users\King\Desktop\Test Export
BruteShark è uno strumento modulare, progettato per essere esteso.
Questo modulo si occupa di estrarre e codificare nomi utente e password, nonché hash di autenticazione. In effetti, questo modulo aggiorna due tabelle di visualizzazione: la tabella delle password e la tabella degli hash. Mentre nomi utente e password sono di uso immediato, gli hash vengono spesso utilizzati in attacchi più complessi come pass-the-hash o forzandoli brutalmente per ottenere la password. BruteShark è integrato con Hashcat in modo che tutti gli hash estratti possano essere convertiti in un file di input per Hashcat.
| Protocollo | Tipo di Hash | Modalità Hashcat (-m) |
|---|---|---|
| HTTP | HTTP-Digest | 11400 |
| SMTP\IMAP | CRAM-MD5 | 16400 |
| NTLM (es. SMB) | NTLMv1 | 5500 |
| NTLM (es. SMB) | NTLMv2 | 5600 |
| Kerberos | AS-REQ etype 23 | 7500 |
| Kerberos | AS-REP etype 23 | 18200 |
| Kerberos | TGS-REP etype 23 | 13100 |
| Kerberos (AES128) | TGS-REP etype 17 | 19600 |
| Kerberos (AES256) | TGS-REP etype 18 | 19700 |
Questo modulo si occupa di costruire la mappa di rete identificando i componenti della rete e le connessioni tra di essi. La mappa di rete può essere esportata in due file JSON: un file contiene tutte le connessioni nella rete e l'altro contiene tutti gli endpoint e le informazioni correlate (come porte aperte, mapping DNS, ecc.). Questi file possono essere utilizzati per analisi con strumenti esterni come Neo4j.

Questo modulo tenta di estrarre file dalle sessioni UDP/TCP (Pertanto, nota: affinché questo modulo sia efficace, le opzioni "Build TCP Sessions" / "Build UDP Sessions" devono essere attivate). Attualmente, questo modulo supporta tecniche forensi classiche di file carving tramite l'algoritmo "Header-Footer", che è efficace per file con header e footer noti come JPG, PNG, PDF.
Questo modulo estrae le chiamate VoIP dai protocolli SIP e RTP. Le chiamate estratte possono essere esportate come file audio grezzi e possono essere riprodotte utilizzando un lettore audio appropriato (come Audacity)
Tutti i progetti di BruteShark sono implementati utilizzando .Net Core e .Net Standard per un supporto moderno e multipiattaforma.
La soluzione è progettata con un'architettura a tre livelli, includendo uno o più progetti per ogni livello: DAL, BLL e PL.
La separazione tra i livelli è creata dal fatto che ogni progetto fa riferimento solo ai propri oggetti.
Come livello di accesso ai dati, questo progetto si occupa di leggere file PCAP grezzi utilizzando driver appropriati (WinPcap, libpcap) e la fantastica libreria wrapper SharpPcap di Chris Morgan. Può analizzare una lista di file in una volta sola e fornisce funzionalità aggiuntive come la ricostruzione di tutte le sessioni TCP (usando il progetto eccellente TcpRecon).
Il livello di logica di business, responsabile dell'analisi delle informazioni di rete (pacchetto, sessione TCP, ecc.), implementa un meccanismo di plug-in. Ogni plug-in è essenzialmente una classe che implementa l'interfaccia IModule. Tutti i plug-in vengono caricati tramite reflection:
private void _initilyzeModulesList()
{
// Crea un'istanza per ogni modulo disponibile cercando ogni classe che
// implementa IModule.
this._modules = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => typeof(IModule).IsAssignableFrom(p) && !p.IsInterface)
.Select(t => (IModule)Activator.CreateInstance(t))
.ToList();
// Si registra per ogni evento del modulo.
foreach(var m in _modules)
{
m.ParsedItemDetected += (s, e) => this.ParsedItemDetected(s, e);
}
}
Applicazione desktop per Windows basata su WinForms. Utilizza un progetto trasversale nel senso che fa riferimento sia al livello DAL che a BLL. Ciò viene fatto componendo ciascuno dei livelli, registrandosi ai loro eventi; quando un evento viene attivato, l'oggetto evento viene convertito nell'oggetto equivalente del livello successivo e inviato al livello successivo.
public MainForm()
{
InitializeComponent();
_files = new HashSet<string>();
// Crea gli oggetti DAL e BLL.
_processor = new PcapProcessor.Processor();
_analyzer = new PcapAnalyzer.Analyzer();
_processor.BuildTcpSessions = true;
// Crea i controlli utente.
_networkMapUserControl = new NetworkMapUserControl();
_networkMapUserControl.Dock = DockStyle.Fill;
_sessionsExplorerUserControl = new SessionsExplorerUserControl();
_sessionsExplorerUserControl.Dock = DockStyle.Fill;
_hashesUserControl = new HashesUserControl();
_hashesUserControl.Dock = DockStyle.Fill;
_passwordsUserControl = new GenericTableUserControl();
_passwordsUserControl.Dock = DockStyle.Fill;
// Contrae gli eventi.
_processor.TcpPacketArived += (s, e) => _analyzer.Analyze(Casting.CastProcessorTcpPacketToAnalyzerTcpPacket(e.Packet));
_processor.TcpSessionArived += (s, e) => _analyzer.Analyze(Casting.CastProcessorTcpSessionToAnalyzerTcpSession(e.TcpSession));
_processor.FileProcessingStarted += (s, e) => SwitchToMainThreadContext(() => OnFileProcessStart(s, e));
_processor.FileProcessingEnded += (s, e) => SwitchToMainThreadContext(() => OnFileProcessEnd(s, e));
_processor.ProcessingPrecentsChanged += (s, e) => SwitchToMainThreadContext(() => OnProcessingPrecentsChanged(s, e));
_analyzer.ParsedItemDetected += (s, e) => SwitchToMainThreadContext(() => OnParsedItemDetected(s, e));
_processor.TcpSessionArived += (s, e) => SwitchToMainThreadContext(() => OnSessionArived(Casting.CastProcessorTcpSessionToBruteSharkDesktopTcpSession(e.TcpSession)));
_processor.ProcessingFinished += (s, e) => SwitchToMainThreadContext(() => OnProcessingFinished(s, e));
InitilizeFilesIconsList();
this.modulesTreeView.ExpandAll();
}
Prima di tutto, grazie per aver dedicato del tempo a contribuire! BruteShark accoglie con favore i contributi di tutti.
Quando contribuisci a questo repository, per favore discuti prima la modifica che desideri apportare tramite issue o un'email prima di apportare modifiche.