O novo malware que descobrimos e batizamos de CDRThief foi projetado para atingir uma plataforma VoIP muito específica, usada por dois softswitches (centrais de redes de voz) produzidos na China: Linknat VOS2009 e VOS3000. Softswitch é um elemento central de uma rede VoIP que proporciona controle, cobrança e gerenciamento de chamadas. Esses softswitches são soluções baseadas em software que funcionam em servidores Linux padrão.

O principal objetivo do CDRThief é exfiltrar vários dados privados de um softswitch comprometido, incluindo registros de detalhes de chamadas (CDRs). Os CDRs contêm metadados sobre chamadas VoIP, como endereços IP de quem realiza e recebe a chamada, hora de início da chamada, duração da chamada, tarifa da chamada, etc.

Para roubar esses metadados, o CDRThief verifica os bancos de dados MySQL internos usados ​​pelo softswitch. Ou seja, os atacantes demonstram um conhecimento sólido sobre a arquitetura interna da plataforma alvo.

Análise do malware Linux/CDRThief

Percebemos esse malware em um de nossos feeds de compartilhamento de amostras e chamou nossa atenção por ser uma raridade encontrar um malware para Linux totalmente novo. O mais interessante é que rapidamente ficou claro que esse malware tinha como alvo uma plataforma VoIP específica para Linux. Seu binário ELF foi produzido pelo compilador Go e contém os símbolos de depuração inalterados, o que é sempre útil para análise.

Para ocultar a funcionalidade maliciosa da análise estática básica, os criadores da ameaça criptografaram todas as strings de aparência suspeita com XXTEA e com a chave fhu84ygf8643 e, em seguida, codificou-as em base64. A Figura 1 mostra parte do código que o malware usa para descriptografar essas strings em tempo de execução.

Figura 1. A rotina usada para descriptografar as strings do binário.

Para acessar os dados internos armazenados no banco de dados MySQL, o malware lê as credenciais dos arquivos de configuração Linknat VOS2009 e VOS3000 que tenta localizar nos seguintes caminhos:

  • /usr/kunshi/vos2009/server/etc/server_db_config.xml
  • /usr/kunshi/vos3000/server/etc/server_db_config.xml
  • /home/kunshi/vos2009/server/etc/server_db_config.xml
  • /home/kunshi/vos3000/server/etc/server_db_config.xml
  • /home/kunshi/vos2009/etc/server_db_config.xml
  • /home/kunshi/vos3000/etc/server_db_config.xml
  • /usr/kunshi/vos2009/server/etc/serverdbconfig.xml
  • /usr/kunshi/vos3000/server/etc/serverdbconfig.xml

Curiosamente, a senha do arquivo de configuração é armazenada de forma criptografada. No entanto, o malware Linux/CDRThief ainda é capaz de lê-la e descriptografá-la. Isso demonstra que os atacantes contam com um conhecimento sólido sobre a plataforma alvo, uma vez que, até onde sabemos, o algoritmo e as chaves de criptografia utilizadas não foram documentados. Isso significa que os atacantes tiveram que fazer a engenharia reversa dos binários da plataforma ou obter informações no código do Linknat sobre o algoritmo de criptografia AES e a chave usada.

Assim como podemos ver na Figura 2, o CDRThief se comunica com os servidores C&C usando JSON sobre HTTP.

Figura 2. Comunicação de rede do malware Linux/CDRThief.

Existem várias funções no código do malware Linux/CDRThief que são usadas para se comunicar com os servidores C&C. A Tabela 1 contém os nomes originais dessas funções usadas pelos criadores do malware.

Tabela 1. Funções usadas para estabelecer comunicação como o C&C.

Function name C&C path Purpose
main.pingNet /dataswop/a Checks if C&C is alive
main.getToken /dataswop/API/b Obtains token
main.heartbeat /dataswop/API/gojvxs Main C&C loop, called every three minutes
main.baseInfo /dataswop/API/gojvxs Exfiltrates basic information about compromised Linknat system:
#rowspan#

  •        MAC address
#rowspan#

  •        cat /proc/version
#rowspan#

  •        whoami
#rowspan#

  •        cat /etc/redhat-release
#rowspan#
  •        UUID from /bin/ibus_10.mo (or / home/kunshi/base/ibus_10.mo )
main.upVersion /dataswop/Download/updateGoGoGoGoGo Updates itself to the latest version
main.pushLog /dataswop/API/gojvxs Uploads malware error log
main.load /dataswop/API/gojvxs Exfiltrates various information about the platform:
#rowspan#

  •        SELECT SUM(TABLE_ROWS) FROM information_schema.TABLES WHERE table_name LIKE 'e_cdr_%'
#rowspan#

  •        cat /etc/motd
#rowspan#
  •        username, encrypted password, IP address of the database
#rowspan#
  •        ACCESS_UUID from server.conf
#rowspan#

  •        VOS software version
main.syslogCall /dataswop/API/gojvxs Exfiltrates data from e_syslog tables
main.gatewaymapping /dataswop/API/gojvxs Exfiltrates data from e_gatewaymapping tables
main.cdr /dataswop/API/gojvxs Exfiltrates data from e_cdr tables

Para extrair dados da plataforma, o Linux/CDRThief executa buscas SQL diretamente para o banco de dados MySQL. O malware está interessado principalmente em três tabelas:

  • e_syslog – contém o registro de eventos do sistema
  • e_gatewaymapping – contém informações sobre os gateways VoIP (veja a Figura 3)
  • e_cdr – contém registros de dados de chamadas (metadados das chamadas)

Figura 3. Código desmontado da função que inicializa uma busca SQL.

Os dados que serão exfiltrados das tabelas e_syslog, _gatewaymapping e e_cdr são compactados e criptografados com uma chave pública RSA-1024 codificada antes da exfiltração. Portanto, apenas os criadores ou operadores do malware podem descriptografar os dados extraídos.

Com base na funcionalidade descrita, podemos dizer que o foco principal desse malware é coletar dados do banco de dados. Ao contrário de outros backdoors, o Linux/CDRThief não suporta a execução de comandos shell ou a exfiltração de arquivos específicos do disco do softswitch comprometido. No entanto, esses recursos podem ser introduzidos em uma nova versão.

O malware pode ser distribuído para qualquer local do disco com qualquer nome de arquivo. Não se sabe que tipo de persistência é usada para iniciar o binário malicioso em cada inicialização. No entanto, deve-se notar que uma vez que o malware é iniciado, ele tenta lançar um binário legítimo presente na plataforma Linknat VOS2009/VOS3000 usando o seguinte comando:

exec -a '/home/kunshi/callservice/bin/callservice -r /home/kunshi/.run/callservice.pid'

Isso sugere que o binário malicioso pode de alguma forma ser inserido em uma cadeia de inicialização regular da plataforma para obter persistência e possivelmente mascarar-se como um componente do software softswitch Linknat.

Até o momento (produção deste post), não sabemos como o malware é distribuído em dispositivos comprometidos. Especulamos que os atacantes podem obter acesso ao dispositivo por meio de um ataque de força bruta ou explorando uma vulnerabilidade. Essas vulnerabilidades no VOS2009/VOS3000 foram relatadas anteriormente.

Conclusão

Analisamos o malware Linux/CDRThief, que tem o propósito de atacar softswitches VoIP específicas. Dificilmente vemos softswitches VoIP sendo alvo de ameaças - isso torna o malware Linux/CDRThief bastante interessante.

É difícil saber o objetivo final dos atacantes que usam esse malware. No entanto, uma vez que exfiltra informações confidenciais, incluindo metadados de chamadas, parece razoável supor que o malware seja usado para espionagem cibernética. Outro possível objetivo dos invasores que usam esse malware é a fraude VoIP. Uma vez que os invasores obtêm informações sobre a atividade de softswitches VoIP e seus gateways, essas informações podem ser usadas para realizar fraudes de compartilhamento de receita internacional.

Caso tenha dúvidas ou queira enviar uma amostra relacionada ao assunto, escreva um e-mail para threatintel@eset.com.

Indicadores de Comprometimento

Nome da detecção (soluções ESET)

Linux/CDRThief.A

Mutex baseado em arquivos

/dev/shm/.bin
/dev/shm/.linux

Arquivos criados durante a atualização do malware

/dev/shm/callservice
/dev/shm/sys.png

Hashes

CC373D633A16817F7D21372C56955923C9DDA825
8E2624DA4D209ABD3364D90F7BC08230F84510DB (UPX packed)
FC7CCABB239AD6FD22472E5B7BB6A5773B7A3DAC
8532E858EB24AE38632091D2D790A1299B7BBC87 (Corrupted)

C&C

http://119.29.173[.]65
http://129.211.157[.]244
http://129.226.134[.]180
http://150.109.79[.]136
http://34.94.199[.]142
http://35.236.173[.]187

Chave de criptografia (RSA) de exfiltração

-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCQ3k3GgS3FX4pI7s9x0krBYqbMcSaw4BPY91Ln
tt5/X8s9l0BC6PUTbQcUzs6PPXhKKTx8ph5CYQqdWynxOLJah0FMMRYxS8d0HX+Qx9eWUeKRHm2E
AtZQjdHxqTJ9EBpHYWV4RrWmeoOsWAOisvedlb23O0E55e8rrGGrZLhPbwIDAQAB
-----END PUBLIC KEY-----

Técnicas de MITRE ATT&CK

Nota: esta tabela foi criada usando a versão 7 do framework MITER ATT&CK.

Tactic ID Name Description
Defense Evasion T1027 Obfuscated Files or Information Linux/CDRThief contains obfuscates strings in the payload.
T1027.002 Obfuscated Files or Information: Software Packing Some Linux/CDRThief samples are packed with UPX.
Credential Access T1552.001 Unsecured Credentials: Credentials In Files Linux/CDRThief reads credentials for MySQL database from a configuration file.
Discovery T1082 System Information Discovery Linux/CDRThief obtains detailed information about the compromised computer.
Collection T1560.003 Archive Collected Data: Archive via Custom Method Linux/CDRThief compresses stolen data with gzip before exfiltration.
Command and Control T1071.001 Application Layer Protocol: Web Protocols Linux/CDRThief uses HTTP for communication with C&C server.
Exfiltration T1041 Exfiltration Over C2 Channel Linux/CDRThief exfiltrates data to the C&C server.