
скрипт для перечисления пользователей SSH на основе различий во времени выполнения и ответах аутентификации. Использует тот же вектор, что и CVE-2018-15473, на уязвимых версиях OpenSSH (≤ 7.7), хотя также может выявлять закономерности в современных конфигурациях.
скрипт для перебора пользователей SSH на основе разницы во времени и ответов аутентификации. Эксплуатирует тот же вектор, что и CVE-2018-15473, в уязвимых версиях OpenSSH (≤ 7.7), хотя также может выявлять паттерны в современных конфигурациях. Работает на Python 3 + Paramiko и поддерживает:
Предварительное чтение баннера для предотвращения ошибок EOF/NoBanner.
Повторы при попытке и задержка между пользователями (для обхода tarpits/MaxStartups).
Автонастройка параметров (-m, -t) в зависимости от джиттера цели.
⚠️ Этичное использование
Этот скрипт следует использовать только в собственных средах или с явного разрешения. Злоупотребление против внешних систем без разрешения может быть незаконным.
📖 Базовое использование ./ssh_enum_py3.py -i -u users.txt -m <multiplier_ms> -t
Пример: ./ssh_enum_py3.py -i 149.210.234.234 -u users.txt -m 5000 -t 8
⚙️ Опции -i, --ip Целевой хост/IP (обязательно) -p, --port Порт SSH (по умолчанию: 22) -u, --userlist Файл со списком пользователей (по одному в строке)
-a, --autotune Вычисляет рекомендуемые параметры (multiplier и threshold) -m, --multiplier Порог в миллисекундах выше локальной медианы -t, --threshold Минимальное количество «голосов» (попыток, превышающих cutoff)
--attempts Попыток на пользователя (по умолчанию: 12) --timeout Тайм-аут соединения/аутентификации (с, по умолчанию: 6) --banner-timeout Тайм-аут чтения баннера SSH (с, по умолчанию: 12) --delay Пауза между попытками одного пользователя (с, по умолчанию: 0.6) --cooldown-users Пауза между пользователями (с, по умолчанию: 0) --retries Повторов на попытку в случае ошибки баннера/транспорта
🚀 Примеры использования
Вывод:
[*] Autotune sugerido: multiplier (ms): 4986 threshold : 8 baseline_med : 3586 ms (avg=3596 ms) error mix : {'AuthFailed': 12}
Автонастройка + перечисление в одном запуске
./ssh_enum_py3.py -i 149.210.234.234 -a -u users.txt
--timeout 12 --banner-timeout 30 --delay 3 --cooldown-users 15
Прямое перечисление с фиксированными параметрами
./ssh_enum_py3.py -i 149.210.234.234 -u users.txt -m 4986 -t 8
--attempts 10 --timeout 12 --banner-timeout 30 --retries 5 --delay 3 --cooldown-users 15
📋 Интерпретация результатов
likely VALID → Пользователь, вероятно, существует (превысил cutoff в ≥ threshold попыток).
likely INVALID → Пользователь, вероятно, не существует (постоянные ответы, такие как «AuthFailed»).
errors={...} → сводка кодов:
AuthFailed: нормальный ответ SSH.
NoBanner: сервер разорвал соединение до баннера (tarpit, MaxStartups, WAF).
TransportError: ошибка сети/времени.