
cadre d'exploitation extensible reposant sur une architecture modulaire multitâche
Un framework d'exploitation éducatif livré sur une architecture modulaire et hautement extensible, multi-tâches et multi-processus.
Vous cherchez la version 1 ? Consultez les branches de ce dépôt.
Brutus est un framework d'exploitation éducatif écrit en Python. Il automatise les exploits réseau avant et après connexion, ainsi que la reconnaissance web. En tant que framework léger, Brutus vise à minimiser la dépendance aux bibliothèques tierces. Optimisé pour Kali Linux, Brutus est également compatible avec macOS et la plupart des distributions Linux, offrant une interface en ligne de commande entièrement interactive et un système de plugins polyvalent.
Brutus possède une architecture modulaire hautement extensible. Les exploits inclus (couche de plugins) sont constitués de plusieurs modules découplés qui s'exécutent sur une 'couche de tâches' composée de pools de threads et de files d'attente asynchrones thread-safe (selon ce qui est le plus approprié pour le module donné). Le thread principal s'exécute au-dessus d'un pool multi-processus qui gère le contexte de l'application et distribue de nouveaux processus afin que les tâches puissent s'exécuter en arrière-plan, dans des shells séparés, etc.
La couche UI est également découplée et extensible. Par défaut, Brutus est livré avec une interface utilisateur en ligne de commande basée sur des menus, mais rien ne vous empêche d'ajouter des adaptateurs pour une GUI, un analyseur d'arguments, ou même une API HTTP ou un appel de procédure distante.
Enfin, Brutus dispose d'une couche utilitaire avec des fonctionnalités courantes pour les opérations sur le système de fichiers, la gestion du shell (émulateur de terminal), les méthodes de persistance et les métadonnées système.
Si vous êtes simplement intéressé par du bidouillage Python, n'hésitez pas à récupérer les scripts directement - chaque module peut être invoqué de manière autonome.
Démonstration de scan Web et de compilation de payload : regarder mp4

Vous aurez probablement besoin des dépendances suivantes :
Brutus est optimisé pour Kali Linux. Il y a beaucoup d'informations en ligne sur la façon d'exécuter Kali Linux dans une VM.
Pour installer :
pipenv install
Exécuter :
pipenv run brutus
Tester :
pipenv run test
Linter :
pipenv run lint
Configurer les hooks Git pour le développement :
pipenv run setup
N'hésitez pas à ouvrir des PRs avec des propositions de fonctionnalités, des corrections de bugs, etc. Notez qu'une grande partie de ce projet est encore en cours. La base est là et prête à être développée.
Brutus inclut plusieurs modules qui peuvent être généralisés comme appartenant à trois macro-catégories : réseau, web et payloads. Cette dernière catégorie est une bibliothèque de compilateurs et de payloads associés - les payloads peuvent être compilés via le menu interactif en ligne de commande de Brutus ; les payloads compilés peuvent ensuite être chargés dans de nombreux modules réseau applicables de Brutus.
La couche de base de Brutus utilise des threads POSIX pour le multitâche concurrent. Certains modules - c'est-à-dire essentiellement tout ce qui est fortement lié aux E/S - utilisent plutôt les bibliothèques async I/O de Python et s'exécutent sur une abstraction au-dessus de la boucle d'événements par défaut de Python.
Utilitaires/Scripts inclus
NOTE : Cet outil est destiné aux MAC 48 bits, avec un format d'octet par défaut %02x.
MAC (Media Access Control) est une adresse permanente, physique et unique assignée aux interfaces réseau par les fabricants d'appareils. Cela signifie que même votre carte sans fil, par exemple, a sa propre adresse MAC unique.
L'adresse MAC, analogue à une adresse IP sur Internet, est utilisée au sein d'un réseau pour faciliter la bonne livraison des ressources et des données (c'est-à-dire les paquets). Une interaction consiste généralement en une adresse MAC source et une adresse MAC destination. Les adresses MAC peuvent vous identifier, être filtrées ou autrement restreintes en termes d'accès.
Il est important de noter que ces adresses uniques ne sont pas éphémères ; elles sont persistantes et resteront associées à un périphérique si un utilisateur l'installe dans une autre machine. Mais les deux ne doivent pas être inextricablement liés...
Ce module acceptera comme entrée utilisateur tout périphérique sans fil donné et toute adresse MAC valide à laquelle l'utilisateur souhaite réaffecter ledit périphérique. Le programme est simple, je n'ai pas besoin de l'expliquer davantage : il utilise le module subprocess pour automatiser la séquence des commandes shell nécessaires pour désactiver l'interface sans fil, réaffecter l'adresse MAC et la réinitialiser.
Si vous changez activement votre adresse MAC, il pourrait être prudent d'avoir une sorte de structure de validation ou une méthode d'ordre supérieur pour s'assurer que 1) le périphérique sans fil existe, 2) le périphérique sans fil prend en charge une adresse MAC, 3) l'adresse MAC saisie par l'utilisateur a un format valide, et 4) l'adresse MAC du périphérique sans fil a été mise à jour avec succès. Cet outil automatise ces fonctions.
En sélectionnant l'option 'generate' au lieu d'une adresse MAC spécifique, le programme générera une adresse MAC valide selon les spécifications IEEE. Je suis ravi d'avoir implémenté une fonctionnalité étendue permettant de générer non seulement des adresses MAC entièrement aléatoires (et valides), mais aussi des adresses MAC qui commencent par un préfixe de fabricant spécifique (OUI), ou qui sont générées avec des options multicast et/ou UAA. Ces options déclenchent une logique de byte-code dans la méthode de génération, qui est augmentée selon les spécifications IEEE. En savoir plus sur les adresses MAC ici.
Le scanner réseau est un autre outil très utile, et redoutable lorsqu'il est utilisé conjointement avec le changeur de MAC susmentionné. Ce scanner utilise la fonctionnalité de requête ARP en acceptant comme entrée utilisateur une adresse IP valide ipv4 ou ipv6 et une plage de sous-réseau accompagnante - bien que facultative.
Le programme prend ensuite l'IP et/ou la plage donnée, puis les valide selon les spécifications IEEE (encore une fois, cette validation est effectuée par rapport aux normes ipv4 et ipv6). Enfin, un objet broadcast est instancié avec l'IP donnée et une trame Ethernet générée ; cet objet nous renvoie une liste de tous les appareils connectés dans le réseau donné et la plage accompagnante, en mappant leurs IP aux adresses MAC respectives.
Le programme affiche un tableau avec ces associations, qui pourrait ensuite être utilisé comme entrée pour le changeur de MAC si les circonstances l'exigent.
Le module d'usurpation ARP nous permet de rediriger le flux de paquets dans un réseau donné en manipulant simultanément les tables ARP d'un client cible donné et de la passerelle de son réseau. Ce module active automatiquement le forwarding de ports pendant ce processus, et construit et envoie dynamiquement des paquets ARP.
Lorsque le module est interrompu par l'utilisateur, les tables ARP des cibles sont réinitialisées, afin de ne pas laisser le contrôleur dans une situation précaire (en plus, c'est la bonne chose à faire).
Parce que ce processus place le contrôleur au milieu du flux de paquets entre le client et le point d'accès, le contrôleur a donc accès à tout le flux de données (gérer le chiffrement potentiel de ces données est une tâche pour un autre script). De là, les innombrables options d'orchestration du flux de paquets deviennent évidentes : substitution de code via l'automatisation et les expressions régulières, redirections forcées, accès distant, etc. Heureusement, Brutus peut aussi automatiser cela.
Le sniffeur de paquets est un excellent module à utiliser après avoir exécuté l'usurpateur ARP ; il crée un flux de données de tous les paquets HTTP interceptés, qui inclut soit des URL, soit des identifiants utilisateur possibles.
Le script est extensible et peut prendre en charge une variété de protocoles en instanciant l'objet écouteur avec l'un des nombreux filtres disponibles. Notez que Brutus rétrograde automatiquement HTTPS, donc à moins que HSTS ne soit impliqué, le flux de données devrait être viable pour la reconnaissance.
Avertissement : Ce logiciel et tout son contenu ont été créés à des fins de recherche uniquement. Je n'approuve ni ne détiens, en aucune qualité, la responsabilité des actions de ceux qui pourraient avoir l'intention d'utiliser ce logiciel de manière malveillante ou autrement illégale.