[THE BEGINNINGS] Qué es y cómo funciona un escaneo de puertos Idle

Hoy vamos a hablar de los escaneos de puertos, ya todos más o menos conocemos o hemos oído hablar de escaneos tipo TCP, SYN, UDP, ACK, ICMP, etc pero hay un tipo de escaneo muy curioso y muy especial que se llama Idle (del inglés vago) en este post os voy a intentar explicar las principales características para entender como funciona.

Para entender un poco el funcionamiento de este método hay que conocer o tener unas nociones básicas de como funciona la conexión en el protocolo TCP.

Cuando se realiza un escaneo de puertos sobre un host, si este esta minimamente securizado detectara que esta siendo víctima de un escaneo de puertos y la IP del atacante quedará grabada en los logs con lo que no seria difícil localizarle, aqui es donde nace el escaneo idle, en el que introduce una variante más en la ecuación, un tercer host que actuara de zombie, es decir hará el trabajo sucio por el supuesto atacante. Veamos un resumen de una conexión TCP normal entre dos host:

En una conexión normal el cliente envia un paquete con un valor SYN al servidor, el servidor devuelve un paquete con un valor SYN + un valor ACK y un valor SEQ, si todo ha ido correctamente el cliente devolvera un paquete con un valor ACK+1 y una valor SEQ+1. Esto se llama negociación en tres pasos. Si el puerto al que se lanza la conexión esta cerrado el servidor cancelara la conexión, enviara un paquete con el bit del valor RST activado lo que significa que rechaza la conexión y lo que nos interesa es que al no completar la conexión el valor ACK del cliente no varia.

Explicado el método de conexión es donde entra nuestro host zombie, como hemos dicho antes, si se realiza un escaneo de este tipo el host “atacante” seria facilmente localizable, pero ¿qué pasaría si entre el host atacante y la víctima se metiera un zombie? Si nosotros controlamos el valor SEQ de un equipo zombie podríamos mediante una tecnica de suplantación de identidad (spoofing) construir un paquete TCP que al mandarlo al host víctima devolviera la conexión con éxito (SEQ+1) o la rechazada (RST=1) al equipo zombie y el atacante pudiera comprobar de nuevo mediante un paquete TCP el valor de SEQ y saber si ese puerto esta abierto o cerrado sin enviar ni un solo paquete al host víctima (el único que se envia tiene como ip origen la del host zombie). Lo entenderemos mejor con este esquema:

La utilidad que en un principio se le puede ver a esta técnica es saber si tiene determinados puertos abiertos, pero si le damos una vuelta de rosca a la técnica nos daremos cuenta de un uso mucho mas práctico.

Imaginemos la red de una empresa algo parecido a esto:

Cuando tenemos una red de este tipo con una zona DMZ los host de la LAN pueden acceder al los servidores HTTP, J2EE, etc de la zona DMZ, para acceder a ella tienen que pasar por un firewall que a buen seguro tendra un filtrado de IP’s y de puertos determinado con lo que un host externo con una IP desconocida por el firewall será “tirado” cuando intente realizar una conexión (escaneo de puertos por ejemplo). Una forma de saber que puertos están abiertos en el firewall para poder descubrir una vulnerabilidad es realizar un escaneo idle usando como zombie un host con una ip perteneciente a la zona de confianza del firewall de esta forma el escaneo nos devolvera una lista de puertos abiertos para una ip determinada.

Una forma de hacer que los escaneos de este tipo no sean validos viene por parte de los desarrolladores de los sistemas operativos,  el valor SEQ se incrementa de uno en uno, si este valor se reseteara de alguna forma o diera algún valor aleatorio según el momento o la conexión estos escaneos serian inviables.

La fuente de este articulo ha sido la web del manual de Nmap, podeis conseguir muchísima más información y ejemplos de implementación de este tipo de escaneo con Nmap en su web.

[THE BEGINNINGS] Análisis de redes: Enumeración de sistemas Windows

Dentro de una red encontramos diferentes host que dan un determinado servicio a la red, ya sean servidores de correo, servidores de impresión, servidores de dominio, o simplemente equipos que comparten carpetas o impresoras. Podríamos decir que las técnicas de enumeración nos ayudaran a descubrir todos estos recursos y indicarnos qué usuarios pueden acceder a ellos. Debido a que cada sistema operativo tiene unos servicios y una forma de gestionarlos diferente, estas técnicas las tenemos que dividir según el sistema operativo que corran. Antes de pasar a explicar los distintos métodos de enumeración citaremos los tres protocolos en los que nos basaremos para recopilar esta información: NetBIOS, SNMP y LDAP.

Enumeración NetBIOS

  • Listar maquinas de nuestra red C:\>net view

  • Listar recursos compartidos en nuestra red. Para este caso tenemos diferente opciones, C:\>net view <NOMBRE_HOST>

Nos mostrara los recursos compartidos de esa maquina, este es el comando más completo ya que también podemos usar: C:\>nbtstat -a <NOMBRE_HOST> o C:\>nbtstat -A <IP_HOST>

Estos dos comandos solo nos indican que la máquina tiene servicios corriendo, pero no especifica cuales.

  • Listar dominios accesibles de una red C:\>net view /domain

  • Listar máquinas de un dominio determinado C:\>net view /domain:<NOMBRE_DOMINIO>

  • Listar recursos compartidos en maquinas de diferentes dominios C:\>net view /domain:<NOMBRE_DOMINIO> \<NOMBRE_HOST>

Cabe destacar que en todos los comandos podemos sustituir el nombre de la maquina por la IP de la misma y como ya sabemos Internet no es mas que una gran red por lo que podemos sustituir las IP’s de nuestra red por IP’s que pertenezcan a redes y servidores externos de Internet.

También es importante comentar que en un servidor linux que tenga implementado y activo el protocolo samba también se podrán ejecutar estos comandos contra el y averiguar información.

Enumeración SNMP

La enumeración de sistemas mediante SNMP no es tan trivial como la enumeración NetBIOS. El protocolo SNMP (Simple Network Managent Protocol). Este protocolo se usa para poder monitorizar y controlar el estado de los diferente dispositivos conetados a una red, normalemente se usa para routers, switchs, servidores de impresión, correo o web; pero se puede usar también sobre cualquier dispositivo que tenga disponible ese protocolo, es un protocolo multiplataforma y se podrá usar siempre que el dispositivo desde el que queramos monitorizar tenga el paquete de software instalado correctamente. En entornos windows existe un programa llamado Getif con un entorno grafico desde el que podemos obtener de una manera sencilla toda la información, mientras que en entornos linux tenemos Scotty y Cheops.

Enumeración LDAP

LDAP (Lightweight Directory Access Protocol) es un protocolo diseñado para trabajar con TCP/IP y junto a un directorio jerárquico. Esto puede proporcionar una determinada información sobre los usuarios de esa red como nombres, teléfonos, direcciones de correo, etc. este tipo de objetos se les conoce como AD (Active Directory). Recordemos que tanto los dominios dentro de Windows 2000 Server y Windows 2003 Server trabajan con este tipo de objetos por lo que LDAP nos ayudara a extraer facilmente gran cantidad de información. Para poder sacar información de este tipo podemos usar la aplicación ldp.exe que se encuentra en las herramientas de soporte de Windows XP. Cabe destacar que el manejo de esta herramienta no es trivial y se requiere un alto conocimiento sobre este protocolo.

Nota: Para poder realizar estos rastreos utilizaremos comandos NET integrados en sistemas operativos Windows NT.

[THE BEGINNINGS] Wireshark: Instalación en Mac OS y manual de uso

Wireshark es el analizador de trafico de red más famoso, se usa en muchos ámbitos, educativo, profesional, empresa, etc. Es un programa multiplataforma, muy fácil de instalar en linux ya que esta disponible en todos los repositorios, muy sencillo de instalar en Windows simplemente ejecutando el .exe, pero no tan trivial en Mac OS. En este post explicaremos como se instala wireshark en Mac OS, estamos acostumbrados a arrastrar y soltar en la carpeta de aplicaciones para hacer que un programa se instale pero en el caso del sniffer por excelencia, la instalación no es tan simple, os explicare de forma sencilla cómo instalarlo y hacerlo funcionar. Además os enlazo a un manual de la Universidad central de Venezuela.

Lo primero es ir a la web de descarga y elegir el archivo que se adapte a vuestro sistema (fijaos que hay versión de 64bits para Leopard). Una vez descargado:

  • Arrastramos el archivo Wireshark.app a la carpeta de aplicaciones

  • Tenemos que dar permisos de ejecución a una serie de dipositivos dentro de nuestro mac, para ello abrimos el terminal y ejecutamos el siguiente comando: sudo chmod 755 /dev/bpf*

  • (nos pedira la contraseña de administrador, la ponemos y pulsamos enter)

  • Por último tenemos que copiar todos los archivos de la carpeta Utilities/Command Line a un directorio del Mac para que el programa pueda funcionar correctamente, para ello en el terminal ejecutamos el siguiente comando: sudo cp /Volumes/Wireshark/Utilities/Command\ Line/* /usr/local/bin/

  • (nos pedirá la contraseña de administrador, la ponemos y pulsamos enter)

Con estos dos últimos sencillos casos el programa funcionará correctamente, y aquí os dejo un sencillo manual de uso (viene la instalación en windows también pero los comandos y el modo es idéntico en las tres plataformas)

Nota: Si abris la aplicación y no encontrais interfaces de red en las que ejecutar Wreshark, es porque no tiene permisos de ejecucion sobre las mismas, volved a ejecutar:

sudo chmod 755 /dev/bpf*

Nota2: Otra opción seria ejecutar como root wireshark, para según que uso y donde estemos puede ser más util, para ello:

sudo ./Applications/Wireshark.app/Contents/Resources/bin/wireshark

[THE BEGINNINGS] Tipos de ataques Denial-of-Service

Un ataque de denegación de servicio (D.o.S.) es un tipo practica bastante común en el mundo de Internet, y se basa en hacer que un servicio o recurso sea inaccesible para los usuarios del mismo mientras dura el ataque, este tipo de ataques suele usarse a veces como distracción de los administradores de red para realizar un ataque más potente con un objetivo más concreto o simplemente dejar cortado un servicio en un momento vital para la empresa. Por lo tanto es bueno conocer qué es, que tipos hay y así poder tener un idea clara de como defenderse de ellos. No solo desde el exterior de la red, sino desde el interior que es donde se produce la mayoría de los ataques actualmente (80%).

  • Ataques de desbordamiento de buffer. Es de los más comunes, se basa en enviar más trafico a una aplicación o dispositivo del que este puede soportar y de esta forma lo colapse. Imaginemos que tenemos un servidor de correo que puede procesar 5 correos por segundo si, desde varias maquinas se envían 20 correos por segundo al servidor de correo este colapsara y quedara inutilizado durante el tiempo que dure el ataque.

  • Ataque SYN. Para entender este ataque hay que conocer un poco del protocolo TCP, para abrir una conexión entre dos hosts se necesita una sincronización previa entre ambos, para ello el host que quiere conectarse (A) tiene que enviar un paquete de tipo SYN al equipo destino (B), este lo que hace es asignar un espacio en la pila TCP para esa conexión y envía a B una respuesta, si todo siguiera de forma normal en 3 pasos establecerían una conexion; pero si tu idea es atacar enviarás un mismo paquete SYN desde varios equipos con una IP falsa de origen (spoofing) de tal forma que el servidor atacado envié respuesta a un host desconocido, esto hará que no reciba respuesta y la pila se vaya llenando de conexiones abiertas a la espera, si enviamos masivamente muchos paquetes SYN acabaremos por tirar la red y el host atacado quedará incomunicado.

  • Ataque Smurf. Este ataque también es muy sencillo de realizar, si no se esta protegido. El ataque smurf se basa en enviar un ping a la dirección broadcast de la red, el ping utiliza el protocolo ICMP, cuando enviamos un ping enviamos un paquete a un host, si el host «esta vivo» nos devolverá el mismo paquete, imaginemos ahora que mediante un generador de paquetes creamos un paquete ping que contenga gran cantidad de información y hacemos spoofing cambiando la ip de origen por la de nuestro host víctima, si tenemos en cuenta que cuando enviamos un ping a la dirección broadcast este es devuelto por todos los host de la red, si enviamos muchos ping conseguiremos que todos ellos sean devueltos masivamente al host atacado y este quede fuera de juego, tened en cuenta además que una red de una empresa puede tener cientos de pc’s conectados.

  • Virus y gusanos. Este tipo de ataques muchas veces no es intencionado o mejor dicho no se elije a la víctima, es decir navegando por la red, descargando archivos de procedencia no segura puedes infectarte con un virus o con un gusano, un virus ataca a un equipo y según su morfología dañara de una u otra forma, y se propagara mediante ubs’s, etc. Un gusano se replica por toda la red consumiendo recursos de esta hasta tirarla y dejarla sin servicios. Para realizar este ataque puede conseguir acceder a la red de forma remota y liberar un gusano, puede enviarlo por correo a alguna persona dentro de la red mediante un falso correo útil spoofeando una dirección licita o usar miles de métodos como ingeniería social.
Page 5 of 5 Older →