
erweiterbares Exploitation-Framework, das auf einer modularen Multi-Tasking-Architektur basiert
Ein pädagogisches Exploitation-Framework, das auf einer modularen, hochgradig erweiterbaren Multi-Tasking- und Multi-Processing-Architektur basiert.
Auf der Suche nach Version 1? Siehe die Branches in diesem Repository.
Brutus ist ein pädagogisches Exploitation-Framework, geschrieben in Python. Es automatisiert Netzwerk-basierte Exploits vor und nach der Verbindung sowie webbasierte Aufklärung. Als leichtgewichtiges Framework zielt Brutus darauf ab, die Abhängigkeit von Drittanbieter-Bibliotheken zu minimieren. Optimiert für Kali Linux, ist Brutus auch mit macOS und den meisten Linux-Distributionen kompatibel und bietet eine vollständig interaktive Kommandozeilen-Oberfläche sowie ein vielseitiges Plugin-System.
Brutus zeichnet sich durch eine hochgradig erweiterbare, modulare Architektur aus. Die enthaltenen Exploits (Plugin-Layer) bestehen aus mehreren entkoppelten Modulen, die auf einem „Tasking-Layer" laufen, der aus Thread-Pools und threadsicheren, asynchronen Warteschlangen besteht (je nachdem, was für das jeweilige Modul am besten geeignet ist). Der Hauptthread läuft auf einem Multi-Processing-Pool, der den App-Kontext verwaltet und neue Prozesse startet, sodass Aufgaben im Hintergrund, in separaten Shells usw. ausgeführt werden können.
Die UI-Ebene ist ebenfalls entkoppelt und erweiterbar. Standardmäßig wird Brutus mit einer menübasierten Kommandozeilen-Oberfläche ausgeliefert, aber es spricht nichts dagegen, Adapter für eine GUI, einen Argument-Parser oder sogar eine HTTP-API oder einen Remote Procedure Call hinzuzufügen.
Schließlich verfügt Brutus über eine Dienstprogramm-Ebene mit gängigen Fähigkeiten für Dateisystemoperationen, Shell-Verwaltung (Terminal-Emulator), Persistenzmethoden und Systemmetadaten.
Wenn Sie einfach nur an etwas Python-Hacking interessiert sind, können Sie die Skripte gerne direkt herauspicken – jedes Modul kann eigenständig aufgerufen werden.
Web-Scanning- und Payload-Kompilierungs-Demo: mp4 ansehen

Sie werden wahrscheinlich die folgenden Abhängigkeiten benötigen:
Brutus ist für Kali Linux optimiert. Im Internet gibt es viele Informationen darüber, wie man Kali Linux in einer VM ausführt.
So installieren Sie es:
pipenv install
Ausführen:
pipenv run brutus
Testen:
pipenv run test
Linten:
pipenv run lint
Git-Hooks für die Entwicklung einrichten:
pipenv run setup
Sie können gerne Pull-Requests mit Funktionsvorschlägen, Fehlerbehebungen usw. eröffnen. Beachten Sie, dass ein Großteil dieses Projekts noch in Arbeit ist. Die Basis ist vorhanden und bereit, damit Sie darauf aufbauen können.
Brutus enthält mehrere Module, die sich in drei Makro-Kategorien einteilen lassen: netzwerkbasiert, webbasiert und Payloads. Die letztgenannte Kategorie ist eine Bibliothek von Compilern und zugehörigen Payloads – Payloads können über das interaktive Kommandozeilenmenü von Brutus kompiliert werden; kompilierte Payloads können anschließend in viele der anwendbaren netzwerkbasierten Module von Brutus geladen werden.
Die Basisebene von Brutus verwendet POSIX-Threads für gleichzeitiges Multi-Tasking. Einige Module – d.h. im Wesentlichen alles, was stark I/O-gebunden ist – verwenden stattdessen Pythons asynchrone I/O-Bibliotheken und laufen auf einer Abstraktion oberhalb der Standard-Ereignisschleife von Python.
Enthaltene Dienstprogramme/Skripte
HINWEIS: Dieses Tool ist für 48-Bit-MACs mit einem Standard-Byte-Format von %02x.
MAC (Media Access Control) ist eine permanente, physische und eindeutige Adresse, die Netzwerkschnittstellen von Geräteherstellern zugewiesen wird. Das bedeutet, dass selbst Ihre WLAN-Karte beispielsweise ihre eigene eindeutige MAC-Adresse hat.
Die MAC-Adresse, vergleichbar mit einer IP im Internet, wird innerhalb eines Netzwerks verwendet, um die korrekte Zustellung von Ressourcen und Daten (d.h. Paketen) zu ermöglichen. Eine Interaktion besteht im Allgemeinen aus einer Quell-MAC und einer Ziel-MAC. MAC-Adressen können Sie identifizieren, gefiltert oder anderweitig zugriffsbeschränkt werden.
Wichtig zu beachten ist, dass diese eindeutigen Adressen nicht flüchtig sind; sie sind persistent und bleiben einem Gerät zugeordnet, sollte ein Benutzer es in einem anderen Computer installieren. Aber die beiden müssen nicht untrennbar miteinander verbunden sein...
Dieses Modul akzeptiert als Benutzereingabe ein beliebiges drahtloses Gerät und eine beliebige gültige MAC-Adresse, der der Benutzer das Gerät neu zuweisen möchte. Das Programm ist einfach, sodass ich es nicht weiter erklären muss: Es verwendet das Subprocess-Modul, um die Abfolge der notwendigen Shell-Befehle zu automatisieren, um die drahtlose Schnittstelle herunterzufahren, die MAC neu zuzuweisen und sie neu zu initialisieren.
Wenn Sie Ihre MAC-Adresse aktiv ändern, ist es möglicherweise ratsam, eine Art Validierungsstruktur oder eine Methode höherer Ordnung zu haben, um sicherzustellen, dass 1) das drahtlose Gerät existiert, 2) das drahtlose Gerät eine MAC-Adresse unterstützt, 3) die vom Benutzer eingegebene MAC-Adresse ein gültiges Format hat und 4) die MAC-Adresse des drahtlosen Geräts erfolgreich aktualisiert wurde. Dieses Tool automatisiert diese Funktionen.
Durch die Auswahl der Option „generate" anstelle einer bestimmten MAC-Adresse generiert das Programm eine gültige MAC-Adresse gemäß den IEEE-Spezifikationen. Ich bin begeistert, dass ich eine erweiterte Funktionalität implementiert habe, um nicht nur vollständig zufällige (und gültige) MAC-Adressen zu generieren, sondern auch MAC-Adressen, die entweder mit einem bestimmten Hersteller-Präfix (OUI) beginnen oder mit Multicast- und/oder UAA-Optionen generiert werden. Diese Optionen lösen Bytecode-Logik in der Generierungsmethode aus, die gemäß den IEEE-Spezifikationen erweitert wird. Erfahren Sie mehr über MAC-Adressen hier.
Der Netzwerkscanner ist ein weiteres sehr nützliches Werkzeug und ein beeindruckendes, wenn es in Verbindung mit dem zuvor erwähnten MAC-Änderer verwendet wird. Dieser Scanner nutzt die ARP-Anforderungsfunktionalität, indem er als Benutzereingabe eine gültige IPv4- oder IPv6-IP-Adresse und eine dazugehörige – wenn auch optionale – Subnetzbereichsangabe akzeptiert.
Das Programm nimmt dann die angegebene IP und/oder den Bereich und validiert sie gemäß den IEEE-Spezifikationen (auch hier wird die Validierung gegen IPv4- und IPv6-Standards durchgeführt). Schließlich wird ein Broadcast-Objekt mit der angegebenen IP und einem generierten Ethernet-Frame instanziiert; dieses Objekt gibt uns eine Liste aller verbundenen Geräte im angegebenen Netzwerk und dem dazugehörigen Bereich zurück und ordnet deren IPs den jeweiligen MAC-Adressen zu.
Das Programm gibt eine Tabelle mit diesen Zuordnungen aus, die dann als Eingabe für den MAC-Änderer verwendet werden könnte, falls die Umstände es erfordern.
Das ARP-Spoof-Modul ermöglicht es uns, den Paketfluss in einem bestimmten Netzwerk umzuleiten, indem wir gleichzeitig die ARP-Tabellen eines bestimmten Zielclients und seines Netzwerk-Gateways manipulieren. Dieses Modul aktiviert während dieses Vorgangs automatisch die Portweiterleitung und konstruiert und sendet dynamisch ARP-Pakete.
Wenn das Modul vom Benutzer beendet wird, werden die ARP-Tabellen der Ziele zurückgesetzt, um den Controller nicht in einer prekären Situation zurückzulassen (außerdem ist es die nette Sache, dies zu tun).
Da dieser Prozess den Controller in die Mitte des Paketflusses zwischen Client und AP stellt, hat der Controller daher Zugriff auf den gesamten Datenfluss (der Umgang mit der möglichen Verschlüsselung dieser Daten ist Aufgabe eines anderen Skripts). Von hier aus werden die unzähligen Möglichkeiten zur Orchestrierung des Paketflusses offensichtlich: Ersetzung von Code durch Automatisierung und reguläre Ausdrücke, erzwungene Weiterleitungen, Fernzugriff usw. Glücklicherweise kann Brutus auch dies automatisieren.
Der Paket-Sniffer ist ein hervorragendes Modul, das nach dem Ausführen des ARP-Spoofers eingesetzt werden kann; es erstellt einen Datenstrom aller abgefangenen HTTP-Paketdaten, der entweder URLs oder mögliche Benutzeranmeldeinformationen enthält.
Das Skript ist erweiterbar und kann eine Vielzahl von Protokollen aufnehmen, indem das Listener-Objekt mit einem von vielen verfügbaren Filtern instanziiert wird. Beachten Sie, dass Brutus automatisch HTTPS herabstuft, sodass der Datenstrom – sofern HSTS nicht involviert ist – für die Aufklärung nutzbar sein sollte.
Haftungsausschluss: Diese Software und alle darin enthaltenen Inhalte wurden ausschließlich für Forschungszwecke erstellt. Ich befürworte weder die Handlungen derjenigen, die diese Software in böswilliger oder anderweitig illegaler Weise verwenden könnten, noch übernehme ich in irgendeiner Form Verantwortung für solche Handlungen.