Trojan backdoor multifonctions, ciblant Linux. Ce Trojan a pour objectif de trouver le mot de passe pour accéder au système d’exploitation ciblé, via SSH. Les chercheurs émettent l’hypothèse que les pirates chinois du groupe ChinaZ sont responsables de sa création. Le Trojan est créé avec les bibliothèques nécessaires à son fonctionnement, y compris c-ares, zlib.
Il supporte plusieurs modes de démarrage :
- "-v"-définir le mode de sortie des messages de débogage ;
- "–front" - si cette case n'est pas présente, l’entrée/sortie sera redirigée vers /dev/null ;
- "–noinstall" - ne pas s'installer dans le système ;
- "-h" - afficher la liste des commandes possibles (la ligne "some command : -v --front --noinstall -h" sera affichée) ;
Après son lancement, Linux.BackDoor.Xnote.1 vérifie la présence de sa copie déjà opérationnelle dans le système, en essayant de bloquer le fichier "/tmp/.wq4sMLArXw" et s'il la détecte, il s'arrête.
L'installation du malware est possible s'il est lancé en tant que super-utilisateur (root) : lors de l'installation, le Trojan crée sa copie dans le fichier /bin/iptable6 et supprime le fichier d'origine depuis lequel il a été lancé. Linux.BackDoor.Xnote.1 cherche également dans le dossier /etc/init.d/ des scripts qui commencent par la ligne "!#/bin/bash", et y ajoute une autre ligne qui assure le lancement du backdoor.
Avant d'établir la connexion avec le serveur de gestion, le Trojan lit l'image de son fichier exécutable sur le disque en recherchant la ligne " XXXXXXXXXXXXXXXX ", qui marque le début du bloc de configuration. S'il la trouve, il décrypte les octets suivants 0x15A avec la clé 0x89 en utilisant l'algorithme XOR. Le bloc de configuration contient les paires " adresse/port " de 5 serveurs de gestion et a la forme suivante :
#pragma pack(push, 1)
struct st_config
{
_BYTE signature[16]; 'XXXXXXXXXXXXXXXX'
char szCnC1[64];
char szCnC2[64];
char szCnC3[64];
char szCnC4[64];
char szCnC5[64];
_WORD CnC1_port;
_WORD CnC2_port;
_WORD CnC3_port;
_WORD CnC4_port;
_WORD CnC5_port;
_BYTE payload2[16];
};
#pragma pack(pop)
Puis le Trojan commence à vérifier la liste de serveurs de gestion jusqu'au moment où il trouve le serveur actif ou jusqu'à la fin de la liste. Avant de transmettre des paquets, le Trojan et le serveur de gestion les compressent à l'aide de la bibliothèque zlib.
Le premier paquet est envoyé au serveur " LoginInfo " — la structure qui contient les données sur le système infecté :
#pragma pack(push, 1)
struct st_logininfo
{
_BYTE cmd; // '0x67'
_DWORD dword1; // '0x9C'
_DWORD dword5; // '0x00'
_BYTE byte9[8];
_DWORD dword11; // '0x02'
_BYTE byte15[136];
_DWORD CpuSpeed;
_DWORD sockname;
char hostname[50];
_DWORD dword194; // '0'
_DWORD delay;
_BYTE XNote[50]; //data from '/etc/.Xserver_note' file
_BYTE CfgPayload[16]; //last 16 bytes of config
char szOS[64];
};
#pragma pack(pop)
Liste des commandes que le Trojan peut exécuter :
- spécifier l’UUID (Universally Unique Identifier) – l’identificateur unique de l'ordinateur contaminé ;
- traiter des fichiers ;
- mettre à jour le fichier exécutable du backdoor ;
- lancer l'interpréteur de commandes avec des paramètres prédéfinis ;
- lancer une attaque SYN Flood ;
- lancer une attaque UDP Flood ;
- lancer une attaque HTTP Flood ;
- lancer une attaque NTP Amplification ;
- stopper une attaque DDoS ;
- enregistrer les données dans un fichier "/etc/.Xserver_note" ;
- lancer le serveur portmap ;
- lancer le serveur proxy ;
- se supprimer.
Si la commande prévoit l'exécution d'une action, le Trojan lance un processus enfant, qui établit sa connexion avec le serveur de gestion qui envoie les données de configuration, puis renvoie les résultats de l'exécution de la commande.
Après avoir reçu la commande appropriée, le Trojan envoie aux malfaiteurs les données sur le système de fichiers de l'ordinateur infecté (le total des blocs de données dans le système de fichiers, nombre de blocs disponibles), puis il peut exécuter les commandes suivantes :
- énumérer les fichiers et répertoires dans le répertoire spécifié ;
- envoyer les données sur la taille du fichier ;
- créer un fichier dans lequel le logiciel peut enregistrer les données reçues ;
- recevoir le fichier ;
- télécharger un fichier sur le serveur de gestion ;
- supprimer le fichier ;
- supprimer le répertoire ;
- envoyer au serveur de gestion le signal que le backdoor peut recevoir le fichier ;
- créer un répertoire ;
- renommer le fichier ;
- lancer le fichier.
De plus, le Trojan peut lancer le shell avec la variable d'environnement spécifiée et donner au serveur de gestion l'accès :
"TERM=linux";
"SHELL=/bin/bash";
"PS1=\\[\\033[1;30m\\][\\[\\033[0;32m\\]\\u\\[\\033[1;32m\\]@\\[\\033[0;32m\\]\\h
\\[\\033[1;37m\\]\\W\\[\\033[1;30m\\]]\\[\\033[0m\\]# ";
"HISTFILE=/dev/null";
"HOME=/tmp";
"PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:./bin:/tmp:/tmp/bin";
Le Trojan peut également lancer sur l'ordinateur infecté un serveur proxy SOCKS ou lancer son propre serveur portmap (les commandes possibles : " Envoyer les données ", " Supprimer le portmap créé ", " Créer le portmap ").