
** ABANDONNÉ ** Framework C2 qui utilise Background Intelligent Transfer Service (BITS) comme protocole de communication et Direct Syscalls + Dinvoke pour le contournement des hooks en mode utilisateur des EDR.
██╗ ██████╗ ██╗ ██████╗ ██╗████████╗███████╗
██║ ██╔═══██╗██║ ██╔══██╗██║╚══██╔══╝██╔════╝
██║ ██║ ██║██║ ██████╔╝██║ ██║ ███████╗
██║ ██║ ██║██║ ██╔══██╗██║ ██║ ╚════██║
███████╗╚██████╔╝███████╗██████╔╝██║ ██║ ███████║
╚══════╝ ╚═════╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚══════╝
LOLBITS est un framework C2 qui utilise le Service de transfert intelligent en arrière-plan (BITS) de Microsoft pour établir le canal de communication entre la machine compromise et le backend. Le backend C2 est dissimulé derrière une application web Flask apparemment inoffensive et n'est accessible que lorsque les requêtes HTTP reçues par l'application contiennent un en‑tête d'authentification valide. Puisque cet outil est destiné à être utilisé dans des environnements fortement surveillés, les fonctionnalités suivantes ont été implémentées pour éviter la détection par les EDR et les antivirus :
En ce qui concerne l'architecture, LOLBITS est composé de 3 éléments principaux :
Afin d'empêcher l'inspection du contenu par les proxies, tout le contenu pertinent envoyé entre l'agent et le serveur C2 est chiffré via RC4 avec une clé secrète pré‑partagée générée aléatoirement. Un diagramme de haut niveau du comportement de l'infrastructure serait le suivant :
Pour éviter que l'équipe bleue ne reproduise certaines des anciennes requêtes et découvre l'infrastructure du backend C2, chaque en‑tête d'authentification est généré aléatoirement et n'est valable que pour un seul cycle (un cycle est composé d'une requête POST suivie d'une requête GET, dans cet ordre). Les anciens en‑têtes d'authentification seront ignorés et le site web inoffensif sera affiché pour ces requêtes.
Certaines des fonctionnalités de cet outil ont été implémentées soit en réutilisant du code d'autres projets, soit grâce aux efforts de plusieurs chercheurs en cybersécurité. Voici quelques‑uns des travaux et projets externes qui ont été utilisés d'une manière ou d'une autre pour améliorer cet outil :
Pour l'infrastructure C2, un Windows Server 2016 ou supérieur avec Python 3.4+ et PowerShell 5.1+ est requis. L'agent C# a été testé avec succès sur Windows Server 2012, Windows Server 2016, Windows Server 2019, Windows 7, Windows 8.1 et Windows 10. Pour le compiler, il est nécessaire d'avoir :
1.- Clonez ce dépôt sur votre serveur C2
git clone https://github.com/Kudaes/LOLBITS.git
2.- Installez le serveur Web (IIS) via le Gestionnaire de serveur Windows. Assurez‑vous d'installer les rôles CGI, ASP.NET et Extension .NET.
Installez également les fonctionnalités .NET Framework et BITS pour IIS.
3.- Exécutez le script setup.ps1 en tant qu'administrateur pour déployer toute l'infrastructure et configurer l'agent C#.
4.- Compilez l'agent C#. La compilation générera un fichier .exe et une dépendance externe (Newtonsoft.Json.dll). Vous pouvez générer un seul .exe en utilisant ILMerge ou simplement envoyer les deux fichiers sur la machine compromise. Pour éviter les sorties DEBUG, assurez‑vous de compiler le projet en tant qu'Application Windows.
5.- (Optionnel) Par défaut, le script setup.ps1 créera un nouveau site Web dans votre IIS appelé lawlbits écoutant sur le port HTTP par défaut (80/TCP). Ce nouveau site Web n'utilise pas HTTP sur TLS et, bien que le contenu des requêtes envoyées par l'agent C# au C2 soit chiffré via RC4 avec une clé secrète pré‑partagée générée aléatoirement, il est recommandé de configurer l'utilisation de HTTPS pour le nouveau site. Pour ce faire, je recommande d'utiliser Let's Encrypt sur lawlbits, ce qui est l'un des moyens les plus simples de configurer HTTPS. Après cela, n'oubliez pas de modifier la variable Url dans Program.cs pour utiliser HTTPS au lieu de HTTP, qui est le comportement par défaut.
Pour obtenir le shell distant, tapez simplement python lawlbin.py dans une invite de commande du serveur C2 et exécutez l'agent C# sur la machine compromise.
Ce projet étant né des cendres d'un précédent projet avorté, certaines des anciennes fonctionnalités ont été conservées. L'ancien projet était un shell où toutes les commandes disponibles étaient exécutées en utilisant exclusivement des Binaires Vivant de la Terre. C'est de là que vient le LOL de LOLBITS, et c'est pourquoi les fonctionnalités suivantes s'exécutent exclusivement via des LOLBINS (cela peut aider à contourner AWS et certains filtres AV/EDR) :
Bien que ces fonctionnalités puissent être intéressantes dans certains environnements (hum, télécharger des fichiers distants sans utiliser PowerShell ? J'aime ça !), je les ai conservées uniquement pour réutiliser une partie de l'ancien code pour la console C2. Voici une liste d'autres fonctionnalités qui, j'en suis sûr, seront plus utiles dans un contexte classique d'équipe rouge :
Pour obtenir des conseils d'utilisation, tapez simplement help ou <somecommand> help.
Toute contribution sera grandement appréciée.
git checkout -b feature/AmazingFeature)git commit -m 'Ajouter une fonctionnalité géniale')git push origin feature/AmazingFeature)Distribué sous la licence GNU. Voir LICENSE pour plus d'informations.