FritzFrog - a próxima geração de botnets

Resumo



  • Guardicore descobriu o sofisticado botnet ponto a ponto (P2P) FritzFrog , que tem invadido ativamente servidores SSH desde janeiro de 2020.
  • Malware no Golang : FritzFrog executa código malicioso modular, multi-threaded e sem arquivo no Golang que não deixa rastros no disco rígido de um dispositivo infectado.
  • Direcionamento ativo de recursos governamentais, educacionais, financeiros e outros : FritzFrog tentou usar a força bruta e distribuir para dezenas de milhões de endereços IP de escritórios governamentais, instituições educacionais, centros médicos, bancos e muitas empresas de telecomunicações. Entre eles, mais de 500 servidores foram atacados com sucesso, incluindo universidades renomadas nos EUA e na Europa, e uma empresa ferroviária.
  • Complexidade : FritzFrog é totalmente proprietário, sua implementação P2P é escrita do zero, o que indica um alto nível de profissionalismo de seus criadores na área de desenvolvimento de software.
  • : Guardcore Labs Golang, P2P FritzFrog .
  • : , FritzFrog, Rakos.




O FritzFrog é um botnet ponto a ponto muito sofisticado que invade servidores SSH em todo o mundo. Graças à sua estrutura descentralizada, ele distribui o controle por todos os seus nós. Essa rede não tem um único ponto de falha e os pares se comunicam constantemente entre si para mantê-la estável, atualizada e constantemente ativa. As conexões P2P são feitas em um canal criptografado usando AES para criptografia simétrica e Diffie-Hellman para troca de chaves.



Ao contrário de outras redes de bots P2P, o FritzFrog é único em seu conjunto de propriedades: não tem arquivo porque cria e executa pacotes diretamente na memória; apesar da distribuição uniforme efetiva de alvos em sua rede, ele os força de maneira muito agressiva; seus protocolos P2P proprietários não são baseados em nenhuma das implementações atualmente conhecidas.



O código malicioso escrito em Golang é muito mutável e não deixa rastros no disco rígido. Ele cria uma porta dos fundos na forma de uma chave SSH pública e, assim, dá aos invasores acesso permanente ao dispositivo da vítima. Desde o início da sua atividade, identificamos 20 versões diferentes do malware executável.



Nesta postagem, explicaremos como o FritzFrog foi exposto, bem como a natureza de sua rede P2P e as partes internas do código malicioso - incluindo o processo de infecção, criptografia de comando e comportamento volátil.



Guardicore Labs disponibilizou um repositório Github com um script para detectar esse malware e uma lista de Indicadores de Compromisso (IoC) para sua atividade.





Distribuição geográfica dos hospedeiros infectados. Os países mais vulneráveis ​​foram os Estados Unidos, China e Coréia do Sul.



FritzFrog Research



Guardcore Labs analisou primeiro FritzFrog em um estudo da Enciclopédia de Botnet . Em 9 de janeiro, novos ataques com a execução de processos maliciosos ifconfige nginx. Começamos a monitorar um aumento constante e significativo na atividade maliciosa, que logo atingiu 13.000 ataques na Rede de Sensores Globais da Guardcore (GGSN). Rastreamos 20 versões diferentes dos binários FritzFrog ao longo dos anos.





O gráfico mostra o número de ataques FritzFrog em GGSN.



Surpreendentemente, o código malicioso não parecia se comunicar com nenhum servidor de comando e controle (CNC) à primeira vista. Foi só quando começamos a investigar seriamente o botnet que percebemos que não havia nenhum servidor.



Para interceptar a rede botnet, a Guardcore Labs desenvolveu um cliente no Golang que pode trocar chaves com malware, bem como enviar comandos e receber respostas. Este programa, que então chamamos de "frogger", nos permitiu investigar a natureza e a finalidade da rede e, graças ao frogger, "adicionamos" nossos próprios nós à rede, sendo capazes de nos conectar à botnet, e participamos da transmissão de dados de tráfego P2P ativos.



FritzFrog tem forçado milhões de endereços IP, incluindo escritórios governamentais, instituições educacionais, centros médicos, bancos e muitas empresas de telecomunicações. Destes, mais de 500 servidores foram atacados com sucesso, incluindo universidades conhecidas nos EUA e na Europa, e uma empresa ferroviária.



P2P de próxima geração



Por que Nova Geração?



FritzFrog , :



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


Assim que a vítima é hackeada com sucesso, o código malicioso empacotado com UPX é lançado nela, que se apaga imediatamente. Para minimizar a suspeita, processos maliciosos são executados sob os nomes ifconfig e nginx. No início de seu trabalho, o código malicioso escuta na porta 1234, esperando por comandos. Os primeiros comandos recebidos sincronizam a vítima com o banco de dados de pares da rede e alvos de força bruta.





Cluster de host FritzFrog. Cada nó é um servidor SSH infectado. O tamanho dos nós demonstra sua conectividade com o resto da rede.



O tráfego em uma porta não padrão, por exemplo 1234, pode ser facilmente percebido e bloqueado por um firewall ou qualquer outro sistema de segurança. Portanto, os desenvolvedores do FritzFrog abordaram o problema de forma criativa e, em vez de transmitir comandos diretamente pela porta 1234, o invasor se conecta à vítima via SSH e inicia um cliente no dispositivo netcat, que por sua vez se conecta ao servidor botnet. Assim, qualquer comando será passado por SSH como entrada do netcat e chegará facilmente ao código malicioso.





O FritzFrog canaliza seus comandos P2P por meio da porta SSH clássica usando o cliente netcat local do dispositivo infectado.



Os atacantes FritzFrog implantaram um canal de comando criptografado com mais de 30 comandos diferentes. Parâmetros de comando e respostas são passados ​​em estruturas de dados especificadas e liberados ("mobilizados") no formato JSON. Os dados são criptografados com criptografia AES simétrica e codificados em Base64 antes de serem enviados. Os nós envolvidos na transferência de dados usam o protocolo Diffie-Hellman para trocar chaves.







Os nós na rede FritzFrog mantêm contato próximo, constantemente pingando uns aos outros para verificar a conectividade, troca de ponto e destino e sincronização mútua. Os nós também se envolvem em um processo eleitoral inteligente que afeta a distribuição de alvos de força bruta pela rede. As observações do Guardcore Labs confirmam que os alvos estão uniformemente distribuídos pela rede e que nenhum nó tentará hackear o mesmo alvo.



Mergulhando em código malicioso



O binário FritzFrog é um código malicioso avançado no Golang. Ele funciona completamente na memória, cada nó com código malicioso armazena todo o banco de dados de alvos e pares na memória. O código malicioso cria vários threads para processar várias tarefas simultaneamente, conforme mostrado na tabela abaixo.



FritzFrog define os estados de controle da vítima e do dispositivo alvo da seguinte forma:



  1. Alvo : O dispositivo da solicitação alvo será então passado para o módulo Cracker, que por sua vez tentará escaneá-lo e quebrá-lo.
  2. Implementar : um dispositivo comprometido com êxito é colocado na fila para infecção por malware por meio do módulo DeployMgmt.
  3. Owned (): P2P Owned.






Cada nó com código malicioso possui um thread de trabalho que é responsável por receber comandos, analisá-los e passá-los para as funções apropriadas no código.





Uma função de trabalho em um desmontador. Cada ramificação corresponde à funcionalidade P2P suportada.



O código malicioso é de natureza temporária: mesmo que tente sobreviver a reinicializações do sistema, para acesso futuro ao alvo hackeado, um backdoor é salvo, cujo login e senha são armazenados pelos pares na rede. O código malicioso adiciona a chave SSH-RSA pública ao arquivo authorized_keys. Este backdoor simples permite que um invasor - com uma chave privada privada - se autentique sem uma senha, no caso de a senha original ser alterada. A única chave pública que o FritzFrog usa é mostrada abaixo.



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


O arquivo malicioso executa todos os tipos de comandos de shell no dispositivo local, alguns várias vezes, para monitorar o estado do sistema. Por exemplo, ele é executado free –mpara verificar a RAM disponível uptime, journalctl –s @0 –u sshdpara rastrear logins SSH e outros comandos para exibir estatísticas de carga do processador. Essas estatísticas estão disponíveis para outros nós na rede e são usadas para tomar várias decisões, por exemplo, se executar o criptominer no dispositivo ou não. Se uma decisão for tomada, o código malicioso inicia um processo separado libexecpara explorar o Monero. Este minerador é baseado no popular minerador XMRig e se comunica com o reservatório público web.xmrpool.euatravés da porta 5555.



Rede viciosa tipo torrent



O FritzFrog conta com a capacidade de compartilhar arquivos em toda a rede, tanto para infectar novos dispositivos quanto para lançar elementos maliciosos, como o criptominer Monero.



Para trocar arquivos entre nós, o FritzFrog usa uma abordagem furtiva sem arquivos: os arquivos são divididos em matrizes de dados binários armazenados na memória, e o código malicioso monitora as matrizes disponíveis, armazenando-as em um mapa junto com o valor hash de cada matriz.



Quando o nó A deseja receber um arquivo de seu par, o nó B, ele pode enviar uma solicitação getblobstatsao nó B para descobrir quais arrays ele possui. Então, o nó A pode obter uma matriz específica por meio de seu hash, usando um comando P2P getbinou usando HTTP no endereço http://1234/. Depois que o nó A recebeu todos os arrays, ele constrói o arquivo por meio do módulo Assemble e o executa.





getblolbstats. , .





Rastrear operações de botnet P2P é difícil. Devido à natureza distribuída da rede, os comandos nela podem ser transmitidos de qualquer nó para qualquer nó. No entanto, tentamos comparar esse botnet P2P com ameaças semelhantes anteriores.



Mesmo quando comparado a outros botnets P2P, FritzFrog permanece único: ele não usa IRC como o IRCflu faz , ao contrário do DDG, ele roda diretamente na memória e roda em dispositivos Unix ao contrário do botnet InterPlanetary Storm. Se parece com alguém, especialmente em termos de nomenclatura de recursos e numeração de versão, é no Rakos , um botnet P2P no Golang analisado pela ESET em 2016.



Monitoramento e mitigação de atividades



Guardcore Labs forneceu um script de rastreamento FritzFrog para ser executado em servidores SSH. Ele procura os seguintes indicadores de botnet:



  • Processos de lançamento nginx, ifconfigou libexeccujo arquivo executável não existe mais no sistema (como você pode ver abaixo).
  • Ouvindo na porta 1234.


Além disso, o tráfego TCP na porta 5555 pode indicar o tráfego de rede para o pool 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.


O FritzFrog explora o recurso de força de porta e protocolo da maioria dos sistemas de firewall. Você pode eliminar essas ameaças usando regras de segmentação baseadas em processos.



As senhas fracas provam ser uma vulnerabilidade chave para ataques FritzFrog. Recomendamos o uso de senhas fortes e chaves públicas de autorização, que são muito mais seguras. Além disso, é extremamente importante excluir a chave pública FritzFrog do arquivo authorization_keyspara evitar que invasores obtenham acesso ao dispositivo. Roteadores e dispositivos IoT geralmente expõem seu SSH e, portanto, tornam-se vulneráveis ​​a ataques FritzFrog; Recomendamos alterar a porta SSH para esses dispositivos ou, se a funcionalidade não for usada, desabilite completamente o SSH.



All Articles