Hace ya tiempo se habló en Hacktimes de la necesidad de reconocer el Sistema Operativo de un servidor y de hacerlo de forma activa.
Durante el proceso de una revisión de seguridad, identificar los diferentes Sistemas Operativos utilizados por los servidores analizados es fundamental para poder enfocar qué vulnerabilidades se han de buscar y de qué forma abordar el proyecto. Lógicamente, no es lo mismo revisar un Sistema Unix/Linux que una plataforma Windows.
Actualmente, los sistemas se securizan con diferentes guías de hardening y se toman medidas para ofuscar y dificultar el reconocimiento de los Sistemas Operativos en caso de un posible ataque. Es ahí donde entra en juego la nueva versión de la herramienta de fingerprinting, Satori 0.6.4 (http://myweb.cableone.net/xnih/) que realiza, de forma pasiva, todo tipo de consultas para intentar identificar, lo más exactamente posible, el Sistema Operativo de cualquier servidor, analizando el comportamiento de los equipos para los protocolos SMB, DHCP, SNMP, CDP, etc.
Cuando se utiliza la variante pasiva de la técnica de fingerprinting, los paquetes a analizar se obtienen directamente de la red poniendo la herramienta utilizada, en este caso Satori, a escuchar el tráfico existente. Mediante un reconocimiento pasivo, no se actúa en la red y no se genera ningún tipo de comunicación hacia el destino con el fin de provocar alguna respuesta como sucede cuando se realiza un análisis activo con herramientas como el archiconocido Nmap. De esta manera, se consigue pasar inadvertido y que el ataque sea más difícil de detectar.
Con la versión de Satori que se acaba de publicar y disponible para Windows y Linux, es posible identificar, mediante el uso de archivos .pcap y el análisis del comportamiento en la red de los equipos, el Sistema Operativo de distintas plataformas:
- Protocolo HPSP (HP switch protocol): alternativa de HP al protocolo STP (Spanning Tree Protocol) para dotar a las redes, a través de los dispositivos de HP, de alta disponibilidad sin afectar a la capacidad de los sistemas con peticiones de broadcast que perjudican el rendimiento global de la red.
- CPD (Cisco Discovery Protocol): protocolo utilizado para compartir información entre equipos Cisco tales como la versión de IOS, dirección IP, etc.
- Paquetes DHCP, generalmente de broadcast, para identificar teléfonos IP (VoIP) y servidores DHCP.
- ICMP: análisis de todos los paquetes del protocolo ICMP para reconocimiento de sistemas, ICMP Echo, ICMP Echo Request, ICMP Timestamp, ICMP Port Unrecheable, etc. según las firmas existentes en la base de datos de Satori.
- TCP: revisando los valores del TTL (Time to Live) de cada paquete que sale del equipo analizado, el parámetro "Windows Size" que define el tamaño que selecciona el sistema para el envío del paquete, DF si se utiliza o no el bit de fragmentado, si el sistema operativo ha seleccionado el tipo de servicio (TOS),...
- Protocolos de enrutamiento (EIGRP, OSPF, etc.).
- HSRP (Hot Standby Router Protocol): protocolo de Cisco similar al VRRP para evitar fallos en los dispositivos de una red comprobando en todo momento el estado de los equipos. Mediante un mensaje "HSRP Hello" se intercambia el estado de los equipos y según la prioridad con la que se haya definido el sistema, se sabe si se trata del dispositivo maestro y si está activo en ese momento o, si por el contrario, se trata del equipo de respaldo.
- SCCP (Skinny Client Control Protocol): protocolo de Cisco para controlar la comunicación entre los teléfonos IP (sobre todo de la serie IP 7900) y el "Call Manager".
- SMB (Server Message Block): protocolo de red utilizado para compartir recursos e impresoras en una red Windows a través de los puertos TCP 445 o TCP 139.
- SNMP (Simple Network Management Protocol): utilizado para facilitar el intercambio de información entre dispositivos de red y para supervisar su funcionamiento. Mediante una petición "snmpget" y un OID (Identificador de Objeto) se obtienen las variables solicitadas como, por ejemplo, nombre del host, uptime del equipo, sistema Operativo, etc.
También se analizan los protocolos STP (Spanning Tree Protocol), UPnP (Universal Plug and Play), Web y Vlan.
EJEMPLO - SATORI
Con Satori, una vez seleccionado el interface de red y las opciones para la captura de tráfico de red, se obtiene un listado de todos los equipos existentes en el segmento de broadcast donde se encuentre el sistema desde el cual se ha lanzado.
Previamente, es recomendable seleccionar los plugins para el análisis de los protocolos que se van a utilizar durante el proceso de la captura de tráfico para reconcoer los Sistemas Operativos. Si se está revisando un segmento de red de estaciones de trabajo se puede seleccionar SMB y SMB2, DHCP, etc. pero, es probable, que SNMP no sea necesario.

ig 1. Listado de los plugins disponibles para el análisis de las capturas de tráfico realizadas por protocolo

Fig 2. Pantalla principal de Satori donde escoger el interface de red
A partir de ese listado de dispositivos, se va reconociendo el Sistema Operativo de cada uno de ellos según el protocolo que ha permitido identificarlo tal y como se muestra en la siguiente captura de pantalla:

Fig 3. Listado de equipos encontrados con una primera aproximación de fingerprinting, MAC address, etc.

Fig 4. Dispositivos encontrados según el análisis del protocolo HSRP, debajo mensajes de alerta generados

Fig 5. Más dispositivos encontrados tras el análisis de Satori del protocolo SMB
CONTRAMEDIDAS
De forma similar a como sucedía con la técnica activa de reconocimiento de sistemas, donde se podía hasta modificar el banner de servicio para ofuscar y dificultar la identificación, en un fingerprinting pasivo lo más habitual es modificar los valores de la pila TCP/IP.
Modificar valores TCP/IP en Windows:
- Modificar el TTL (Time to Live): en sistemas Windows se tiene un valor por defecto de 128. Para modificarlo se usa el regedit en la clave “HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\” dentro de la variable DWORD con el nombre DefaultTTL y se introduce el valor deseado, por ejemplo, 64 que es el valor usado en sistemas Linux. Si la clave DefaultTTL no existe, es preciso crearla nueva.
- Modificar el tamaño de la ventana: mediante el regedit en la clave “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: regedit y la clave “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).
Otra posibilidad es utilizar el programa OSfuscate en su última versión 0.3 para sistemas Windows (http://www.irongeek.com/i.php?page=security/osfuscate-change-your-windows-os-tcp-ip-fingerprint-to-confuse-p0f-networkminer-ettercap-nmap-and-other-os-detection-tools). Osfuscate permite, de una forma sencilla modificar los parámetros de la pila TCP/IP de un equipo con Windows XP, Vista, etc. para que simule ser alguno de los otros sistemas que tiene inventarios: Checkpoint, FreeBSD, BeOS, Playstation, Novell, Palm OS, etc.
Modificar valores TCP/IP en Linux:
- Modificar el TTL: en sistemas Linux tiene un valor de 64 como se ha visto anteriormente. Para modificarlo se utiliza el comando “echo 128 > /proc/sys/net/ipv4/ip_default_ttl”, 128 por poner un ejemplo.
- Desactivación de TCP TIMESTAMP: se utiliza el comando “echo 0 > /proc/sys/net/ipv4/tcp_timestamps”.
- Desactivación del tamaño de la ventana: mediante el comando “echo 0 > /proc/sys/net/ipv4/tpc_window_scaling”.
- Activar ICMP REDIRECTS: se utilizan los comandos: “echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects” para aceptar estos paquetes y “echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects” para enviarlos.
OTRAS HERRAMIENTAS
P0f: es la herramienta más conocida para obtener información remota y de forma pasiva, sobre el sistema operativo y versiones del servidor de una máquina. Su principal característica es que, al ser un programa de fingerprinting pasivo, no deja huella en los firewalls y sistemas de detección de intrusos o de seguridad perimetral como puede suceder con tools de análisis de puertos activos como Nmap (http://lcamtuf.coredump.cx/p0f.shtml).
A diferencia de Satori, P0f, cuenta con versiones para Windows y para Linux pero no tiene un entorno gráfico y todo se realiza desde línea de comandos. A pesar de ello, P0f cuenta con muchas más funciones y es más versátil y personalizable a la hora de realizar el reconocimiento pasivo. Además, dispone de un servicio para proporcionar nuevos fingerprintings de algún sistema operativo que no esté en su base de datos o alguna corrección sobre los ya existentes: http://lcamtuf.coredump.cx/p0f-help/.
NetworkMiner: es un analizador pasivo de tráfico de red. Su característica más importante no es tanto la captura sino al análisis, específicamente al análisis forense de ese tráfico de red capturado (http://networkminer.wiki.sourceforge.net/NetworkMiner).
Únicamente dispone de una versión para Windows pero no utiliza su propia base de datos de reconocimiento de Sistemas Operativos sino que usa la propia de P0f, la de Ettercap, la de Namp (para las direcciones MAC de los dispositios) e, incluso, la de Satori para el análisis por DHCP.


Comentarios
Wiwa, muchas gracias por tu comentario. Cosas así hacen que la labor desinteresada que se hace desde Hacktimes compartiendo el poco conociemiento que podamos tener, merezca la pena.
Es encomiable las tarea de difusion que haceis mediante Hacktimes. Muy bueno el articulo, didactico, practico y se entiende a la perfección. Buen trabajo
A mí tb me ha gustado. Felicidades
Increíble !!! muy buen artículo.
Añadir comentario