
Ein proxy-bewusstes C2-Framework, das Red Teamer bei Post-Exploitation und lateraler Bewegung unterstützt.

PoshC2 ist ein proxy-bewusstes C2-Framework, das Penetrationstestern bei Red Teaming, Post-Exploitation und lateralen Bewegungen hilft.
PoshC2 ist hauptsächlich in Python3 geschrieben und folgt einem modularen Format, das es Benutzern ermöglicht, eigene Module und Tools hinzuzufügen, was ein erweiterbares und flexibles C2-Framework ergibt. Ausgestattet mit PowerShell/C#- und Python2/Python3-Implants sowie Payloads in PowerShell v2 und v4, C++- und C#-Quellcode, einer Vielzahl von ausführbaren Dateien, DLLs und rohem Shellcode zusätzlich zu einem Python2/Python3-Payload, ermöglicht PoshC2 C2-Funktionalität auf einer breiten Palette von Geräten und Betriebssystemen, einschließlich Windows, *nix und OSX.
Weitere bemerkenswerte Funktionen von PoshC2 sind:
Die PoshC2-Dokumentation wird unter https://poshc2.readthedocs.io/en/latest/ gepflegt.
Finden Sie uns auf #Slack - poshc2.slack.com (um eine Einladung anzufragen, senden Sie eine E-Mail an [email protected]).
Sie können PoshC2 direkt oder über Docker-Images installieren. Anleitungen für beide Varianten finden Sie unten.
Ein Installationsskript wird für die Installation von PoshC2 bereitgestellt:
*** PoshC2 Installationsskript ***
Verwendung:
./Install.sh -b <git-branch> -p <Verzeichnis, in das PoshC2 geklont werden soll>
Standard ist der Master-Branch nach /opt/PoshC2
Erweiterte Rechte sind erforderlich, da das Installationsskript apt-Updates und -Installationen durchführt.
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash
Alternativ kann das Repository geklont und das Installationsskript manuell ausgeführt werden.
sudo ./Install.sh
Sie können das PoshC2-Installationsverzeichnis manuell festlegen, indem Sie es dem Install.sh-Skript als -p-Argument übergeben. Der Standardwert ist /opt/PoshC2:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install.sh | sudo bash -s -- -p /root/PoshC2
Wir möchten den master-Branch stabil halten, damit Benutzer sich bei Bedarf darauf verlassen können. Aus diesem Grund sind Änderungen oft funktionsvollständig, aber noch nicht auf master vorhanden, da sie noch nicht vollständig getestet und freigegeben wurden.
Wenn Sie sich zukünftige Funktionen in PoshC2 ansehen möchten, können Sie den dev-Branch oder einzelne Feature-Branches auschecken, die von dev abzweigen.
Da Funktionen vor ihrer Zusammenführung in dev getestet werden, sollte dieser Branch immer noch recht stabil sein, und Operatoren können sich für die Verwendung dieses Branches oder eines bestimmten Feature-Branches für ihren Einsatz entscheiden. Dies geht jedoch zu Lasten der Stabilität gegenüber neuen Funktionen. Tun Sie dies daher nach eigenem Ermessen.
Um dev oder einen Feature-Branch zu verwenden, übergeben Sie den Branch-Namen als -b-Argument an das Install.sh-Skript:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/dev/Install.sh | sudo bash -s -- -b dev
Beachten Sie, dass die URL auch den Branch-Namen enthält (hier dev statt master).
Sie können PoshC2 auch mit Docker ausführen. Dies ermöglicht einen stabileren Betrieb und erleichtert die Ausführung von PoshC2 auf anderen Betriebssystemen.
Die Docker-Installation klont PoshC2 nicht, da die PoshC2-Images auf Docker Hub verwendet werden. Es wird nur eine minimale Installation einiger Abhängigkeiten und Skripte durchgeführt.
Installieren Sie zuerst Docker auf dem Host und fügen Sie dann das PoshC2-Projektverzeichnis als freigegebenes Verzeichnis zu Docker hinzu, falls dies für Ihr Betriebssystem erforderlich ist. Standardmäßig ist dies /var/poshc2 auf *nix und /private/var/poshc2 auf Mac.
Installationsskript:
*** PoshC2-Installationsskript für Docker ***
Verwendung:
./Install-for-Docker.sh -b <git-branch>
Standard ist der Master-Branch
Erweiterte Rechte sind erforderlich, da das Installationsskript Skriptinstallationen durchführt.
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/master/Install-for-Docker.sh | sudo bash
Um die dev- oder Feature-Branches mit Docker zu verwenden, laden Sie das Install-for-Docker.sh-Skript vom entsprechenden Branch herunter und übergeben Sie den Branch-Namen als Argument:
curl -sSL https://raw.githubusercontent.com/nettitude/PoshC2/BRANCHNAME/Install-for-Docker.sh | sudo bash -s -- -b BRANCHNAME
Unter Windows importieren Sie das PowerShell-Modul PoshC2.psm1.
Import-Module -DisableNameChecking C:\PoshC2\resources\scripts\PoshC2.psm1
posh-project -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project" -Arg1 "-n" -Arg2 "newproject"
posh-config -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project"
posh-server -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project"
posh -PoshC2Dir "C:\PoshC2" -LocalPoshC2ProjectDir "C:\PoshC2_Project" username
Erstellen Sie ein neues Projekt:
posh-project -n <projektname>
Mit diesem Skript können Projekte gewechselt oder aufgelistet werden:
[*] Verwendung: posh-project -n <neuer-projektname>
[*] Verwendung: posh-project -s <projekt-zum-wechseln>
[*] Verwendung: posh-project -l (listet Projekte auf)
[*] Verwendung: posh-project -d <zu-löschendes-projekt>
[*] Verwendung: posh-project -c (zeigt aktuelles Projekt an)
Bearbeiten Sie die Konfiguration für Ihr Projekt:
posh-config
Starten Sie den PoshC2-Server:
posh-server
Alternativ starten Sie ihn als Dienst:
posh-service
Führen Sie separat den ImplantHandler für die Interaktion mit Implants aus:
posh -u <benutzername>
Siehe https://poshc2.readthedocs.io/en/latest/ für die vollständige Dokumentation zu PoshC2.
Wenn Sie Docker verwenden, können Sie das Docker-Image-Tag für die Ausführung mit der Option -t für posh-server und posh angeben.
Z.B.
posh-server -t latest
Es wird nicht empfohlen, PoshC2 während eines Engagements zu aktualisieren. Eingehende Änderungen können mit einem vorhandenen Projekt inkompatibel sein und zu unvorhersehbarem Verhalten führen.
Wenn Sie eine mit Git geklonte Version von PoshC2 verwenden, können Sie Ihre PoshC2-Installation mit dem folgenden Befehl aktualisieren:
*** PoshC2-Aktualisierungsskript ***
Verwendung:
posh-update -b <git-branch>
Standard ist der Master-Branch
Sie können eine ältere Version von PoshC2 verwenden, indem Sie auf den entsprechenden Tag verweisen. Beachten Sie, dass dies nur funktioniert, wenn Sie das Repository geklont haben. Sie können die Tags des Repositorys mit folgendem Befehl auflisten:
git tag --list
Wenn Sie einen lokalen Klon von PoshC2 haben, können Sie die verwendete Version offline ändern, indem Sie einfach die gewünschte Version auschecken:
git reset --hard <tagname>
Zum Beispiel:
git reset --hard v4.8
Beachten Sie jedoch, dass dadurch alle lokalen Änderungen an Dateien (z.B. Änderungen an Konfigurationsdateien) überschrieben werden und Sie möglicherweise das Installationsskript für diese Version erneut ausführen oder die Umgebung entsprechend neu einrichten müssen.
Diese Software sollte nur für autorisierte Testaktivitäten und nicht für böswillige Zwecke verwendet werden.
Durch das Herunterladen dieser Software akzeptieren Sie die Nutzungsbedingungen und den Lizenzvertrag.