sábado, 19 de mayo de 2012

Reverse Shell detrás de router utilizando SSH

Saludos gente!!!
Hoy quería comentar una opción de ssh conocida como Local Port Forwarding es bastante útil y por ahí no muy conocida, en este caso la utilizaremos para hacer un reverse shell  estando detrás de un router y sin  tener permisos para abrir puertos.
Para comenzar vamos a hacer una breve explicación de que es el port forwarding, que es básicamente direccionar el trafico de un puerto a otro, lo que hace ssh es reenviar el trafico de un puerto local a través de un túnel hacia un puerto remoto y viceversa.
Bien creo que no soy muy bueno explicando y mi intención no es explicar como usar ssh sino como usar la opción -R  para hacer un local port forwarding así que vamos a hacer un ejemplo de remote forwarding port (-L) para conectar a un irc para luego hacer un forward de verdad :D
 ssh  -NL 1337:irc.freenode.net:6667 ssh.servidor -l usuario
bien con esto estaríamos haciendo un túnel para conectar a freenode solo bastaría poner en nuestro irssi " /connect 127.0.0.1 1337 " o ejecutar irssi -c 127.0.0.1 -p 1337 para conectar a través del túnel a freenode y así ocultar nuestra ip =)
Ahora vamos a usar la opción -R para hacer el local port forwarding para lograr un reverse shell. ¿que hace la opción -R?

por ejemplo con el -L le dices a ssh que reenvíe el tráfico que vaya a un puerto local hacia uno remoto, con -R le dices a ssh que reenvíe el tráfico que llegué a un puerto remoto hacia uno local. Suena bastante bien no :D
Pero olvide mencionar que los túneles solo escuchan a localhost (127.0.0.1) por lo tanto todavía nos falta editar el archivo ssh_config en otras distros es sshd_config en ssh.servidor agregar una opción al final del archivo /etc/ssh/ssh_config:
GatewayPorts yes
bien con eso los túneles escucharían a cualquier interfaz, ahora un ejemplo de como hacer el local port forwarding :
ssh -NR 1337:127.0.0.7:4444 ssh.servidor -l usuario
 Lo cual quiere decir: “abre un túnel desde ssh.servidor en el puerto 4444 que reenvíe el tráfico hacia mi máquina (127.0.0.1) en el puerto 1337″.
Bien ahora solo quedaría hacer el reverse shell como siempre :P solo con la particularidad de que en vez de poner tu ip pondrás la ip del ssh.servidor
que seria maso menos así:

en tu pc ponemos netcat a la escucha:
nc -nlvvp 1337
y en la reverse shell solo quedaría poner:

ip: ssh.servidor  port:4444

con eso deberías tener tu reverse shell detrás de un router espero que haya entendido el procesamiento y les sea de utilidad ya en este caso nos es útil para hacer un reverse shell detrás de un router pero pueden darle un montón de utilidades, es cuestión de usar la imaginación.
bueno aca les dejo el link de un php reverse shell que es una de las que uso por si quiere practicar un saludo.

PHP Reverse Shell

                                                                                                           nagat0