PWNCAT ist eine Plattform nach der Ausbeutung Für Linux -Ziele . Es begann als Wrapper um grundlegende Binde- und Rückwärtsschalen und ist von dort aus gewachsen. Es optimiert die gemeinsamen Red -Team -Operationen, während Code von Ihrem Angreifer -Gerät und nicht vom Ziel inszeniert wird.
PWNCAT unterstützte immer nur Linux, aber es gab in letzter Zeit viel Arbeit, um mehrere Plattformen zu unterstützen. Derzeit gibt es Alpha -Unterstützung für Windows -Ziele. Weitere Informationen zur Verwendung von PWNCAT mit einem Windows -Ziel finden Sie in der neuesten Dokumentation.
PWNCAT fängt die RAW -Kommunikation mit einer Remote -Shell ab und ermöglicht es dem Benutzer, automatisierte Aktionen auf dem Remote -Host auszuführen, einschließlich Aufzählung, Implantatinstallation und sogar Berechtigungskalation.
Nach dem Empfangen einer Verbindung stellt PWNCAT einige gängige Konfigurationen für die Arbeit mit Remote -Shells ein.
which )) pwncat weiß, wie man PTY mit einigen verschiedenen Methoden hervorbringt, und wird die Methoden mit den zuvor auflisteten ausführbaren Ausführungsmitteln verweisen. Nach dem Laichen eines PTY richtet es das kontrollierende Terminal im RAW -Modus ein, sodass Sie auf ähnliche Weise wie ssh interagieren können.
pwncat synchronisiert auch die Remote -PTY -Einstellungen (z. B. Zeilen, Spalten, TERM Environment Variable) mit Ihren lokalen Einstellungen, um sicherzustellen, dass sich die Shell mit interaktiven Anwendungen wie vim oder nano korrekt verhält.
John Hammond und ich präsentierten pwncat bei Grimmcon. Unsere Präsentation, die hier auf YouTube zu finden ist. Dieses Video zeigt eine frühe Version der API und Schnittstelle. Weitere Informationen zur aktuellen Nutzung und der API -Dokumentation finden Sie in der Dokumentation!
Die PWNCAT -Dokumentation wird unter Read the Docs erstellt. Besuchen Sie die neueste Dokumentation für Verwendungs- und Entwicklungsdokumentation!
PWNCAT benötigt Python 3.9+ unter Linux
pwncat hängt nur von einer funktionierenden Python -Entwicklungsumgebung ab, die unter Linux läuft. Um einige der mit pip erforderlichen Pakete zu installieren, benötigen Sie wahrscheinlich das "Python Development" -Paket Ihrer Verteilung. Auf Debian-basierten Systemen ist dies python-dev . Für Arch werden die Entwicklungsdateien mit dem Hauptpython -Repository versendet. Für Enterprise Linux heißt das Paket python-devel .
pwncat wird unter dem Namen pwncat-cs nach PYPI geführt und kann mit pip wie SO installiert werden:
pip install pwncat-csEs wird jedoch empfohlen, PWNCAT aus einer virtuellen Umgebung zu installieren.
python3 -m venv pwncat-env
source pwncat-env/bin/activate
pip install pwncat-cs Für eine Entwicklungsumgebung pwncat -Nutzung Python Poesie. Sie können das Repository lokal klonen und mit Gedichten eine Entwicklungsumgebung einrichten.
# Setup pwncat inside a poetry-managed virtual environment
git clone [email protected]:calebstewart/pwncat.git
cd pwncat
poetry install
# Enter the virtual environment
poetry shell Aufgrund des Namenskonflikts mit Cytopia's PWNCAT habe ich beschlossen, das Paket in pwncat-cs umzubenennen. Dies schließt das Umbenennen des Einstiegspunkts ein, damit keine direkten Konflikte mit dem Projekt von Cytopia vorhanden sind. pc Sie von v0.4.* pcat Weitere Informationen finden Sie in den neuesten Versionsnotizen.
Der zusätzliche Vorteil dieses Schrittes besteht darin, dass das Projekt nun auf PYPI weitergegeben wird, um die Installation/Aktualisierung in Zukunft zu vereinfachen.
pwncat unterstützt jetzt Verbindungen von Windows -Zielen ab v0.4.0a1 . Die Windows-Plattform verwendet eine .NET-basierte C2-Bibliothek, die automatisch geladen wird. Windows -Ziele sollten sich entweder mit einer cmd.exe oder powershell.exe -Shell verbinden, und PWNCAT kümmert sich um den Rest.
Die Bibliotheken, die das C2 implementieren, werden unter pwncat-windows-c2 implementiert. Die DLLs für den C2 werden automatisch aus der gezielten Version für Sie heruntergeladen. Wenn Sie keine Internet-Konnektivität auf Ihrer Zielmaschine haben, können Sie PWNCAT angeben, die DLLs mit dem Argument --download-plugins vorzubereiten. Wenn Sie eine Release-Version von PWNCAT ausführen, können Sie auch einen Tarball aller integrierten Plugins von der Releases-Seite herunterladen.
Die Plugins werden standardmäßig in ~/.local/share/pwncat gespeichert. Dies ist jedoch mit der plugin_path -Konfiguration konfigurierbar. Wenn Sie die verpackten Plugins -Set von der Seite "Releases" herunterladen, sollten Sie sie auf den Pfad extrahieren, auf den plugin_path gerichtet ist.
Neben den Haupt -C2 -DLLs können auch andere Plugins verfügbar sein. Derzeit sind die einzigen standardmäßigen Plugins der C2 und eine Implementierung von BadPotato. PWNCAT kann .NET -Binärdateien reflektierend laden, um ein Plugins für den C2 zu verwenden. Weitere Informationen zu Windows C2 -Plugins finden Sie in der Dokumentation.
Kürzlich wurde die Architektur des PWNCAT -Frameworks so neu gestaltet, um eine generische "Modul" -Struktur zu integrieren. Alle Funktionen werden jetzt als Module implementiert. Dies umfasst Aufzählung, Ausdauer und Eskalation der Privilegien. Die Interaktion mit Modulen ähnelt den meisten anderen Plattformen nach der Ausübung. Sie können die vertrauten Befehle für run , search und info -Befehle verwenden und Modulkontexte mit dem Befehl use . Weitere Informationen finden Sie in der Dokumentation.
Die Installation auf Blackarch ist so einfach wie:
pacman -Syu pwncat-calebDie Befehlszeilenparameter für PWNCAT versuchen, flexibel zu sein und eine Vielzahl von gemeinsamen Verbindungssyntax zu akzeptieren. Insbesondere wird es versuchen, gemeinsame NetCat und SSH -Syntax zu akzeptieren. Das Folgende ist alle gültig:
# Connect to a bind shell
pwncat-cs connect://10.10.10.10:4444
pwncat-cs 10.10.10.10:4444
pwncat-cs 10.10.10.10 4444
# Listen for reverse shell
pwncat-cs bind://0.0.0.0:4444
pwncat-cs 0.0.0.0:4444
pwncat-cs :4444
pwncat-cs -lp 4444
# Connect via ssh
pwncat-cs ssh://user:[email protected]
pwncat-cs [email protected]
pwncat-cs user:[email protected]
pwncat-cs -i id_rsa [email protected]
# SSH w/ non-standard port
pwncat-cs -p 2222 [email protected]
pwncat-cs [email protected]:2222
# Reconnect utilizing installed persistence
# If reconnection fails and no protocol is specified,
# SSH is used as a fallback.
pwncat-cs reconnect://[email protected]
pwncat-cs reconnect://user@c228fc49e515628a0c13bdc4759a12bf
pwncat-cs [email protected]
pwncat-cs c228fc49e515628a0c13bdc4759a12bf
pwncat-cs 10.10.10.10 Standardmäßig geht PWNCAT davon aus, dass die Zielplattform Linux ist . Um eine Verbindung zu einer Windows-Reverse oder zu binden oder Shell zu binden, müssen Sie das Argument --platform/-m übergeben:
pwncat-cs -m windows 10.10.10.10 4444
pwncat-cs -m windows -lp 4444 Weitere Informationen zur Syntax- und Argumentationsbearbeitung finden Sie in den Hilfsinformationen mit pwncat-cs --help oder die Dokumentation.
Die empfohlene Installationsmethode ist eine virtuelle Python -Umgebung. Dies bietet die einfachste tägliche Verwendung von pwncat . Es gab jedoch Interesse daran, pwncat aus einem Docker -Image zu verwenden. Daher habe ich eine Dockerfile bereitgestellt, die eine funktionierende pwncat -Installation bietet. So erstellen Sie den Bildgebrauch:
docker build -t pwncat . Dadurch wird das pwncat Docker -Bild mit dem Tag "pwncat" erstellt. Das Arbeitsverzeichnis innerhalb des Containers ist /work . Der Einstiegspunkt für den Container ist der pwncat -binäre. Es kann so verwendet werden:
# Connect to a bind shell at 10.0.0.1:4444
docker run -v " /some/directory " :/work -t pwncat 10.0.0.1 4444 In diesem Beispiel sind nur die Dateien in /some/directory dem Container ausgesetzt. Für Upload/Download kann der Container natürlich nur die Dateien über alle montierten Verzeichnisse entlarvt sehen.
pwncat bietet zwei Hauptmerkmale. Im Kern ist es das Ziel, eine Remote -Pseudoterminal (PTY) automatisch einzurichten, die eine Interaktion mit dem Remote -Host ermöglicht, ähnlich wie eine vollständige SSH -Sitzung. Beim Betrieb in einer PTY können Sie gemeinsame Funktionen Ihrer Remote -Shell wie Historie, Linienbearbeitung und grafische Terminalanwendungen verwenden.
Die andere Hälfte von pwncat ist ein Framework, in dem Ihre Remote -Shell zur Durchführung einer automatisierten Aufzählung, Persistenz und Privilegien -Eskalationsaufgaben verwendet wird. Die lokale pwncat -Eingabeaufforderung bietet eine Reihe nützlicher Funktionen für Standard -Penetrationstests, einschließlich:
pwncat bietet auch die Möglichkeit, diese Remote "Tampers" automatisch zurückzusetzenDas zugrunde liegende Framework für die Interaktion mit dem Remote -Host zielt darauf ab, die zugrunde liegende Shell- und Verbindungsmethode so weit wie möglich abzuwehren, sodass Befehle und Plugins nahtlos mit dem Remote -Host interagieren können.
Sie können mehr über die Interaktion mit pwncat und über den zugrunde liegenden Framework in der Dokumentation erfahren. Wenn Sie eine Idee für eine neue Berechtigungs -Eskalationsmethode oder eine Persistenzmethode haben, sehen Sie sich die API -Dokumentation speziell an. Pull -Anfragen sind willkommen!
PWNCAT möchte ein roter Teamschweizer Army Messer sein. Hoffentlich werden bald weitere Funktionen hinzugefügt.
Da pwncat versucht, mit minimaler Remote -Systemabhängigkeiten abstrakt mit jeder Hülle zu interagieren, gibt es einige Kantenfälle, die wir gefunden haben. Wo wir sie finden, tun wir alles, um sie zu berücksichtigen und sie vor dem Benutzer zu verbergen. Einige sind jedoch durch die Risse geschlüpft und wurden in freier Wildbahn beobachtet. In diesem Fall wird pwncat alles tun, um Ihr Terminal zu erhalten, aber Sie können mit einigen besonderen Ausgängen oder Befehlsfehlern begrüßt werden.
Während BSD ein UNIX-basierter Kernel ist, unterscheiden sich die Userland-Tools in der Praxis merklich von ihren Linux-Gegenstücken. Aus diesem Grund funktionieren viele der automatisierten Funktionen von pwncat nicht oder fehlen nicht, wenn sie gegen ein BSD -basierter Ziel ausgeführt werden. Ich habe versucht, alle Fehler oder Kantenfälle zu fangen, es gibt jedoch wahrscheinlich einige Schluckaufe, die nicht vollständig gegen BSD getestet wurden. In jedem Fall sollte die stabilisierte Hülle in einer BSD -Umgebung funktionieren, aber ich gebe keine Garantien vor.
Wenn ich einige Zeit später in der Straße finde, kann ich versuchen, pwncat auf BSD zu stabilisieren, aber ich konzentriere mich im Moment auf Linux-basierte Verteilungen. Wenn Sie dazu beitragen möchten, dass sich pwncat auf BSD besser verhalten, sind Sie mehr als willkommen, um das Repo zu erreichen oder einfach nur zu streichen. Wie immer sind Pull -Anfragen willkommen!