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

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

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

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

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

Категории

Все категории
Loading categories
SSH-Snake — SSH-Snake — это самораспространяющийся, самореплицирующийся безфайловый скрипт, который автоматизирует пост-эксплуатационную задачу обнаружения SSH-приватных ключей и хостов. | Kitploit
Инструменты/GitHubGitHub/megamansec/ssh-snake
Повышение привилегийРазведкаКартирование сетиЛатеральное перемещениеСбор информацииПост-эксплуатацияТестирование на ПроникновениеRed TeamingArchived
GitHubmegamansec/ssh-snake

SSH-Snake

SSH-Snake — это самораспространяющийся, самореплицирующийся безфайловый скрипт, который автоматизирует пост-эксплуатационную задачу обнаружения SSH-приватных ключей и хостов.

2.3k2214 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

SSH-Snake: Автоматическое сетевое перемещение через SSH

🐍 SSH-Snake — это мощный инструмент, предназначенный для автоматического перемещения по сети с использованием закрытых ключей SSH, обнаруженных на системах, с целью создания всесторонней карты сети и её зависимостей, а также определения того, насколько сеть может быть скомпрометирована с помощью SSH и закрытых ключей, начиная с определённой системы.

SSH-Snake автоматически выявляет связи между системами, которые соединены через SSH, что вручную потребовало бы огромных затрат времени и усилий.

Другими словами, SSH-Snake автоматически и рекурсивно выполняет следующие задачи:

  1. На текущей системе находит все закрытые ключи SSH.
  2. На текущей системе находит всех хостов или назначений (user@host), которые могут принять эти ключи.
  3. Пытается подключиться по SSH ко всем найденным назначениям, используя все обнаруженные закрытые ключи.
  4. Если подключение к назначению успешно, повторяет шаги 1–4 на подключённой системе.

Это полностью самореплицирующийся и самораспространяющийся инструмент, работающий полностью без файлов. Во многих смыслах SSH-Snake — это червь: он копирует себя и распространяется с одной системы на другую, насколько это возможно.

Вместо того чтобы вручную прыгать между системами с ключами SSH, как в игре Super Mario, позвольте SSH-Snake сделать эту работу за вас.

Хотя этот инструмент предназначен для хакерских целей, системные администраторы также могут использовать его для лучшего понимания своей инфраструктуры и сети. Если вы хотите отключить вывод обнаруженных закрытых ключей, закомментируйте эту строку кода.

Подробный анализ того, как на самом деле работает этот скрипт, технические детали, интересные находки, проектные решения, бенчмаркинг и извлечённые уроки можно найти в этой статье блога. Это программное обеспечение написано Джошуа Роджерсом.

Скриншоты

Уменьшенный скриншот вывода SSH-Snake в очень маленькой сети.

Граф, визуализирующий связи между системами через SSHСиние узлы означают, что назначение может подключиться к самому себе (user@host<-->user@host). Красные рёбра указывают на двунаправленное соединение (user1@host1<-->user2@host2).

Граф, визуализирующий связи между системами через SSHЗелёные узлы означают хост (без имени пользователя), который может подключиться к самому себе (host1<-->host1). Зелёные рёбра указывают на двунаправленное соединение (host1<-->host2). Серый хост в правом верхнем углу — это хост, с которого был запущен скрипт.

Граф, визуализирующий связи между системами через SSHСиние узлы означают, что назначение может подключиться к самому себе (user@host<-->user@host). Красные рёбра указывают на двунаправленное соединение (user1@host1<-->user2@host2).

Использование и запуск SSH-Snake

SSH-Snake можно либо скачать, либо передать в bash через pipe:

root@kitploit:~
wget https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh
bash ./Snake.nocomments.sh

или

root@kitploit:~
curl https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash

О SSH-Snake

SSH-Snake бесшовно имитирует то, что делал бы человек-противник для обнаружения закрытых ключей SSH и назначений, к которым можно подключиться. Написанный полностью на Bash, он работает с минимальным набором зависимостей, обычно доступных на основных системах Linux (и MacOS): bash, ssh, coreutils, awk, uniq, sort, grep, tr, find и cat. Требуется getent ИЛИ dscacheutil. sed требуется только для самой первой системы. Также могут использоваться sudo, hostname, , , , , и , но они не обязательны (скрипт корректно обрабатывает случаи их отсутствия). Если на системе не окажется необходимых пакетов, он мягко сообщает об ошибке, предупреждая пользователя, что сканирование не может быть продолжено на этой конкретной системе (и возвращается, продолжая с предыдущей).

SSH-Snake полностью бесфайловый: после запуска скрипта пользователем он передаётся в bash целевых систем через stdin и аргументы bash (через SSH). На сканируемых системах не остаётся материальных следов скрипта: единственные свидетельства его работы — это дерево процессов и значительное количество неудачных попыток SSH, которые неизбежно произойдут.

SSH-Snake использует поиск в глубину: после подключения к одной системе он пытается подключиться дальше от неё, прежде чем вернуться назад.

Название SSH-Snake связано с тем, что вывод скрипта напоминает змею, ползущую вверх и вниз по сети. Однако, в отличие от игры Snake, SSH-Snake не умирает, когда кусает собственный хвост (подключается к системе, которая уже просканирована или сканируется в данный момент): он просто выводит, как было установлено соединение, и возвращается, не повторяя сканирование (чтобы избежать бесконечной рекурсии).

SSH-Snake протестирован на различных версиях Linux и MacOS (с установленным Homebrew Bash). Если вы столкнётесь с ОС на базе Linux, с которой он несовместим, пожалуйста, сообщите об этом.

Возможности

  • Рекурсивное SSH-подключение от одной системы к другой с использованием локальных закрытых ключей SSH,
  • Бесфайловое перемещение и распространение/репликация скрипта SSH-Snake только через stdin и аргументы bash на удалённые системы,
  • Автоматическое повышение привилегий до root с помощью sudo, если это возможно,
  • Обнаружение файлов закрытых ключей SSH по записям .bash_history,
  • Обнаружение закрытых ключей SSH в часто используемых файлах и папках,
  • Экспорт закрытых ключей SSH в вывод скрипта,
  • Настраиваемое выполнение пользовательских команд на каждой системе,
  • Модульная система «включай и работай» для обнаружения закрытых ключей и систем,
  • Определение хостов по IP-диапазонам, последним входам, известным хостам, файлам конфигурации SSH и многому другому,
  • Возможность обнаружения, когда система уже просканирована или находится в процессе сканирования, чтобы сеть типа A->B->C могла также обнаружить C->A, но не регрессировала к A->B->C-A->B->C->A->B->...,
  • Возможность создания графических визуализаций сети из вывода скрипта,
  • … и многое другое.

Настройки

SSH-Snake поставляется с некоторыми общими настройками, которые можно сконфигурировать. Эти настройки описаны в SETTINGS.md#general-settings.

SSH-Snake также включает множество настраиваемых/модульных стратегий (функций), которые можно использовать для обнаружения закрытых ключей SSH на системе и поиска хостов и назначений для подключения. Предусмотрены разумные значения по умолчанию, однако если вы хотите выполнить максимально полное сканирование, то включение дополнительных методов обнаружения может помочь. Если сканирование занимает много времени, отключение некоторых методов может ускорить процесс. За исключением одной стратегии (find_ssh_keys), каждую стратегию можно отключить/включить. Они описаны в SETTINGS.md#configurable-discovery-strategies.

Понимание вывода

Сырой вывод SSH-Snake содержит смесь информации об обнаруженных закрытых ключах, назначениях и сообщениях об ошибках.

Подробное объяснение полного вывода SSH-Snake можно найти в OUTPUT.md.

Пример вывода доступен в файле example-output.log.

Визуализация связей между системами

Вывод SSH-Snake можно использовать для создания графов/визуализаций сети, по которой скрипт перемещается.

Подробное объяснение того, как создавать и интерпретировать изображения/визуализации из вывода SSH-Snake, можно найти в GRAPHICS.md.

Другие инструменты

Помимо возможности создания визуализаций сети, по которой перемещается SSH-Snake, предоставляются три других инструмента. А именно:

  1. forward-lookup-host.py: По заданному исходному хосту или назначению определяет все системы, к которым можно получить доступ прямо или косвенно (т.е. через третью систему).
  2. reverse-lookup-host.py: По заданному целевому хосту или назначению определяет все системы, которые могут получить к нему доступ прямо или косвенно.
  3. shortest-path-create-chain.py: По заданным хосту или назначению A и B определяет кратчайший путь, соединяющий их.

Третий инструмент также генерирует команду, которую можно использовать для подключения от назначения A к назначению B. Например:

root@kitploit:~
$ python3 tools/shortest-path-create-chain.py --file output.log --src '[email protected]' --dest '[email protected]'

Кратчайший путь от [email protected] до [email protected]: [email protected]>[email protected]>[email protected]>[email protected]

[..]

ssh -i "/home/jrogers/.ssh/key" [email protected] 'sudo ssh -i "/root/.ssh/id_rsa" [email protected] 'ssh -i "/tmp/key" [email protected]''

Snake.sh против Snake.nocomments.sh

Поскольку скрипт довольно большой, загрузка его в here-document (что он делает автоматически, так как сам является Квином) заставляет bash записывать во временный файл (если размер превышает 65535 байт).

Чтобы уменьшить размер и сохранить полную бесфайловость, в Snake.nocomments.sh удалены все комментарии, лишние пробелы и пустые строки. Это уменьшает размер файла настолько, что временный файл bash не создаётся.

Ошибки / Проблемы

Если вы обнаружите какие-либо ошибки или проблемы, связанные со скриптом, сообщите о них через GitHub Issues. Пожалуйста, укажите ваши настройки конфигурации.

Особый интерес представляют любые необычные выводы [line], связанные с ошибками, которые не были обработаны скриптом.

Ограничения

  • Только IPv4: Как и все лучшие программы, скрипт не поддерживает IPv6. Не думаю, что в ближайшее время появится поддержка.

  • Только порт 22: Предполагается, что SSH работает на порту 22.

  • GNU coreutils: Скрипт сильно завязан на GNU coreutils. Я не определил, насколько (и используется ли вообще) GNU-специфичный код.

  • Скрипт в настоящее время не ищет сокеты SSH-агента.

Скачать инструмент
ip
timeout
arp
ifconfig
ipconfig
xargs