Ce nouveau logiciel malveillant que nous avons découvert et nommé CDRThief est conçu pour cibler une plateforme VoIP très spécifique, utilisée par deux softswitches (commutateurs logiciels) produits en Chine : Linknat VOS2009 et VOS3000. Un commutateur logiciel est un élément central d'un réseau VoIP qui assure le contrôle, la facturation et la gestion des appels. Ces commutateurs logiciels sont des solutions logicielles qui fonctionnent sur des serveurs Linux standard.
L'objectif principal du logiciel malveillant est d'exfiltrer diverses données privées d'un commutateur logiciel compromis, y compris les enregistrements des détails des appels (CDR). Les CDR contiennent des métadonnées sur les appels VoIP, telles que les adresses IP de l'appelant et de l'appelé, l'heure de début de l'appel, la durée de l'appel, les frais d'appel, etc.
Pour voler ces métadonnées, le logiciel malveillant interroge les bases de données MySQL internes utilisées par le commutateur logiciel. Ainsi, les attaquants démontrent une bonne compréhension de l'architecture interne de la plateforme ciblée.
Analyse de Linux/CDRThief
Nous avons remarqué ce logiciel malveillant dans un de nos flux de partage d'échantillons, et comme les logiciels malveillants sous Linux entièrement nouveaux sont rares, il a attiré notre attention. Ce qui était encore plus intéressant, c'est qu'il est rapidement devenu évident que ce logiciel malveillant visait une plateforme VoIP Linux spécifique. Son binaire ELF a été produit par le compilateur Go avec les symboles de débogage non modifiés, ce qui est toujours utile pour l'analyse.
Pour dissimuler les fonctionnalités malveillantes de l'analyse statique de base, les auteurs ont chiffré toutes les chaînes suspectes avec XXTEA et la clé fhu84ygf8643, puis les ont encodées en base64. La figure 1 montre une partie du code utilisé par le logiciel malveillant pour déchiffrer ces chaînes au moment de l'exécution.
Pour accéder aux données internes stockées dans la base de données MySQL, le logiciel malveillant lit les identifiants des fichiers de configuration Linknat VOS2009 et VOS3000 qu'il tente de localiser dans les chemins suivants :
- /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
Il est intéressant de noter que le mot de passe du fichier de configuration est stocké sous forme chiffrée. Cependant, le logiciel malveillant Linux/CDRThief est toujours capable de le lire et de le déchiffrer. Ainsi, les attaquants font preuve d'une connaissance approfondie de la plate-forme ciblée, puisque l'algorithme et les clés de chiffrement utilisés ne sont pas documentés, pour autant qu'on puisse en juger. Cela signifie que les attaquants ont dû faire de l'ingénierie inverse des binaires de la plate-forme ou obtenir des informations sur l'algorithme de chiffrement AES et la clé utilisée dans le code Linknat.
Comme le montre la figure 2, CDRThief communique avec les serveurs de C&C en utilisant JSON par HTTP.
Le code de Linux/CDRThief utilisé pour la communication avec les serveurs C&C comporte de multiples fonctions. Le tableau 1 contient les noms originaux de ces fonctions utilisées par les auteurs de logiciels malveillants.
Tableau 1. Fonctions utilisées pour la communication avec le 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# |
|
|
#rowspan# |
|
|
#rowspan# |
|
|
#rowspan# |
|
|
#rowspan# |
|
|
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# |
|
|
#rowspan# |
|
|
#rowspan# |
|
|
#rowspan# |
|
|
#rowspan# |
|
|
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 |
Afin d'exfiltrer les données de la plateforme, Linux/CDRThief exécute des requêtes SQL directement vers la base de données MySQL. Le logiciel malveillant s'intéresse principalement à trois tables :
- e_syslog – comprend le journal des événements du système
- e_gatewaymapping – comprend des informations sur les passerelles VoIP (voir figure 3)
- e_cdr – contient les enregistrements de données d'appel (métadonnées des appels)
Les données à exfiltrer des tables e_syslog, e_gatewaymapping, et e_cdr sont compressées, puis chiffrées avec une clé publique RSA-1024 codée en dur avant l'exfiltration. Ainsi, seuls les auteurs ou les opérateurs de logiciels malveillants peuvent déchiffrer les données exfiltrées.
Sur la base des fonctionnalités décrites, on peut dire que le logiciel malveillant se concentre principalement sur la collecte de données de la base de données. Contrairement à d'autres portes dérobées, Linux/CDRThief ne prend pas en charge l'exécution de commandes shell ou l'exfiltration de fichiers spécifiques du disque du softswitch compromis. Toutefois, ces fonctions pourraient être introduites dans une version mise à jour.
Le logiciel malveillant peut être déployé à n'importe quel endroit du disque sous n'importe quel nom de fichier. On ignore quel type de persistance est utilisé pour lancer le binaire malveillant à chaque démarrage. Toutefois, il convient de noter qu'une fois que le logiciel malveillant est lancé, il tente de lancer un binaire légitime présent sur la plate-forme Linknat VOS2009/VOS3000 à l'aide de la commande suivante :
exec -a '/home/kunshi/callservice/bin/callservice -r /home/kunshi/.run/callservice.pid'
Cela suggère que le binaire malveillant pourrait d'une manière ou d'une autre être inséré dans une chaîne de démarrage normale de la plate-forme afin d'obtenir une persistance et éventuellement se faire passer pour un composant du logiciel de commutation logicielle de Linknat.
Au moment où nous écrivons ces lignes, nous ne savons pas comment le logiciel malveillant est déployé sur les appareils compromis. Nous supposons que les attaquants pourraient obtenir l'accès au dispositif en utilisant une attaque par force brute ou en exploitant une vulnérabilité. De telles vulnérabilités dans VOS2009/VOS3000 ont été signalées publiquement dans le passé.
Conclusion
Nous avons analysé le logiciel malveillant Linux/CDRThief, qui a pour unique objectif de cibler des commutateurs logiciels VoIP spécifiques. Nous voyons rarement des commutateurs logiciels de VoIP ciblés par les acteurs de la menace. C'est ce qui rend le logiciel malveillant Linux/CDRThief fascinant.
Il est difficile de connaître le but ultime des attaquants qui utilisent ce logiciel malveillant. Cependant, comme ce logiciel malveillant exfiltre des informations sensibles, y compris des métadonnées d'appel, il semble raisonnable de supposer qu'il est utilisé pour le cyberespionnage. Un autre objectif possible des attaquants qui utilisent ce logiciel malveillant est la fraude à la voix sur IP. Comme les attaquants obtiennent des informations sur l'activité des commutateurs logiciels VoIP et de leurs passerelles, ces informations pourraient être utilisées pour commettre une fraude au partage des recettes internationales (IRSF).
Pour toute demande de renseignements, ou pour nous soumettre des échantillons sur le sujet, contactez-nous à l'adresse suivante : threatintel@eset.com.
Indicateurs de compromission
Nom de détection par ESET
Linux/CDRThief.A
Mutex à base de fichiers
/dev/shm/.bin
/dev/shm/.linux
Fichiers créés lors de la mise à jour d'un logiciel malveillant
/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
Clé de chiffrement d'exfiltration (RSA)
-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCQ3k3GgS3FX4pI7s9x0krBYqbMcSaw4BPY91Ln
tt5/X8s9l0BC6PUTbQcUzs6PPXhKKTx8ph5CYQqdWynxOLJah0FMMRYxS8d0HX+Qx9eWUeKRHm2E
AtZQjdHxqTJ9EBpHYWV4RrWmeoOsWAOisvedlb23O0E55e8rrGGrZLhPbwIDAQAB
-----END PUBLIC KEY-----
Techniques MITRE ATT&CK
Note : Ce tableau a été construit en utilisant la version 7 du cadre MITRE 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. |