※ 本ブログは、2019年7月29日にBromium Blogにポストされた Dridex’s Bag of Tricks: An Analysis of its Masquerading and Code Injection Techniquesの日本語訳です。
2019年6月初めのEmotetの活動の小康状態とAZORult以降、Dridexとランサムウェアのキャンペーンが目立つようになりました。2019年7月には、バンキング型トロイの木馬Dridexを配信するフィッシングキャンペーンを観測しました。ペイロードがBromium Secure Platform(現HP Sure Click Enterprise)によって隔離され、マルウェアをキャプチャしたことは、その感染チェーンを分析し、攻撃がどのように機能するかを理解するのに役立ちました。このブログ記事では、検知を回避するために、Dridexが5つのコードインジェクション技術を使用して合法的なWindowsプロセス(MITRE ATT&CKテクニックT1036)として自分自身を偽装する方法を紹介するために、その感染チェーンの各段階を概説します。
ふるまい分析に飛び込む前に、まずマイクロVMの中でこの最新のDridexサンプルを実行し、Bromiumがどのように攻撃を隔離することによってエンドユーザーを保護し、システムの一貫性を維持するのかをデモしてみましょう。
動画は以下の内容を含みます。:
動画は無音です。
Dridexのダウンローダーは、パスワード123で暗号化されたMicrosoft Word 97-2003のドキュメント(.DOC)として着信しました。これには、2つのVisual Basic for Applications (VBA)マクロサブルーチン、Document_Openとmainが含まれていました。マクロコードの内容を表示するには、Bromium Secure View(現HP Sure Click Secure View)内のMicrosoft WordのVBAエディタで開くことができます。
どちらのサブルーチンも軽度に難読化されていますが、ダウンローダがどのように動作するかを示す多くの文字列は、コードをデバッグしなくても識別できました。図3の左側には、マクロプロジェクトにa0woxmという名前のユーザーフォームが含まれていることがわかります。フォームの内部には、Extensible Stylesheet Language (XSL) スクリプトを含むTextプロパティが埋め込まれています。mainサブルーチンは、フォームからaXtIkNというオブジェクトを作成し、そのTextプロパティを文字列変数aHwPzGに代入します。 その後、aHwPzGを変数agvpxとともにメソッドadWspA8に渡します。文字列変数agvpxは、XSLファイル(C:\\Windows\\Temp\\\aXwZvnt48.xsl)のパスを含みます。メソッドadWspA8は、Scripting.FileSystemObjectからTextStreamオブジェクトを作成し、CreateTextFileメソッドを呼び出して、aHwPzGからファイルaXwZvnt48.xslにデータを書き込みます。
静的検知を回避するために、サブルーチンには、Windows Management Instrumentation Command line(WMIC)コマンドを参照する文字列を反転させたものが含まれていました。StrReverse関数は、マクロの実行中にこれらの文字列を反転させるために使用されます。変数 a5rk9 には値 "wmic os get /format:" が含まれており、これはシェルコマンドを構築するために変数 agvpx と結合されます。
XSLは、XMLドキュメントがどのようにフォーマットされているかを表現するために使用されるCSSに似た機能を持つ言語です。重要なのは、JScriptやVBScriptなどのスクリプト言語をサポートしているため、攻撃者はこの言語を使って悪意のあるコードを実行することができることです。通常、XSLスクリプトはWindows Script Hostを使用して実行されますが、WMICを使用して実行することもできます。
ここでは、ダウンローダはWMICを使用して、DridexペイロードをダウンロードするJScriptを含むXSLスクリプトを実行しています。この技術は、ファイルレス脅威のMicrosoftによる分類法のタイプIII攻撃に該当し、MITRE ATT&CKのT1120手法を示しています。WMICは、メモリ内でローカルおよびリモートでホストされたXSLスクリプトを処理して実行することができ、これは一般的にSquiblyTwoとして知られているテクニックです。WMICを使用すると、攻撃者は、システム上でWindows Script Hostが無効になっている場合でも、XSLファイルの内部に埋め込まれたJScriptを実行することができます。
XSLスクリプトには2つの関数が含まれています。関数aawg1は、URL hxxps://carmelavalles[.]com/site/wp-admin/chrome.binからDridex実行ファイルをダウンロードするためのHTTP GETリクエストを送信するためのXMLHTTPオブジェクトを作成します。次に、ActiveX Streamオブジェクト(ADODB.Stream)を作成し、バッファを先のHTTPリクエストから受信したレスポンスボディに設定します。 次に、配列の5番目の要素を指定して、関数axas5v9からメソッド名SaveToFileを取得します。その後、ファイル名に "c:\windows\temp\awMiOFl[...]exe "、オプション2に(adSaveCreateOverWrite)を指定して、SaveToFileメソッドを呼び出します。このオプションは、同名のファイルが既に存在する場合に、Streamオブジェクトが保存先のファイルを上書きすることを意味します。ファイルをディスクに保存した後、XSL スクリプトはそれ自身を削除します。
pestudio を使ってドロップされたペイロードを簡単に分析すると、ブラックリストに登録されたセクション名 .rdata3、.qdata、aei、および CODE2 が使用されているなど、悪意のあるものであることが示されています。
次に、別の Dridex ペイロードと比較してみたところ、どちらも同じ数のセクションを持っていることがわかりました。.textセクションを除いて、すべてのセクションのファイルサイズは同じです。これは、Dridexの配信にポリモーフィックローダーが使用されている可能性を示しています。
ドロップされたペイロードawMiofl.exe は、実行時に自身をメモリ内にアンパックし、約 9 分間のループに入ります。各ループでは、"Installing... "または "Installed "という文字列と共にOutputDebugStringWを呼び出し、その後10ミリ秒ほどSleep関数を呼び出しています。
ループを抜けると、以下のレジストリキーを列挙し、CurrentBuild, CurrentVersion, InstallTime, InstallDateなどのシステムの基本情報を収集します。
次に、awMiofl.exeは、2016年にenSiloによって発見されたAtomBombingと呼ばれる手法を使用して、explorer.exeを開き、コードを注入します。この手法は、Windowsのグローバル アトム テーブルと非同期プロシージャコール (APC) を悪用してリモート プロセスにコードを注入します。
その後、awMiofl.exeは、C:\Windows\System32ディレクトリに対し、ファイル名C:\Windows\System32\*.exeでFindFirstFileA APIを呼び出す処理を繰り返します。ファイル名は、System32ディレクトリ内のすべての.exeファイルと一致するためにワイルドカードとなっています。一致する度にファイルを開き、依存するダイナミック・リンク・ライブラリ (DLL) を読み取ります。DLL のリストにマッチした場合は、サスペンド・モードのプロセスを生成して終了します。Dridexは、一種のコードインジェクションに備えてこれを行っているのではないかと疑っていますが、我々が分析したサンプルでは、Dridexはプロセスを終了しました。
さらにペイロードは、%APPDATA%にランダムに名前を付けられたディレクトリを作成します。ディレクトリが作成されると、C:\Windows\System32からの正規のシステム実行ファイルと、Import Address Table (IAT)の実行ファイルのライブラリ依存性に一致する悪意のある64ビットDLLをフォルダにコピーします。多くのDLLハイジャッキング手法は、WindowのDLLのロード順を悪用します。デフォルトでは、DSafeDllSearchMode が無効になっている場合、DLL のロード順は以下のディレクトリの順番で必要な DLL を探します。
awMiofl.exeは悪意のあるDLLを正規の実行ファイルと同じディレクトリにコピーするので、実行ファイルを実行すると、System32の正規のものではなく、Roamingフォルダの悪意のあるDLLをロードします。
その後、awMiofl.exeは、BpnayitifvdwsというC:\Users\[Redacted]AppData\Roaming\RC17zE\EhStorAuthn.exeを毎時実行するスケジュールされたタスクを作成することで永続性を獲得します。
Explorer.exeはユーザの%TEMP%ディレクトリにバッチファイルx3un.cmdを作成し、悪意のあるDLL NqE850.tmpをドロップします。その後、cmd.exeを起動し、x3un.cmdを実行します。X3un.cmdには、ドロップしたDLLファイルNqE850.tmpとWindowsの正規のバイナリであるsystemreset.exeをSystem32ディレクトリからユーザのRoamingフォルダに新しく作成されたディレクトリC:\UsersRedacted]App\DataRoaming0l78lにコピーするコマンドが記述されています。
Explorer.exeはこのステップを数回繰り返し、異なる悪意のあるDLLと正規のWindowsバイナリをコピーします。
DLLハイジャッキングを使い、マルウェアはアンチウイルスやEDRツールを欺くことができます。これは、起動されたプロセスがMicrosoftによって署名されているためです。私たちはVirusTotalをチェックしましたが、これらのドロップされたDLLはどれもポリモーフィズムのためにハッシュが知られていませんでした。DLLロード中のアンチウイルススキャンがクリーンであることが判明した場合、AVはプロセスメモリをスキャンするまでフラグを立てません。
Explorer.exeはC:\Users\Redacted]\AppData\Roaming\0l78lsystemreset.exeという値のRunキーの下にFetkovwkmarbxというレジストリキーを作成します。これは、Windowsを起動するたびにDridexが起動し、再起動後もマルウェアが永続化することを意味します。
Explorer.exeは、リモート・プロセス・コードインジェクションおよびプロセスハロウイングを実行するために、サスペンド・モードでC:\Windows\System32ディレクトリからいくつかの正規のWindowsバイナリを生成します。
Dridexは、最後に空白を含むディレクトリを作成することで、アプリケーションのホワイトリストを回避しようとします("C:\Windows ")。このテクニックは、Windows API が最後の空白を持つ MS-DOS スタイルのパスを処理する方法を悪用しています。MS-DOS スタイルのパスを処理するとき、Windows API は RtlGetFullPathName_U と呼ばれるヘルパー関数を呼び出し、パスから末尾の空白を削除します。
Explorer.exeは、"C:\Windows \System32 "というディレクトリを作成し、Version.dllという悪意のあるDLLと共に、System32ディレクトリから正規のwhoami.exeプログラムをコピーします。そして、コマンドラインで起動します。
コマンドプロンプトで以下のコマンドを実行すると、C:\にWindowsのディレクトリが作成されますが、最後にスペースがあります:
Dridexをシステム上で動かしたままにしておくと、最終的にC:\Windows\SysWOW64からサスペンドモードでプロセスを起動します。これはコードをインジェクトするために使われます。
プロセスに渡される引数は、特定のタスクを実行することを示すために1つずつ増加されます。また、定期的な間隔で新しいバイナリ・パスでスケジュールされたタスクBpnayitifvdwsを修正し起動します。
micro-VMからキャプチャしたイベントに基づいて、Dridexが少なくとも5種類のコードインジェクションを実行していることがわかります。
SHA256(invoice.doc [Document-Word.Trojan.Encdoc] ) | 72da2959520e824a617a5a174b1bc1a8bd6d83daf83eabb5937640f1efa37bcd |
SHA256( F43A883A.doc [Document-Word.Trojan.Encdoc]) | 72da2959520e824a617a5a174b1bc1a8bd6d83daf83eabb5937640f1efa37bcd |
SHA256(aXwZvnt48.xsl [Script-JS.Downloader.Dwb]) | 6937b640269ab85594954e029f289a6bdee8b7fc2bee6177098efcb5eca7b40f |
SHA256(chrome[1].bin[Win32.Trojan.Cridex]) | c690c1e72bfe665f364cbb61c363f291f725b469e55a4c0a703cd729a5e29009 |
SHA256( awMiOFl.exe [Win32.Trojan.Cridex]) | c690c1e72bfe665f364cbb61c363f291f725b469e55a4c0a703cd729a5e29009 |
SHA256( FireFox.exe [Win32.Trojan.Kryptik]) | 08a00c9be7dd2e64e9b0f6ea85f159275c913faf0aad51884a1eeab3822af246 |
SHA256(credui.dll) | 085ccc35f1a58e74789a24286d6827914b1887f32abed20a5fa4762a83b18c39 |
SHA256(UxTheme.dll) | ead2d523c00beecc598b496c300fb5aa36424b1fe141c629208bd945bf3b7590 |
SHA256(VERSION.dll) | 8c21e72971b9233d368694697e83d89950b4a63eadb1d76132814caf46f455da |
SHA256(VERSION.dll) | 9edee5db42c9e5e717484ae8e2fb7518dfdbc171ba10c4e71a2c39efda91dc66 |
SHA256(XmlLite.dll) | 7a15c298817cd26c2078ae3fcec917970fc32d476d07ebc6ef16afd8018895ae |
SHA256(DUI70.dll) | 880de8b32751c4cc1cd203f40d1019e363095c476003677907dfcd7f62d1b8ef |
Author : Ratnesh Pandey
監訳:日本HP