FritzFrog un gusano que infecta servidores a través de SSH y crea una botnet descentralizada

agosto 22, 2020 , 0 Comments

Guardicore (un empresa de seguridad en la nube y centros de datos) ha identificado un nuevo malware de alta tecnología, llamado «FritzFrog», que afecta a los servidores basados ​​en Linux.  FritzFrog combina un gusano que se propaga a través de un ataque de fuerza bruta en servidores con un puerto SSH abierto y componentes para construir una botnet descentralizada que funciona sin nodos de control y no tiene un solo punto de falla.

Según los investigadores, la botnet ya tiene alrededor de 500 nodos, incluidos servidores de varias universidades y una gran empresa ferroviaria.  La peculiaridad de FritzFrog es que mantiene todos los datos y el código ejecutable solo en la memoria.

Los cambios en el disco se reducen solo a agregar una nueva clave SSH al archivo Authorized_keys, que luego se usa para acceder al servidor.

Los archivos del sistema permanecen sin cambios, lo que hace que el gusano sea invisible para los sistemas que verifican la integridad de la suma de comprobación. La memoria también contiene diccionarios para contraseñas de fuerza bruta y datos para minería, que se sincronizan entre nodos mediante el protocolo P2P.

Los componentes maliciosos se camuflan bajo los procesos «ifconfig», «libexec», «php-fpm» y «nginx».

Los nodos de botnet monitorean el estado de sus vecinos y, en el caso de un reinicio del servidor o incluso una reinstalación del sistema operativo (si el archivo autorizado_keys modificado se ha transferido al nuevo sistema), reactivan los componentes maliciosos en el host.

Para la comunicación, se usa SSH regular: el malware además lanza un «netcat» local que se une a la interfaz localhost y escucha el tráfico en el puerto 1234, al que los nodos externos acceden a través de un túnel SSH, usando la clave de allowed_keys para conectarse.

El malware incluye varios módulos que se ejecutan en diferentes subprocesos:

  • Cracker: utiliza contraseñas brutas en servidores atacados.
  • CryptoComm + Parser: organiza una conexión P2P cifrada.
  • CastVotes: es un mecanismo para la selección conjunta de hosts de destino para un ataque.
  • TargetFeed: obtiene una lista de nodos para atacar desde los nodos vecinos.
  • DeployMgmt: es una implementación de un gusano que propaga código malicioso a un servidor comprometido.
  • Owned: es responsable de conectarse a servidores que ya ejecutan código malicioso.
  • Assemble: ensambla un archivo en la memoria a partir de bloques transferidos por separado.
  • Antivir: un módulo para suprimir el malware de la competencia, detecta y termina los procesos con la cadena «xmr» que consumen recursos de la CPU.
  • Libexec: es un módulo para extraer criptomonedas Monero.

El protocolo P2P utilizado en FritzFrog admite alrededor de 30 comandos responsables de transferir datos entre nodos, iniciar scripts, transferir componentes de malware, sondear el estado, intercambiar registros, iniciar un proxy, etc.

La información se transmite a través de un canal cifrado independiente con serialización en formato JSON. Para el cifrado, se utilizan cifrado asimétrico AES y codificación Base64. El protocolo DH ( Diffie-Hellman ) se utiliza para el intercambio de claves. Para determinar el estado, los nodos intercambian constantemente solicitudes de ping.

Todos los nodos de botnets mantienen una base de datos distribuida con información sobre sistemas atacados y comprometidos.

Los objetivos de los ataques se sincronizan en toda la botnet: cada nodo ataca a un objetivo independiente, es decir, dos nodos de botnet diferentes no atacarán el mismo host.

Los nodos también recopilan y transmiten estadísticas locales a los vecinos, como el tamaño de la memoria libre, el tiempo de actividad, la carga de la CPU y la actividad de inicio de sesión SSH.

Esta información se usa para decidir si iniciar el proceso de minería o usar un nodo solo para atacar otros sistemas (por ejemplo, la minería no comienza en sistemas cargados o sistemas con conexiones frecuentes de administrador).

Los investigadores han propuesto un script de shell simple para identificar a FritzFrog.

Para determinar si el sistema está dañado, signos como la presencia de una conexión de escucha en el puerto 1234, la presencia de una clave maliciosa en las claves autorizadas (la misma clave SSH está instalada en todos los nodos) y la presencia de procesos en ejecución «ifconfig», «libexec», «php-fpm» en la memoria y «nginx» que no tienen ejecutables asociados («/proc/<PID>/exe» que apunta a un archivo remoto).

La presencia de tráfico en el puerto de red 5555, que ocurre cuando el malware accede a un grupo típico de web.xmrpool.eu mientras extrae la criptomoneda Monero, también puede servir como señal.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.