
Многопоточный инструмент на Python3 для словарной атаки на SSH
Скрипт на Python 3 для выполнения словарных атак (wordlist) на целевой SSH-сервер с использованием двух текстовых файлов в качестве входных данных. Создан для моего технического собеседования в Intel.
Этот скрипт зависит от Paramiko и Colorama.
Установите зависимости с помощью pip install -r requirements.txt или pip3 install -r requirements.txt.
Порт 22 без ограничения попыток и периода блокировки
python3 buffalo.py localhost users.txt passwords.txt
По умолчанию количество потоков равно 100, это значение можно увеличить или уменьшить с помощью флага thread.
python3 buffalo.py localhost users.txt passwords.txt --threads 200
Укажите сервис на порту 2222
python3 buffalo.py localhost users.txt passwords.txt --port 2222
В большинстве систем действует некоторое ограничение на количество попыток для учётной записи за определённый промежуток времени. Чтобы оставаться в рамках этого лимита, количество попыток на учётную запись можно ограничить с помощью флагов --max_attempts и --lockout_period. Например, допустим 3 попытки на учётную запись за 15-минутный период.
python3 buffalo.py localhost users.txt passwords.txt --max_attempts 3 --lockout_period 15
[$] python3 buffalo.py -h [12:39:53]
usage: buffalo.py [-h] [--port [PORT]] [--max_attempts [MAX_ATTEMPTS]] [--lockout_period [LOCKOUT_PERIOD]]
[--threads [THREADS]]
target users passwords
Quick SSH brute force script for Red Team @Intel.
positional arguments:
target Target IP or hostname.
users Username file, one username per line.
passwords Password file, one password per line.
optional arguments:
-h, --help show this help message and exit
--port [PORT] SSH port. DEFAULT 22.
--max_attempts [MAX_ATTEMPTS]
Max attempts per account within the lockout window. DEFAULT unlimited.
--lockout_period [LOCKOUT_PERIOD]
Length of the lockout window in minutes. DEFAULT 0.
--threads [THREADS] Thread count. DEFAULT 100.
Вот краткий список того, что, по моему мнению, было бы здорово реализовать в будущем.
invoke_shell клиента Paramiko.exec_command при обнаружении действительных учётных данных. Идеи для размышления ниже.