Localhost Botnet Ataque Relleno de Credenciales
Localhost Botnet Ataque Relleno de Credenciales

Localhost Botnet: Ataque de Relleno de Credenciales

Esta es una implementación local de una red de bots (botnet) utilizada para realizar un ataque de relleno de credenciales (credential stuffing).

Esto fue creado como un proyecto final para WUSTL CSE-433 (Introducción a la Seguridad Informática) como una forma de ayudar a entender cómo los componentes básicos de una red de bots trabajan juntos para infectar dispositivos, controlar estos dispositivos y emitir ataques.

Ejecutando el programa

Pre-requisitos

  • No recomiendo tratar de hacer funcionar esto en una máquina de laboratorio de semillas (lo intenté y me rendí poco después.)
  • No he probado el ejecutable de Windows.
  • He realizado pruebas en una Mac con NodeJS versión 15.5.0 y npm versión 7.3.0 y en Kali con NodeJS versión 12.19.0 y npm versión 7.3.0.
  • Para instalar nodejs y npm en máquinas linux ejecuta sudo apt install nodejs npm
  • Los puertos 3001 y 3002 deben estar disponibles para ejecutar el programa con éxito.

Iniciando el programa

  • Clona el repositorio
git clone https://github.com/frazierjoe/localhost-botnet.git
  • Una vez dentro del repo, ejecuta
npm i
  • Ejecutar lo siguiente para iniciar automáticamente el sitio de descarga, el sitio de la víctima y el sitio de comando y control (todos se abrirán en nuevas pestañas en tu navegador predeterminado).
npm start
  • Ahora deberías tener abiertas tres nuevas pestañas en tu navegador predeterminado. Una es el sitio de la víctima, otra es el sitio de comando y control y la última es el sitio de descarga de software.
  • Dirígete al sitio de descarga de software y haz clic en el enlace correspondiente a tu sistema operativo. He probado la versión Mac y la versión Linux (con Kali).
  • Configura los permisos del archivo descargado para que sea ejecutable
chmod 755 malware-linux
  • Lo más fácil es ejecutar el ejecutable haciendo doble clic en el administrador de archivos. También puedes ejecutarlo con ./malware, pero tendrás que abrir varias pestañas/ventanas para crear varios dispositivos infectados.
  • Una vez ejecutado, deberías ver otra página web abierta en una nueva pestaña. Esta es la página web del software infectado.
  • Ahora puedes explorar y encontrar la bandera en la página de administración. El ataque está listo para ser ejecutado, sólo tienes que hacer clic en el botón de ejecución de la página web de comando y control.

Componentes

Software Infectado

Para modelar el software infectado, creé un sitio de descarga donde un usuario puede ver los enlaces de descarga del software que le gustaría descargar. La página de descarga se abre cuando se ejecuta el programa (a través d npm run start no el ejecutable del software infectado).

Software Infectado

Una vez que el programa se ha descargado, el usuario puede ejecutar el programa. Cuando el programa se ejecuta, iniciará un servidor y abrirá una página web en el navegador predeterminado del sistema. Esta página web replica el software que el usuario habría intentado descargar. El servidor que se inicia ejecutando el programa enviará automáticamente la dirección IP y el número de puerto del servidor al servidor de comando y control.

Luego espera los comandos del servidor de comando y control. Cuando se recibe un comando, la red de bots comienza su ataque de relleno de credenciales con los datos que el servidor de comando y control le envió. Mostrará estos datos en la página web que está sirviendo. En el ataque de relleno de credenciales, el dispositivo infectado recibe una lista de nombres de usuario y contraseñas, la dirección IP y el puerto del servidor víctima, una configuración de retardo y un punto final al que enviar las solicitudes. A continuación, el dispositivo infectado intenta entonces iniciar la sesión de la víctima a través del punto final y si encuentra un par de nombre de usuario/contraseña válidos, lo enviará de vuelta al servidor de comando y control.

Descarga del software ejecutable
Descarga del software ejecutable

Comando y Control

Comando y control es el punto de acceso a la red de bots para el propietario. Rastrea los dispositivos infectados, emite comandos a los dispositivos infectados y recibe datos de los dispositivos conectados sobre sus ataques. En esta implementación, el propietario puede interactuar con su red de robots a través de una página web que se abre al mismo tiempo que la página web de descargas. El propietario de la red de bots puede ver una lista de sus dispositivos infectados, utilizar un formulario para crear y ejecutar un ataque de relleno de credenciales y ver los resultados del ataque (nombres de usuario y contraseñas válidos). Cuando se inicia un ataque de relleno de credenciales, el servidor de comando y control divide la lista de nombres de usuario y la distribuye a los dispositivos infectados junto con la lista completa de contraseñas y otra información de ataque.

Sitio de Comando y Control

Sitio Víctima

El sitio de la víctima es un simple sitio de acceso que funciona en 127.0.0.1:3002. Esta página web se abre al mismo tiempo que la página web de mando y control y la página de descargas. Un inicio de sesión válido en el sitio de la víctima es el nombre de usuario: “admin” contraseña: “password” (sin las comillas.) En un inicio de sesión válido, el usuario es redirigido a la página de administración donde se muestra una bandera/flag.

Sitio Login de Víctima
Sitio Login de Víctima

Objetivo del botnet de Localhost

El objetivo del atacante es infectar los dispositivos, elaborar una solicitud para enviar al sitio de la víctima a través del formulario del sitio de mando y control, ejecutar el ataque distribuido contra los dispositivos infectados y recibir credenciales válidas de los dispositivos infectados. El atacante puede entonces ingresar al sitio con las credenciales que encontró.

Las siguientes son algunas capturas de pantalla en la demostración del vídeo (puedes ver el vídeo publicado en Instagram en este enlace). En la captura se puede ver la información recibida a través de la terminal, la cuál verifica que las credenciales sean correctas.

Verificación Credenciales
Verificación Credenciales
Más artículos
DNS Benchmark el servidor DNS más rápido
DNS Benchmark: ¿Cuál es el servidor DNS más rápido?