ゼロデイ エクスプロイトと DevilsTongue マルウェアを使用して、民間部門の攻撃者から顧客を保護する

news

Microsoft Threat Intelligence Center (MSTIC) は、Microsoft Security Response Center (MSRC) とともに、民間部門の攻撃者 (PSOA) を発見しました。これは、現在パッチが適用されている Windows 0-day エクスプロイト ( CVE-2021 -31979およびCVE-2021-33771 )。

民間部門の攻撃者は、標的のコンピューター、電話、ネットワーク インフラストラクチャ、およびその他のデバイスにハッキングするために、多くの場合、世界中の政府機関に対して、サービスとしてのハッキング パッケージでサイバー兵器を製造および販売する民間企業です。これらのハッキング パッケージでは、通常、政府機関がターゲットを選択し、実際の操作を実行します。これらの企業が使用するツール、戦術、および手順は、攻撃の複雑さ、規模、および巧妙さを増すだけです。私たちはこれらの脅威を真剣に受け止め、パートナーと協力してお客様のために最新の保護を構築するために迅速に行動してきました。

MSTIC は、SOURGUM がイスラエルを拠点とする民間部門の攻撃者であると考えています。この作業を開始したマルウェアのサンプルと調査中の協力について、トロント大学の Munk School の Citizen Lab に感謝します。 Citizen Lab はブログで、SOURGUM が Candiru として一般に知られているイスラエルの会社であることを確信を持って主張しています。 サードパーティのレポートによると、Candiru は「コンピューターやサーバーに侵入するために使用されるハッキング ツール」を作成しています

Microsoft on the Issues ブログで共有したように、Microsoft と Citizen Lab は協力して、政治家、人権活動家、ジャーナリスト、学者、大使館職員、および政治的反体制派。これらの攻撃を制限するために、Microsoft は、 DevilsTongueと呼ばれるこの独自のマルウェアに対する保護を作成し、製品に組み込みました。これらの保護をセキュリティ コミュニティと共有して、この脅威に共同で対処し、軽減できるようにしました。また、攻撃者が高度に洗練されたマルウェアを配信するために使用した関連するエクスプロイトから Windows のお客様を保護するソフトウェア アップデートも発行しました。

SOURGUM 被害者学

メディアの報道 ( 1、2、3 ) は、 PSOAがサービスとしてのハッキング パッケージで Windows エクスプロイトとマルウェアを政府機関に販売することが多いことを示しています。ウズベキスタン、アラブ首長国連邦、サウジアラビアの代理店は、Candiru の以前の顧客とされるリストの中に含まれています。したがって、これらの機関は、標的とする相手を選択し、サイバー作戦を実行する可能性があります。

Microsoft は、SOURGUM のマルウェアの被害者を 100 人以上特定しており、これらの被害者は、さまざまな政府機関がターゲットを選択していると考えられる場合に予想されるように、地理的に多様です。犠牲者の約半数はパレスチナ当局で発見され、残りの犠牲者のほとんどはイスラエル、イラン、レバノン、イエメン、スペイン(カタロニア)、イギリス、トルコ、アルメニア、シンガポールに住んでいました。明確にするために言うと、ある国でマルウェアの被害者が特定されたからといって、その国の機関が SOURGUM の顧客であるとは限りません。国際的なターゲット設定が一般的だからです。

DevilsTongue マルウェア名の検出名を含むMicrosoft 365 DefenderおよびMicrosoft Defender for Endpointアラートは、SOURGUM のマルウェアによる侵害の兆候です。お客様が環境で追加の検索を実行できるように、検出名の包括的なリストを以下に含めました。

エクスプロイト

SOURGUM は、一連のブラウザと Windows エクスプロイト (ゼロデイを含む) を使用して、被害者のボックスにマルウェアをインストールしているようです。ブラウザのエクスプロイトは、WhatsApp などのメッセージング アプリケーションのターゲットに送信される使い捨ての URL を介して提供されるようです。

調査中に、Microsoft は CVE-2021-31979 および CVE-2021-33771 として追跡された脆弱性に対する 2 つの Windows ゼロデイ エクスプロイトを発見しました。これらは両方とも 2021 年 7 月のセキュリティ更新プログラムで修正されています。これらの脆弱性により権限昇格が可能になり、攻撃者はブラウザのサンドボックスを回避してカーネル コードを実行できるようになります。 2021 年 7 月のセキュリティ更新プログラムを適用したお客様は、これらの悪用から保護されています。

CVE-2021-31979は、Windows NT ベースのオペレーティング システム (NTOS) 内の整数オーバーフローを修正します。このオーバーフローにより、誤ったバッファー サイズが計算され、カーネル プールにバッファーを割り当てるために使用されます。その後、メモリを予想よりも小さいコピー先バッファにコピーしているときに、バッファ オーバーフローが発生します。この脆弱性を利用して、隣接するメモリ割り当て内のオブジェクトを破損することができます。ユーザー モードから API を使用すると、制御された割り当てでカーネル プールのメモリ レイアウトを調整できるため、隣接するメモリ位置にオブジェクトが配置されます。バッファ オーバーフローによって破損すると、このオブジェクトはユーザー モードからカーネル モードへの読み取り/書き込みプリミティブに変わる可能性があります。これらのプリミティブを配置すると、攻撃者は権限を昇格できます。

CVE-2021-33771は、カーネル オブジェクトの use-after-free を引き起こす NTOS 内の競合状態に対処します。複数のレーシング スレッドを使用することで、カーネル オブジェクトを解放し、解放されたメモリを制御可能なオブジェクトによって再利用できます。以前の脆弱性と同様に、最近解放されたメモリ内にオブジェクトの割り当てが行われることを期待して、ユーザー モード API を使用してカーネル プール メモリに割り当てをスプレーすることができます。成功した場合、制御可能なオブジェクトを使用して、ユーザー モードからカーネル モードへの読み取り/書き込みプリミティブを形成し、特権を昇格できます。

DevilsTongue マルウェアの概要

DevilsTongue は、C および C++ で記述された複雑なモジュラー マルチスレッド マルウェアで、いくつかの新しい機能を備えています。一部のコンポーネントと機能の分析はまだ進行中ですが、防御側がこのインテリジェンスを使用してネットワークを保護し、他の研究者が分析に基づいて構築できるように、マルウェアに関する現在の理解を共有しています。

ディスク上のファイルの場合、PDB パスと PE タイムスタンプがスクラブされ、文字列と構成が暗号化され、各ファイルに一意のハッシュが含まれます。主な機能は、ディスク上で暗号化され、メモリ内でのみ復号化される DLL に存在するため、検出がより困難になります。構成とタスクのデータはマルウェアから分離されているため、分析が難しくなります。 DevilsTongue には、ユーザー モードとカーネル モードの両方の機能があります。いくつかの新しい検出回避メカニズムが組み込まれています。これらの機能はすべて、SOURGUM の開発者が非常に専門的であり、Windows マルウェアの作成に豊富な経験があり、運用上のセキュリティを十分に理解している証拠です。

マルウェアがインストールされると、第 1 段階の「ハイジャック」マルウェア DLL がC:Windowssystem32IMEのサブフォルダーに投下されます。ハイジャック DLL のフォルダと名前は、 IMEディレクトリ内の正当な名前と混同されます。暗号化された第 2 段階のマルウェアと構成ファイルは、ファイル拡張子が.datC:Windowssystem32configのサブフォルダーにドロップされます。サード パーティの正当な署名付きドライバーphysmem.syssystem32driversフォルダーにドロップされます。 WimBootConfigurations.iniというファイルも削除されます。このファイルには、COM ハイジャックを追跡するためのコマンドが含まれています。最後に、マルウェアはハイジャック DLL を COM クラス レジストリ キーに追加し、そこにあった正当な COM DLL パスを上書きし、 COM ハイジャックによる永続性を実現します。

COM ハイジャックから、DevilsTongue の第 1 段階のハイジャック DLL がsvchost.exeプロセスに読み込まれ、SYSTEM 権限で実行されます。 COM ハイジャック手法は、COM レジストリ キーにあった元の DLL が読み込まれないことを意味します。これにより、システムの機能が破壊され、マルウェアの発見につながる可能性のある調査が開始される可能性がありますが、DevilsTongue はこれを回避するために興味深い手法を使用しています。そのDllMain関数では、元の COM DLL のLoadLibraryを呼び出して、プロセスに正しく読み込まれるようにします。次に、DevilsTongue はコール スタックを検索して、 LoadLibraryExW (つまり、DevilsTongue DLL を現在ロードしている関数) の戻りアドレスを見つけます。これは通常、DevilsTongue DLL のベース アドレスを返します。

LoadLibraryExWの戻りアドレスが見つかると、DevilsTongue はシェルコードを使用して小さなバッファーを割り当て、COM DLL のベース アドレス (図 1 のimecfmup.7FFE49060000 ) をraxレジスタに格納し、 LoadLibraryExWの元の戻りアドレス ( svchost.7FF78E903BFB内) にジャンプします。図 1 および 2)。図 1 では、一部の DevilsTongue サンプルが COM DLL を別の場所にコピーして名前を変更したため、COM DLL は正規の COM DLL 名ではなくimecfmupという名前になっています。

図 1. DevilsTongue のリターン アドレス変更シェルコード

次に、DevilsTongue は、スタック上の元のLoadLibraryExWの戻りアドレスをシェルコードのアドレスと交換し、 LoadLibraryExWが戻ったときにそれをシェルコードに挿入します (図 2 および 3)。シェルコードは、 raxの DevilsTongue ベース アドレスを COM DLL のベース アドレスに置き換え、 LoadLibraryExWが COM DLL のアドレスを返したように見せます。 svchost.exeホスト プロセスは、返された COM DLL ベース アドレスを通常どおり使用するようになりました。

図 2. スタック スワップ前のコール スタック、カーネルベースの LoadLibraryExW が svchost.exe (0x7FF78E903BFB) に戻る

図 3. スタック スワップ後のコール スタック、カーネルベースの LoadLibraryExW がシェルコード アドレス (図 1 の 0x156C51E0000) に戻る

この手法により、DevilsTongue DLL がsvchost.exeプロセスによって読み込まれ、マルウェアの持続性が確保されますが、正当な COM DLL も正しく読み込まれるため、被害者のシステムの機能に目立った変化はありません。

この後、ハイジャック DLL は、暗号化された.datファイルの 1 つから第 2 段階のマルウェア DLL を復号化してロードします。第 2 段階のマルウェアは、機能のために依存する複数のヘルパー DLL を含む別の.datファイルを復号化します。

DevilsTongue には、ファイル収集、レジストリ クエリ、WMI コマンドの実行、SQLite データベースのクエリなど、標準的なマルウェア機能があります。 LSASS と、Chrome や Firefox などのブラウザーの両方から被害者の資格情報を盗むことができます。また、 Signalメッセージング アプリからの会話を解読して盗み出すための専用機能も備えています。

さまざまな Web ブラウザーから Cookie を取得できます。これらの盗まれた Cookie は、後で攻撃者が被害者として Web サイトにサインインするために使用され、さらなる情報収集を可能にします。 Cookie は次のパスから収集できます ( * は任意のフォルダーに一致するワイルドカードです)。

  • %LOCALAPPDATA%ChromiumUser Data*Cookies
  • %LOCALAPPDATA%GoogleChromeUser Data*Cookies
  • %LOCALAPPDATA%MicrosoftWindowsINetCookies
  • %LOCALAPPDATA%Packages*AC*MicrosoftEdgeCookies
  • %LOCALAPPDATA%UCBrowserUser Data_i18n*Cookies.9
  • %LOCALAPPDATA%YandexYandexBrowserUser Data*Cookies
  • %APPDATA%Apple ComputerSafariCookiesCookies.binarycookies
  • %APPDATA%MicrosoftWindowsCookies
  • %APPDATA%MozillaFirefoxProfiles*cookies.sqlite
  • %APPDATA%Opera SoftwareOpera StableCookies

興味深いことに、DevilsTongue は、Facebook、Twitter、Gmail、Yahoo、Mail.ru、Odnoklassniki、Vkontakte などの Web サイトで被害者のコンピューターから直接 Cookie を使用して、情報を収集し、被害者のメッセージを読み、写真を取得できるようです。 DevilsTongue は、これらの Web サイトの一部で被害者としてメッセージを送信することもでき、受信者には被害者がこれらのメッセージを送信したように見えます。メッセージを送信する機能は、悪意のあるリンクをより多くの被害者に送信するために兵器化される可能性があります。

DevilsTongue と並んで、サードパーティの署名付きドライバーがC:Windowssystem32driversphysmem.sysにドロップされます。ドライバの説明は「物理メモリ アクセス ドライバ」であり、「設計による」カーネルの読み取り/書き込み機能を提供するようです。これは、DevilsTongue によって悪用され、カーネルを介して特定の API 呼び出しをプロキシし、検出を妨げているようです。これには、呼び出しの一部を他のプロセスから出現させる機能が含まれます。プロキシできる関数には、 CreateProcessW、VirtualAllocEx、VirtualProtectEx、WriteProcessMemory、ReadProcessMemory、CreateFileW 、およびRegSetKeyValueWが含まれます。

予防と検出

ブラウザーのエクスプロイトによる侵害を防ぐために、信頼できない関係者からのリンクを開くときは、仮想マシンなどの隔離された環境を使用することをお勧めします。 Credential Guard などの仮想化ベースの保護を備えた最新バージョンの Windows 10 を使用すると、DevilsTongue の LSASS 資格情報を盗む機能を防ぐことができます。 Microsoft Defender for Endpoint で攻撃面の削減ルール「悪用された脆弱な署名済みドライバーの悪用をブロックする」を有効にすると、DevilsTongue が使用するドライバーがブロックされます。 ネットワーク保護は、既知の SOURGUM ドメインをブロックします。

検出の機会

このセクションは、サイバーセキュリティ業界の顧客や同業者が DevilsTongue マルウェアを検出するのに役立つ非網羅的なガイドとして機能することを目的としています。このガイダンスは、SOURGUM がマルウェアの次の反復で検出するために特定した特性を変更する可能性が高いことを期待して提供しています。ただし、攻撃者の洗練度を考えると、公開ガイダンスに関係なく結果が生じる可能性が高いと考えています。

ファイルの場所

ハイジャック DLL は、 system32imeのサブフォルダーにあり、名前は「 im」で始まります。ただし、それらはそれらのフォルダー内の正当な DLL と混合されています。悪意のあるものと無害なものを区別するために、正規の DLL は (Windows 10 で) 署名されていますが、DevilsTongue ファイルは署名されていませんパスの例:

  • C:WindowsSystem32IMEIMEJPimjpueact.dll
  • C:Windowssystem32imeIMETCIMTCPROT.DLL
  • C:Windowssystem32imeSHAREDimecpmeid.dll

 AES で暗号化された DevilsTongue 構成ファイルは、 C:Windowssystem32configのサブフォルダーにあり、拡張子は.datです。一部のフォルダ名は被害者間で共通ですが、正確なパスは被害者固有のものです。ファイルは AES で暗号化されているため、サイズ mod 16 が 0 のファイルは、マルウェア構成ファイルの可能性があると見なすことができます。構成ファイルは、正当な既存のフォルダーではなく、常に新しいフォルダーにあります (たとえば、Windows 10 では、Journal、systemprofile、TxR などには決してありません)。パスの例:

  • C:Windowssystem32configsppServiceStateRecoverypac.dat
  • C:Windowssystem32configcy-GBSetupSKBInputMethodTupTask.dat
  • C:Windowssystem32configconfigstartwus.dat

構成ファイルのパスで一般的に再利用されるフォルダー名:

  • SKB
  • カーブ
  • ネットワークリスト
  • ライセンス
  • 入力方式
  • 回復

.ini reg ファイルには、一意の名前WimBootConfigurations.iniがあり、 system32imeのサブフォルダーにあります。パスの例:

  • C:Windowssystem32imeSHAREDWimBootConfigurations.ini
  • C:Windowssystem32imeIMEJPWimBootConfigurations.ini
  • C:Windowssystem32imeIMETCWimBootConfigurations.ini

Physmem ドライバーは system32 にドロップされます。

  • C:Windowssystem32driversphysmem.sys

行動

持続性のために乗っ取られていることが確認されている 2 つの COM キーを、デフォルトのクリーン値とともに以下に示します。デフォルト値の DLL がsystem32imeフォルダにある場合、その DLL はおそらく DevilsTongue です。

  • HKLMSOFTWAREClassesCLSID{CF4CC405-E2C5-4DDD-B3CE-5E7582D8C9FA}InprocServer32 = %systemroot%system32wbemwmiutils.dll (クリーンなデフォルト値)
  • HKLMSOFTWAREClassesCLSID{7C857801-7381-11CF-884D-00AA004B2E24}InProcServer32 = %systemroot%system32wbemwbemsvc.dll (クリーンなデフォルト値)

ファイルの内容と特徴

この Yara ルールを使用して、DevilsTongue ハイジャック DLL を見つけることができます。

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.oldwindows" 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")
)
}

Microsoft Defender ウイルス対策の検出

Microsoft Defender ウイルス対策は、次の検出で DevilsTongue マルウェアを検出します。

  • Trojan:Win32/DevilsTongue.A!dha
  • トロイの木馬:Win32/DevilsTongue.B!dha
  • Trojan:Script/DevilsTongueIni.A!dha
  • VirTool:Win32/DevilsTongueConfig.A!dha
  • ハックツール:Win32/ DevilsTongueDriver.A !dha

Microsoft Defender for Endpoint アラート

セキュリティ センターの次のタイトルのアラートは、ネットワーク上での DevilsTongue マルウェア アクティビティを示している可能性があります。

  • COM ハイジャック
  • 機密性の高い Web ブラウザ情報の盗難の可能性
  • 盗まれた SSO Cookie 

Azure Sentinel クエリ

Azure Sentinel を使用して考えられる SOURGUM アクティビティを見つけるために、お客様は、このGitHub リポジトリでこれらのインジケーターを含む Sentinel クエリを見つけることができます。

侵害の痕跡 (IOC)

以下の 3 番目の部分のドライバーを除く DevilsTongue ファイルはすべて固有のハッシュを持っているため、マルウェア ハッシュは共有されていないため、侵害の有用な指標にはなりません。

Physmem ドライバー

このドライバーは合法的に使用されている可能性がありますが、パスC:Windowssystem32driversphysmem.sysにある場合は、DevilsTongue アクティビティの信頼性の高い指標であることに注意してください。以下のハッシュは、使用が確認された 1 つのドライバーに対して提供されます。

  • MD5: a0e2223868b6133c5712ba5ed20c3e8a
  • SHA-1: 17614fdee3b89272e99758983b99111cbb1b312c
  • SHA-256: c299063e3eae8ddc15839767e83b9808fd43418dc5a1af7e4f44b97ba53fbd3d

ドメイン

  • noc-service-streamer[.]com
  • fbcdnads[.]ライブ
  • ヒロケーキ[.]情報
  • backxercise[.]com
  • winmslav[.]xyz
  • サービスデーモン[.]com
  • online-affiliate-mon[.]com
  • codeingasmylife[.]com
  • kenoratravels[.]com
  • デジタルウェザーチェック[.]
  • colorpallates[.]com
  • ライブラリ更新[.]com
  • online-source-validate[.]com
  • グレイホーネット[.]com
  • ジョンショップキン[.]ネット
  • オイレンフォルマシオン[.]com
  • pochtarossiy[.]info

参考: https ://www.microsoft.com/en-us/security/blog/2021/07/15/protecting-customers-from-a-private-sector-offensive-actor-using-0-day-exploits- and-devilstongue-マルウェア/

Comments

Copied title and URL