pwnSpoof (de Punk Security) genera archivos de registro falsos realistas para servidores web comunes con escenarios de ataque personalizables.
Cada paquete de registros es único y completamente personalizable, lo que lo hace perfecto para generar escenarios CTF y series de entrenamiento.
¿Puedes encontrar la sesión del atacante y construir la imagen del incidente?
Acerca del Proyecto
pwnSpoof se creó a raíz de un ejercicio de formación sobre caza de amenazas que Punk Security impartió para un cliente. El ejercicio de formación consistía en utilizar una herramienta de análisis de registros como Splunk (existen otras herramientas de análisis de registros) y los registros de IIS para encontrar ataques de fuerza bruta de inicio de sesión e inyecciones de comandos.
La idea detrás de la aplicación pwnSpoof es;
- Proporcionar un entorno de entrenamiento rápido estilo CTF
- Crear registros únicos en cada ejecución
- Probar la caza de amenazas en los registros de IIS, Apache y NGINX
Una vez creado un conjunto de registros, la idea es cargarlos en Splunk y utilizar varias técnicas para responder a las siguientes preguntas;
- ¿Cuál fue la dirección IP y el user_agent del atacante?
- ¿Se autenticó el atacante y, si es así, con qué cuenta?
- ¿Dónde estaba la geolocalización del atacante?
- ¿Cuándo se produjo el ataque?
- ¿Qué tipo de ataque fue?
- ¿Qué ocurrió durante el ataque?
- ¿Qué artefactos pueden quedar en el servidor?
- ¿Qué medidas se pueden tomar para remediarlo?
Instalación de pwnSpoof
A continuación, se explica cómo empezar con pwnSpoof
Requisitos previos
pwnSpoof está escrito en python y está probado con python3. No se necesitan módulos adicionales, sólo utilizamos la biblioteca estándar.
Si obtienes el siguiente mensaje de error, por favor especifica python3 cuando ejecutes pwnSpoof. Python2 no está soportado.
File "pwnspoof.py", line 176
print("{:6.2f}% ".format(y * x), end="\r", flush=True)
^
SyntaxError: invalid syntax
Instalación
- Clonar en Git el repo de pwnSpoof
git clone https://github.com/punk-security/pwnspoof
- Cambiar el directorio a pwnSpoof
cd pwnspoof
- Ejecuta pwnSpoof
python pwnspoof.py --help
Uso
Modificadores disponibles para pwnSpoof:
positional arguments:
{banking,wordpress,generic}
App to emulate
optional arguments:
-h, --help show this help message and exit
--out OUT Output file (default: pwnspoof.log)
--iocs Do you want to know the attackers iocs for easier searching? (default: False)
log generator settings:
--log-start-date LOG_START_DATE
Initial start of logs, in the format YYYYMMDD i.e. "20210727"
--log-end-date LOG_END_DATE
End date for logs, in the format YYYYMMDD i.e. "20210727"
--session-count SESSION_COUNT
Number of legitimate sessions to spoof (default: 2000)
--max-sessions-per-user MAX_SESSIONS_PER_USER
Max number of legitimate sessions per user (default: 3)
--server-fqdn SERVER_FQDN
Override the emulated web apps default fqdn
--server-ip SERVER_IP
Override the emulated web apps randomised IP
--server-type {IIS,NGINX,CLF}
Server to spoof (default: IIS)
--uri-file URI_FILE File containing web uris to override defaults, do not include extensions
--noise-file NOISE_FILE
File containing noise uris to override defaults, include extensions
attack settings:
--spoofed-attacks SPOOFED_ATTACKS
Number of attacker sequences to spoof (default: 1)
--attack-type {bruteforce,command_injection}
Number of attacker sequences to spoof (default: bruteforce)
--attacker-geo ATTACKER_GEO
Set the attackers geo by 2 letter region. Use RD for random (default: RD)
--attacker-user-agent ATTACKER_USER_AGENT
Set the attackers user-agent. Use RD for random (default: RD)
Ejemplos
El siguiente ejemplo creará un conjunto de registros de IIS para la fuerza bruta contra pwnedbank.co.uk.
python pwnspoof.py banking --server-fqdn pwnedbank.co.uk --attack-type bruteforce --server-type IIS --out iis-output.log
Realicemos este ejemplo contra un sitio web vulnerable:
python3 pwnspoof.py banking --server-fqdn test.php.com --attack-type bruteforce --server-type IIS --out iis.log
Como se puede ver a continuación se ha generado todos los registros en orden que parece muy real.
El siguiente ejemplo creará un conjunto de registros de NGINX para command_injection contra pwnedbank.co.uk.
python pwnspoof.py banking --server-fqdn pwnedbank.co.uk --attack-type command_injection --server-type NGINX
El siguiente ejemplo creará un conjunto de registros con 5000 sesiones de rutina y 3 sesiones de ataque
python pwnspoof.py banking --session-count 5000 --spoofed-attacks 3
El siguiente ejemplo creará un conjunto de registros y mostrará las direcciones IP de los atacantes
python pwnspoof.py banking --spoofed-attacks 3 --iocs
Demostración
Hoja de Ruta
pwnSpoof está construido para producir registros de ataques web auténticos y lo hace muy bien. Ahora mismo está centrados en refactorizar el código, construir un conjunto de pruebas y conseguir el primer empuje a PyPi, pero hay grandes ambiciones para pwnSpoof.
Próximamente
Añadir aplicaciones web adicionales más allá de banking para proporcionar variedad adicional a los registros
- Medios de comunicación social
- WordPress
- Comercio electrónico
Añadir ataques web adicionales y más dinámicos
- OWASP TOP 10 completo
- Codificación de payload personalizable
- Ataques multisesión
- Ofuscación
Aspiraciones no programadas
¡Videos de entrenamiento!
pwnSpoof fue construido para ser una gran herramienta para la formación del equipo azul por lo que sólo tiene sentido para producir algunos materiales de formación para mostrarlo.
- Cómo ingerir registros en varios analizadores de registros (Splunk, Elastic, Open Disto, Sentinel)
- Cómo utilizar el poder de REGEX para pivotar alrededor de los datos
No sólo weblogs
Hay deseos de ver pwnSpoof generando todo tipo de registros de caza de amenazas, como los registros de auditoría de Office365 para Sharepoint, Onedrive y AzureAD
Blackhat Arsenal
pwnSpoof ha sido presentado a Blackhat Arsenal para su consideración y sería ASOMBROSO su demostración en Blackhat Londres este año (2021).
https://github.com/punk-security/pwnspoof