
Una herramienta de ataque de diccionario SSH multihilo en python3
Un script de Python 3 para ejecutar ataques de diccionario/lista de palabras contra un servidor SSH objetivo utilizando dos archivos de texto como entrada. Escrito para los fines de mi evaluación técnica de Intel.
Este script depende de Paramiko y Colorama.
Instala las dependencias mediante pip install -r requirements.txt o pip3 install -r requirements.txt.
Puerto 22 sin límite de intentos ni período de bloqueo
python3 buffalo.py localhost users.txt passwords.txt
El número predeterminado de hilos es 100, esta cantidad se puede aumentar o reducir usando el indicador thread.
python3 buffalo.py localhost users.txt passwords.txt --threads 200
Especifica el servicio en el puerto 2222
python3 buffalo.py localhost users.txt passwords.txt --port 2222
La mayoría de los sistemas tienen algún tipo de límite de intentos por cuenta en un cierto período de tiempo. Para mantenerse por debajo de este límite, el número de intentos por cuenta se puede limitar mediante los indicadores --max_attempts y --lockout_period. Por ejemplo, para limitar 3 intentos por cuenta en un período de 15 minutos.
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.
Aquí hay una breve lista de cosas que creo que sería interesante implementar en el futuro.
invoke_shell del cliente Paramiko.exec_command si se encuentran credenciales válidas. Ideas debajo.