FritzFrog: la próxima generación de botnets

Resumen



  • Guardicore descubrió la sofisticada botnet peer-to-peer (P2P) FritzFrog , que ha estado pirateando activamente servidores SSH desde enero de 2020.
  • Malware en Golang : FritzFrog ejecuta código malicioso modular, multiproceso y sin archivos en Golang que no deja rastro en el disco duro de un dispositivo infectado.
  • Selección activa de recursos gubernamentales, educativos, financieros y de otro tipo : FritzFrog intentó utilizar la fuerza bruta y distribuir a decenas de millones de direcciones IP de oficinas gubernamentales, instituciones educativas, centros médicos, bancos y muchas empresas de telecomunicaciones. Entre ellos, más de 500 servidores fueron atacados con éxito, incluidas universidades conocidas en los EE. UU. Y Europa, y una compañía ferroviaria.
  • Complejidad : FritzFrog es completamente propietario, su implementación P2P está escrita desde cero, lo que indica un alto nivel de profesionalismo de sus creadores en el campo del desarrollo de software.
  • : Guardcore Labs Golang, P2P FritzFrog .
  • : , FritzFrog, Rakos.




FritzFrog es una botnet peer-to-peer muy sofisticada que irrumpe activamente en los servidores SSH de todo el mundo. Gracias a su estructura descentralizada, distribuye el control en todos sus nodos. Esta red no tiene un solo punto de falla y los pares se comunican constantemente entre sí para mantenerla estable, actualizada y constantemente activa. Las conexiones P2P se realizan a través de un canal cifrado utilizando AES para el cifrado simétrico y Diffie-Hellman para el intercambio de claves.



A diferencia de otras redes de bots P2P, FritzFrog es único en su conjunto de propiedades: no tiene archivos porque crea y ejecuta paquetes directamente en la memoria; a pesar de la efectiva distribución uniforme de los objetivos en su red, los fuerza bruta de manera muy agresiva; sus protocolos P2P patentados no se basan en ninguna de las implementaciones conocidas actualmente.



El código malicioso escrito en Golang es muy cambiante y no deja rastros en el disco duro. Crea una puerta trasera en forma de clave SSH pública y, por lo tanto, brinda a los atacantes acceso permanente al dispositivo de la víctima. Desde el inicio de su actividad, hemos identificado 20 versiones diferentes del malware ejecutable.



En esta publicación, explicaremos cómo se expuso FritzFrog, así como la naturaleza de su red P2P y las partes internas del código malicioso, incluido el proceso de infección, el cifrado de comandos y el comportamiento volátil.



Guardicore Labs ha puesto a disposición un repositorio Github con un script para detectar este malware y una lista de Indicadores de Compromiso (IoC) para su actividad.





Distribución geográfica de hospedadores infectados. Los países más vulnerables fueron Estados Unidos, China y Corea del Sur.



Investigación FritzFrog



Guardcore Labs examinó por primera vez a FritzFrog en un estudio de la Enciclopedia de Botnet . El 9 de enero, nuevos ataques con la ejecución de procesos maliciosos ifconfigy nginx. Comenzamos a rastrear un aumento constante y significativo de la actividad maliciosa, que pronto alcanzó los 13.000 ataques en la red global de sensores de Guardcore (GGSN). A lo largo de los años, rastreamos 20 versiones diferentes de los archivos binarios de FritzFrog.





El gráfico muestra el número de ataques de FritzFrog a GGSN.



Sorprendentemente, el código malicioso no parecía comunicarse con ningún servidor de comando y control (CNC) a primera vista. Solo cuando comenzamos a investigar seriamente la botnet nos dimos cuenta de que no había ningún servidor.



Para interceptar la red de botnets, Guardcore Labs desarrolló un cliente en Golang que puede intercambiar claves con malware, así como enviar comandos y recibir respuestas. Este programa, que luego llamamos "frogger", nos permitió investigar la naturaleza y propósito de la red, y gracias al frogger "agregamos" nuestros propios nodos a la red, pudiendo conectarnos a la botnet, y participar en la transmisión de datos de tráfico P2P activo.



FritzFrog ha estado utilizando la fuerza bruta de millones de direcciones IP, incluidas oficinas gubernamentales, instituciones educativas, centros médicos, bancos y muchas empresas de telecomunicaciones. De estos, más de 500 servidores fueron atacados con éxito, incluidas universidades reconocidas de EE. UU. Y Europa, y una empresa ferroviaria.



P2P de próxima generación



¿Por qué New Generation?



FritzFrog , :



  • : FritzFrog , (BLOB).
  • : .
  • : . , P2P DDG «root».
  • : .
  • : P2P - P2P , μTP.


Tan pronto como la víctima es pirateada con éxito, se lanza un código malicioso empaquetado con UPX, que luego se borra inmediatamente. Para minimizar las sospechas, los procesos maliciosos se ejecutan bajo los nombres ifconfig y nginx. Al comienzo de su trabajo, el código malicioso escucha en el puerto 1234, esperando comandos. Los primeros comandos recibidos sincronizan a la víctima con la base de datos de pares de la red y objetivos de fuerza bruta.





Clúster de host FritzFrog. Cada nodo es un servidor SSH infectado. El tamaño de los nodos demuestra su conectividad con el resto de la red.



El tráfico en un puerto no estándar, por ejemplo 1234, puede ser fácilmente detectado y bloqueado por un firewall o cualquier otro sistema de seguridad. Por lo tanto, los desarrolladores de FritzFrog abordaron el problema de manera creativa y en lugar de transmitir comandos directamente a través del puerto 1234, el atacante se conecta a la víctima a través de SSH y lanza un cliente en el dispositivo netcat, que a su vez se conecta al servidor de la botnet. Por lo tanto, cualquier comando pasará a través de SSH como entrada de netcat y llegará fácilmente al código malicioso.





FritzFrog canaliza sus comandos P2P a través del puerto SSH clásico utilizando el cliente netcat local del dispositivo infectado.



Los atacantes de FritzFrog han implementado un canal de comando cifrado con más de 30 comandos diferentes. Los parámetros de comando y las respuestas se pasan en estructuras de datos especificadas y se liberan ("movilizan") en formato JSON. Los datos se cifran con cifrado AES simétrico y se codifican en Base64 antes de enviarse. Los nodos involucrados en la transferencia de datos utilizan el protocolo Diffie-Hellman para intercambiar claves.







Los nodos de la red FritzFrog mantienen un estrecho contacto, haciendo ping constantemente entre sí para verificar la conectividad, el intercambio entre pares y objetivos y la sincronización mutua. Los nodos también participan en un proceso electoral inteligente que afecta la distribución de objetivos de fuerza bruta en la red. Las observaciones de Guardcore Labs confirman que los objetivos se distribuyen uniformemente en la red y que no hay dos nodos que intenten piratear el mismo objetivo.



Bucear en códigos maliciosos



El binario FritzFrog es un código malicioso avanzado en Golang. Funciona completamente en memoria, cada nodo con código malicioso almacena toda la base de datos de objetivos y pares en la memoria. El código malicioso crea varios subprocesos para procesar simultáneamente varias tareas, como se muestra en la siguiente tabla.



FritzFrog define los estados de control de la víctima y el dispositivo objetivo de la siguiente manera:



  1. Destino : El dispositivo de la solicitud de destino se pasará al módulo Cracker, que a su vez intentará escanearlo y descifrarlo.
  2. Implementar : un dispositivo comprometido con éxito se pone en cola para una infección de malware a través del módulo DeployMgmt.
  3. Owned (): P2P Owned.






Cada nodo con código malicioso tiene un hilo de trabajo que es responsable de recibir comandos, analizarlos y pasarlos a las funciones apropiadas en el código.





Una función de trabajo en un desmontador. Cada rama corresponde a la funcionalidad P2P admitida.



El código malicioso es de naturaleza temporal: aunque intenta sobrevivir a los reinicios del sistema, para el acceso futuro al objetivo pirateado, se guarda una puerta trasera, cuyo nombre de usuario y contraseña son almacenados por los pares en la red. El código malicioso agrega la clave pública SSH-RSA al archivo authorized_keys. Esta sencilla puerta trasera permite que un atacante, con una clave privada y privada, se autentique sin una contraseña, en caso de que se cambie la contraseña original. La única clave pública que usa FritzFrog se muestra a continuación.



ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJYZIsncBTFc+iCRHXkeGfFA67j+kUVf7h/IL+sh0RXJn7yDN0vEXz7ig73hC//2/71sND+x+Wu0zytQhZxrCPzimSyC8FJCRtcqDATSjvWsIoI4j/AJyKk5k3fCzjPex3moc48TEYiSbAgXYVQ62uNhx7ylug50nTcUH1BNKDiknXjnZfueiqAO1vcgNLH4qfqIj7WWXu8YgFJ9qwYmwbMm+S7jYYgCtD107bpSR7/WoXSr1/SJLGX6Hg1sTet2USiNevGbfqNzciNxOp08hHQIYp2W9sMuo02pXj9nEoiximR4gSKrNoVesqNZMcVA0Kku01uOuOBAOReN7KJQBt


El archivo malicioso ejecuta todo tipo de comandos de shell en el dispositivo local, algunos varias veces, para monitorear el estado del sistema. Por ejemplo, se ejecuta free –mpara verificar la RAM disponible uptime, journalctl –s @0 –u sshdpara rastrear los inicios de sesión SSH y otros comandos para mostrar las estadísticas de carga del procesador. Estas estadísticas están disponibles para otros nodos de la red y se utilizan para tomar varias decisiones, por ejemplo, si ejecutar el criptominer en el dispositivo o no. Si se toma una decisión, el código malicioso inicia un proceso separado libexecpara minar Monero. Este minero se basa en el popular minero XMRig y se comunica con el grupo público a web.xmrpool.eutravés del puerto 5555.



Viciosa red similar a un torrent



FritzFrog confía en la capacidad de compartir archivos en toda la red, tanto para infectar nuevos dispositivos como para lanzar elementos maliciosos como el criptominero Monero.



Para intercambiar archivos entre nodos, FritzFrog utiliza un método sigiloso sin archivos: los archivos se dividen en matrices de datos binarios almacenados en la memoria y el código malicioso monitorea las matrices disponibles almacenándolos en un mapa junto con el valor hash de cada matriz.



Cuando el nodo A quiere recibir un archivo de su par, el nodo B, puede enviar una solicitud getblobstatsal nodo B para averiguar qué matrices posee. Luego, el nodo A puede obtener una matriz específica a través de su hash, ya sea usando un comando P2P getbino usando HTTP en la dirección http://1234/. Una vez que el nodo A ha recibido todas las matrices, crea el archivo a través del módulo Ensamblar y lo ejecuta.





getblolbstats. , .





El seguimiento de las operaciones de la botnet P2P es difícil. Debido a la naturaleza distribuida de la red, los comandos en ella se pueden transmitir desde cualquier nodo a cualquier nodo. Sin embargo, intentamos comparar esta botnet P2P con amenazas similares anteriores.



Incluso en comparación con otras redes de bots P2P, FritzFrog sigue siendo única: no usa IRC como lo hace IRCflu , a diferencia de DDG, se ejecuta directamente en la memoria y se ejecuta en dispositivos Unix en lugar de la botnet de InterPlanetary Storm. Si se parece a cualquiera, especialmente en términos de nombres de funciones y numeración de versiones, es en Rakos , una botnet P2P en Golang analizada por ESET en 2016.



Seguimiento y mitigación de actividad



Guardcore Labs ha proporcionado un script de seguimiento de FritzFrog para que se ejecute en servidores SSH. Busca los siguientes indicadores de botnet:



  • Iniciando procesos nginx, ifconfigo libexeccuyo archivo ejecutable ya no existe en el sistema (como puede ver a continuación).
  • Escuchando en el puerto 1234.


Además de esto, el tráfico TCP en el puerto 5555 puede indicar tráfico de red al grupo de Monero.



ubuntu@ip-111-11-11-11:~$ ./detect_fritzfrog.sh
FritzFrog Detection Script by Guardicore Labs
=============================================
 
[*] Fileless process nginx is running on the server.
[*] Listening on port 1234
[*] There is evidence of FritzFrog's malicious activity on this machine.


FritzFrog explota la función de forzamiento de puertos y protocolos de la mayoría de los sistemas de firewall. Puede eliminar estas amenazas mediante el uso de reglas de segmentación basadas en procesos.



Las contraseñas débiles demuestran ser una vulnerabilidad clave para los ataques de FritzFrog. Recomendamos utilizar contraseñas seguras y claves de autorización públicas, que son mucho más seguras. Además, es de vital importancia excluir la clave pública de FritzFrog del archivo authorization_keyspara evitar que los atacantes obtengan acceso al dispositivo. Los enrutadores y dispositivos de IoT suelen exponer su SSH y, por lo tanto, se vuelven vulnerables a los ataques de FritzFrog; recomendamos cambiar el puerto SSH para dichos dispositivos o, si no se utiliza la funcionalidad, deshabilite SSH por completo.



All Articles