Miércoles, Mayo 22, 2013

Ruby_logo

Ha sido anunciada una vulnerabilidad en la función de Hash de Ruby 1.9, la cual podría llegar a permitir a usuarios remotos llegar a provocar una denegación de servicio en aplicaciones que hagan uso de la función anteriormente mencionada.

Leer Más

glassfish-logoOracle GlassFish Server presenta un fallo de autenticación en su Consola de Administración que permitiría a un atacante remoto acceder mediante peticiones TRACE.

Oracle GlassFish Server es uno de los motores J2EE libres más importantes y, junto a JBOSS, de los más extendidos y utilizados por la comunidad.

Leer Más

wordpress-logoYa se encuentra disponible para su actualización la versión 3.1.2 del famoso CMS WordPress, el mismo corrige fallos de seguridad que habían sido reportados de la versión anterior. La lista de los archivos modificados son:

Leer Más
Contenido

finger_print2

Toda tarea anterior a un ataque o principio de una auditoría es sin lugar a dudas investigar que es lo que uno tiene en frente mediante diferentes formas y técnicas, intentando dejar al descubierto, dependiendo lo que uno está auditando, componentes instalados, puertos abiertos, servicios activos, etc. y, a través de estos determinar lo mas valioso: que sistema operativo está utilizando.

Esto es conocido como OS Fingerprint, ni mas ni menos que el uso de técnicas consistentes en analizar las huellas que deja un sistema operativo en sus conexiones de red.

Vamos a ver básicamente como es que funcionan estas técnicas y como evitar estos tipos de escaneo.

Para comenzar podemos decir que existen dos tipos de OS Fingerprint:

Activos: Son aquellos en el que el atacante provoca, a través de alguna acción algún tipo de respuesta de la víctima. En sintesis: es el envio de paquetes a la maquina objetivo con el fin de comprobar su comportamiento en situaciones anormales. Algunas de las pruebas son las de Sonda FIN, Flags de TCP incorrectos e ISN (numero de secuencia inicial), números de mensajes ICMP, mensajes ICMP citados y sobre todo la integridad de los mismos e inundaciones de paquetes SYN. Podemos observar un escaneo de este tipo y analizado con Etherape para hacerlo mas ilustrativo

etherape

Vemos que existe una doble conexión entre mi host (192.168.34.103) y el otro.

Pasivos: Todos los paquetes a analizar se obtienen directamente de la red local, con lo cual el atacante no emite ningún tipo de acción en contra de la maquina objetivo (como lo hace en el modo activo) por lo que, como ya se debe estar sospechando, esta limitado solo a la red local obligando al dispositivo a establecerse en modo promiscuo. Un ejemplo de esto podemos observarlo en el articulo de la captura de paquetes con Wireshark donde sin enviar ningún tipo de paquete, en modo promiscuo captura todos el trafico de la red pudiendo determinar manualmente y a ojo, las huellas del OS encontradas en los campos de cabeceras TCP/IP.

wireshark

 

Detalles de como se identifica por dar un ejemplo básico desde el punto de vista del fingerprinting es el campo de opciones TCP. Este campo incluye diversas opciones que se suelen rellenar con NOP’s para conseguir una longitud total de las opciones múltiplo de 4

MSS o tamaño máximo de segmento. Por lo general el MTU o la unidad máxima de transmisión.

Timestamp o marca de tiempo. Ayudan a medir retardos.

Wscale o escala de la ventana. Sirve tanto para indicar que el receptor está preparado para escalar el tamaño de la ventana, como para, en tal caso, proponer un factor de escala.

SackOK o asentimiento selectivo. Se utiliza para informar al emisor de los paquetes ya recibidos, de forma que éste sólo retransmita aquellos que aún no se han recibido.

NOP. Un sólo byte utilizado, como se ha mencionado antes, para rellenar las opciones hasta que su longitud total sea múltiplo de 4

 

Sistemas según su respesta standart:

Linux: mss 1460, sackOK, timestamp X 0, nop, wscale 0.

OpenBSD: mss 1460, nop, np, sackOK, nop, wscale 0, nop, nop.

Solaris 7: mss 1460.

AIX 4.3: mss 1460.

Windows 2000: mss 1460, nop, nop, sackOK

 

Ahora la pregunta del millón: ¿Como puedo evitar escaneos?

Los scaners mas famosos y los mas utilizados son sin lugar a dudas Xprobe2 y Nmap. Este ultimo es el que utilizaremos para las pruebas siguientes con los siguientes parámetros:

-vv -P0 -Pn -f -r --mtu 8 -sV -sX

Para mas información sobre parámetros básicos y el funcionamiento de Nmap lean éste articulo.

Bueno habiendo Leído sobre los tipos de escaneos, podemos llegar a la conclusión que, si bien actúan de manera diferentes, ambos tienen mucho en común, se basan en detectar huellas dentro de puertos abiertos, servicios activos y paquetes TCP/IP que remitan a un sistema operativo, de este modo, y en ese orden podemos aconsejar:

 

1º - Mantener abiertos solo aquellos puertos que sean necesarios y estemos utilizando, de lo contrario, al tener mas puertos abiertos las posibilidades de encontrar huellas en ellos y de identificar nuestro OS se eleva considerablemente.

Veremos aquí ejemplos gráficos en primer lugar sin puertos abiertos, donde se puede leer claramente que, no encontró ninguna huella clara que remita a alguna OS a partir de puertos abiertos, pero si por escaneos activos (análisis de cabeceras TCP/IP)

nmapsinpuertos

A Continuación vemos como se lleva a cabo el fingerprint con los puertos 80 y 9876 (por server Apache) abiertos, elegí estos puertos específicamente para que se vea como se eleva dramáticamente la detección del OS

nmapsinpuertos2

2º - El hecho de mantener los puertos cerrados puede ser un inconveniente a la hora de montar un Web Server casero y ésta es otra de las causas por las que usé, en el ejemplo anterior un server apache, el mismo suele mostrar muchísima información a cerca del sistema en el que se encuentra montado. Es posible ocultar toda esta data añadiendo unas lineas en el archivo de configuración de Apache (/etc/apache2/apache2.conf) Las lineas son las siguentes:

#Evitar Escaneos

ServerTokens Prod

ServerSignature Off

Una vez modificada las lineas procedemos a reiniciar el servicio y, de este modo el escaneo quedaría reducido a:

nmapsinpuertos3

Vemos que ya este servicio no está brindando información en sus cabeceras. Sin embargo sigue detectando que es un Linux, porque lo hace? simplemente por lo comentado anteriormente en la teoría básica sobre los tipos de escaneos: toda forma de comportamiento (o casi toda) dentro de la red esta contemplado en la base de datos de Nmap y la regla de oro en este aspecto es:

“Nunca dejen configurados sus servicios y configuraciones como vienen por defecto”

Es uno de los errores que todos solemos cometer por comodidad; ahora que tal si burlamos de alguna manera a Nmap haciendo creer que no es un Linux si no un Windows o viceversa? Considerando que Windows posee un TTL de 128 mientras que Linux posee uno de 64 podemos realizar los siguientes cambios que afectarán a las cabeceras TCP/IP y desorientará a Nmap un poco mas.

IMPORTANTE: realiza copia de seguridad de los archivos involucrados en Linux y del registro de Windows dado que puede traer inconvenientes de conexión.

 

3º - Modificar valores TCP/IP en Windows:

  • Time To Live (TTL). En sistemas Windows tiene un valor de 128. Para modificarlo se usa el regedit y en “ HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\” se crea o se modifica una nueva variable DWORD con el nombre DefaultTTL y se introduce el valor deseado. Por ejemplo: 64 el usado para sistemas Linux.

  • Modificar el tamaño de la ventana. Usando el regedit en “HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces” se crea o se modifica una nueva variable DWORD con el nombre TcpWindowSize y se introduce el valor deseado.

  • Desactivar paquetes ICMP Redirects.Con el regedit en “HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\” se crea o se modifica una nueva variable DWORD con el nombre EnableICMPRedirects y se introduce el valor 0 (por defecto está a 1).

 

Modificar valores TCP/IP en sistemas Linux:

  • Time To Live (TTL). En sistemas Linux tiene un valor de 64. Para modificarlo usamos el comando “echo 128 > /proc/sys/net/ipv4/ip_default_ttl”, introducimos 128 porque es el valor por defecto de Windows.

  • Desactivación de TCP TIMESTAMP. Utilizamos el comando “echo 0 > /proc/sys/net/ipv4/tcp_timestamps”.

  • Desactivación del tamaño de la ventana. Utilizamos el comando “echo 0 > /proc/sys/net/ipv4/tcp_window_scaling”.

  • Activar ICMP REDIRECTS. Utilizamos los comandos: “echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects” para aceptar estés paquetes y “echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects” para enviarlos

 

En mi caso y en el servidor de mi casa el escaneo quedaría reducido a

nmapsinpuertos4

Con todo esto ta estamos en condiciones de dificultar mucho el escaneo de nuestro OS. Como ven, no es posible encontrar ninguna huella que permita la identificación del Sistema Operativo.

Hemos visto diferentes técnicas de camuflaje que serán efectivas tanto con Nmap como también con Xprobe2:

xprobe2

 

En resumen:

1º – No dejar puertos abiertos que no utilicemos.

2º – controlar la información brindada por cada servicio que utiliza algún puerto o conexión de red.

3º – La modificación de las cabeceras TCP/IP ayuda Muchisimo a la hora de burlar un scaner.

Con todo esto estamos en condiciones de poder ocultar y dificultar muchísimo la tarea del fingerprint, de todos modos, no son las únicas formas de hacerlo dado que también se pueden hacer mediante virtualizacion de equipos y los llamados Honeypots pero eso lo veremos mas adelante.

Escribir un comentario

Código de seguridad
Refescar

Esta página recomienda el uso de

Google-Chrome-logo-540x360

Usa Chrome y sentí la diferencia

Agotamiento de IPv4

Recibe Actualizaciones Gratis

Podrás dormir tranquil@...

Bottom Tab Content

 

Queres Saber mas sobre mi???