Cibersecurity - Tegnology Header

1-removebg-preview-1

Ngrok: Generar persistencia en payload con ngrok


Hola amigos, les habla Facundo Salgado, hoy hablaremos de payloads y backdoors y especificamente de Ngrok, el famoso ngrok que todos utilizan.
Ngrok es un tunelizador que conecta nuestro localhost con diferentes protocolos y nos genera un enlace para que otros puedan acceder a nuestro localhost.
Generalmente es usado en links http y https en scripts de pishing o tambien es utilizado en protocolos TCP para la creacion de backdoors fuera de la red.

¿cual es el prolema de ngrok?


Ngrok tiene version de pago y version gratuita, las versiones pagas nos permiten extender la duracion de los tuneles, tambien nos permite guardar un puerto y tener siempre el mismo puerto de conexion cuando iniciamos la conexion con ngrok.
Sin embargo casi todos usamos las versiones gratuitas y el principal prolema aqui es que si generamos un backdoor y queremos utilizar ngrok para lanzarlo fuera de la red, este payload solo servira un cierto tiempo, especificamente el tiempo que demora la seccion ngrok en expirar.
Ya que si cerramos la consola de ngrok o se nos va la conexion, al volver a ejecutar nuevamente ngrok nos da un puerto o un enlace totalmente distinto al que acabamos de obtener antes, por lo tanto si habiamos creado un backdoor anteriormente a ese puerto de ngrok, este dejaria de ser utilizable y no serviria mas, deberiamos crear nuevamente otro backdoor con el nuevo puerto que nos genero.
Entonces.. ¿como podemos generar persistencia en ngrok en la version gratuita?
Les compartire un metodo que es el que yo utilizo, el cual consiste en un servidor virtual (VPS)
Pueden conseguir un VPS en diferentes lugares como vultr.com o digital ocean y son muy economicos.
Estos VPS nos serviran para redigir el trafico a nuestro ngrok y manteniendo siempre la misma IP y puerto en el backdoor.
Utilizaremos especificamente las reglas de IPTABLES para hacer un redireccionamiento del trafico a la ip y puerto de ngrok que nos genero, si por alguna razon se nos cerrara la conexion de ngrok, solo bastaria con eliminar las reglas anteriores y colocar nuevas y seguiriamos recibiendo conexiones.
Paso 1 – Loguear en un VPS mediante SSH
Podemos utilizar putty o cualquier cliente de SSH, una vez conectados vamos a aplicar las siguientes reglas en IPTABLES
iptables -A FORWARD -d 157.245.94.208 -i eth0 -p tcp -m tcp --dport 4444 -j ACCEPT
En la direccion IP que colocamos arriba alli deberan colocar la direccion IP de su VPS.
Lo que estamos indicando en esta regla es que haga un FORWARD en todo el trafico que se reciba a esa direccion IP por el protocolo TCP en el puerto 4444
La siguiente regla es la siguiente:
iptables -t nat -A PREROUTING -d 157.245.94.208 -p tcp -m tcp --dport 4444 -j DNAT --to-destination 3.20.98.123:14591
En esta regla en el parametro -d especificamos nueamente la direccion del VPS que tenemos especificamos el puerto 4444 por donde entran las conexiones y seguidamente en el parametro –to-destination estamos especificando la IP de NGROK (0.tcp.ngrok.io)
Para saber la IP de ngrok solo basta con hacer un ping al dominio, de la siguiente manera
Seguidamente despues de los dos puntos en la IP colocamos el puerto que nos dio en ngrok, las siguientes reglas serian las siguientes
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sysctl net.ipv4.ip_forward=1
service iptables save
service iptables reload
En las reglas de arriba habilitamos la IP forwarding, guardamos las reglas y reniciamos el servicio de iptables, por lo tanto ahora toda conexion que se reciba a la IP del VPS por el puerto 4444 y el protocolo TCP sera redirigido automaticamente a la IP Y PUERTO DE NGROK.

si cerramos ngrok y volvemos a abrir como eliminamos las reglas anteriores?


para limpiar las reglas iptables anteriores solo bastaria con colocar estos comandos

iptables -t nat -F
iptables -t nat -X
iptables -P FORWARD ACCEPT

Luego tendriamos que volver a especificar las reglas anteriores nuevamente colocando en esta regla el nuevo PUERTO de ngrok que nos genero

iptables -t nat -A PREROUTING -d 157.245.94.208 -p tcp -m tcp --dport 4444 -j DNAT --to-destination 3.20.98.123:NUEVOPUERTO

el backdoor a que lhost lport deberiamos crearlo?

Muy simple el backdoor se genera a la IP del VPS y el puerto si creamos el backdoor a un puerto que no sea el 4444 debemos espeficiarlo en las reglas que acabamos de crear anteriormente, aunque yo les recomiendo que utilizen el 4444 por default.
De esta sencilla forma aplicando un par de reglas lograriamos mantener un payload a salvo sin importar si cerramos o volvemos a abrir ngrok.