Duqu est une matriochka malveillante

introduction

Le 1er septembre 2011, un fichier nommé ~DN1.tmp a été envoyé au site Web VirusTotal depuis la Hongrie. À cette époque, le fichier n'était détecté comme malveillant que par deux moteurs antivirus : BitDefender et AVIRA. C'est ainsi que commença l'histoire de Duqu. Pour l’avenir, il faut dire que la famille de malwares Duqu doit son nom au nom de ce fichier. Cependant, ce fichier est un module de logiciel espion totalement indépendant avec des fonctions de keylogger, installé probablement à l'aide d'un téléchargeur-dropper malveillant, et ne peut être considéré que comme une « charge utile » chargée par le malware Duqu lors de son fonctionnement, et non comme un composant ( module) de Duqu . L'un des composants Duqu n'a été envoyé au service Virustotal que le 9 septembre. Sa particularité est un driver signé numériquement par C-Media. Certains experts ont immédiatement commencé à faire des analogies avec un autre exemple célèbre de malware : Stuxnet, qui utilisait également des pilotes signés. Le nombre total d’ordinateurs infectés par Duqu détectés par diverses sociétés antivirus à travers le monde se compte par dizaines. De nombreuses entreprises affirment que l’Iran est à nouveau la cible principale, mais à en juger par la répartition géographique des infections, on ne peut pas en être sûr.
Duqu est une matriochka malveillante
Dans ce cas, vous ne devez parler en toute confiance que d'une autre entreprise avec un mot nouveau APT (menace persistante avancée).

Procédure de mise en œuvre du système

Une enquête menée par des spécialistes de l'organisation hongroise CrySyS (Laboratoire hongrois de cryptographie et de sécurité des systèmes de l'Université de technologie et d'économie de Budapest) a conduit à la découverte de l'installateur (dropper) par lequel le système a été infecté. Il s'agissait d'un fichier Microsoft Word avec un exploit pour la vulnérabilité du pilote win32k.sys (MS11-087, décrit par Microsoft le 13 novembre 2011), responsable du mécanisme de rendu des polices TTF. Le shellcode de l'exploit utilise une police appelée « Dexter Regular » intégrée dans le document, Showtime Inc. étant répertorié comme le créateur de la police. Comme vous pouvez le constater, les créateurs de Duqu ne sont pas étrangers au sens de l'humour : Dexter est un tueur en série, le héros de la série télévisée du même nom, produite par Showtime. Dexter ne tue que (si possible) les criminels, c'est-à-dire qu'il enfreint la loi au nom de la légalité. C'est probablement ainsi que les développeurs de Duqu ironisent sur le fait qu'ils se livrent à des activités illégales à de bonnes fins. L’envoi d’e-mails a été fait à dessein. L’envoi a très probablement utilisé des ordinateurs compromis (piratés) comme intermédiaires pour rendre le suivi difficile.
Le document Word contenait ainsi les éléments suivants :

  • contenu du texte ;
  • police intégrée ;
  • exploiter le shellcode ;
  • conducteur;
  • programme d'installation (bibliothèque DLL).

En cas de succès, le shellcode de l'exploit a effectué les opérations suivantes (en mode noyau) :

  • une vérification a été effectuée pour une réinfection ; pour cela, la présence de la clé 'CF4D' a été vérifiée dans le registre à l'adresse 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsZones1' ; si celle-ci était correcte, le shellcode a terminé son exécution ;
  • deux fichiers ont été décryptés : le pilote (sys) et le programme d'installation (dll) ;
  • le pilote a été injecté dans le processus services.exe et a lancé l'installateur ;
  • Finalement, le shellcode s'est effacé avec des zéros en mémoire.

Étant donné que win32k.sys est exécuté sous l'utilisateur privilégié « Système », les développeurs de Duqu ont résolu avec élégance le problème du lancement non autorisé et de l'élévation des droits (exécuté sous un compte utilisateur avec des droits limités).
Après avoir reçu le contrôle, l'installateur a déchiffré trois blocs de données qu'il contenait en mémoire, contenant :

  • pilote signé (sys);
  • module principal (dll);
  • données de configuration de l'installateur (pnf).

Une plage de dates a été spécifiée dans les données de configuration du programme d'installation (sous la forme de deux horodatages : début et fin). Le programme d'installation a vérifié si la date actuelle y était incluse et, dans le cas contraire, il a terminé son exécution. Les données de configuration du programme d'installation contenaient également les noms sous lesquels le pilote et le module principal étaient enregistrés. Dans ce cas, le module principal a été enregistré sur le disque sous forme cryptée.

Duqu est une matriochka malveillante

Pour démarrer automatiquement Duqu, un service a été créé à l'aide d'un fichier de pilote qui déchiffrait le module principal à la volée à l'aide des clés stockées dans le registre. Le module principal contient son propre bloc de données de configuration. Lors du premier lancement, il a été déchiffré, la date d'installation y a été saisie, après quoi elle a été à nouveau cryptée et enregistrée par le module principal. Ainsi, dans le système concerné, une fois l'installation réussie, trois fichiers ont été enregistrés : le pilote, le module principal et son fichier de données de configuration, tandis que les deux derniers fichiers ont été stockés sur le disque sous forme cryptée. Toutes les procédures de décodage ont été effectuées uniquement en mémoire. Cette procédure d'installation complexe a été utilisée pour minimiser la possibilité de détection par un logiciel antivirus.

Le module principal

Module principal (ressource 302), selon информации société Kaspersky Lab, écrit avec MSVC 2008 en C pur, mais en utilisant une approche orientée objet. Cette approche n'est pas typique lors du développement de code malveillant. En règle générale, un tel code est écrit en C pour réduire la taille et supprimer les appels implicites inhérents au C++. Il y a ici une certaine symbiose. De plus, une architecture basée sur les événements a été utilisée. Les employés de Kaspersky Lab sont enclins à la théorie selon laquelle le module principal a été écrit à l'aide d'un module complémentaire de pré-processeur qui vous permet d'écrire du code C dans un style objet.
Le module principal est responsable de la procédure de réception des commandes des opérateurs. Duqu propose plusieurs méthodes d'interaction : en utilisant les protocoles HTTP et HTTPS, ainsi qu'en utilisant des canaux nommés. Pour HTTP(S), les noms de domaine des centres de commande ont été spécifiés et la possibilité de travailler via un serveur proxy a été fournie - un nom d'utilisateur et un mot de passe ont été spécifiés pour eux. L'adresse IP et son nom sont spécifiés pour le canal. Les données spécifiées sont stockées dans le bloc de données de configuration du module principal (sous forme cryptée).
Pour utiliser des canaux nommés, nous avons lancé notre propre implémentation de serveur RPC. Il prenait en charge les sept fonctions suivantes :

  • renvoyer la version installée ;
  • injecter une DLL dans le processus spécifié et appeler la fonction spécifiée ;
  • charger la DLL ;
  • démarrez un processus en appelant CreateProcess();
  • lire le contenu d'un fichier donné ;
  • écrire des données dans le fichier spécifié ;
  • supprimer le fichier spécifié.

Des canaux nommés pourraient être utilisés au sein d’un réseau local pour distribuer des modules mis à jour et des données de configuration entre les ordinateurs infectés par Duqu. De plus, Duqu pourrait servir de serveur proxy pour d'autres ordinateurs infectés (qui n'avaient pas accès à Internet en raison des paramètres de pare-feu de la passerelle). Certaines versions de Duqu n'avaient pas de fonctionnalité RPC.

"Charges utiles" connues

Symantec a découvert au moins quatre types de charges utiles téléchargées sous commande depuis le centre de contrôle Duqu.
De plus, un seul d'entre eux était résident et compilé sous forme de fichier exécutable (exe), qui était enregistré sur le disque. Les trois autres ont été implémentés sous forme de bibliothèques de DLL. Ils ont été chargés dynamiquement et exécutés en mémoire sans être enregistrés sur le disque.

La « charge utile » résidente était un module espion (infostealer) avec fonctions keylogger. C’est en l’envoyant à VirusTotal que les travaux de recherche sur Duqu ont commencé. La principale fonctionnalité d'espionnage résidait dans la ressource, dont les 8 premiers kilo-octets contenaient une partie d'une photo de la galaxie NGC 6745 (pour le camouflage). Il convient de rappeler ici qu'en avril 2012, certains médias ont publié des informations (http://www.mehrnews.com/en/newsdetail.aspx?NewsID=1297506) selon lesquelles l'Iran aurait été exposé à un logiciel malveillant « Stars », tandis que les détails de l'incident n'a pas été divulgué. Peut-être s’agit-il d’un exemple de la « charge utile » Duqu qui a été découverte alors en Iran, d’où le nom « Stars ».
Le module espion a collecté les informations suivantes :

  • liste des processus en cours d'exécution, informations sur l'utilisateur et le domaine actuels ;
  • liste des lecteurs logiques, y compris les lecteurs réseau ;
  • captures d'écran;
  • adresses d'interface réseau, tables de routage ;
  • fichier journal des frappes au clavier ;
  • noms des fenêtres d'application ouvertes ;
  • liste des ressources réseau disponibles (partage de ressources) ;
  • une liste complète des fichiers sur tous les disques, y compris les fichiers amovibles ;
  • une liste des ordinateurs dans « l’environnement réseau ».

Un autre module espion (infostealer) était une variante de ce qui a déjà été décrit, mais compilée sous forme de bibliothèque de dll ; les fonctions d'un enregistreur de frappe, compilant une liste de fichiers et répertoriant les ordinateurs inclus dans le domaine, en ont été supprimées.
Module suivant (reconnaissance) informations système collectées :

  • si l'ordinateur fait partie d'un domaine ;
  • chemins vers les répertoires système Windows ;
  • version du système d'exploitation ;
  • nom d'utilisateur actuel ;
  • liste des adaptateurs réseau ;
  • système et l’heure locale, ainsi que le fuseau horaire.

Dernier module (prolongateur de durée de vie) a implémenté une fonction pour augmenter la valeur (stockée dans le fichier de données de configuration du module principal) du nombre de jours restants jusqu'à ce que le travail soit terminé. Par défaut, cette valeur était fixée à 30 ou 36 jours selon la modification Duqu, et diminuée d'un chaque jour.

Centres de commandement

Le 20 octobre 2011 (trois jours après la diffusion de l'information sur la découverte), les opérateurs de Duqu ont mené une procédure visant à détruire les traces du fonctionnement des centres de commandement. Les centres de commandement étaient situés sur des serveurs piratés partout dans le monde : au Vietnam, en Inde, en Allemagne, à Singapour, en Suisse, en Grande-Bretagne, aux Pays-Bas et en Corée du Sud. Fait intéressant, tous les serveurs identifiés exécutaient les versions CentOS 5.2, 5.4 ou 5.5. Les systèmes d'exploitation étaient à la fois 32 bits et 64 bits. Malgré le fait que tous les fichiers liés au fonctionnement des centres de commande ont été supprimés, les spécialistes de Kaspersky Lab ont pu récupérer certaines informations des fichiers LOG depuis l'espace Slack. Le fait le plus intéressant est que les attaquants sur les serveurs ont toujours remplacé le package OpenSSH 4.3 par défaut par la version 5.8. Cela peut indiquer qu'une vulnérabilité inconnue dans OpenSSH 4.3 a été utilisée pour pirater des serveurs. Tous les systèmes n'étaient pas utilisés comme centres de commandement. Certains, à en juger par les erreurs contenues dans les journaux sshd lors de la tentative de redirection du trafic vers les ports 80 et 443, ont été utilisés comme serveur proxy pour se connecter aux centres de commande finaux.

Dates et modules

Un document Word distribué en avril 2011 et examiné par Kaspersky Lab contenait un pilote de téléchargement d'installation dont la date de compilation était le 31 août 2007. Un pilote similaire (taille - 20608 octets, MD5 - EEDCA45BD613E0D9A9E5C69122007F17) dans un document trouvé dans les laboratoires CrySys avait une date de compilation du 21 février 2008. De plus, les experts de Kaspersky Lab ont trouvé le pilote d'exécution automatique rndismpc.sys (taille - 19968 octets, MD5 - 9AEC6E10C5EE9C05BED93221544C783E) daté du 20 janvier 2008. Aucun composant marqué 2009 n'a été trouvé. Sur la base des horodatages de la compilation des différentes parties de Duqu, son développement pourrait remonter au début de 2007. Sa première manifestation est associée à la détection de fichiers temporaires de type ~DO (probablement créés par l'un des modules du logiciel espion), dont la date de création est le 28 novembre 2008 (article "Duqu & Stuxnet : une chronologie d'événements intéressants"). La date la plus récente associée à Duqu était le 23 février 2012, contenue dans un pilote de téléchargement d'installation découvert par Symantec en mars 2012.

Sources d'information utilisées:

série d'articles à propos de Duqu de Kaspersky Lab ;
Rapport analytique Symantec "W32.Duqu Le précurseur du prochain Stuxnet", version 1.4, novembre 2011 (pdf).

Source: habr.com

Ajouter un commentaire