Bhunter — nodos de redes bot que pueden ser hackeados.

Los analistas de virus y los investigadores de seguridad informática buscan recopilar la mayor cantidad de muestras de nuevos botnets. Para sus objetivos, utilizan honeypots.… Pero, ¿qué pasa si quieres observar el malware en condiciones reales? ¿Poner en riesgo tu servidor, enrutador? ¿Y si no tienes un dispositivo adecuado? Estas preguntas me llevaron a crear bhunter, una herramienta para acceder a nodos de botnets.

Bhunter — nodos de redes bot que pueden ser hackeados.

La idea principal

Existen muchas formas de propagar malware para ampliar botnets: desde phishing hasta la explotación de vulnerabilidades 0-day. Pero el método más común sigue siendo el ataque por fuerza bruta a las contraseñas de SSH.

La idea es muy simple. Si un nodo de la botnet está intentando acceder a tu servidor mediante fuerza bruta, es muy probable que ese nodo haya sido capturado por el mismo método. Por lo tanto, para obtener acceso a él, solo necesitas devolverle el ‘favor’.

Así es como funciona bhunter. Escucha el puerto 22 (servicio SSH) y recopila todos los logins y contraseñas que intentan conectarse a él. Luego, usando las contraseñas recopiladas, intenta conectarse a los nodos atacantes.

Algoritmo de funcionamiento

El programa se puede dividir en 2 partes principales, que funcionan en hilos separados. La primera es el honeypot. Procesa los intentos de inicio de sesión, recopila logins y contraseñas únicos (en este caso, la pareja login+contraseña se considera un todo), y también agrega a la cola las direcciones IP que intentaron conectarse para ataques posteriores.

La segunda parte es responsable de la ataque. La ataque se realiza en dos modos: BurstAttack (ataque por cola) — fuerza bruta de logins y contraseñas de una lista general y SingleShotAttack (ataque individual) — fuerza bruta de contraseñas que se usaron en el nodo atacado, pero que aún no se han agregado a la lista general.

Para tener alguna base de logins y contraseñas inmediatamente después del lanzamiento, bhunter se inicializa con una lista del archivo /etc/bhunter/defaultLoginPairs.

Interfaz

Se prevén varias formas de iniciar bhunter:

Simplemente con el comando

sudo bhunter

Con este modo de inicio, hay una opción para gestionar bhunter a través de su menú de texto: agregar logins y contraseñas para el ataque, exportar la base de logins y contraseñas, especificar un objetivo para el ataque. Todos los nodos hackeados se pueden ver en el archivo /var/log/bhunter/hacked.log

Usando tmux

sudo bhunter-ts # comando para iniciar bhunter a través de tmux  
sudo tmux attach -t bhunter # nos conectamos a la sesión en la que está ejecutándose bhunter

Tmux es un multiplexor de terminal, una herramienta muy conveniente. Permite crear múltiples ventanas dentro de un solo terminal y dividir las ventanas en paneles. Al usarlo, puedes salir del terminal y luego volver sin interrumpir los procesos en ejecución.

El script bhunter-ts crea una sesión de tmux y divide la ventana en tres paneles. En el primero, el más grande, se encuentra el menú de texto. El panel superior derecho contiene los registros del honeypot, donde puedes ver los mensajes sobre intentos de acceso al honeypot. En el panel inferior derecho se muestra información sobre el progreso del ataque a nodos de redes de bots y sobre los hackeos exitosos.

La ventaja de este método sobre el primero es que podemos cerrar el terminal sin preocupaciones y volver a él más tarde, mientras que bhunter no detendrá su trabajo. A aquellos que no están familiarizados con tmux les sugiero esta guía rápida.

Como servicio

systemctl enable bhunter
systemctl start bhunter

En este caso, estamos habilitando el inicio automático de bhunter al arrancar el sistema. En este método no se prevé la interacción con bhunter, y la lista de nodos hackeados se puede obtener de /var/log/bhunter/hacked.log

Eficiencia

Durante el tiempo que trabajé en bhunter, logré encontrar y acceder a dispositivos completamente diferentes: raspberry pi, enrutadores (especialmente mikrotik), servidores web, y una vez a una granja de minería (desafortunadamente, el acceso fue durante un día, así que no hubo una historia interesante). Aquí tienes una captura de pantalla del programa, donde se puede ver la lista de nodos hackeados después de varios días de trabajo:

Bhunter — nodos de redes bot que pueden ser hackeados.

Desafortunadamente, la eficacia de esta herramienta no cumplió con mis expectativas: bhunter puede probar contraseñas en los nodos durante varios días sin éxito, o puede hackear varios objetivos en un par de horas. Pero para un flujo regular de nuevas muestras de botnets, esto es suficiente.

La eficacia está influenciada por parámetros como: el país donde se encuentra el servidor con bhunter, el hosting, y el rango desde el cual se asigna la dirección IP. En mi experiencia, hubo un caso en el que alquilé dos servidores virtuales de un mismo host, y uno de ellos fue objeto de ataques por parte de botnets el doble de veces.

Bugs que aún no he solucionado

Al atacar nodos infectados, en algunas situaciones no se puede determinar con certeza si la contraseña fue aceptada o no. El registro de tales casos se lleva en el archivo /var/log/debug.log.

El módulo Paramiko, que se utiliza para trabajar con SSH, a veces se comporta de manera incorrecta: se queda esperando indefinidamente una respuesta del nodo cuando intenta conectarse. He experimentado con temporizadores, pero no he obtenido el resultado deseado.

¿En qué más debemos trabajar?

Nombre del servicio

Según el RFC-4253, el cliente y el servidor intercambian los nombres de los servicios que implementan el protocolo SSH antes de la conexión. Este nombre se encuentra en el campo «SERVICE NAME», que está presente tanto en la solicitud del cliente como en la respuesta del servidor. El campo es una cadena, y su valor se puede conocer usando wireshark o nmap. Aquí hay un ejemplo para OpenSSH:

$ nmap -p 22 ***.**.***.** -sV
Iniciando Nmap ...
PUERTO   ESTADO SERVICIO VERSIÓN
22/tcp abierto  ssh     <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protocolo 2.0)
Nmap finalizado: 1 dirección IP (1 host activo) escaneado en 0.47 segundos

Sin embargo, en el caso de Paramiko, este campo contiene una cadena del tipo «Paramiko Python sshd 2.4.2», lo que puede disuadir a los botnets, que incorporan el «evitar» trampas. Por lo tanto, considero necesario reemplazar esta cadena por algo más neutral.

Otros vectores

SSH no es el único medio de gestión remota. También existen telnet y rdp. Vale la pena prestar atención a ellos.

Extensión

Sería genial tener varias trampas en diferentes países y recopilar centralizadamente los inicios de sesión, contraseñas y nodos comprometidos en una base de datos común.

¿Dónde descargar?

En el momento de escribir este artículo, solo está lista la versión de prueba, que se puede descargar de el repositorio en Github.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster