Le Trojan backdoor multifonctions et multi-composants est écrit en C. Il est distribué à l'aide du Trojan Trojan.Siggen6.31836. Les fonctionnalités du Trojan :
- lancement d’un serveur proxy FTP sur l'ordinateur infecté ;
- lancement d’un serveur proxy Socks5 sur l'ordinateur infecté ;
- modification du protocole RDP pour fournir l'accès distant à l'ordinateur infecté ;
- enregistrement des frappes clavier (keylogging) ;
- possibilité de communiquer avec un PC infecté via FTP, RDP et Socks5, si le réseau utilise NAT (backconnect) ;
- interception des données PCRE (Perl Compatible Regular Expressions) - la bibliothèque qui réalise les expressions régulières dans l'environnement Perl. Pour ce faire, le Trojan intercepte toutes les fonctions possibles liées au travail sur Internet ;
- intercepter les tokens SCard ;
- exécuter des injections web, c'est-à dire intégrer un code parasite dans les pages web consultées par l'utilisateur ;
- intercepter diverses fonctions système, en fonction du fichier de configuration reçu ;
- modification du code du processus lancé en fonction du fichier de configuration reçu ;
- interaction avec les différents modules fonctionnels (plug-ins) ;
- captures d'écran ;
- recherche dans le système infecté de clés privées.
Pour échanger les données avec le serveur, BackDoor.Yebot utilise le protocole HTTP standard et son protocole binaire. Les deux protocoles utilisent le port 80. Exemples de requêtes HTTP :
http://46.***.***.94/d/i.html?b=88B22416&c=88B22416
Cette requête permet de télécharger le Trojan porteur de la charge utile recompressée Trojan.Siggen6.31836.
http://46.***.***.94/t/i.html?b=88B22416&c=88B22416
Demande du fichier de configuration crypté par RC4, qui, après le décryptage, possède la structure suivante :
<?xml version="1.0" encoding="utf-8"?>
<tasks>
<task taskid="49">
<startat>0</startat>
<stopat>0</stopat>
<daemonconf>46.***.***.94:80:some_magic_code1</daemonconf>
<plugin>internal</plugin>
<exec_type>3</exec_type>
<function>sndbtnfo</function>
<params />
</task>
<task taskid="525">
<startat>0</startat>
<stopat>0</stopat>
<daemonconf>46.***.***.94:80:some_magic_code1</daemonconf>
<plugin>internal</plugin>
<exec_type>0</exec_type>
<function>curls</function>
<params>
<param>46.***.***.24</param>
<param>46.***.***.94</param>
</params>
</task>
</tasks>
Demande du téléchargement de modules additionnels (plug-ins) :
http://46.***.***.94/tp/i.html?m=&b=98B22416&s=0&c=98B22416
Demande de la liste des serveurs de gestion :
http://46.***.***.94/dc/i.html?b=88B22416
Rapport sur l'exécution des tâches :
http://46.***.***.94/t/r.html?b=88B22426&tid=525
Rapport du Trojan avec la version du bot :
http://46.***.***.94/u/i.html?b=88B22416&p=1&v=20&c=88B22426
Protocole binaire, utilisé par le backdoor a l'en-tête suivante :
struct thead { BYTE magic[16]; //some_magic_code1 DWORD d1; //0 DWORD Bid; DWORD d3; //0 };
Puis les données sur le type de message envoyé :
#pragma pack(push, 1) struct tbody1 { DWORD Size; //taile du message SizeData+2 WORD Op; //numéro de la commande }; struct tbody2 { DWORD Flag; WORD Op; //numéro de la commande DWORD Size; //taille du message SizeData }; #pragma pack(pop)
Puis les données sont transmises, la taille du message correspondant au paramètre indiqué dans la variable SizeData. Les commandes suivantes sont supportées :
- 450-créer un nouvel utilisateur avec un nom défini ;
- 351, 352-changer les règles PCRE pour l'interception de données ;
- 108-télécharger et lancer le plug-in dans la mémoire;
- 102.105-définir la configuration pour modifier le protocole RDP ;
- 400 - créer la configuration des injections Web ;
- 777 - préparer les rapports spécifiés ;
- 200 - envoyer les données sur la machine infectée au serveur de gestion ;
- 350 - envoyer les données et les clés volées au serveur de gestion ;
Les serveurs de gestion du Trojan possèdent des paramètres dits « paranoïdes » : par exemple, ils peuvent ajouter une adresse IP à une liste noire si la requête reçue de cette adresse est incorrecte ou si cette adresse IP a envoyé trop de requêtes.