Maison >Opération et maintenance >Sécurité >Comment mettre en œuvre l'analyse du rapport d'arme divulgué par APT34
APT34 est une organisation APT iranienne depuis 2014, elle continue de lancer des attaques APT au Moyen-Orient et en Asie. Les secteurs impliqués comprennent principalement le gouvernement, la finance, l'énergie, les télécommunications, etc. L'arsenal d'armes d'attaque est constamment amélioré et des méthodes d'attaque sont constamment introduites. Cependant, les attaquants n'arrêteront pas leurs attaques simplement parce qu'ils sont exposés.
Le 17 avril, des médias étrangers ont rapporté qu'un utilisateur nommé "Lab Dookhtegan" avait été exposé sur Telegram. La boîte à outils d'attaque de l'organisation APT34 a été découverte et certaines données des victimes APT34 ont également été exposées. Cet incident, comme les précédentes fuites de code source, a été extrêmement explosif. L'organisation APT34 a continué de lancer de multiples attaques contre certains pays du Moyen-Orient et d'Asie depuis au moins 2014, ciblant le gouvernement, la finance, l'énergie, les télécommunications et d'autres secteurs. Les cibles de l'organisation sont généralement des pays opposés à l'Iran, c'est pourquoi certains pensent que l'organisation est un département de sécurité iranien ou une société de sécurité qui coopère à long terme avec le gouvernement iranien. L'organisation sait utiliser les médias sociaux, créer des comptes Internet avec diverses identités et approcher les cibles d'attaque grâce à des techniques d'ingénierie sociale. Dans le même temps, l'arsenal d'attaque de l'organisation s'améliore constamment et ses méthodes d'attaque deviennent de plus en plus sophistiquées. Elles intègrent des méthodes d'attaque telles que le spear phishing avec de nouvelles technologies d'attaque pour élargir continuellement la portée de pénétration des cibles existantes.
Membres exposés de l'organisation APT34
Selon la liste Webshell divulguée, il est évident que l'organisation a récemment porté une campagne à grande échelle contre la Chine. Ce tableau répertorie plus de 10 sites Web étiquetés « Chine » qui ont été compromis, ce qui peut être utilisé comme preuve pour étayer l'argument en faveur d'attaques nationales.
Lab Dookhtegan a prétendu un jour exposer les informations personnelles d'un membre de l'organisation tous les quelques jours, mais maintenant les comptes sur Telegram et Twitter ont été bloqués.
Cette fuite de code source contient un grand nombre d'armes d'attaque importantes couramment utilisées par l'organisation APT34, tels que : Webshells_and_Panel, pose frog, Webmask, Glimpse. Dongxun Technology 2046Lab a utilisé le « Système avancé d'avertissement des menaces persistantes Iron Dome » pour détecter les menaces sur ces armes d'attaque et mener une analyse approfondie au niveau technique.
#🎜🎜 #
2. Avertissement de détection de fichier sandbox : [Risque élevé]3. Le DNS a été trouvé. Tunnel caché # # 🎜🎜#Le répertoire Webshells_and_Panel contient principalement une variété d'outils Webshell écrits en C#. Le répertoire Webshell contient deux dossiers principaux, à savoir HighShell et HyperShell.
1.1 HighShell
Il n'y a que HighShell.aspx dans le répertoire HighShell, qui est un WebShell pour les serveurs Windows. L'interface par défaut après ouverture est la suivante :HyperShell est un projet contenant plusieurs fichiers de code source, y compris plusieurs fichiers de code source WebShell. Voici plusieurs fonctions Webshell qui peuvent être utilisées.
simple.aspxUn webshell simple qui inclut des fonctions d'authentification, d'exécution de commandes et de téléchargement de fichiers est simple.aspx. Comme le montre la photo après ouverture :
Entrez le mot de passe de connexion (MkRg5dm8MOk) dans la zone de saisie du mot de passe et cliquez sur le bouton "Connexion" pour contrôler le serveur et télécharger des fichiers. La connexion par mot de passe est la suivante :
L'image suivante est le schéma de fonctionnement permettant d'exécuter la commande "command" et d'obtenir les informations du serveur :
simpleDownload.aspx
simpleDownload.aspx n'a qu'une seule fonction de téléchargement. , comme indiqué ci-dessous :
HighShelllocal.aspx
HighShelllocal.aspx est une version améliorée de HighShell. Le numéro de version est 8.6.2. Les fonctions de cette version sont à peu près les mêmes que celles de la version indépendante 5.0. L'interface et les fonctions ont été optimisées. Le schéma de l'interface est le suivant :
2.1 Agent
2.1.1 poisonfrog.ps1
Poisonfrog.ps1 est le seul fichier d'Agent, qui est utilisé pour implanter des programmes de porte dérobée sur des hôtes compromis. Une fois ce fichier exécuté, trois fichiers, dUpdater.ps1, hUpdater.ps1 et UpdateTask.vbs, seront laissés dans le répertoire C:UsersPublicPublic de l'hôte compromis.
La porte dérobée laissée sur l'hôte est le script UpdateTask.vbs, qui s'exécute automatiquement via les tâches planifiées toutes les 10 minutes. Il exécute deux scripts : dUpdater.ps1 et hUpdater.ps1.
2.1.2 dUpdater.ps1
Ce script est un script de contrôle à distance Il générera un nom de domaine DNS et se connectera au serveur de contrôle, en recevra des commandes à distance et enverra et recevra des fichiers. L'algorithme DGA.Changer est utilisé lors de la génération des noms de domaine DNS pour calculer dynamiquement les noms de domaine des serveurs. 2046Lab a restauré cet algorithme DGA.Changer :
fonction de réception :
Exécutez la fonction EEA pour obtenir le nom de domaine VVA, et le Les paramètres JJA sont définis sur r ;
Essayez de résoudre le nom de domaine VVA. En cas d'échec, lancez une exception, régénérez un nouveau nom de domaine et essayez de résoudre le nouveau nom de domaine. Répétez l'opération jusqu'à ce que la résolution du nom de domaine soit réussie ; en cas de succès, prenez la première IP résolue avec succès et ajoutez Supprimez chaque segment de l'IP séparément
Si l'IP est 1.2.3.*, définissez NNA sur false, écrivez la valeur de RRA dans le fichier PPA et quittez le fonction principale ;
Si NNA est vrai, modifiez RRA La valeur correspond aux trois premiers segments de l'IP et continue de boucler la fonction principale
Si l'IP est 24.125.*.*, divisez les troisième et quatrième segments ; de l'IP comme nom de sous-dossier de C:UsersPublicPublic$DDAreceivebox (PPA), définissez GGA sur 1, définissez NNA sur true et continuez à boucler la fonction principale
Si l'IP est 11.24.237.110, arrêtez l'analyse et quittez le fonction principale. Cette IP est l’IP qu’OilRig utilisait autrefois.
Fonction d'envoi :
Exécutez Slaber pour vérifier le fichier envoyé, exécutez la fonction EEA pour obtenir le nom de domaine VVA et définissez le paramètre JJA sur s ;
Essayez de résoudre le nom de domaine VVA. En cas d'échec, une exception. sera lancé et un nouveau nom de domaine sera régénéré et tenté d'être résolu. Pour un nouveau nom de domaine, répétez l'opération jusqu'à ce que la résolution du nom de domaine réussisse, prenez la première adresse IP résolue avec succès et supprimez chaque segment de celui-ci. l'IP respectivement ;
Si l'IP est 1.2.3.*, retirez le quatrième segment de l'IP. Obtenez la valeur du segment et bouclez la fonction principale
Si l'IP est 11.24.237.110, arrêtez l'analyse et quittez ; la fonction et supprimez le fichier à envoyer.
Fonction Slaber :
Vérifiez la taille du fichier envoyé Si elle dépasse 600 Ko, une erreur sera signalée. Sinon, exécutez la fonction de résolution.
Fonction de résolution :
Résolvez le fichier envoyé, chaque groupe de 30 caractères.
Fonction du processeur :
Traitez le fichier reçu, MMB est le fichier dans le dossier "sendbox" ;
Si le nom du fichier reçu se termine par "0", écrivez le fichier reçu dans le dossier "sendbox" et utilisez UTF. -8 encodage, puis supprimez le fichier précédemment reçu ;
Si le nom du fichier reçu se termine par "1", si un chemin existe dans le contenu du fichier reçu, le chemin sera utilisé comme chemin d'envoi ; n'existe pas, la chaîne "Le fichier n'existe pas" est écrite dans le fichier MMB, puis le fichier précédemment reçu est supprimé. Déplacez-vous vers le dossier "terminé", écrivez le contenu du fichier dans un fichier MMB, puis supprimez le fichier ; fichier reçu précédemment.
2.1.3 hUpdater.ps1Résolvez l'adresse IP de "myleftheart.com" et essayez de vous connecter ; Si le fichier C:UsersPublicPublicfiles cfg.ini existe, prenez les champs de paramètres correspondants tels que srv, usr, pas, prt et dom. Concaténez les valeurs de srv et prt dans une nouvelle chaîne via ":", définissez la chaîne en tant que serveur proxy à l'aide de http et utilisez les valeurs de usr, pas et dom comme informations d'identification de le serveur proxy ; s'ils n'existent pas, obtenez le serveur proxy par défaut ; OOA : sélectionnez aléatoirement plusieurs nombres entiers de 0 à 9, sélectionnez aléatoirement le nombre de 1 à 9, et divisez les nombres extraits DDA : c'est le cas ; le DDA dans le script dUpdater.ps1 ; PPA : Le cinquième chiffre de DDA est obtenu en insérant OOA Téléchargez le fichier depuis "http://myleftheart.com/co/$PPA", supposez que le contenu de le fichier téléchargé est QQA et séparez QQA par "" , le tableau est défini sur SSA. p est le chemin C:UsersPublicPublicfiles$SSA[0]. Si la longueur de SSA[2] est supérieure à 0 et qu'il n'y a pas de chaîne « non » dans SSA[2], téléchargez le fichier depuis http://myleftheart.com/fil/SSA[3] vers C:UsersPublicPublicfiles $SSA[2] , puis écrivez le contenu dans le chemin p ; Si la longueur de SSA[1] est supérieure à 0 et que la chaîne "not" n'existe pas dans SSA[1], téléchargez le fichier du chemin p à http://myleftheart.com/res /$PPA$SSA[0]; Si la longueur de SSA[4] est supérieure à 0 et qu'il n'y a pas de chaîne « non » dans SSA[4], le fichier dans le chemin de téléchargement, SSA[4]d sera téléchargé sur http://myleftheart. com/res/$PPA$SSA[0] ; Si la valeur de la dernière donnée dans SSA est "1", la fonction principale sera exécuté en boucle Si la longueur de SSA[0] est supérieure à 0 et que SSA[1] n'existe pas de chaîne "not", téléchargez le fichier avec le chemin p sur http://myleftheart.com/res /$PPA$SSA[0] et supprimez le fichier avec le chemin p. Le côté serveur est la principale extrémité de contrôle utilisée par APT34 pour gérer l'hôte compromis. Il peut télécharger des fichiers depuis l'hôte compromis et télécharger des fichiers vers l'hôte compromis. Ce serveur fournit une interface de connexion simple. Gérer les utilisateurs et les mots de passe via un fichier de configuration JSON est très simple. Dans les documents divulgués, des noms d’utilisateur (blacktusk) et des mots de passe (fireinthehole) faciles à deviner ont été utilisés. Le GUID dans l'image ci-dessous (/7345SDFHSALKJDFHNASLFSDA3423423SAD22) est utilisé pour guider le navigateur vers la page de connexion. Ce GUID peut être considéré comme très important. Les listes d'hôtes pour l'agent HTTP et l'agent DNS sont également disponibles côté serveur. À partir de cette liste, vous pouvez facilement voir quels hôtes sont actuellement contrôlés. Chaque agent HTTP et agent DNS ont des pages d'informations détaillées Ici, vous pouvez émettre des commandes C&C vers l'hôte compromis et télécharger ou télécharger des fichiers. L'agent DNS ici peut avoir incorporé certaines fonctions de Glimpse. Glimpse est présenté en détail ci-dessous. Pour les hôtes compromis, APT34 utilise un script de contrôle à distance BAT par défaut pour obtenir des informations sur l'hôte. Les informations obtenues sont très détaillées, notamment le système, l'utilisateur, le groupe, le domaine, le registre spécifique, les tâches planifiées, le logiciel antivirus, etc. . Cet outil est principalement déployé sur le serveur de l'attaquant pour implémenter un proxy DNS, détourner des noms de domaine DNS spécifiques, pointer le nom de domaine vers le serveur local par défaut et implémenter un proxy HTTP/HTTPS via Squid3+ICAP, volant des informations sensibles telles que le mot de passe du compte de la victime. répertoire dns-redir : dnsd.py : script de transfert de proxy DNS config.json : fichier de configuration dnsd.js : script de proxy DNS de type JS, et dnsd.py Le la fonction est similaire à a. Les captures d'écran de la fonction de proxy DNS simulé local sont présentées ci-dessous : Répertoire icap : icap.py : doit être utilisé conjointement avec Squid3 pour créer un proxy http/https et enregistrer des données sensibles dans le proxy localement. Fichier de configuration squid.conf : Squid3+ICAP implémente un serveur proxy transparent. Le script icap.py extrait les données sensibles telles que les mots de passe et les enregistre dans un fichier journal local. Le fichier de script icap ajoute du code de piratage à la partie réponse_body et charge l'élément d'image spécifié dans le navigateur de la victime. Glimpse se compose de trois parties : Agent, Panel et Serveur. Il s'agit d'un outil de contrôle à distance DNS. . À en juger par certains codes de Glimpse Server, certaines de ses fonctions peuvent chevaucher celles de Poison Frog, comme la manière d'émettre des commandes. Dans l'ensemble, Glimpse est très similaire à la grenouille empoisonnée présentée ci-dessus. Les informations divulguées nous expliquent également comment utiliser Glimpse. 4.1 Agent De même, l'agent dans Glimpse est en cours d'exécution La fonction principale du programme de porte dérobée sur l'hôte compromis est d'accepter des commandes, de télécharger et de télécharger des fichiers. L'agent utilise le répertoire C:UsersPublicLibraries sur l'hôte comme répertoire de travail. L'envoi et la réception de fichiers seront effectués dans des sous-répertoires de ce répertoire. L'agent peut fonctionner selon deux modes, l'un est le mode ping et l'autre le mode texte. Le mode ping est principalement utilisé pour échanger des informations sur l'hôte. Le mode texte s'apparente au mode protocole interne entre l'Agent et le Serveur, qui permet l'acceptation d'instructions internes. 4.2 Panneau Le panneau est utilisé pour afficher l'état du contrôle principal. Vous pouvez voir combien d'hôtes compromis sont sous contrôle. en même temps, vous pouvez envoyer des messages à L'hôte compromis envoie la commande. Vous pouvez voir que la commande a été envoyée à l'hôte compromis via le panneau et que le résultat de retour a été obtenu. 4.3 Serveur Le serveur est l'extrémité de contrôle principale. Il communique via le protocole de tunnel DNS et peut répondre au message en mode ping ou au TXT. mode envoyé par la commande Agent, et envoie également des commandes à l'Agent en mode TXT. À en juger par le style de codage, Glimpse et Poison Frog devraient être créés par la même équipe. Le côté serveur prend en charge davantage de commandes de protocole en mode TXT. Nous pouvons vérifier brièvement la signification de ces commandes. # 🎜🎜 # 2.2 Côté serveur
3.Webmask
4.Glimpse
if (action == 'M') { // in this place we check the request for type of connection ping or text type if (action == 'W') { // in this place we check the request type if its text we response it else if (action == 'D') { else if (action == '0') { // ctrl[0] => action, if 0 = is there any file else if (action == '1') { // ctrl[0] => action, if 1 = sending the file else if (action == '2') {// ctrl[0] => action, if 2 = receiveing the file
# 🎜🎜 # iocs # 🎜🎜 ## 🎜🎜 # md5: # 🎜🎜 # cd0bbff03ce7946cd7c9dc339726d90a9d3d8fe14927172ca5546bdb95d947625e17061bf2dce87d402ddd8531abb49f
# 🎜🎜 # Nom du domaine: # 🎜🎜 # myleftheart.com
# 🎜🎜 # ip: # 🎜🎜 # 11.24.237.110
# 🎜 🎜 🎜 #mesuresdeprotection
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!