Microsoft contre la société israélienne SOURGUM alias (plus connu sous Candiru)qui créa le Malware DevilsTongue:
Protéger les clients d'un acteur offensif du secteur privé à l'aide d'exploits 0-day et du logiciel malveillant DevilsTongue(Voir: https://docteo2.wordpress.com/2022/08/16/candiru-un-autre-fournisseur-de-logiciels-espions-mercenaires-entre-en-scene/)
Centre de renseignements sur les menaces Microsoft (MSTIC)
Le Microsoft Threat Intelligence Center (MSTIC) aux côtés du Microsoft Security Response Center (MSRC) a découvert un acteur offensif du secteur privé, ou PSOA, que nous appelons SOURGUM en possession d'exploits Windows 0-day désormais corrigés (CVE-2021 -31979 et CVE-2021-33771).
Les acteurs offensifs du secteur privé sont des entreprises privées qui fabriquent et vendent des cyberarmes dans des packages de piratage en tant que service, souvent à des agences gouvernementales du monde entier, pour pirater les ordinateurs, les téléphones, l'infrastructure réseau et d'autres appareils de leurs cibles. Avec ces packages de piratage, les agences gouvernementales choisissent généralement les cibles et exécutent elles-mêmes les opérations. Les outils, tactiques et procédures utilisés par ces entreprises ne font qu'ajouter à la complexité, à l'échelle et à la sophistication des attaques. Nous prenons ces menaces au sérieux et avons rapidement agi aux côtés de nos partenaires pour intégrer les dernières protections à nos clients.
MSTIC pense que SOURGUM est un acteur offensif du secteur privé basé en Israël. Nous tenons à remercier le Citizen Lab, de la Munk School de l'Université de Toronto, pour avoir partagé l'échantillon de logiciel malveillant à l'origine de ce travail et leur collaboration au cours de l'enquête. Dans son blog, Citizen Lab affirme avec une grande confiance que SOURGUM est une société israélienne communément connue sous le nom de Candiru. Des rapports de tiers indiquent que Candiru produit "des outils de piratage [qui] sont utilisés pour pénétrer dans les ordinateurs et les serveurs".
Comme nous l'avons partagé sur le blog Microsoft on the Issues, Microsoft et Citizen Lab ont travaillé ensemble pour désactiver le logiciel malveillant utilisé par SOURGUM qui a ciblé plus de 100 victimes à travers le monde, y compris des politiciens, des militants des droits de l'homme, des journalistes, des universitaires, des employés d'ambassade et dissidents politiques. Pour limiter ces attaques, Microsoft a créé et intégré des protections dans nos produits contre ce malware unique, que nous appelons DevilsTongue. Nous avons partagé ces protections avec la communauté de la sécurité afin que nous puissions collectivement traiter et atténuer cette menace. Nous avons également publié une mise à jour logicielle qui protégera les clients Windows contre les exploits associés que l'acteur a utilisés pour aider à diffuser ses logiciels malveillants hautement sophistiqués.
SOURGUM victimologie
Les rapports des médias (1, 2, 3) indiquent que les PSOA vendent souvent des exploits Windows et des logiciels malveillants dans des packages de piratage en tant que service aux agences gouvernementales. Des agences en Ouzbékistan, aux Émirats arabes unis et en Arabie saoudite figurent sur la liste des anciens clients présumés de Candiru. Ces agences choisissent alors probablement qui cibler et exécutent elles-mêmes les cyberopérations.
Microsoft a identifié plus de 100 victimes du logiciel malveillant de SOURGUM, et ces victimes sont aussi diversifiées géographiquement que l'on pourrait s'y attendre lorsque diverses agences gouvernementales sont censées sélectionner les cibles. Environ la moitié des victimes ont été retrouvées dans l'Autorité palestinienne, la plupart des victimes restantes se trouvant en Israël, en Iran, au Liban, au Yémen, en Espagne (Catalogne), au Royaume-Uni, en Turquie, en Arménie et à Singapour. Pour être clair, l'identification des victimes du malware dans un pays ne signifie pas nécessairement qu'une agence dans ce pays est un client de SOURGUM, car le ciblage international est courant.
Toutes les alertes Microsoft 365 Defender et Microsoft Defender for Endpoint contenant des noms de détection pour le nom du malware DevilsTongue sont des signes de compromission par le malware de SOURGUM. Nous avons inclus une liste complète des noms de détection ci-dessous pour que les clients puissent effectuer une recherche supplémentaire dans leur environnement.
Exploits
SOURGUM semble utiliser une chaîne d'exploits de navigateur et de Windows, y compris des 0-days, pour installer des logiciels malveillants sur les boîtes des victimes. Les exploits de navigateur semblent être diffusés via des URL à usage unique envoyées à des cibles sur des applications de messagerie telles que WhatsApp.
Au cours de l'enquête, Microsoft a découvert deux exploits Windows 0-day pour les vulnérabilités suivies comme CVE-2021-31979 et CVE-2021-33771, qui ont toutes deux été corrigées dans les mises à jour de sécurité de juillet 2021. Ces vulnérabilités permettent une élévation des privilèges, donnant à un attaquant la possibilité d'échapper aux bacs à sable du navigateur et d'obtenir l'exécution du code du noyau. Si les clients ont pris la mise à jour de sécurité de juillet 2021, ils sont protégés contre ces exploits.
CVE-2021-31979 corrige un débordement d'entier dans le système d'exploitation basé sur Windows NT (NTOS). Ce débordement entraîne le calcul d'une taille de tampon incorrecte, qui est ensuite utilisée pour allouer un tampon dans le pool du noyau. Un débordement de tampon se produit par la suite lors de la copie de la mémoire vers le tampon de destination plus petit que prévu. Cette vulnérabilité peut être exploitée pour corrompre un objet dans une allocation de mémoire adjacente. À l'aide des API du mode utilisateur, la disposition de la mémoire du pool de noyau peut être améliorée avec des allocations contrôlées, ce qui entraîne le placement d'un objet dans l'emplacement de mémoire adjacent. Une fois corrompu par le buffer overflow, cet objet peut être transformé en mode utilisateur pour kernel mode lecture/écriture primitive. Avec ces primitives en place, un attaquant peut alors élever ses privilèges.
CVE-2021-33771 résout une condition de concurrence dans NTOS entraînant l'utilisation après libération d'un objet noyau. En utilisant plusieurs threads de course, l'objet noyau peut être libéré et la mémoire libérée récupérée par un objet contrôlable. Comme la vulnérabilité précédente, la mémoire du pool du noyau peut être pulvérisée avec des allocations à l'aide d'API en mode utilisateur dans l'espoir d'obtenir une allocation d'objet dans la mémoire récemment libérée. En cas de succès, l'objet contrôlable peut être utilisé pour former une primitive de lecture/écriture du mode utilisateur au mode noyau et élever les privilèges.
Présentation des logiciels malveillants DevilsTongue
DevilsTongue est un logiciel malveillant multithread modulaire complexe écrit en C et C++ avec plusieurs nouvelles fonctionnalités. L'analyse est toujours en cours pour certains composants et capacités, mais nous partageons notre compréhension actuelle du malware afin que les défenseurs puissent utiliser cette intelligence pour protéger les réseaux et que d'autres chercheurs puissent s'appuyer sur notre analyse.
Pour les fichiers sur disque, les chemins PDB et les horodatages PE sont nettoyés, les chaînes et les configurations sont chiffrées et chaque fichier a un hachage unique. La principale fonctionnalité réside dans les DLL chiffrées sur disque et uniquement déchiffrées en mémoire, ce qui rend la détection plus difficile. Les données de configuration et de tâches sont séparées du logiciel malveillant, ce qui rend l'analyse plus difficile. DevilsTongue possède à la fois des fonctionnalités en mode utilisateur et en mode noyau. Il existe plusieurs nouveaux mécanismes d'évasion de détection intégrés. Toutes ces fonctionnalités prouvent que les développeurs de SOURGUM sont très professionnels, ont une vaste expérience dans l'écriture de logiciels malveillants Windows et ont une bonne compréhension de la sécurité opérationnelle.
Lorsque le logiciel malveillant est installé, une DLL de logiciel malveillant de « piratage » de première étape est déposée dans un sous-dossier de C:\Windows\system32\IME\ ; les dossiers et les noms des DLL de piratage se mélangent aux noms légitimes dans les répertoires \IME\. Les logiciels malveillants de deuxième étape chiffrés et les fichiers de configuration sont déposés dans des sous-dossiers de C:\Windows\system32\config\ avec une extension de fichier .dat. Un pilote tiers légitime et signé physmem.sys est déposé dans le dossier system32\drivers. Un fichier appelé WimBootConfigurations.ini est également supprimé ; ce fichier contient la commande pour suivre le piratage COM. Enfin, le logiciel malveillant ajoute la DLL de piratage à une clé de registre de classe COM, écrasant le chemin légitime de la DLL COM qui s'y trouvait, obtenant ainsi la persistance via le piratage COM.
À partir du piratage COM, la DLL de piratage de première étape de DevilsTongue est chargée dans un processus svchost.exe pour s'exécuter avec les autorisations SYSTEM. La technique de piratage COM signifie que la DLL d'origine qui se trouvait dans la clé de registre COM n'est pas chargée. Cela peut interrompre la fonctionnalité du système et déclencher une enquête qui pourrait conduire à la découverte du logiciel malveillant, mais DevilsTongue utilise une technique intéressante pour éviter cela. Dans sa fonction DllMain, il appelle LoadLibrary sur la DLL COM d'origine afin qu'elle soit correctement chargée dans le processus. DevilsTongue recherche ensuite dans la pile des appels l'adresse de retour de LoadLibraryExW (c'est-à-dire la fonction qui charge actuellement la DLL DevilsTongue), qui renvoie généralement l'adresse de base de la DLL DevilsTongue.
Une fois l'adresse de retour LoadLibraryExW trouvée, DevilsTongue alloue un petit tampon avec un shellcode qui place l'adresse de base de la DLL COM (imecfmup.7FFE49060000 dans la figure 1) dans le registre rax, puis passe à l'adresse de retour d'origine de LoadLibraryExW (svchost.7FF78E903BFB dans Figures 1 et 2). Dans la figure 1, la DLL COM est nommée imecfmup plutôt qu'un nom de DLL COM légitime, car certains exemples DevilsTongue ont copié la DLL COM à un autre emplacement et l'ont renommée.
Figure 1. Shellcode de modification de l'adresse de retour DevilsTongue
DevilsTongue échange ensuite l'adresse de retour LoadLibraryExW d'origine sur la pile avec l'adresse du shellcode de sorte que lorsque LoadLibraryExW le retourne, il le fasse dans le shellcode (Figures 2 et 3). Le shellcode remplace l'adresse de base DevilsTongue dans rax par l'adresse de base de la DLL COM, ce qui donne l'impression que LoadLibraryExW a renvoyé l'adresse de la DLL COM. Le processus hôte svchost.exe utilise désormais l'adresse de base de la DLL COM renvoyée comme il le ferait habituellement.
Figure 2. Pile d'appels avant l'échange de pile, LoadLibraryExW dans kernelbase retournant à svchost.exe (0x7FF78E903BFB)
Figure 3. Pile d'appels après échange de pile, LoadLibraryExW dans la base du noyau retournant à l'adresse du shellcode (0x156C51E0000 de la figure 1)
Cette technique garantit que la DLL DevilsTongue est chargée par le processus svchost.exe, ce qui donne la persistance du logiciel malveillant, mais que la DLL COM légitime est également chargée correctement, de sorte qu'il n'y a pas de changement notable dans les fonctionnalités des systèmes de la victime.
Après cela, la DLL de piratage déchiffre et charge une DLL de logiciel malveillant de deuxième étape à partir de l'un des fichiers .dat chiffrés. Le logiciel malveillant de deuxième étape décrypte un autre fichier .dat qui contient plusieurs DLL d'assistance sur lesquelles il s'appuie pour ses fonctionnalités.
DevilsTongue possède des fonctionnalités standard de logiciels malveillants, y compris la collecte de fichiers, le registre interroger, exécuter des commandes WMI et interroger des bases de données SQLite. Il est capable de voler les informations d'identification des victimes à la fois de LSASS et de navigateurs, tels que Chrome et Firefox. Il dispose également d'une fonctionnalité dédiée pour décrypter et exfiltrer les conversations de l'application de messagerie Signal.
Il peut récupérer les cookies d'une variété de navigateurs Web. Ces cookies volés peuvent ensuite être utilisés par l'attaquant pour se connecter en tant que victime à des sites Web afin de permettre la collecte d'informations supplémentaires. Les cookies peuvent être collectés à partir de ces chemins (* est un caractère générique pour correspondre à tous les dossiers) :
%LOCALAPPDATA%\Chrome\Données utilisateur\*\Cookies
%LOCALAPPDATA%\Google\Chrome\Données utilisateur\*\Cookies
%LOCALAPPDATA%\Microsoft\Windows\INetCookies
%LOCALAPPDATA%\Packages\*\AC\*\MicrosoftEdge\Cookies
%LOCALAPPDATA%\UCBrowser\User Data_i18n\*\Cookies.9
%LOCALAPPDATA%\Yandex\YandexBrowser\Données utilisateur\*\Cookies
%APPDATA%\Apple Computer\Safari\Cookies\Cookies.binarycookies
%APPDATA%\Microsoft\Windows\Cookies
%APPDATA%\Mozilla\Firefox\Profiles\*\cookies.sqlite
%APPDATA%\Opera Software\Opera Stable\Cookies
Fait intéressant, DevilsTongue semble capable d'utiliser des cookies directement depuis l'ordinateur de la victime sur des sites Web tels que Facebook, Twitter, Gmail, Yahoo, Mail.ru, Odnoklassniki et Vkontakte pour collecter des informations, lire les messages de la victime et récupérer des photos. DevilsTongue peut également envoyer des messages en tant que victime sur certains de ces sites Web, indiquant à tout destinataire que la victime a envoyé ces messages. La capacité d'envoyer des messages pourrait être militarisée pour envoyer des liens malveillants à davantage de victimes.
Parallèlement à DevilsTongue, un pilote signé tiers est déposé dans C:\Windows\system32\drivers\physmem.sys. La description du pilote est "Pilote d'accès à la mémoire physique" et il semble offrir une capacité de lecture/écriture du noyau "de par sa conception". Cela semble être abusé par DevilsTongue pour proxy certains appels d'API via le noyau pour entraver la détection, y compris la possibilité de faire apparaître certains des appels à partir d'autres processus. Les fonctions pouvant être mandatées incluent CreateProcessW, VirtualAllocEx, VirtualProtectEx, WriteProcessMemory, ReadProcessMemory, CreateFileW et RegSetKeyValueW.
Prévention et détection
Pour éviter les compromis dus aux exploits du navigateur, il est recommandé d'utiliser un environnement isolé, tel qu'une machine virtuelle, lors de l'ouverture de liens provenant de parties non fiables. L'utilisation d'une version moderne de Windows 10 avec des protections basées sur la virtualisation, telles que Credential Guard, empêche les capacités de vol d'informations d'identification LSASS de DevilsTongue. L'activation de la règle de réduction de la surface d'attaque "Bloquer les abus des pilotes signés vulnérables exploités" dans Microsoft Defender pour Endpoint bloque le pilote utilisé par DevilsTongue. La protection réseau bloque les domaines SOURGUM connus.
Opportunités de détection
Cette section est destinée à servir de guide non exhaustif pour aider les clients et les pairs du secteur de la cybersécurité à détecter le malware DevilsTongue. Nous fournissons ces conseils dans l'espoir que SOURGUM modifiera probablement les caractéristiques que nous identifions pour la détection dans leur prochaine itération du logiciel malveillant. Compte tenu du niveau de sophistication de l'acteur, cependant, nous pensons que le résultat se produirait probablement indépendamment de nos conseils publics.
Emplacements des fichiers
Les DLL de piratage se trouvent dans des sous-dossiers de \system32\ime\ avec des noms commençant par "im". Cependant, ils sont mélangés avec des DLL légitimes dans ces dossiers. Pour faire la distinction entre le malveillant et le bénin, les DLL légitimes sont signées (sur Windows 10) alors que les fichiers DevilsTongue ne le sont pas.
Exemples de chemins :
C:\Windows\System32\IME\IMEJP\imjpueact.dll
C:\Windows\system32\ime\IMETC\IMTCPROT.DLL
C:\Windows\system32\ime\SHARED\imecpmeid.dll
Les fichiers de configuration DevilsTongue, qui sont cryptés AES, se trouvent dans des sous-dossiers de C:\Windows\system32\config\ et ont une extension .dat. Les chemins exacts sont spécifiques à la victime, bien que certains noms de dossier soient communs à toutes les victimes. Comme les fichiers sont cryptés AES, tous les fichiers dont la taille mod 16 est 0 peuvent être considérés comme un fichier de configuration de logiciel malveillant possible. Les fichiers de configuration se trouvent toujours dans de nouveaux dossiers, et non dans les dossiers existants légitimes (par exemple, sous Windows 10, jamais dans \Journal, \systemprofile, \TxR, etc.).
Exemples de chemins :
C:\Windows\system32\config\spp\ServiceState\Recovery\pac.dat
C:\Windows\system32\config\cy-GB\Setup\SKB\InputMethod\TupTask.dat
C:\Windows\system32\config\config\startwus.dat
Noms de dossier couramment réutilisés dans les chemins des fichiers de configuration :
spp
SKB
curv
liste de réseau(networklist)
Licences
Procédé d'entrée(InputMethod)
Récupération(Recovery)
Le fichier .ini reg porte le nom unique WimBootConfigurations.ini et se trouve dans un sous-dossier de system32\ime\.
Exemples de chemins :
C:\Windows\system32\ime\SHARED\WimBootConfigurations.ini
C:\Windows\system32\ime\IMEJP\WimBootConfigurations.ini
C:\Windows\system32\ime\IMETC\WimBootConfigurations.ini
Le pilote Physmem est déposé dans system32 :
C:\Windows\system32\drivers\physmem.sys
Comportements
Les deux clés COM qui ont été observées étant détournées pour la persistance sont répertoriés ci-dessous avec leurs valeurs propres par défaut. Si leur DLL de valeur par défaut se trouve dans le dossier \system32\ime\, la DLL est probablement DevilsTongue.(a été vu aussi dans windows7)
HKLM\SOFTWARE\Classes\CLSID\{CF4CC405-E2C5-4DDD-B3CE-5E7582D8C9FA}\InprocServer32 = %systemroot%\system32\wbem\wmiutils.dll (valeur par défaut propre)
HKLM\SOFTWARE\Classes\CLSID\{7C857801-7381-11CF-884D-00AA004B2E24}\InProcServer32 = %systemroot%\system32\wbem\wbemsvc.dll (valeur par défaut propre)
Contenu et caractéristiques du fichier
Cette règle Yara peut être utilisée pour trouver la DLL de piratage DevilsTongue :
import "pe"
rule DevilsTongue_HijackDll
{
meta:
description = "Detects SOURGUM's DevilsTongue hijack DLL"
author = "Microsoft Threat Intelligence Center (MSTIC)"
date = "2021-07-15"
strings:
$str1 = "windows.old\\windows" wide
$str2 = "NtQueryInformationThread"
$str3 = "dbgHelp.dll" wide
$str4 = "StackWalk64"
$str5 = "ConvertSidToStringSidW"
$str6 = "S-1-5-18" wide
$str7 = "SMNew.dll" // DLL original name
// Call check in stack manipulation
// B8 FF 15 00 00 mov eax, 15FFh
// 66 39 41 FA cmp [rcx-6], ax
// 74 06 jz short loc_1800042B9
// 80 79 FB E8 cmp byte ptr [rcx-5], 0E8h ; 'è'
$code1 = {B8 FF 15 00 00 66 39 41 FA 74 06 80 79 FB E8}
// PRNG to generate number of times to sleep 1s before exiting
// 44 8B C0 mov r8d, eax
// B8 B5 81 4E 1B mov eax, 1B4E81B5h
// 41 F7 E8 imul r8d
// C1 FA 05 sar edx, 5
// 8B CA mov ecx, edx
// C1 E9 1F shr ecx, 1Fh
// 03 D1 add edx, ecx
// 69 CA 2C 01 00 00 imul ecx, edx, 12Ch
// 44 2B C1 sub r8d, ecx
// 45 85 C0 test r8d, r8d
// 7E 19 jle short loc_1800014D0
$code2 = {44 8B C0 B8 B5 81 4E 1B 41 F7 E8 C1 FA 05 8B CA C1 E9 1F 03 D1 69 CA 2C 01 00 00 44 2B C1 45 85 C0 7E 19}
condition:
filesize < 800KB and
uint16(0) == 0x5A4D and
(pe.characteristics & pe.DLL) and
(
4 of them or
($code1 and $code2) or
(pe.imphash() == "9a964e810949704ff7b4a393d9adda60")
)
}
Détections de l'antivirus Microsoft Defender
Microsoft Defender Antivirus détecte les logiciels malveillants DevilsTongue avec les détections suivantes :
Trojan:Win32/DevilsTongue.A!dha
Trojan:Win32/DevilsTongue.B!dha
Trojan:Script/DevilsTongueIni.A!dha
VirTool:Win32/DevilsTongueConfig.A!dha
HackTool:Win32/DevilsTongueDriver.A!dha
Alertes Microsoft Defender pour point de terminaison
Les alertes portant les titres suivants dans le centre de sécurité peuvent indiquer une activité de malware DevilsTongue sur votre réseau :
Détournement COM
Vol possible d'informations sensibles sur le navigateur Web
Cookies SSO volés
Requête Azure Sentinel
Pour localiser une éventuelle activité SOURGUM à l'aide d'Azure Sentinel, les clients peuvent trouver une requête Sentinel contenant ces indicateurs dans ce référentiel GitHub.
Indicateurs de compromis (IOC)
Aucun hachage de logiciel malveillant n'est partagé car les fichiers DevilsTongue, à l'exception du troisième pilote ci-dessous, ont tous des hachages uniques et ne constituent donc pas un indicateur utile de compromission.
Pilote physique
Notez que ce pilote peut être utilisé légitimement, mais s'il apparaît sur le chemin C:\Windows\system32\drivers\physmem.sys, il s'agit d'un indicateur de haute confiance de l'activité de DevilsTongue. Les hachages ci-dessous sont fournis pour le seul pilote observé en cours d'utilisation.
MD5 : a0e2223868b6133c5712ba5ed20c3e8a
SHA-1 : 17614fdee3b89272e99758983b99111cbb1b312c
SHA-256 : c299063e3eae8ddc15839767e83b9808fd43418dc5a1af7e4f44b97ba53fbd3d
Domaines
noc-service-streamer[.]com
fbcdnads[.]live
hilocake[.]info
backxercise[.]com
winmslaf[.]xyz
service-deamon[.]com
online-affiliate-mon[.]com
codeingasmylife[.]com
kenoratravels[.]com
weathercheck[.]digital
colorpallatess[.]com
library-update[.]com
online-source-validate[.]com
grayhornet[.]com
johnshopkin[.]net
eulenformacion[.]com
pochtarossiy[.]info
REF.: https://www.microsoft.com/security/blog/2021/07/15/protecting-customers-from-a-private-sector-offensive-actor-using-0-day-exploits-and-devilstongue-malware/
Classé sous :
La cyber-sécurité