Nimbo-C2 ist ein weiteres (einfaches und leichtes) C2-Framework.
Der Nimbo-C2-Agent unterstützt x64 Windows & Linux. Es ist in Nim geschrieben, mit etwas Verwendung von .NET unter Windows (durch dynamisches Laden der CLR in den Prozess). Nim ist mächtig, aber die Interaktion mit Windows ist mit PowerShell viel einfacher und robuster, daher wurde diese Kombination gewählt. Der Linux-Agent ist schlanker und kann nur grundlegende Befehle ausführen, einschließlich ELF-Laden mit der memfd-Technik.
Alle Serverkomponenten sind in Python geschrieben:
HTTP-Listener, der die Agents verwaltet.
Builder, der die Agent-Payloads generiert.
Nimbo-C2 ist die interaktive C2-Komponente, die alle beherrscht!
Meine Arbeit wäre nicht möglich ohne die großartige Arbeit anderer, die unter den Credits aufgeführt sind.
Verschlüsselte Implant-Konfiguration und Strings mit NimProtect.
Packen von Payloads mit UPX und Verschleiern der PE-Abschnittsnamen (UPX0, UPX1), um Erkennung und Entpacken zu erschweren.
Verschlüsselte HTTP-Kommunikation (AES im CBC-Modus, Schlüssel fest im Agenten codiert und über config.jsonc konfigurierbar).
Auto-Vervollständigung in der C2-Konsole für bequeme Interaktion.
Datei- und Registrierungsbefehle.
In-Memory PowerShell-Befehlsausführung.
Befehle zum Herunter- und Hochladen von Dateien.
Integrierte Erkennungsbefehle.
Screenshot-Erstellung, Zwischenablage-Diebstahl, Audioaufzeichnung und Keylogger.
ETW- und AMSI-Patching mittels indirekter Syscalls.
LSASS- und SAM-Hash-Dumping.
Shellcode-Injektion mittels indirekter Syscalls.
Inline .NET-Assemblys ausführen.
Persistenzmöglichkeiten.
UAC-Bypass-Methoden.
Token-Impersonation und getsystem.
Setzen des Implant-Prozesses als kritisch (BSOD bei Beendigung).
(Linux) ELF-Laden mit memfd in 2 Modi.
Und mehr!
Installation
Warnung: Nimbo-C2 ist nur für die Ausführung innerhalb des bereitgestellten Docker-Containers vorgesehen
Einfacher Weg
Beachten Sie, dass die Installation auf diese Weise in Zukunft zu Problemen oder Inkompatibilität führen kann, da das Docker-Image derzeit keine Sprach- und Bibliotheksversionen erzwingt. Ziehen Sie daher die nächste Methode in Betracht.
Klonen Sie das Repository und wechseln Sie hinein
root@kitploit:~
git clone https://github.com/itaymigdal/Nimbo-C2
cd Nimbo-C2
Bauen Sie das Docker-Image
root@kitploit:~
docker build -t nimbo-dependencies .
Wechseln Sie erneut in die Quelldateien und führen Sie das Docker-Image interaktiv aus, legen Sie Port 80 frei und mounten Sie das Nimbo-C2-Verzeichnis in den Container (damit Sie einfach auf alle Projektdateien zugreifen, config.jsonc ändern, Dateien von Agents herunter- und hochladen können usw.). Für Linux ersetzen Sie ${pwd} durch $(pwd).
root@kitploit:~
cd Nimbo-C2
docker run -it --rm -p 80:80 -v ${pwd}:/Nimbo-C2 -w /Nimbo-C2 nimbo-dependencies
Einfacherer Weg
Hier verwenden wir das bereits erstellte, getestete und gespeicherte Docker-Image - empfohlen.
root@kitploit:~
git clone https://github.com/itaymigdal/Nimbo-C2
cd Nimbo-C2/Nimbo-C2
docker run -it --rm -p 80:80 -v ${pwd}:/Nimbo-C2 -w /Nimbo-C2 itaymigdal/nimbo-dependencies
Für Linux ersetzen Sie ${pwd} durch $(pwd).
Verwendung
Bearbeiten Sie zuerst config.jsonc nach Ihren Bedürfnissen.
Führen Sie dann aus: python3 Nimbo-C2.py
Verwenden Sie den Befehl help für jeden Bildschirm und die Tabulator-Vervollständigung.
Einschränkungen, Warnungen, Hinweise
Auch wenn die HTTP-Kommunikation verschlüsselt ist, wird der 'User-Agent'-Header im Klartext gesendet und enthält die echte Agenten-ID, was einige Produkte als verdächtig einstufen könnten.
Schließen Sie Pfade oder Argumente mit Leerzeichen in doppelte Anführungszeichen ein.
CLR arbeitet mit dem primären Zugriffstoken, daher haben impersonate/getsys keine Auswirkung auf iex/assembly.
Die Befehle audio und lsass (außer der Evil Lsass Twin Methode) speichern temporär Artefakte auf der Festplatte, bevor sie exfiltriert und gelöscht werden.
Wenn Sie den Nimbo-Server tunneln (z.B. wenn Sie ihn über Pinggy bereitstellen), verwenden Sie TCP, nicht HTTP.
Beitrag
Diese Software kann in manchen Anwendungsfällen fehlerhaft oder instabil sein, da sie nicht vollständig und ständig getestet wird.
Sie können gerne Issues, PRs eröffnen und mich aus jedem Grund kontaktieren unter (Gmail | Linkedin).