«Si conoces al enemigo y te conoces a ti mismo, no temas el resultado de cien batallas…”
– Sun Tzu, El arte de la guerra
La recopilación de información es un arte descrito a la perfección en la obra de Sun-Tzu. Se trata de una de las claves para ganar a un rival. Aunque los hackers éticos se imponen ciertos límites y restricciones, en el ámbito de la ciberseguridad, el contrincante sería el cliente al que se le realiza un test de penetración.
Para empezar, se conoce al oponente a través del dominio “[cliente].com” y todo lo que hay tras él. La mejor manera de hacer esto es recopilando todos sus datos online y examinando cuáles son sus redes, rangos de IP, la dirección postal de la oficina o sucursales, número de empleados, y así con toda la información que podría ser de utilidad.
Cuando se falla en un ciberataque tradicional, siempre se puede recurrir a algunas técnicas de ingeniería social. Y es que a más datos obtengas, más oportunidades tendrás de encontrar una brecha de seguridad o incluso un error humano.
La mayoría de las empresas tienen accesos externos a sus medios. Estos pueden ser los CRM (los cuales son uno de los puntos más críticos de las empresas con departamento de ventas); las herramientas de desarrollo de software como Atlassian; aplicaciones web que monitorean el estado de servicios de red y servidores como Zabbix. También entran dentro de esta categoría los servicios de correo electrónico por los cuales se gestiona la comunicación con los clientes.
Cualquier pequeña o mediana empresa propietaria de un dominio normalmente tiene al menos un subdominio. El dominio “www.[cliente].com” suele ser el alias del Registro A “[cliente].com”. Hay compañías cuyos registros DNS mantienen 50, 100 o más registros de subdominios. Sin embargo, la cantidad de subdominios no tiene por qué influir en la seguridad de la compañía, siempre y cuando estos no supongan una brecha de seguridad.
Cuanto más grande sea la empresa, más activos tendrá. Y cuanto más activos tenga, más errores humanos se pueden dar. De ahí que un ataque comience siempre por la recopilación de información, especialmente por las DNS de los subdominios.
Cuando mi colega, Efrén Díaz explicó a través de este post las formas de desenmascarar dominios y subdominios escondidos tras un servicio de protección CDN/DDoS, también demostró las maneras pasivas y activas de llevar a cabo este ejercicio.
Sin embargo, si un subdominio fue activado bajo un servicio de protección CDN/DDoS justo después de su creación, las técnicas de reconocimiento pasivas fallarán. Por eso, para estos casos se necesitan métodos de reconocimiento activos y enumerar las DNS de subdominios por fuerza bruta.
En el Laboratorio de Desarrollo, Open Data Security ha desarrollado Fast Subdomain Scanner (FSS). Se trata de una herramienta que utiliza peticiones asíncronas sobre sockets no bloqueantes para llevar a cabo el escáner de subdominios por fuerza bruta más rápido del mundo. La herramienta que se ve en el siguiente vídeo trabaja bajo la última versión de PHP 7.1.
Caso de estudio
Recientemente, una vulnerabilidad de día cero afectó a Apache Struts, así como a las aplicaciones basadas en Java que utilizaban esta herramienta de código abierto. Debido a su simplicidad, el abuso de la misma destruyó servidores de todo el mundo causando importantes daños.
A pesar de que se sabe que es casi imposible parar un ataque mediante una vulnerabilidad de día cero, es recomendable que las compañías tengan una política de prevención; es decir, una forma de proceder ante la exposición de los activos de una empresa en Internet.
Grandes compañías estaban en peligro por este fallo de seguridad encontrado en Struts, el cual quedó registrado con el nombre CVE-2017-5638. Lo que hace tan letal es la manera tan sencilla de encontrar objetivos vulnerables.
Parte de este descubrimiento se podía llevar a cabo haciendo una búsqueda en Google con un dork “filetype:action” (dork = búsqueda en Google especialmente diseñada para encontrar los activos a los que explotar la vulnerabilidad).
Pero esta no era la única manera de alcanzar objetivos vulnerables.
El 10 de marzo de 2017, Atlassian, la compañía que desarrolló uno de los mayores paquetes de software empresarial del mundo, Atlassian Suite, publicó un boletín de seguridad admitiendo que la vulnerabilidad CVE-2017-5638 de Struts afectaba a algunas de sus versiones de Bamboo (herramienta de integración continua y despliegue de software en servidores), así como a varias versiones de otras de sus herramientas.
Todo esto dio lugar a otro vector potencial de ataque, basado en técnicas de enumeración de subdominios, y más concretamente, en la búsqueda de subdominios tipo: “bamboo.[empresa].com”, “hipchat.[empresa].com”; o en resumen: “cualquier-herramienta-vulnerada-por-CVE-Struts.[empresa].com”.
Descubierta esta vulnerabilidad, ¿cuál es la mejor manera de proteger su compañía?
Utiliza nombres poco comúnes
No es una tarea sencilla protegerse de la obtención de subdominios por fuerza bruta.
Este tipo de ataques se llevan a cabo utilizando diccionarios de fuerza bruta, por lo que las medidas de protección son muy similares a las que se implementan para proteger las contraseñas del uso de este método.
Por esta razón, es recomendable el uso de nombres poco comunes a la hora de elegir el nombre de un subdominio, así se le complica el trabajo a un atacante.
Ya hemos visto que “bamboo.[cliente].com” no es la mejor opción para un servidor corporativo de Bamboo expuesto externamente, por lo que una solución podría ser “bamboo[5 números al azar].[cliente].com”. Esto podría evitar que un diccionario de fuerza bruta tenga más éxito a la hora de atacar una compañía. Además, se trata de una opción que permitirá a los empleados el uso de los activos de la empresa a través de Internet, siempre y cuando conozcan y recuerden la URL completa.
Hay que tener en cuenta que no se trata de una solución mágica. Y es que cuanto mayor sea el diccionario por fuerza bruta que utilicen los atacantes, más oportunidades tendrán de descubrir los activos ubicados en el Registro A.
Oculta de manera eficiente
Siempre se recomienda el uso de servicios de protección de un CDN/DDoS como Cloudflare.
En el ejemplo de Cloudflare, antes de crear un Registro A que contiene un nuevo subdominio (el cual corresponde al hostname en la interfaz de gestión de las DNS de Cloudflare), asegúrese de que el icono que representa una nube y una flecha gris están de color naranja. Y es que esto quiere decir que el tráfico al hostname creado comenzará a ir a través de Cloudflare.
El reconocimiento de fuentes pasivas, como dnsdumpster.com, nunca va a exponer la IP real de las máquinas creadas por los registros de las DNS. Esto ayuda a paliar los ataques a las IP como los ataques de fuerza bruta a SSH, ataques heartbleed, así como cualquier otra vulnerabilidad que el servidor podría tener.
Trata de usar un CDN que ofrezca un servicio WAF (Web Application Firewall). Se trata de herramientas diseñadas para contrarrestar ataques web a través del filtro o aplicación de reglas a las peticiones HTTP que se envían al servidor.
Por desgracia, este tipo de protección sólo es tan buena como lo son las reglas que aplica. Los exploits de día cero no suelen ser detectados por los WAF. Además, hay muchas técnicas para saltar la protección de un WAF, por lo que las reglas que aplican pueden terminar siendo inútiles en un ataque.
Utilice señuelos para defenderse de manera activa
Con el objetivo de diseñar un plan de defensa activo, el uso de honeypots (señuelos o sistemas trampa) ha tenido una gran acogida en el entorno empresarial.
Su formulación es sencilla. Se crean redes atractivas para los atacantes (accounts.[cliente].com; it.[cliente].com; paymentgw.[cliente].com…) que estén aisladas y al margen de los sistemas y redes de la compañía. Cuando estas redes se atacan, se reúne información sobre el atacante, así como su manera de proceder y sus motivaciones. Esto puede servir para que la empresa desarrolle estrategias de contraataque y mecanismos de protección. En Github se pueden encontrar un gran repositorio de herramientas de este tipo.
Utiliza servicios de protección específicos para empresas
La implementación de las medidas mencionadas limita tanto la exposición como la frecuencia de ataques contra la infraestructura de su empresa. Sin embargo, una vez el hacker ha descubierto un subdominio, esas medidas de protección dejan de ser suficientes; especialmente, si estamos hablando de un servidor que ejecuta una aplicación web.
Por ello, en Open Data Security hemos desarrollado Wolf-Ray. Se trata de un servicio en la nube exclusivamente diseñado para combatir los ataques a aplicaciones web, mientras se mantiene la disponibilidad de los servicios que protege hacia sus usuarios legítimos. Gracias a su sencillez, su continua auditoría de código y sistemas, y un diseño flexible en su arquitectura, Wolf-Ray es una solución eficiente que le protege de los ataques de día cero.[:]