Enquêter sur la configuration du cheval de Troie d’Accès à distance LuminosityLink

Cet article est également disponible en : 日本語 (Japonais)

Ces dernières semaines, j’ai passé du temps à étudier la configuration intégrée du Cheval de Troie d’accès à distance LuminosityLink (RAT). Pour ceux qui ne le savent pas, LuminosityLink est une famille de logiciels malveillants coûtant 40 $ qui prétend être un utilitaire d’administration système. Cependant, lorsqu’il est exécuté, le logiciel malveillant tire parti d’un enregistreur de frappe très agressif, ainsi que d’un certain nombre d’autres fonctionnalités malveillantes qui permettent à un attaquant de prendre le contrôle total d’une machine victime.

 Liaison lumineuse 1

Figure 1 Site Web LuminosityLink

À la demande d’un collègue, on m’a demandé d’extraire la configuration d’un échantillon LuminosityLink, et bien que j’aurais pu simplement exécuter le logiciel malveillant dans un environnement en bac à sable et extraire la configuration de la mémoire, j’ai choisi de voir si je pouvais effectuer la même action contre le binaire statique.

Cela m’a amené à comprendre comment la configuration est cryptée dans le binaire, ainsi que comment analyser cette configuration. J’ai créé un script pour effectuer cette action contre un échantillon de malware LuminosityLink inchangé, que je partagerai dans cet article de blog. De plus, j’ai regardé les quelque 18 000 échantillons LuminosityLink que Palo Alto Networks a collectés au fil du temps, et en utilisant ce script, j’ai pu extraire les configurations de 14 700 échantillons. (Ces données se trouvent dans la section Annexe de cet article.)

Aperçu de LuminosityLink

Initialement apparu en mai 2015, la popularité de LuminosityLink a augmenté, comme le montre le graphique suivant. À ce jour, Palo Alto Networks a suivi environ 50 000 tentatives d’infection de LuminosityLink contre nos clients.

 Liaison lumineuse 2

Figure 2 Graphique AutoFocus des sessions LuminosityLink au fil du temps.

LuminosityLink se vend actuellement 40 $ et peut être acheté directement auprès de son auteur. Ce paquet permet aux attaquants d’héberger un serveur LuminosityLink ainsi que de générer des binaires personnalisés, qui sont obscurcis avec ConfuserEx 0.4.0. ConfuserEx est un projet open source qui obscurcit le sous-jacent.Le code NET, ce qui le rend beaucoup plus difficile pour les rétro-ingénieurs qui le décompilent. Ceci est important à noter pour plus tard lorsque nous discuterons de la façon de procéder à la rétro-ingénierie du processus de cryptage.

Comme mentionné précédemment, un certain nombre d’options de configuration sont incluses, comme nous pouvons le voir dans la capture d’écran suivante.

 Liaison lumineuse 3

Figure 3 Options de configuration client dans LuminosityLink

Une fois exécutées, les attaquants disposent d’une multitude d’options, notamment l’enregistrement de frappe, le bureau à distance, le vol de mot de passe et l’interaction avec un shell sur l’appareil.

Rétro-ingénierie de la configuration

La première étape de l’analyse de la configuration de LuminosityLink consiste à l’extraire statiquement. J’ai d’abord ouvert un échantillon propre de LuminosityLink à l’aide d’un programme nommé dnSpy pour rechercher des indices sur l’endroit où la configuration pourrait être stockée. (En aparté, je recommande fortement dnSpy, car il fait non seulement un excellent travail de décompilation du binaire .NET fourni, mais il est également équipé d’un débogueur intégré, qui est essentiel pour résoudre des problèmes tels que celui auquel nous sommes confrontés.)

Lors de l’ouverture initiale d’un binaire d’échantillon, je ne m’attendais pas à grand-chose car je savais que l’échantillon était obscurci à l’aide de ConfuserEx. Cependant, en regardant les ressources de l’échantillon, j’ai vu des chaînes qui semblaient prometteuses.

 Liaison lumineuse 4

Figure 4 Chaînes de ressources intégrées dans LuminosityLink

Comme nous pouvons le voir, le logiciel malveillant contient un certain nombre de ressources qui contiennent à leur tour ce qui semble être des données codées en Base64. Les ressources “SMARTLOGS”, “XML” et “CONFIG” contiennent toutes une multitude de données, qui, à ce stade, sont encore inconnues. Malheureusement, le décodage de ces chaînes entraîne des déchets, ce qui signifie probablement qu’une autre forme de cryptage est utilisée en dessous.

J’ai continué à étudier le code sous-jacent, qui, bien qu’obscurci, fournit toujours une idée de haut niveau de ce que font les différentes classes. En utilisant des espaces de noms importés, des appels d’API et certaines chaînes non obscurcies, nous sommes en mesure d’obtenir des indices sur ce qui se passe dans le programme. Plus précisément, nous voyons la classe fd() utiliser l’espace de noms de ‘System.Sécurité.Cryptographie “, qui mérite certainement une enquête car nous soupçonnions que la cryptographie était utilisée contre les chaînes de ressources référencées précédemment.

 Liaison lumineuse 5

Figure 5 Espace de noms de cryptographie utilisé par LuminosityLink

Au fur et à mesure que nous étudions cette classe, nous voyons des références aux classes et fonctions suivantes:

  • MD5CryptoServiceProvider
  • ComputeHash
  • FromBase64String
  • RijndaelManaged

À ce stade, je me suis tourné vers mon débogueur pour tenter de voir comment ces chaînes étaient gérées. J’ai défini des points d’arrêt sur divers appels mentionnés précédemment. Plus précisément, le point d’arrêt de la classe RijndaelManaged donne d’excellents résultats.

 Liaison lumineuse 6

Figure 6 Récupération réussie de la clé AES-128

Nous pouvons non seulement vérifier que le cryptage AES-128 est utilisé, mais également vérifier que la chaîne de ressources “SMARTLOGS” est utilisée. Nous sommes également en mesure d’identifier la chaîne utilisée comme clé, qui dans cet exemple particulier est “\\ecnOnuR \\noisreVtnerruC \\swodniW \\tfosorciM \\erawtfoS”. Une enquête plus approfondie révèle que cette chaîne est hachée à l’aide de l’algorithme MD5. Les 15 premiers octets de ce hachage sont concaténés avec les 16 octets entiers du hachage, suivis d’un octet nul. Nous pouvons répliquer ce processus de décryptage en Python en tant que tel:

1
2
3
4
5
6
7
8
9
10

def decrypt_data(data, key_string):
decoded_data=base64.b64decode(données)
m = hashlib.md5()
m.update(key_string)
md5 = m.digest()
key=md5+md5+”\x00″
mode=AES.MODE_ECB
iv = ‘\x00’*16
e = AES.nouveau (clé, mode, iv)
retour e. décrypter (données décodées)

Nous pouvons en outre vérifier que cela est correct en utilisant le code ci-dessus. Dans l’exemple suivant, la variable de données a été définie avec la chaîne codée en base64 trouvée dans la ressource “SMARTLOGS”, et la variable key_string a été définie sur la clé de registre inversée mentionnée précédemment.

1
2

>>> print decrypt_data(données, chaîne de clés)
172.16.1.100|11111|backup.dns.com|filename.exe|startup_name|folder_name|data_directory_name|backup_startup.exe/ df5e0e1c667c399588b014cb9b4ae7b33c9c0b4cac9d4169f39197e41e9a43a4/ Construit /1idsnb|

En utilisant des essais et des erreurs, nous sommes en mesure de mapper avec succès chaque variable observée dans la configuration ci-dessus. La dernière variable s’avère assez intéressante, car chaque caractère à l’exception de ‘1’ correspond à une option de configuration particulière. La cartographie suivante a été déterminée:

  • i : Activer l’Installation / Démarrage du Client
  • d : Module de persistance du client : Protège le Binaire Client de Luminosity
  • s : Mode Silencieux (Masquer la Fenêtre de Luminosité sur le PC Client)
  • a: Anti-Malware Proactif: Nettoyez les fichiers malveillants et Accélérez le PC client
  • n: Économiseur d’énergie: Empêchez le Mode Veille et Éteignez le Moniteur après 15 minutes d’inactivité
  • m: Supprimez le fichier après l’exécution (Fondu)
  • v: Anti-Machines Virtuelles / Débogage
  • h: Masquer Fichier et répertoires
  • b: Démarrage de la sauvegarde

En utilisant ces connaissances, nous pouvons analyser la configuration ci-dessus, ce qui donne les résultats suivants.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Domaine / IP : 172.16.1.100
Port : 11111
DNS de sauvegarde : backup.dns.com
Nom du fichier: nom du fichier.exe
Nom de démarrage: startup_name
Nom du dossier: folder_name
Nom du répertoire de données: data_directory_name
Démarrage de la sauvegarde Exe: backup_startup.exe
Mutex: df5e0e1c667c399588b014cb9b4ae7b33c9c0b4cac9d4169f39197e41e9a43a4
ID de construction: BuildID
Paramètres :
Activer l’installation/ démarrage du client
Module de Persistance Client: Protégez le Binaire client de Luminosity
Mode Silencieux (Masquer la fenêtre de luminosité sur le PC Client)
Anti-Malware Proactif: Nettoyez les fichiers malveillants et Accélérez le PC client
Économiseur d’énergie: Empêchez le mode Veille et Éteignez le Moniteur après 15 minutes d’inactivité
Supprimer le fichier après l’exécution (Fondre)
Anti-Machines Virtuelles / Débogage
Masquer le fichier et les répertoires
Démarrage de la sauvegarde

Analyse des configurations LuminosityLink à l’échelle

En utilisant ces connaissances, nous avons créé un script pour analyser la configuration d’un échantillon donné. Le script recherche des chaînes qui semblent encodées en base64 avec une longueur supérieure à 50 et adopte une approche par force brute. Bien qu’il ne soit pas élégant, il fait le travail avec succès. Le script peut être téléchargé dans la section Annexe de cet article de blog.

En parcourant le référentiel d’échantillons de Palo Alto Networks, nous avons trouvé environ 18 000 fichiers étiquetés comme LuminosityLink. Pour ces 18 000 échantillons, nous avons appliqué notre script d’extraction et d’analyse de configuration statique et avons récupéré avec succès environ 4 500 configurations. Les échantillons restants ont été emballés au-delà de la routine d’obscurcissement ConfuserEx intégrée, et en tant que tels, les chaînes de configuration brutes n’étaient pas présentes.

Ces échantillons ont été exécutés via une instance locale du bac à sable open source Cuckoo, où les décharges de processus ont été extraites. Le même script a été appliqué à ces décharges de processus, où nous avons pu obtenir 10 200 configurations supplémentaires, nous laissant avec un total de 14 700 configurations de LuminosityLink analysées.

Au fur et à mesure du traitement des échantillons, d’autres clés ont été découvertes pour être utilisées par l’auteur. Les trois chaînes supplémentaires suivantes ont été utilisées pour générer les clés des échantillons LuminosityLink.

  • Cette conf’ig ne contient rien d’utile. Arrêtez d’agir comme si vous étiez cool en le décryptant.
  • Ressources.SMARTLOGS
  • Spécifiez un mot de passe

Il semble que l’auteur de LuminosityLink n’est pas dépourvu d’humour. De plus, lorsque nous avons analysé des échantillons plus anciens, il a été découvert que la configuration avait changé entre février et juin de cette année. Moins d’options étaient disponibles dans la configuration des échantillons plus anciens. Le script fourni tient compte de ces différences et des différentes clés utilisées.

En utilisant les données agrégées des 14 700 configurations, les statistiques de haut niveau suivantes ont été tirées:

LuminosityLink 7

Figure 7 Prevalence of enabled settings in LuminosityLink configurations

Top C2 TLDs/IP Addresses

  • ddnsnet
  • duckdnsorg
  • no-ipbiz
  • chickenkillercom
  • no-iporg
  • mooocom
  • fishdnscom
  • no-ipinfo
  • ignorelistcom
  • freednssu

Top Build IDs

  • HOME
  • Client
  • crtx1
  • M4CHINATION
  • CSGO
  • NEW
  • Slave
  • CAPO
  • Youtube
  • PROJECT.D

Top Executable Names

  • sysmon.exe
  • client.exe
  • helper.exe
  • repair.exe
  • winlogon.exe
  • svchost.exe
  • Luminosity.exe
  • WinCOMHost.exe
  • chrome.exe
  • windowsbootapp.exe

Ports supérieurs

  • 6318
  • 1400
  • 1604
  • 1337
  • 3175
  • 22028
  • 9045
  • 2122
  • 100
  • 9999

Les données de configuration analysées, fournies au format de fichier CSV, sont fournies gratuitement à la communauté de la sécurité dans l’espoir que des protections seront créées contre cette menace.

Conclusion

LuminosityLink, bien que commercialisé en tant qu’utilitaire d’administration de systèmes, est un formidable enregistreur de frappe et porte dérobée utilisé par un grand nombre de criminels. À ce jour, Palo Alto Networks a été témoin de plus de 50 000 tentatives d’infection de LuminosityLink, comprenant 18 000 échantillons uniques. Le logiciel malveillant est bon marché et facilement accessible au public, ce qui en fait une menace dangereuse pour les organisations et les individus.

Grâce à des échantillons LuminosityLink de rétro-ingénierie, nous avons pu extraire et analyser statiquement la configuration intégrée, ce qui fournit à son tour des informations précieuses sur les hôtes et les ports pour lesquels le logiciel malveillant est configuré pour communiquer. Il fournit également des informations sur les protections configurées dans l’exécutable, ainsi que des informations d’installation.

Les clients de Palo Alto Networks sont protégés contre cette menace de la manière suivante :

Une balise AutoFocus peut être utilisée pour suivre cette famille de logiciels malveillants

  • Tous les échantillons LuminosityLink sont correctement marqués comme malveillants dans WildFire
  • Tous les domaines identifiés sont marqués comme malveillants
  • Le trafic réseau est correctement identifié et bloqué en tant que menace ID #14460 (LumonosityLinkRAT.Gen Commande Et Contrôle Du Trafic)

Annexe

Un script d’extraction et d’analyse pour les échantillons LuminosityLink se trouve ici.

Un script à utiliser pour analyser des chaînes de configuration simples peut être trouvé ici.

Un fichier CSV contenant toutes les données de configuration extraites de l’ensemble d’échantillons de Palo Alto Networks se trouve ici.

Obtenez des mises à jour à partir des réseaux
Palo Alto
!

Inscrivez-vous pour recevoir les dernières nouvelles, les renseignements sur les cybermenaces et les recherches de notre part

En soumettant ce formulaire, vous acceptez nos Conditions d’utilisation et reconnaissez notre Déclaration de confidentialité.

Write a Comment

Votre adresse e-mail ne sera pas publiée.