
DNSChef - Proxy DNS para Probadores de Penetración y Analistas de Malware
| | versión 0.4 | | / _|
| | __ ___ | | __| |
/ ` | ' / |/ | ' \ / _ \ |
| (| | | | _ \ (| | | | __/ |
_,|| ||/_|| ||___||
D O C U M E N T A C I Ó N
DNSChef es un proxy DNS altamente configurable para evaluadores de penetración y analistas de malware. Un proxy DNS (también conocido como "Fake DNS") es una herramienta utilizada para el análisis del tráfico de red de aplicaciones, entre otros usos. Por ejemplo, un proxy DNS puede usarse para falsificar solicitudes a "badguy.com" de modo que apunten a una máquina local para terminación o interceptación en lugar de un host real en algún lugar de Internet.
Existen varios proxies DNS en el mercado. La mayoría simplemente redirigirá todas las consultas DNS a una única dirección IP o implementará solo un filtrado rudimentario. DNSChef fue desarrollado como parte de una prueba de penetración en la que se necesitaba un sistema más configurable. Como resultado, DNSChef es una aplicación multiplataforma capaz de falsificar respuestas basándose en listas de dominios inclusivas y exclusivas, compatible con múltiples tipos de registros DNS, coincidencia de dominios con comodines, proxy de respuestas reales para dominios no coincidentes, definición de archivos de configuración externos, IPv6 y muchas otras características. A continuación encontrará una explicación detallada de cada una de las funciones y usos sugeridos.
Se recomienda el uso de un proxy DNS en situaciones en las que no sea posible forzar a una aplicación a utilizar directamente otro servidor proxy. Por ejemplo, algunas aplicaciones móviles ignoran por completo la configuración del proxy HTTP del sistema operativo. En estos casos, el uso de un servidor proxy DNS como DNSChef le permitirá engañar a esa aplicación para que redirija las conexiones al destino deseado.
Antes de comenzar a usar DNSChef, debe configurar su máquina para que utilice un servidor de nombres DNS con la herramienta ejecutándose. Tiene varias opciones según el sistema operativo que vaya a utilizar:
Linux - Edite /etc/resolv.conf para incluir una línea al principio con su host de análisis de tráfico (por ejemplo, agregue "nameserver 127.0.0.1" si está ejecutando localmente). Alternativamente, puede agregar una dirección de servidor DNS usando herramientas como Network Manager. Dentro de Network Manager, abra Configuración IPv4, seleccione Solo direcciones automáticas (DHCP) o Manual en el cuadro desplegable Método y edite el cuadro de texto Servidores DNS para incluir una dirección IP donde se esté ejecutando DNSChef.
Windows - Seleccione Conexiones de red desde el Panel de control. Luego seleccione una de las conexiones (por ejemplo, "Conexión de área local"), haga clic derecho sobre ella y seleccione propiedades. En el cuadro de diálogo que aparece, seleccione Protocolo de Internet (TCP/IP) y haga clic en propiedades. Por último, seleccione el botón de opción Usar las siguientes direcciones de servidor DNS e ingrese la dirección IP donde se esté ejecutando DNSChef. Por ejemplo, si se ejecuta localmente, ingrese 127.0.0.1.
OS X - Abra Preferencias del Sistema y haga clic en el ícono Red. Seleccione la interfaz activa y complete el campo Servidor DNS. Si está usando Airport, deberá hacer clic en el botón Avanzado... y editar los servidores DNS desde allí. Alternativamente, puede editar /etc/resolv.conf y agregar un servidor de nombres falso al principio (por ejemplo, "nameserver 127.0.0.1").
iOS - Abra Ajustes y seleccione General. Luego seleccione Wi-Fi y haga clic en la flecha azul a la derecha de un punto de acceso activo de la lista. Edite la entrada DNS para que apunte al host donde se está ejecutando DNSChef. Asegúrese de haber desactivado la interfaz Celular (si está disponible).
Android - Abra Ajustes y seleccione Redes inalámbricas y redes. Haga clic en Ajustes de Wi-Fi y seleccione Avanzado después de presionar el botón Opciones en el teléfono. Habilite la casilla Usar IP estática y configure un servidor DNS personalizado.
Si no tiene la capacidad de modificar manualmente la configuración de DNS del dispositivo, aún tiene varias opciones que involucran técnicas como ARP Spoofing, Rogue DHCP y otros métodos creativos.
Por último, debe configurar un servicio falso al que DNSChef redirigirá todas las solicitudes. Por ejemplo, si intenta interceptar tráfico web, debe iniciar un servidor web separado que se ejecute en el puerto 80 o configurar un proxy web (por ejemplo, Burp) para interceptar el tráfico. DNSChef apuntará las consultas a su host proxy/servidor con servicios correctamente configurados.
DNSChef es una aplicación multiplataforma desarrollada en Python que debería ejecutarse en la mayoría de las plataformas que tengan un intérprete de Python. Puede usar el ejecutable dnschef.exe proporcionado para ejecutarlo en hosts Windows sin instalar un intérprete de Python. Esta guía se centrará en entornos Unix; sin embargo, todos los ejemplos siguientes también se han probado y funcionan en Windows.
Probemos DNSChef con su funcionalidad de monitoreo más básica. Ejecute el siguiente comando como root (necesario para iniciar un servidor en el puerto 53):
# ./dnschef.py
_ _ __
| | version 0.2 | | / _|
__| |_ __ ___ ___| |__ ___| |_
/ _` | '_ \/ __|/ __| '_ \ / _ \ _|
| (_| | | | \__ \ (__| | | | __/ |
\__,_|_| |_|___/\___|_| |_|\___|_|
[email protected]
[*] DNSChef iniciado en la interfaz: 127.0.0.1
[*] Usando los siguientes servidores de nombres: 8.8.8.8
[*] No se especificaron parámetros. Ejecutando en modo proxy completo
Sin parámetros, DNSChef se ejecutará en modo proxy completo. Esto significa que todas las solicitudes simplemente se reenviarán a un servidor DNS ascendente (8.8.8.8 por defecto) y se devolverán al host solicitante. Por ejemplo, consultemos un registro "A" para un dominio y observemos los resultados:
$ host -t A thesprawl.org
thesprawl.org tiene dirección 108.59.3.64
DNSChef imprimirá la siguiente línea de registro que muestra la hora, la dirección IP de origen, el tipo de registro solicitado y, lo más importante, qué nombre se consultó:
[23:54:03] 127.0.0.1: proxy de respuesta de tipo 'A' para thesprawl.org
Este modo es útil para la monitorización simple de aplicaciones cuando necesita saber qué dominios utiliza para sus comunicaciones.
DNSChef tiene soporte completo para IPv6, que se puede activar usando los indicadores -6 o --ipv6. Funciona exactamente igual que el modo IPv4, con la excepción de que la interfaz de escucha predeterminada cambia a ::1 y el servidor DNS predeterminado cambia a 2001:4860:4860::8888. Aquí hay un ejemplo de salida:
# ./dnschef.py -6
_ _ __
| | version 0.2 | | / _|
__| |_ __ ___ ___| |__ ___| |_
/ _` | '_ \/ __|/ __| '_ \ / _ \ _|
| (_| | | | \__ \ (__| | | | __/ |
\__,_|_| |_|___/\___|_| |_|\___|_|
[email protected]
[*] Usando modo IPv6.
[*] DNSChef iniciado en la interfaz: ::1
[*] Usando los siguientes servidores de nombres: 2001:4860:4860::8888
[*] No se especificaron parámetros. Ejecutando en modo proxy completo
[00:35:44] ::1: proxy de respuesta de tipo 'A' para thesprawl.org
[00:35:44] ::1: proxy de respuesta de tipo 'AAAA' para thesprawl.org
[00:35:44] ::1: proxy de respuesta de tipo 'MX' para thesprawl.org