(N.d.A. La información de este post está basado en gran parte en un paper de Wei Xu, Kyle Sanders & Yanxin Zhang titulado WE KNOW IT BEFORE YOU DO: PREDICTING MALICIOUS DOMAINS, que puedes descargar desde este enlace en PDF o ver aquí en html)
Comencemos diciendo que existen tres tipos de nombres de dominios DNS: buenos (o legítimos), malos y corruptos (es decir, nombres de dominios legítimos que han sufrido algún tipo de ataque).
Un nombre de dominio se puede considerar malicioso tanto por su contenido (malware, paginas web con exploits o con descargas automáticas, etc.) como por su comportamiento (comunicación con máquinas infectadas para el envío de información, lanzamiento de ataques, etc.). Hay que tener en cuenta que un dominio malicioso suele usarse durante un corto periodo de tiempo, ya que de este modo se abaratan costes además de dificultar su detección, puesto que son dominios creados específicamente con este propósito.
Además de las herramientas que todo el mundo conoce para el análisis de dominios DNS (Automater, URL Query, Virus Total, DNS Query, Domain Tools…), existen ciertas características y patrones que estos siguen que también nos pueden ayudar en la predicción del grado de legitimidad de un dominio. Basando nuestro análisis en el ciclo de vida del dominio DNS (preparación, activación, desactivación o bloqueo) y en la reutilización de recursos, encontramos ciertas características y patrones útiles para su detección, que veremos a continuación.
Las primeras alarmas vienen dadas por el hecho de que muchos dominios DNS maliciosos se reutilizan, después de su detección, para otras campañas de ataques. El intervalo de tiempo que suele haber entre su uso inicial y posterior es aproximadamente de un año, tiempo en el que los dominios previamente detectados han vuelto al mercado y han sido borrados de las DNBL. Además, durante el tiempo en el que permanecen desactivados, estos dominios suelen sufrir cambios en su registro y su contenido. Además, otra característica de los dominios DNS maliciosos es que la mayoría de estos resuelven como domain parking, es decir, no tienen asociado ningún servicio.
Si encontramos estas dos características por separado probablemente el dominio haya sido malicioso, pero hemos de tener en cuenta que la mayoría de ellos no se suelen reutilizar con malos propósitos.
Por lo que respecta a las peticiones DNS, podemos extraer ciertos patrones útiles en nuestra predicción antes de que dicho dominio sea usado o detectado. De estos, la mayoría están relacionados con la fase de preparación y test del dominio:
- Cambios en los registros DNS, como por ejemplo, activación de servidores, realizar un test de resolución de DNS, etc.
- Patrones temporales de peticiones DNS. Bien porque encontremos dominios cuyo número de peticiones DNS sufre un brote repentino en cuanto a volumen, o bien, porque las peticiones DNS sigan patrones periódicos.
- Patrones en QNAME (Query Domain Name). Tenemos este tipo de patrones cuando el dominio ha sido generado mediante un DGA (Domain Generation Algorithm), o si se asemeja a algún dominio malicioso conocido o a algún dominio popular y legítimo, sin tener ninguna relación.
Por supuesto, este tipo de características no son determinantes; los dominios también deben pasar un test de detección de contenido JS/HTML maliciosos y ser clasificados en base a las características extraídas de los registros DNS, las direcciones IP, etc. Si ambos tests devuelven positivo, entonces podemos considerar dicho dominio como malicioso. Además, si queremos diseñar una herramienta de detección debemos tener en cuenta que los tests que deberían pasar los dominios DNS son sensibles al tiempo.
Por otra parte, también podemos analizar las posibles conexiones entre los patrones de comportamiento de dominios maliciosos ya conocidos y los que estemos analizando:
Si su servidor de nombres (NS) coincide con el de un dominio malicioso conocido, podremos considerarlo un indicio siempre que descartemos NS legítimos como registradores de DNS, proveedores CDN (Content Delivery Network), web hosting (alojamiento web), etc.; y NS que abastecen a muy muy pocos dominios maliciosos. Para este tipo de análisis necesitaríamos recopilar y mantener una lista de servidores de dominios maliciosos conocidos, teniendo en cuenta el flujo de datos del Passive DNS, es decir, los registros de NS que apuntan a NS de la lista. Cualquier dominio que cumpla dicha condición podría ser considerado malicioso.
Si encontramos coincidencias en direcciones IP, podemos encontrarnos con dos casos:
- La primera, que coincidieran con direcciones IP utilizadas por dominios maliciosos conocidos, sabiendo que debemos descartar las direcciones IP utilizadas por diferentes dominios, como por ejemplo, direcciones IP en CDN o web hosting.
- La segunda, que encontrásemos coincidencias con direcciones IP infectadas e identificadas como sinkhole, es decir, direcciones IP utilizadas para cambiar el flujo de URL maliciosas mediante la inserción de una entrada falsa en el NS. Estas URL se pueden deducir de servidores C&C ya conocidos. Debemos tener presente que direcciones IP comerciales o de portales pueden tener estas mismas características y por tanto, se deben descartar.
Algunas herramientas de este tipo basan el filtrado principalmente en la localización y la información de asignación de las direcciones IP y el conocimiento de los posibles dominios de CDN/web hosting/otras empresas.
En cuanto a la información de registro, podemos establecer una conexión entre dominios maliciosos si encontramos similitudes entre nombres de los titulares de registros de dominios maliciosos o coincidencias entre las direcciones, los teléfonos o los emails de los titulares de los registros.
En definitiva, si queremos diseñar un sistema de detección de dominios DNS maliciosos, además de integrar las típicas herramientas de análisis de dominios DNS que todos conocemos, debemos analizar un conjunto de características que sin duda harán de nuestro sistema una herramienta más robusta.