MAR, 3 / MAY / 2011

Escuela de Hacking: El viejo y querido Netcat – Parte I

¿Por qué es viejo? Porque nació en el año 1996 y, para ser un software ¡eso es mucho tiempo! ¿Por qué es querido? Porque es una herramienta excelente, simple, eficaz y muy potente! Netcat es un programa que nos permite leer y escribir datos utilizando conexiones TCP y UDP: esto nos será de mucha ayuda tanto para utilizarlo como un programa individual como para complementarlo con otras herramientas.

Algunas de las cosas que vamos a poder hacer con Netcat son: escanear puertos, transferir archivos, caputrar banners, redireccionar puertos y abrir puertas traseras.

Como nos permite hacer tantas cosas, esta herramienta debe estar presente en cada equipo destinada a realizar penetration tests, análisis de vulnerabilidades, ethical hacking y cualquier otro tipo de actividad divertida.  😉


Instalación

Este software ya viene pre-empaquetado en TODAS las distribuciones Linux y BSD. Para el caso de Windows, podemos utilizar el siguiente link:
http://www.portantier.com/downloads/netcat_nt_1.10.zip

En el cual vamos a encontrar tanto el ejecutable como los archivos de código fuente.

NOTA: Si tenemos instalada la herramienta nmap en su versión 4.85BETA1 o posterior, ésta ya viene con netcat incluído.

Pueden descargar nmap con netcat incluído desde:
http://nmap.org/download.html

Modos de ejecución

Podemos utilizar dos modalidades diferentes, cliente y servidor. Obviamente, con el modo cliente nos conectamos y con el modo servidor esperamos conexiones.

cliente:  nc [-options] hostname port[s] [ports]
servidor: nc –l –p port [options] [hostname] [port]

Es una herramienta de línea de comandos, y no posee interfaz gráfica.

Escaneo de puertos

Si bien existen muchas herramientas especializadas para escanear puertos (y recomiendo su uso, sobre todo de nmap), es bueno saber que con netcat también podemos hacerlo.

Las opciones que nos interesan para el escaneo de puertos son las siguientes:

–i segs    Intervalo en segundos entre cada puerto escaneado
–r         Aleatorización de los puertos de origen y destino
–u         Puertos UDP (por defecto utiliza puertos TCP)
–v         Modo explicativo (si utilizamos -vv será aún más explicativo)
–z         No realiza una conexión completa (interesante para los escaneos)

Así que, para escanear los puertos TCP 50, 100 y 105 de www.escaneame.com, podemos hacer lo siguiente:

fabian@debian:~$ nc -vv -i1 -r -z www.escaneame.com 25, 53, 80, 110
www.escaneame.com [ip.ip.ip.ip] 80 (www) open
www.escaneame.com [ip.ip.ip.ip] 53 (domain) : Connection refused
www.escaneame.com [ip.ip.ip.ip] 110 (pop3) : Connection refused
www.escaneame.com [ip.ip.ip.ip] 25 (smtp) : Connection refused

Como podemos observar, de los puertos que probamos, sólo el 80 (HTTP) está abierto.

También podemos utilizar rangos de puertos, por ejemplo, para escanear los puertos desde el 1 hasta el 3000:

nc -vv -i1 -r -z www.escaneame.com 1-3000

Banner Grabbing

Esta es una técnica de enumeración, que consiste en capturar los banners que muestran las aplicaciones al conectarnos a ellas. Podremos obtener información como el tipo de software, la versión y el sistema operativo. Esto se torna de vital importancia cuando estamos buscando vulnerabilidades en un sistema.

Por ejemplo, para capturar el banner del puerto 25 de smtp.gmail.com podemos hacer lo siguiente:

Podemos hacer lo mismo con HTTP (puerto 80). Una vez conectados, enviamos un requerimiento, para anlizar la respuesta.
En este caso, el requerimiento a enviar será “HEAD / HTTP/1.0”, que solicita los encabezados del servidor. (NOTA: Tenemos que presionar dos veces la teclar ‘ENTER’ después de haber escrito el requerimiento para que el servidor lo procese).

Borré los datos del servidor para no comprometer a nadie, pero ustedes podrían obtener algo así:

fabian@debian:~$ nc -v servidorweb.com 80
servidorweb.com [ip.ip.ip.ip] 80 (www) open
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Thu, 28 Apr 2011 05:33:50 GMT
Server: Apache/2.0.59 (CentOS)
X-Powered-By: PHP/5.1.6
Content-Type: text/html; charset=iso-8859-1
Connection: close

Si analizamos la respuesta, veremos que el servidor utilizado es Apache 2.0.59, corriendo sobre un sistema operativo CentOS.

También podemos hacerlo con los servidores SMTP, con:

fabian@debian:~$ nc -vv smtp.gmail.com 25

Obtendremos una respuesta similar a la siguiente:

220 mx.google.com ESMTP g69sm740211yhc.88

Lo cual significa “Service Ready”, según la RFC-821 (http://www.ietf.org/rfc/rfc0821.txt). Básicamente nos está diciendo que el servicio SMTP está listo para recibir órdenes.

Conociendo un poco más acerca de los servidores SMTP
Cada vez que nos conectamos a un servidor SMTP, podemos solicitarle información acerca de los comandos que soporta, pasando el requerimiento “EHLO”, de la siguiente manera:

fabian@debian:~$ nc -vv smtp.gmail.com 25
gmail-smtp-msa.l.google.com [74.125.45.109] 25 (smtp) open
220 mx.google.com ESMTP s21sm751894yhn.93
EHLO
250-mx.google.com at your service, [ip.ip.ip.ip]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES

De esta forma podemos obtener información acerca del servidor SMTP al cuál nos estamos conectando. Este tipo de peticiones se utiliza por varios clientes de correo para saber qué tipo de comandos soporta el servidor, qué métodos de autenticación, etc.

Probando servidores de mail ‘Open Relay’

Los servidores de mail open relay son aquellos que permiten enviar un mail desde cualquier origen a cualquier destino, por lo que son excelentes candidatos a ser utilizados por los Spammers. Es importante aclarar que estos servidores están MAL configurados, y nosotros podemos hacer la prueba que explico más abajo para detectar malas configuraciones y corregirlas.

Por ejemplo, vamos a conectarnos al puerto smtp (TCP 25) de mail.algo.com, así: nc -vv mail.algo.com 25

220 <hostname> ESMTP Sendmail 8.14.2/8.14.2; Sun, 24 Feb 2008 11:16:40 -0500
MAIL FROM:[email protected]
250 [email protected]… Sender ok
RCPT TO: [email protected]
250 2.1.5 [email protected]… Sender ok

Con “MAIL FROM:” estamos definiendo el mail de origen, y con “RCTP TO:” estamos definiendo el destinatario. En este caso, el servidor no tiene relación con los dominios ‘whitehouse.gov’ ni con ‘microsoft.com’. Igualmente, nos ha contestado con “OK” y nos permitiría enviar el correo. Esta es una configuración errónea que suele estar corregida en la gran mayoría de las configuraciones por defecto de los software de correo, pero aún podemos encontrar alguno que otro por la red.

Para conocer mejor cómo interactuar con cada uno de los servicios estándar de internet, les sugiero investigar las RFC correspondientes a cada estándar. No es necesario que lean toooda la RFC, generalmente los comandos aceptados se encuentran en resumenes, por wikipedia u otras fuentes.

Esto es todo por ahora. En la segunda parte del artículo veremos algunas posibilidades extra que nos ofrece esta genial herramienta.

¡Saludos!

Fabian Portantier
www.portantier.com

Comentarios
¡Comparte esta noticia!

16 Comments

  1. Leo_mter dice:

    Buscate las revistas de Hack X Crack SON UNA MAAAASAAA es asi.. tal cual lo pedis. de 0.. el material el viejo y esta dando vueltas por todos lados pero para aprender como funciona lo nuevo tenes q aprender de lo viejo. esta todo en español y te dan el paso a paso. te lo recomiendo

  2. […] Fuente Category : Guías Tags : escuela, guias, hacking, netstat 0 Comm facebook Twitter del.icio.us digg stumbleupon Related Posts Escuela de Hacking: Capítulo 2 […]

  3. […] Redirigiendo comandos con netcat NOTAS RELACIONADAS 03-05-2011 Escuela de Hacking: El viejo y querido Netcat – Parte I 5.305 Visitas 13 Comentarios 22-04-2011 Escuela de Hacking: Covert Channels sobre ICMP […]

  4. Muchas gracias a todos x sus comentarios.

    saludos y nos vemos en las siguientes entregas!

  5. r4m535 dice:

    EXELENTE NOTAS TE FELICITO Y OJALA SIGAS REALIZANDO ESTOS APORTES.HACKER NO ES EL QUE MAS SABE SINO EL QUE MAS CONTRIBUYE AL CONOCIMIENTO DEL RESTO DE LA COMUNIDAD.UN SALUDO.

  6. zonadober dice:

    Exelente men! felicidades segui haci!!! esto es lo que falta en redusers! mas info y menos catalogos!

  7. Hola Andrés,

    te recomiendo que, para aprender sobre estos temas, leas mucho. Si sabés inglés, buenísimo, porque gran parte del material interesante está en ese idioma.

    También hay algunos libros publicados por Users que son buenos para empezar.

    Saludos!

  8. Andres dice:

    Donde puedo aprender (así de cero, pero cero CERO :P) seguridad y etical hacking y “demas cosas divertidas”?

  9. LOVICA dice:

    Esto estaba faltando en reduser!… buenisimo el aporte.

    Sigan asi

  10. JaB dice:

    Excelente nota!!
    ojalas se sigan publicando mas cosas de este calibre.

    El que compara el netcat, con el nessus que es un VA, claramente no se informo por completo lo que puede hacer el nc.

    Un saludo y que sigan las notas sobre seguridad.
    JaB

  11. Victor! dice:

    Excelente explicación!!!! no hay que prestar atención a comentarios con fines destructivos…

  12. Jose dice:

    Yo sabía que USER me iva a volver a cautivar… muy buena info.

  13. P1chu dice:

    Y?… No era la mismo usar netcat que hace lo mismo tambien?

  14. aguilucho_tomatela dice:

    que tiene que ver si era lo mismo o no? deja de bardear, el chabon esta hablando de netcat no de nexus bardero del orto. siempre criticando todo.

  15. aguila_91 dice:

    Hola, si no era lo mismo usar el nexus?’ que cumple una de las mismas funciones, osea la de analizar los puertos que estan abiertos?

  16. Fede dice:

    Muy buena info… sin duda a redusers le hacia falta publicaciones como esta. Segui asi!!!!

Leave a Reply