Ya que no aportaba algo a la pagina xD me vi en la obligacion de averiguar y ampliar mis conocimientos sobre netcat que nunca esta demas.
Netcat es un pequeño programa creado para uso de los administradores de redes, sin quedar afuera los “hackers” que lo usan tambien, este proggie fué creado por Hobbit y según el es como una navaja Suiza para la transferencia en la red (tcp/ip). y fue porteado a Win95 y NT por Weld Pond de L0pht , tiene mas de un año desde que fué liberado y no es mucho lo que se ha escrito sobre este programa; principalmente porque la estructura de sus comandos es poco familiar para el usuario medio. Netcat tiene infinidad de funciones entre ellas se destacan:
-l modo en escucha (sniffer)
-p port número puerto
-v verbose, información detallada
-v -v very verbose, información más detallada
-z escanear
- salida estándar muy usada en entornos unix
| piper, permite pasar la salida de un programa por otro
tar xvjf descomprime un tar.bz2
tar cvjf comprime un directorio a tar.bz2
Netcat en modo conexión:
El modo conexión de netcat es el mas simple. es similar a telnet, aunque es una herramienta mucho más avanzada. Por ejemplo, para realizar una conexión TCP pasaremos como parámetro el nombre del host y el puerto:
$ nc localhost 22
SSH-1.99-OpenSSH_3.6.1p2
si deseamos que netcat sea como telnet agregaremos la opción -T:
nc -T localhost 23
Fedora Core release 1 (Yarrow)
Kernel 2.4.22-1.2135.nptl on an i686
login:
Añadiendo la opción -x, netcat ofrece la salida en hexadecimal:
$ nc -x localhost 22
SSH-1.99-OpenSSH_3.6.1p2
Received 25 bytes from the socket
00000000 53 53 48 2D 31 2E 39 39 2D 4F 70 65 6E 53 53 48 SSH-1.99-OpenSSH
00000010 5F 33 2E 36 2E 31 70 32 0A _3.6.1p2.
Otra opción que puede resultar interesante es -v (verbose) o -v -v que oferce cierta información sobre la conexión:
$ nc -v localhost 22
localhost [127.0.0.1] 22 (ssh) open
SSH-1.99-OpenSSH_3.6.1p2
$ nc -v -v localhost 22
Notice: Real hostname for localhost [127.0.0.1] is NEPTUNO
localhost [127.0.0.1] 22 (ssh) open
SSH-1.99-OpenSSH_3.6.1p2
Netcat trabaja con dos protocolos: TCP y UDP. El parámetro utilizado para las conexiones TCP
es -t, aunque no es necesario, dado que esta es la opción por defecto. Para realizar conexiones UDP, puede utilizar el parámetro -u. Por ejemplo, enviar datos a un host + puerto UDP es tan sencillo como:
$ echo “datos enviados” | nc -u localhost 1234
Por ejemplo, realize la siguiente prueba: Abra tres terminales y escriba en el primero:
nc -u -l localhost -p 1234
(Este comando mantiene a netcat en modo escucha de algun puerto udp.)
En el segundo:
$ /usr/sbin/tcpdump -s 0 -xX udp -i lo
tcpdump: listening on lo
y en el tercero:
echo “datos enviados” | nc -u localhost 1234
Observaremos que la salida de tcpdump con los datos UDP capturados es la
siguiente:
21:14:46.787266 NEPTUNO.32885 > NEPTUNO.1234: udp 15 (DF)
0×0000 4500 002b b17e 4000 4011 8b41 7f00 0001 E..+.~@.@..A….
0×0010 7f00 0001 8075 04d2 0017 79d5 6461 746f …..u….y.dato
0×0020 7320 656e 7669 6164 6f73 0a s.enviados.
Netcat en modo escucha
El modo de escucha de netcat es muy interesante. Este nos permite abrir sockets en la máquina local, a los que posteriormente podremos conectarnos. En la explicacion anterior (modo conexión) se ha realizado un ejemplo sencillo del modo de escucha.
Se utiliza la opción -l para indicarle a netcat que deseamos ejecutar la herramienta en modo escucha (listen), indicamos con la opción -p, el puerto en el que deseamos abrir el socket y
si deseamos utilizar el protocolo UDP añadimos -u. Recordemos que por defecto netcat
utiliza TCP:
nc -u -l localhost -p 1234
Con netstat podemos ver los puertos abiertos de nuestro sistema y el programa asociado a esos puertos:
$ netstat -lunp | grep nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
udp 0 0 0.0.0.0:1234 0.0.0.0:* 3624/nc
Una opción que ha sido utilizada durante mucho tiempo como puerta trasera simple, es la
opción -e de netcat. Esta opción permite asociar un programa a la conexión establecida.
Por ejemplo, con el siguiente comando dejamos una shell escuchando en el puerto 1234.
$ nc -l localhost -p 1234 -e /bin/bash
Podemos conectarnos a ella con netcat y utilizarla de un modo similar a la utilidad Telnet:
$ nc localhost 1234
uname -o
GNU/Linux
date
jue dic 18 21:50:07 CET 2003
Scann de Puertos
Netcat puede ser utilizado como scanner, las opciones de netcat
le permiten realizar combinaciones, pudiendo realizar
Scannings en Puertos Random, en puertos conocidos, en modo ascendente o
descendente, con intervalos de tiempo, utilizando gateways para evitar
mostrar la IP fuente del Scanning, etc.
C:\nc11nt>nc -v -v -z 192.168.010.001 53 25 21
DNS fwd/rev mismatch: localhost != NKRA
localhost [192.168.010.001] 53 (domain): connection refused
localhost [192.168.010.001] 25 (smtp): connection refused
localhost [192.168.010.001] 21 (ftp): connection refused
sent 0, rcvd 0: NOTSOCK
Pues si; aqui tienen un pequeño y primitivo scanner, se le
puede asignarle un rango de puertos:
C:\nc11nt>nc -v -v -z 192.168.010.001 1-53
DNS fwd/rev mismatch: localhost != darkstar
localhost [192.168.010.001] 53 (domain): connection refused
localhost [192.168.010.001] 52 (?): connection refused
localhost [192.168.010.001] 51 (?): connection refused
localhost [192.168.010.001] 50 (?): connection refused
localhost [192.168.010.001] 49 (?): connection refused
localhost [192.168.010.001] 48 (?): connection refused etc…
Volvemos con la opcion v (verbose) y la Opcion z (zero i/o)
que es usada para scanning, los puertos se lo especificamos al final del
IP del host, bien sea individuales separados por un espacio; o por un
rango de puertos.
las que definimos recientemente son como las tipicas usadas en netcata ahora veremos
algunas opciones que se encuentran con el comando ayuda en una breve definicion (nc -h)
Comando ayuda:
c:> nc -h connect to somewhere: nc [-options] hostname port[s] [ports] …
listen for inbound: nc -l -p port [options] [hostname] [port]
options:
-d detach from console, stealth mode
-e prog inbound program to exec [dangerous!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, …
-h this cruft
-i secs delay interval for lines sent, ports scanned
-l listen mode, for inbound connects
-L listen harder, re-listen on socket close
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning]
port numbers can be individual or ranges: m-n [inclusive]
d (Modo Stealth o encubierto)
Esta opción desvincula al Programa de la consola, haciendolo
trabajar en el BackGround.
e (Ejecuta un programa cuando se conecta)
Puede ser utilizado para ejecutar incluso un Shell tanto
en WinX como en *NIX.
l (Escuchando conexiones)
Deja a un puerto abierto en espera de una conexión
L (lo mismo que anteriormente pero sigue escuchando aún cuando la
conexión es cerrada)
Esta opción es incluida en la versión de Weld Pond de L0pth, y
es muy util para seguir escuchando en el puerto, a diferencia de -l
(que la conexión cerrada termina con el proceso de nc) esta opción -L
permite seguir escuchando en el mismo puerto (la rutina de nc -l es
reiniciada).
n (Dirección numerica especifica; no hace un DNS Lookup) Netcat tiene la
facultad de resolver nombres de dominio mediante un DNS Lookup, con esta
opción le especificamos que no lo haga, y use solamente direcciones IP.
o (obtiene un archivo log en Hex de la acción) Genera un Log de
las actividades de netcat en código Hexadecimal.
p (Puerto para pegarse) Algunas veces debes especificarle con esta
opción el puerto a realizar una acción.
s (pegarse a un IP especifico) Netcat puede utilizar IP de una red
como fuente local.
t (Funciona como un pequeño demonio telnet) Con esta opción le especificas
a netcat que debe realizar negociaciones telnet.
u specify UDP (Utilizar Protocolo UDP) Con esta opción le dices a netcat que
trabaje con protocolo UDP en vez de TCP.
v (modo verbose, mas información, se le puede añadir otra -v para mas
info todavia) Bastante util y necesario, sobre todo para estudiar demonios
en profundidad y observar todos los detalles en un Sniffing.
w (Especifica un tiempo para terminar) Con esta opción le especificas un
tiempo determinado para realizar conexiones .
r (Genera un Patron Ramdom de puertos locales o remotos) Muy util para evitar
patrones lógicos de Scanning.
g (especificar Gateways) Una de las opciones más interesantes de netcat,
permite utilizar Routers como “puentes” de conexión.
G (Especificar puntos de Routing), Con esta opción podemos crear
una cadenaaleatoria de hosts para crear un ruta perdida para tus paquetes
(Spoofing).
i Especifica un intervalo de segundos entre puertos Scaneados.
\_———————O————————————————–O———–_/
Fuentes: Compilacion web.
Saludos
§¡è¢kÌñG.
No hay comentarios:
Publicar un comentario