1 – Analyse du code malveillant Gh0st RAT

Gh0st RAT est un code malveillant de type RAT (Remote Administration Tool) utilisé dans le cadre d’attaques dites « APT ». Ce code a été vu pour la première fois en 2008 et permet de prendre le contrôle à distance d’un ordinateur Windows.

Fonctionnement du code malveillant

Une fois la charge malveillante initiale exécutée, le code cherche à se maintenir sur le système par des mécanismes de persistance puis communique avec un serveur de commande et de contrôle (dit serveur C&C).

Persistance

La persistance est assurée par l’ajout d’un service démarrant avec le système. Ce service prend en priorité le nom d’un service chargé par Svchost mais non actif dans la configuration actuelle du poste ciblé.

Une fois le nom du service identifié par examen de la base de registre, il écrit alors sa charge malveillante sur le disque sous la forme d’un fichier DLL situé à l’emplacement suivant :

%SystemRoot%\System32\<nom du service>ex.dll

Ce code a aussi la particularité de réinitialiser la SSDT (System Service Dispatch Table) du noyau Windows afin de supprimer tous les éventuels « hooks » mis en place sur le système par d’éventuelles solutions de sécurité ou d’autres codes malveillants. Cette opération est effectuée lors de l’installation du RAT (avant la recherche du nom de service) et à chacun de ses lancements.

Pour cela, le fichier DLL embarque un pilote (nommé RESSDT.SYS) qu’il extrait et dépose dans le répertoire %TMP% (sous un fichier nommé de la forme séquence numérique_ex.tmp) puis qu’il charge dynamiquement à la place du pilote légitime beep.sys. Une fois l’opération de réinitialisation effectuée, il remet en place le pilote beep.sys.

Communications avec le serveur de C&C

Le code malveillant communique avec son serveur de C&C en utilisant une connexion TCP. Les paquets échangés ont un format particulier composé d’un entête de 13 octets précédant la charge utile. Le format de ces paquets est le suivant :

  • octets 1 à 5 : séquence fixe 0x47 0x68 0x30 0x73 0x74 (corresponds à la chaîne de caractères « Gh0st ») ;
  • octets 6 à 9 : taille totale du paquet (entête inclus) compressé ;
  • octets 10 à 13 : taille totale du paquet (entête inclus) décompressé ;
  • à partir de l’octet 14 : charge utile.

La charge utile est compressée avec la bibliothèque Zlib (les deux premiers octets de données compressées avec ce mécanisme sont alors 0x78 0x9C). Une fois la charge utile décompressée, le premier octet correspond à un code d’opération interne de Gh0st RAT (valeur allant de 0x00 à 0x80).

Le CERTA a pu observer des variantes de ce logiciel malveillant. Ces variantes diffèrent notamment sur la séquence d’octets débutant les paquets échangés et la charge utile non compressée. Les éléments de détection fournis ci-après se limitent à la version originale détaillée dans ce document.

Éléments de détection

Système

La charge malveillante est présente sur le disque sous forme d’un fichier DLL :

  • Fichier DLL :
    • chemin : %SystemRoot%\system32\
    • nom : [a-zA-Z0-9]+ex.dll ou netsvcs_[0-9]+ex.dll
    • taille : de 100864 à 101864 octets
    • ssdeep : 3072:/0GjoP/qHGp3cFIDwtlcdqzWm/Z7kUaNGd5:MGjE/qfF1lkOj/ZIUaK

Dans le cas où un fichier correspondant aux caractéristiques précédentes serait découvert, il est recommandé de rechercher si un service, dont le nom correspond à la partie précédent « ex.dll » dans le nom du fichier, a été créé au niveau du registre :

  • Clé de registre :
    • sous-clé : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicesom du service
    • valeur : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicesom du service\Parameters\ServiceDll correspond au nom du fichier DLL

Enfin, le fichier temporaire du pilote peut être présent dans le répertoire temporaire :

  • Fichier du pilote :
    • chemin : %TMP%
    • nom : [0-9]+_ex.tmp
    • taille : 2816 octets
    • MD5 : 84d6750d18c2084acd3f2f1436c7624c

Réseau

Il est possible de détecter une communication entre une victime et le serveur de C&C en détectant les paquets TCP de la forme suivante :

  • chaîne de caractères « Gh0st » au début du paquet ;
  • taille des données TCP correspondant à la valeur indiquée dans les octets 6 à 9 du paquet ;
  • séquence hexadécimale 0x78 0x9C dans les octets 14 et 15.

La détection peut être précisée en décompressant les données contenues à partir de l’octet 14 avec Zlib et en vérifiant que le premier octet décompressé correspond à une valeur comprise entre 0x00 et 0x80.

Méthode d’éradication

La persistance étant assurée par un service malveillant, il suffit alors de supprimer ce service puis de redémarrer l’ordinateur.

Enfin, il est nécessaire de supprimer le fichier DLL associé à ce service.

Documentation

2 – Régie publicitaire et distribution de logiciel malveillant

Une régie publicitaire permet principalement de monétiser les visites sur un site Web en positionnant de la publicité de manière automatisée. La régie peut également proposer des services comme l’analyse de la navigation (provenance du client, mots clés utilisés dans les moteurs de recherche, etc.).

Récemment, les serveurs publicitaires de Yahoo! ont diffusé pendant trois jours des publicités malveillantes qui lui ont été soumises, malgré les outils de vérification automatisés. De ce fait tous les sites Web utilisant le service de publicité de Yahoo! redirigeaient durant cette période, les utilisateurs vers du contenu malveillant.

Ce phénomène appelé « malvertising », consiste pour un attaquant à soumettre des publicités malveillantes à une régie, ou encore compromettre les serveurs de ladite régie pour y insérer du contenu (généralement un script), qui redirigera le navigateur sur un site sous le contrôle de l’attaquant.

Le CERTA recommande aux clients d’une prestation de régie publicitaire, de vérifier régulièrement que le site Web contenant des éléments publicitaires n’est pas détecté par des antivirus en ligne comme hébergeant du contenu malveillant. Il est également important dans le cadre du traitement d’incident, d’avoir un système de journalisation des requêtes de navigation Internet (par exemple sur le serveur mandataire).

Il est également recommandé de s’appuyer sur le guide d’externalisation des systèmes d’information publié par l’ANSSI pour la prise en compte des risques liés à la sous-traitance et à la responsabilité juridique induite lors de la contractualisation d’une prestation de ce type.

Documentation

Rappel des avis émis

Dans la période du 30 décembre 2013 au 05 janvier 2014, le CERT-FR a émis les publications suivantes :