Que es netcat?
Netcat fue creado originalmente por Hobbit y adaptado a Wndows Weld Pond de L0phtes, es una utilidad usada por los administradores de red para hacer diagn?sticos y para realizar conexiones del tipo TCP y UDP, desde y hacia cualquier puerto y direcci?n IP
Esta herramienta tambi?n viene para Windows, y es sobre esa plataforma sobre la que trata este manual, tampoco se explican absolutamente todas la utilidades que le puedes dar ya que no me da la imaginaci?n para darle mas usos (jajajaajajaj), pero espero que estos varios ejemplo con los que acompa?o sirva para despertar curiosidad e inter?s en una herramienta, para mi, muy poderosa, que puede ayudarte much?simo,
Tambi?n te toca experimentarla a ti, pero como reconozco que es medio complicada se me ocurri? poner ejemplos de utilizaci?n claros para poder plasmar lo emp?rico y as? poder apreciar la versatilidad de estos 50Kb
Para utilizarlo se lo invoca desde la l?nea de comandos o ventana D.O.S agreg?ndole los modificadores necesarios para lo que necesitamos hacer, o bien se lo puede invocar desde un archivo.bat (para automatizar alguna tarea), o se puede incluir netcat dentro de cualquier script o programa y con esto me refiero a que podemos usarlo como complemento de VB o C++ u otro lenguaje
La sintaxis de los comandos la coloco en la p?gina siguiente para facilitar la visualizaci?n de todos los comandos juntos
Cabe destacar que para cerrar la conexi?n se hace con ctrl+C
Sintaxis de comandos de netcat
nc [-argumentos] [ host] [puerto | rango de puertos]
Argumentos: (Todos son opcionales)
-h = (Help) Ayuda
-n = (Numeric) Solo acepta IP num?rico ( si no ponemos esta opci?n hace resoluci?n DNS)
-v = (Verbose) pone informaci?n adicional sobre la conexi?n Recomendable
usarlo siempre
-v -v = (Very Verbose) informaci?n mas detallada todav?a No muy necesario,
podr?a ser ?til en diagnostico de sistemas problem?ticos
-w <segs> = (Wait) espera cierto tiempo a que se establezca la conexi?n (EJ: -w 3 espera 3 segundos para realizar la conexi?n y luego 3 mas por las dudas, antes de darnos un time out)
-p <puerto> = (Port) puerto local a utilizar
-r = (Random) elecci?n de puertos al azar (locales y remotos)
-l = (Listen) escuchar por conexiones del exterior.
-L = (Listen) escuchar por conexiones del exterior. Aun sigue escuchando cuando la conexi?n establecida se corta
-e <prog> = (Execute) correr un programa al establecerse una conexi?n.
-t = (Telnet) - Evita negociaciones iniciales con telnet. ?til, pero puede
reducir confiabilidad en la transmisi?n de datos
-z = (Zero I/O) Rastreo rapido de puertos, evitando salida o entrada de datos.
-i <segs> = (Interval) Espera un intervalo de tiempo entre paquetes enviados
-g <gateway> (Gateway) Maquina que retransmitir? nuestros datos a otra maquina o al destino final.
-G <pointer> = (Gateway Pointer) Es lo que indica que gateway esta en uso en determinado momento. En ocasiones es ?til mover este indicador nosotros mismos.
Definido en m?ltiplos de 4.
-o <logfile> = (obtiene un archivo log en Hex de la acci?n) Genera un Log de
las actividades de netcat en c?digo Hexadecimal.
-u = (UDP) Con esta opci?n le dices a netcat que trabaje con protocolo UDP en vez de TCP.
-d = (Modo Stealth o encubierto) Esta opci?n desvincula al Programa de la consola, haci?ndolo trabajar en el Back Ground.
< (nombre archivo.extension) = dirige un archivo al exterior
> (nombre archivo.extencion) = redirige lo que entra por un puerto a un archivo
Pero como el movimiento se demuestra andando, pasemos a los ejemplos de uso diario que le encontr? a netcat
Netcat practico
(estos ejemplos pueden ser variados dependiendo de los modificadores)
Si queremos saber que versi?n de servidor esta corriendo en un puerto remoto
Supongamos que queremos saber que versi?n webserver corre una determinada ip, para ello supongamos que la IP es 1.1.1.1, entonces tipearemos lo siguiente:
C:\nc ?v ?v 1.1.1.1 80
Donde nc es la invocaci?n al netcat, -v ?v nos dar? todo la info visible del servidor que esta corriendo, 1.1.1.1 es la ip y 80 el puerto al que nos queremos conectar, bien, no solo que nos dio la versi?n del servidor si no que ahora estamos conectados al webserver y podemos realizar las operaciones normales que podr?a hacer el browser(en l?nea de comandos, por su puesto), pero eso para otro capitulo jejejejejeje.
Si quisi?ramos saber la versi?n de cualquier otro servidor solo habr? que conectarse a el a trav?s de su ip + puerto con la opci?n very vervose y ya sabremos algo de ese servicio
Un chat p2p (y sin demoras jajajajjjajajajaj)
Se necesita que los dos tengan netcat, uno va a actuar de servidor y otro de cliente.
EL SERVER
C:\nc ?l ?p (numero de puerto)
Donde nc llama al netcat, -l se pone a la escucha o en modo servidor, y ?p es el puerto por donde escuchara
EL CLIENTE
C:\nc ip puerto
Donde nc llama al netcat, ip es la ip del server, y puerto el puerto que este abri?
Una vez realizado esto, podr?n escribir en la pantalla donde esta corriendo netcat y al dar ENTER el otro vera lo que escribamos, una opci?n r?pida y segura
Como sacar la ip de cualquier mensajero ( y algunos otros datos jejejjej)
Primero usamos la herramienta netcat (o nc) con la siguientes modificadores:
C:\nc -v -v -l -p 80
Donde nc llama al netcat, -v ?v lo pone en modo very verbose y eso hace que al conectarse alguien a nuestra ip y puerto le rastrea la ip y los datos del browser y sistema operativo, -l lo pone en modo escucha o servidor , y ?p 80 le asigna el puerto 80 a la escucha
Luego le pasamos lo siguiente, http://nuestra ip (usando alguna excusa, si no queremos que nuestro contacto sospeche), autom?ticamente se abrir? su navegador y se dirigir? a donde esta nuestro netcat a la escucha, entonces veremos en la ventana DOS donde se esta ejecutando el netcat, la ip de nuestro contacto ( con suerte tambi?n veremos la versi?n del navegador que usa y alguna que otra cosita mas)luego que tomamos nota de la ip, hacemos ctrl+C para cerrar netcat, y le aparecer? a nuestro contacto, en el navegador pagina t?pica de cuando no se encuentra el servidor (esto no pasara hasta que no cerremos el netcat con ctrl+C), buscamos la excusa que mas nos guste para explicar que la page que le pasamos no funciono y listo
Si queremos hacer una trampa para lammers y capturar su ip
Pues esto se basa en que un lamer, para entrar a una maquina, primero escanea puertos y si encuentra alguno vulnerable (como por ejemplo el puerto de un troyano) entra usando la herramienta necesaria.
Bien, esto se trata de hacerle creer al lammeruzo que tenemos esos puertos que abren los servidores de los troyanos abiertos (por lo tanto pensara que estamos infectados y tratara de entrar por ese puerto y all? tendremos el netcat listo para cazar su ip
Para esto abriremos tantos netcat como puertos queramos simular infecci?n (seria bueno que busques una lista de puertos que usan los troyanos y abras los que te parezcan) y lo haremos si con cada puerto
C:\nc -v -v -l -p (numero de puerto de troyano)
Donde nc llama al netcat, -v ?v lo pone en modo very verbose y eso hace que al conectarse alguien a nuestra ip y puerto le rastrea la ip y los datos del cliente que uso para conectarse, -l lo pone en modo escucha o servidor, y ?p (ser? el puerto que simulara que all? hay un troyano), listo de esa manera ya tenemos la ip de quien trato de entrar a nuestra maquina a trav?s de un troyano.
Cabe destacar que esto sirve para cualquier servicio como ser web o ftp
Mostrar una pagina web con netcat (o como simular un webserver)
Todos sabemos que si queremos mostrar una pagina web necesitamos un webserver, bien aqu? vamos a improvisar uno (simulado l?gicamente).
Para mostrar nuestra page en Internet haremos esto:
1) guardamos el html que queremos mostrar, en la misma carpeta que se encuentra netcat, luego tipemos esto:
C:\nc ?l ?p 80 < nombre_del_archivo.htm
Donde nc llama al netcat, -l hace que se ponga a la escucha, -p 80 hace que el puerto que escucha sea el el 80(el mismo del http), < nombre de archivo.htm hace que ese archivo este dispuesto en ese puerto, con lo cual si alguien visita nuestra ip con el browser vera nuestra page.
Cabe destacar que cada vez que alguien se desconecta tendremos que volver a realizar la operaci?n para que vuelva a ser visto el html
Transferir archivos con netcat
Para transferir archivos con netacat primero tendr? que destacar que solo hice la prueba con archivos zipeados, pero pueden probar con otros formatos, adem?s, netcat no puede ver el EOF(end of file o final de archivo) as? que no terminara la transferencia por si solo, cuando estimen un tiempo prudencial (si lo hacen antes de que termine se corta y se da?a el archivo)deben darle ctrl+C para terminar la transferencia y as? hacer un EOF. Bien, dicho esto pasemos al trabajo. Necesitaremos uno que haga de Server (el que env?a el archivo) y uno que haga de cliente (el que recibe el archivo), para ello tipearemos:
EL SERVER
C:\nc ?l ?p (puerto) < archivo.zip
Donde nc llama al netcat, -l pone le puerto a la escucha, -p (puerto) sera el puerto que pondremos a la escucha, < archivo.zip le da salida al archivo
EL CLIENTE
C:\nc ip puerto > archivo.zip
Donde nc llama al netcat, ip es la ip a la que queremos conectar, puerto es al puerto remoto que queremos conectar , > archivo,zip, es el redireccionamiento de la entrada a un archivo.
Listo, si tenemos en cuenta todas las recomendaciones, transferiremos sin problemas
Conectarse a irc con netcat
Bien para esto hay que destacar que es sencillo lograr la conexi?n pero no hay que olvidar que una vez lograda hay que ?hablar idioma servidor? o sea hacer toda la negociaci?n a mano.
Para ello vamos a topear:
C:\nc servidor irc puerto
Donde nc llama al netcat, servidor irc es el servidor al que nos queremos conectar, y puerto el puerto al cual vamos a conectarnos (para graficarlo mejor vamos a poner de ejemplo una conexi?n al canal yashira que esta en el sevidor irc.cl, el comando seria as? nc irc.cl 6667, y listo ya estar?amos conectados), pero en esta parte considero que poner un ejemplo totalmente practico ayudar?a bastante, por eso voy a desarrollar un ejemplo de c?mo me conecto al canal yashira con netcat
Para hacerlo tipeo el comando que me conecta
Luego tipeo PONG mi ip (esto debo hacerlo r?pidamente para que no de time out la conexi?n).
Inmediatamente tenemos que identificarnos para eso topeamos:
USER nombre que elijas (no es tu nick) tu host tu servidor: tu nombre real(esto puedes omitirlo, pero no olvides poner : y luego dejarlo vaci?), luego de eso tipeas:
NICK tu nick
pero mas grafico lo hago con el ejemplo practico:
USER yo NETGlobalis.irc.cl :
NICK cadorna
aqu? ya esta en el irc.cl para entrar al canal tipeas:
join #canal (en mi caso join #yashira)
ya tamos en el canal, ahora si queres hablar tipeas:
PRIVMSG #canal :texto (en mi caso digo hola, PRIVMSG #yashira : hola)
Cabe destacar que si bien es un m?todo complicado y muchas veces las negociaciones dependen del servidor, nos muestra la versatilidad de netcat, y estos no son todos los comandos de irc experimenta comandos que usas en el con netcat, tal vez resulte interesante (les dejo un poco de experimentaci?n para ustedes, si no me van a matar jajajajajajaaj)
Hacer un sencillo escanner de puertos con netcat
Esto es muy simple para chequear los puertos abiertos de una maquina debemos topear:
C:\nc ?v ?v -z ip puerto (cabe destacar que si queremos hacer un scanner de rango de puertos debemos separa ese rango con un ?-? por ejemplo queremos escasear todos los puertos desde el 21 al 139, debemos hacer as?: nc ?v ?v ?z ip 21-139, y si lo que queremos es escasear puertos determinados hay que separar los n?meros de puertos con espacio por ejemplo nc ?v ?v ?z ip 21 25 139, de esta manera buscara solo en esos puertos)
Donde nc llama al netcat, -v-v lo pone en modo veri vervose(ideal para sacar datos), z realiza la llamada al puerto pero si llegar a hacer la transacci?n de conexi?n, ip es la ip a escannear , y puerto es el puerto a escannear, esto nos devolver? una lectura de open(puerto abierto) o conection refused (puerto cerrado), y hasta a lo mejor recibas que servicio esta corriendo en ese puerto abierto
Generalidades y propuestas
Bien en este punto ya no voy a poner m?s ejemplos, es el momento de empezar a estudiar los comandos y experimentar que se puede hacer, como ya comente estos son solo algunos ejemplos y les aseguro que esto no es nada mas que una simple demostraci?n r?pida , si hurgan, investigan, y experimentan con los comandos, les aseguro que podr?n hacer much?simas cosas mas con el , como ser, desde hacer telnet, a enviar o buscar correo, y pasando por crear terminales de acceso remoto, en fin, como dije, mi imaginaci?n me limita jejejejej, pero esos experimentos se los dejo a vuestra imaginaci?n.