
Netzwerkanalyse-Tool

BruteShark ist ein Netzwerk-Forensik-Analysewerkzeug (Network Forensic Analysis Tool, NFAT), das eine tiefgehende Verarbeitung und Untersuchung von Netzwerkverkehr durchführt (hauptsächlich PCAP-Dateien, es kann aber auch direkt Live-Daten von einer Netzwerkschnittstelle erfassen). Es umfasst: Extrahieren von Passwörtern, Erstellen einer Netzwerkkarte, Rekonstruktion von TCP-Sitzungen, Extrahieren von Hashes verschlüsselter Passwörter und sogar deren Konvertierung in ein Hashcat-Format, um einen Offline-Brute-Force-Angriff durchzuführen.
Das Hauptziel des Projekts ist es, Sicherheitsforschern und Netzwerkadministratoren eine Lösung für die Analyse von Netzwerkverkehr zu bieten, während sie versuchen, Schwachstellen zu identifizieren, die ein potenzieller Angreifer nutzen könnte, um Zugang zu kritischen Punkten im Netzwerk zu erhalten.
Es sind zwei BruteShark-Versionen verfügbar: eine GUI-basierte Anwendung (Windows) und ein Kommandozeilen-Tool (Windows und Linux).
Die verschiedenen Projekte der Lösung können auch unabhängig als Infrastruktur zur Analyse von Netzwerkverkehr auf Linux- oder Windows-Maschinen verwendet werden. Weitere Details finden Sie im Abschnitt Architektur.
Das Projekt wurde in meiner Freizeit entwickelt, um zwei meiner Hauptleidenschaften zu verfolgen: Softwarearchitektur und die Analyse von Netzwerkdaten.
Ich freue mich über Rückmeldungen von BruteShark-Nutzern, Ihre Meinung ist mir wichtig! Zögern Sie nicht, mich unter [email protected] zu kontaktieren oder ein neues Issue zu erstellen.
Bitte ⭐️ dieses Repository, wenn Ihnen dieses Projekt geholfen hat!
wget https://github.com/odedshimon/BruteShark/releases/latest/download/BruteSharkCli
./BruteSharkCli
Erstellen einer Netzwerkkarte
https://user-images.githubusercontent.com/18364847/131922221-5714f351-85f7-4490-bec9-8da4339b66b3.mp4
BruteSharkCli-Anwendungsbeispiel – Mehrere Passwörter und Hashes extrahieren (auch auf YouTube verfügbar)
https://user-images.githubusercontent.com/18364847/131924013-8b2aa18b-0941-456e-a09d-799902554166.mp4





Im Allgemeinen wird empfohlen, die Ergebnisse zu laden, auszuführen und zu erkunden.
Beispiel-PCAP-Dateien mit Szenarien, die alle Funktionen von BruteShark demonstrieren, können von hier heruntergeladen werden.
Beachten Sie, dass die Analyse von Netzwerkverkehr Zeit und Ressourcen beansprucht. Daher wird empfohlen, beim Laden großer Dateien nur die benötigten Module auszuwählen.
Besondere Aufmerksamkeit sollte den Optionen „Build TCP Sessions“ / „Build UDP Sessions“ gelten.
Die GUI ist weitgehend selbsterklärend: Laden Sie einfach die gewünschten Dateien, konfigurieren Sie die gewünschten Module und klicken Sie auf die Ausführen-Schaltfläche.
BruteSharkCli ist die CLI-Version von BruteShark für Linux- und Windows-Benutzer. Sie verfügt über alle Funktionen von BruteSharkDesktop und ist für die Bedienung über eine Shell konzipiert. Als klassisches CLI-Tool arbeitet es, indem es alle relevanten Parameter für die Verarbeitung erhält und die Ergebnisse dann auf stdout oder in Dateien ausgibt.
Hilfemenü anzeigen:
BruteSharkCli --help
Anmeldedaten aus allen Dateien in einem Verzeichnis abrufen (Passwörter und Hashes werden auf stdout ausgegeben):
BruteSharkCli -m Credentials -d "C:\Users\King\Desktop\Pcap Files"
Anmeldedaten aus allen Dateien in einem Verzeichnis abrufen und zusätzlich extrahierte Hashes (falls vorhanden) in Hashcat-Eingabedateien exportieren.
BruteSharkCli -m Credentials -d C:\Users\King\Desktop\Pcap_Examples -o C:\Users\King\Desktop\Results
Mehrere Module auf alle Dateien in einem Verzeichnis anwenden und alle Ergebnisse exportieren.
BruteSharkCli -m Credentials,NetworkMap,FileExtracting -d C:\Users\King\Desktop\Pcap_Examples -o C:\Users\King\Desktop\Results
Eine Schnittstelle namens „Wi-Fi“ abhören, mehrere Module ausführen und alle Ergebnisse in ein Verzeichnis exportieren (die Ergebnisse werden nur exportiert, wenn der Sniffer mit STRG + C gestoppt wird).
BruteSharkCli -l Wi-Fi -m Credentials,NetworkMap,FileExtracting,DNS -o C:\Users\King\Desktop\Test Export
BruteShark ist ein modulares Werkzeug, das für Erweiterungen konzipiert ist.
Dieses Modul ist für das Extrahieren und Kodieren von Benutzernamen und Passwörtern sowie von Authentifizierungs-Hashes verantwortlich. Tatsächlich ist dieses Modul für die Aktualisierung zweier Anzeigetabellen zuständig: der Passwort-Tabelle und der Hash-Tabelle. Während Benutzernamen und Passwörter einfach zu verwenden sind, werden Hashes häufig bei komplexeren Angriffen wie Pass-the-Hash eingesetzt oder durch Brute-Force angegriffen, um das Passwort zu erhalten. BruteShark ist in Hashcat integriert, sodass alle extrahierten Hashes in eine Hashcat-Eingabedatei konvertiert werden können.
Dieses Modul ist für die Erstellung der Netzwerkkarte verantwortlich, indem es Komponenten im Netzwerk und die Verbindungen zwischen ihnen identifiziert. Die Netzwerkkarte kann in zwei JSON-Dateien exportiert werden: Eine Datei enthält alle Verbindungen im Netzwerk und die andere alle Endpunkte sowie die zugehörigen Informationen (wie offene Ports, DNS-Zuordnungen usw.). Diese Dateien können zur Analyse mit externen Werkzeugen wie Neo4j verwendet werden.

Dieses Modul versucht, Dateien aus UDP-/TCP-Sitzungen zu extrahieren (Beachten Sie daher, dass „Build TCP Sessions“ / „Build UDP Sessions“ aktiviert sein müssen, damit dieses Modul effektiv arbeitet). Derzeit unterstützt dieses Modul klassische forensische Techniken des File Carving mithilfe des „Header-Footer“-Algorithmus, der für Dateien mit bekanntem Dateikopf und -fuß wie JPG, PNG, PDF wirksam ist.
Dieses Modul extrahiert VoIP-Anrufe aus SIP- und RTP-Protokollen. Die extrahierten Anrufe können als rohe Audiodateien exportiert und mit einem geeigneten Audio-Player (wie Audacity) abgespielt werden.
Alle BruteShark-Projekte werden mit .Net Core und .Net Standard für moderne und plattformübergreifende Unterstützung implementiert.
Die Lösung ist mit einer Drei-Schichten-Architektur entworfen, mit einem oder mehreren Projekten in jeder Schicht – DAL, BLL und PL.
Die Trennung zwischen den Schichten entsteht dadurch, dass jedes Projekt nur auf seine eigenen Objekte verweist.
Als Data Access Layer ist dieses Projekt für das Lesen roher PCAP-Dateien mithilfe geeigneter Treiber (WinPcap, libpcap) und der hervorragenden Wrapper-Bibliothek SharpPcap von Chris Morgan verantwortlich. Es kann eine Liste von Dateien auf einmal analysieren und bietet zusätzliche Funktionen wie die Rekonstruktion aller TCP-Sitzungen (unter Verwendung des großartigen Projekts TcpRecon).
Die Business Logic Layer ist für die Analyse von Netzwerkinformationen (Paket, TCP-Sitzung usw.) verantwortlich und implementiert einen steckbaren Mechanismus. Jedes Plugin ist im Grunde eine Klasse, die das Interface IModule implementiert. Alle Plugins werden mithilfe von Reflection geladen:
private void _initilyzeModulesList()
{
// Create an instance for any available modules by looking for every class that
// implements 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();
// Register to each module event.
foreach(var m in _modules)
{
m.ParsedItemDetected += (s, e) => this.ParsedItemDetected(s, e);
}
}
Desktop-Anwendung für Windows auf Basis von WinForms. Verwendet ein querschnittliches Projekt, da es sich sowohl auf die DAL- als auch auf die BLL-Schicht bezieht. Dies wird erreicht, indem die einzelnen Schichten zusammengesetzt, ihre Ereignisse registriert werden; wenn ein Ereignis ausgelöst wird, wird das Ereignisobjekt in das entsprechende Objekt der nächsten Schicht umgewandelt und an die nächste Schicht gesendet.
public MainForm()
{
InitializeComponent();
_files = new HashSet<string>();
// Create the DAL and BLL objects.
_processor = new PcapProcessor.Processor();
_analyzer = new PcapAnalyzer.Analyzer();
_processor.BuildTcpSessions = true;
// Create the user controls.
_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;
// Contract the events.
_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();
}
Zunächst einmal vielen Dank, dass Sie sich die Zeit nehmen, einen Beitrag zu leisten! BruteShark begrüßt Beiträge von jedem.
Wenn Sie zu diesem Repository beitragen möchten, besprechen Sie die gewünschte Änderung bitte zuerst über ein Issue oder eine E-Mail, bevor Sie eine Änderung vornehmen.
| Protokoll | Hash-Typ | Hashcat-Modus (-m) |
|---|
| HTTP | HTTP-Digest | 11400 |
| SMTP\IMAP | CRAM-MD5 | 16400 |
| NTLM (z. B. SMB) | NTLMv1 | 5500 |
| NTLM (z. B. 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 |