
** EINGESTELLT ** C2-Framework, das Background Intelligent Transfer Service (BITS) als Kommunikationsprotokoll und Direct Syscalls + Dinvoke zur Umgehung von EDR-User-Mode-Hooks nutzt.
██╗ ██████╗ ██╗ ██████╗ ██╗████████╗███████╗
██║ ██╔═══██╗██║ ██╔══██╗██║╚══██╔══╝██╔════╝
██║ ██║ ██║██║ ██████╔╝██║ ██║ ███████╗
██║ ██║ ██║██║ ██╔══██╗██║ ██║ ╚════██║
███████╗╚██████╔╝███████╗██████╔╝██║ ██║ ███████║
╚══════╝ ╚═════╝ ╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚══════╝
LOLBITS ist ein C2-Framework, das den Background Intelligent Transfer Service (BITS) von Microsoft nutzt, um den Kommunikationskanal zwischen dem kompromittierten Host und dem Backend herzustellen. Das C2-Backend ist hinter einer scheinbar harmlosen Flask-Webanwendung versteckt und nur erreichbar, wenn die von der App empfangenen HTTP-Anfragen einen gültigen Authentifizierungsheader enthalten. Da dieses Tool für stark überwachte Umgebungen gedacht ist, wurden die folgenden Funktionen implementiert, um die Erkennung durch EDR und AV zu vermeiden:
Was die Architektur betrifft, besteht LOLBITS aus 3 Hauptelementen:
Um die Inhaltsprüfung durch Proxys zu verhindern, werden alle relevanten Inhalte, die zwischen dem Agenten und dem C2-Server gesendet werden, mit RC4 und einem vorab gemeinsam genutzten, zufällig generierten geheimen Schlüssel verschlüsselt. Ein High-Level-Diagramm des Infrastrukturverhaltens sieht wie im folgenden Bild aus:
Um zu verhindern, dass das Blue Team einige der alten Anfragen reproduzieren und die C2-Backend-Infrastruktur entdecken kann, wird jeder Authentifizierungsheader zufällig generiert und ist nur für einen einzigen Zyklus gültig (ein Zyklus besteht aus einer POST-Anfrage gefolgt von einer GET-Anfrage, in dieser Reihenfolge). Alte Authentifizierungsheader werden ignoriert und die harmlose Website wird für diese Anfragen angezeigt.
Einige Funktionen dieses Tools wurden entweder durch die Wiederverwendung von Code aus anderen Projekten oder dank der Arbeit mehrerer Cybersicherheitsforscher implementiert. Im Folgenden verlinke ich einige der externen Arbeiten und Projekte, die auf die eine oder andere Weise zur Verbesserung dieses Tools beigetragen haben:
Für die C2-Infrastruktur wird ein Windows Server 2016 oder höher mit Python 3.4+ und PowerShell 5.1+ benötigt. Der C#-Agent wurde erfolgreich auf Windows Server 2012, Windows Server 2016, Windows Server 2019, Windows 7, Windows 8.1 und Windows 10 getestet. Zum Kompilieren werden benötigt:
1.- Klonen Sie dieses Repository auf Ihren C2-Server
git clone https://github.com/Kudaes/LOLBITS.git
2.- Installieren Sie den Webserver (IIS) über den Windows Server Manager. Stellen Sie sicher, dass die Rollen CGI, ASP.NET und .NET-Erweiterbarkeit installiert sind.
Installieren Sie außerdem die .NET Framework- und BITS-Funktionen für IIS.
3.- Führen Sie das Skript setup.ps1 als Administrator aus, um die gesamte Infrastruktur bereitzustellen und den C#-Agenten einzurichten.
4.- Kompilieren Sie den C#-Agenten. Die Kompilierung erzeugt eine .exe und eine externe Abhängigkeit (Newtonsoft.Json.dll). Sie können mit ILMerge eine einzelne .exe erzeugen oder beide Dateien auf den kompromittierten Host senden. Um DEBUG-Ausgaben zu vermeiden, kompilieren Sie das Projekt als Windows-Anwendung.
5.- (Optional) Standardmäßig erstellt das Skript setup.ps1 eine neue Website in Ihrem IIS mit dem Namen lawlbits, die auf dem Standard-HTTP-Port (80/TCP) lauscht. Diese neue Website verwendet kein HTTP über TLS, und obwohl der Inhalt der vom C#-Agenten an die C2 gesendeten Anfragen mit RC4 und einem vorab gemeinsam genutzten, zufällig generierten geheimen Schlüssel verschlüsselt wird, wird empfohlen, HTTPS für die neue Site einzurichten. Dazu empfehle ich die Verwendung von Let's Encrypt über lawlbits, was eine der einfachsten Möglichkeiten zur Einrichtung von HTTPS ist. Denken Sie danach daran, die Variable Url in Program.cs zu ändern, um HTTPS anstelle des standardmäßigen HTTP zu verwenden.
Um die Reverse Shell zu erhalten, geben Sie python lawlbin.py in einer Eingabeaufforderung des C2-Servers ein und führen Sie den C#-Agenten auf dem kompromittierten Host aus.
Da dieses Projekt aus der Asche eines früheren, gescheiterten Projekts entstanden ist, wurden einige der alten Funktionen beibehalten. Bei dem alten Projekt handelte es sich um eine Shell, in der alle verfügbaren Befehle ausschließlich mit Living off the Land Binaries ausgeführt wurden. Daher stammt auch das LOL in LOLBITS, und deshalb werden die folgenden Funktionen ausschließlich mit LOLBINS ausgeführt (dies könnte helfen, AWS- und einige AV-/EDR-Filter zu umgehen):
Obwohl diese Funktionen in manchen Umgebungen interessant sein könnten (hmm, entfernte Dateien ohne PowerShell herunterladen? Das gefällt mir!), habe ich sie nur behalten, um einen Teil des alten Codes für die C2-Konsole wiederzuverwenden. Unten finden Sie eine Liste mit einigen anderen Funktionen, die in einem klassischen Red-Team-Kontext sicherlich nützlicher sein werden:
nc -lvp <port> ausführen).Um Nutzungshinweise zu erhalten, geben Sie help oder <somecommand> help ein.
Jegliche Beiträge werden sehr geschätzt.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Verteilt unter der GNU-Lizenz. Weitere Informationen finden Sie in der LICENSE-Datei.