- 2022/12/15
- 脅威分析レポート
【脅威分析レポート】DLLサイドローディング〜脅威アクターにより広く利用(悪用)されている攻撃手法〜
Post by : Cybereason Global SOC Team
この脅威分析レポートは「パープルチームシリーズ」の一部です。このシリーズでは、Cybereason Global Security Operations Center(GSOC)のMDR(Managed Detection and Response)チームとThreat Intelligenceチームが、広く使われている攻撃手法を調査した上で、その手法を脅威アクターがいかに利用しているかを説明するほか、攻撃を再現する方法、さらには防御者がその攻撃をいかにして検知・防御できるかを紹介します。
パープルチームシリーズのレポートには、次の3つのセクションが含まれています。
- 「レッドチーム」セクションでは、既知の攻撃手法の亜種を作成します。
- 「ブルーチーム」セクションでは、攻撃の詳細について説明した上で、実際の事例を紹介します。
- 「パープルチーム」セクションでは、攻撃の検知方法について説明します。
DLLサイドローディング攻撃
DLLサイドローディング攻撃とは、脆弱なソフトウェアを利用して悪意あるDLLをロードし、マルウェア実行の永続化とセキュリティ機構の回避を可能にするものです。
重要なポイント
- DLLサイドローディングはよく使われる手法である:攻撃者は、多くの攻撃シナリオでDLLサイドローディングを使用します。これは、脆弱なターゲットが比較的容易に見つかるためだと思われます。
- DLLサイドローディングは今後も使われ続ける:MITREのデータベースは、2017年におけるDLLサイドローディングの例を示していますが、この手法の最初のエビデンスは、より以前の時期まで遡ります。攻撃者は現在もDLLサイドローディングを使用しており、今後もこの手法を使用する可能性が高いと思われます。
- DLLサイドローディングは検知が困難な場合がある:セキュリティアナリストは、DLLサイドローディングの兆候を理解した上で、それを慎重にハンティングする必要があります。
DLLサイドローディング手法
DLLサイドローディング攻撃は、WindowsのDLL検索順序メカニズムを利用して、悪意あるペイロードを被害者の端末に埋め込んだ上で、正規のアプリケーションを実行した時にそのペイロードを起動させる手法です。脅威アクターは一般的に、この手法を利用することで、永続性、権限昇格、防御回避を実現します。この手法は、Microsoft SxS(Side by Side)ディレクトリを悪用することから、従来「DLLサイドローディング」と呼ばれていました。
サイドローディング手法が使われる理由
DLLサイドローディングには次のような重要なメリットが挙げられます。
- DLLサイドローディング攻撃は、多くの場合、正規の、信頼できる、署名された実行ファイルを最初のローダーとして使用します。
- 多くのセキュリティ製品やセキュリティ設定は、これらの信頼できる実行ファイルの多くを含む「セーフリスト」を保持しています。
- 明示的にセーフリスト化されていない場合であっても、信頼できる実行ファイルを含む検知が、高い可能性で「誤検知」としてリスト化されます。
DLLサイドローディングの開始
あらゆる種類のDLLサイドローディング攻撃が持つ課題として、攻撃者がロード時に、当該DLLが存在する必要のあるディレクトリへの「書き込み」権限を必要とすることが挙げられます。
DLL攻撃は従来、実行ファイルの不適切なマニフェストファイルを利用することで、悪意あるDLLをMicrosoft SxS(Side by Side)ディレクトリにドロップして実行するものでした。「サイドローディング」という名前はここから来ています。
攻撃者は現在、サイドローディングに使用する独自のDLLを提供する方法を採用することで、権限に関する課題を回避しています。
攻撃例
DLLサイドローディング攻撃を行う攻撃者は、たとえば下記の手順で攻撃を実施します。
- DLLサイドローディングの脆弱性を持つ、信頼できる実行ファイルを見つける。
- 正規のDLLと同じ名前を持つ悪意あるDLLを構築する。
- そのDLLと信頼できる実行ファイルを、複数の隠しファイルとして同じディレクトリにパッケージ化する。
- 悪意あるショートカット(LNK)ファイルを作成し、そのLNKファイルを使用して実行する。
‒ このLNKファイルは正規のファイルを装う。攻撃者は、ユーザーを騙すことで当該LNKファイルを実行させる。
‒ LNKのパラメータの中に信頼できる実行ファイルを含める。
‒ 信頼できる実行ファイルが起動されると、この信頼できる実行ファイルは、Windowsのファイル検索方法に基づいて、正規のDLLを見つける前に悪意あるDLLを見つけてそれをロードする。 - 攻撃に必要となるすべてのファイルをZIPファイルなどのアーカイブファイルに圧縮した後、フィッシングを通じて、同アーカイブを被害者に配信する。
既知のサイドローディング攻撃
DLLサイドローディングは、MITREが2017年から追跡している頻繁に使用される攻撃手法です。サイバーリーズンでは、下記のブログ記事や文書でこの手法を取り上げています。
- Operation CuckooBees: A Winnti Malware Arsenal Deep-Dive(英語)
- 通信事業者を狙った世界規模のサイバー攻撃:Operation SoftCell
- 署名されたOracleのプロセスをDLLハイジャッキングやMimikatzの実行に悪用する攻撃について
- その他のDLLサイドローディング攻撃の説明については、「ブルーチーム」のセクションをご覧ください。
レッドチーム:DLLサイドローディング攻撃の構築と配信
Red Canary Atomic Red Teamフレームワークのアトミックテストを使用しています。サイバーリーズンのチームは、同テストのソースコードと配信メカニズムを変更しました。
DLLサイドローディング攻撃の構築手順は次の通りです。
攻撃者は、サイドロード可能なDLLを持つ実行ファイルを手動で見つける必要がありますが、SharpDllProxyなどのツールを使用すれば、エクスポートの検知と悪意あるDLLの構築を自動化できます。
実行ファイルを見つける
サイドローディング可能なDLLの一覧は、GitHubのXForceIR SideLoadHunterリポジトリやHijack Libsプロジェクトなどから入手できます。Hijack Libsプロジェクトの詳細については、本レポートの「Hijack Libs」セクションをご覧ください。
DLLサイドローディングの脆弱性がある実行ファイルを手動で見つけるには次のようにします。
- 任意のプログラムディレクトリにある、すべての実行可能ファイルを見つける。
- これらの実行ファイルを空のディレクトリにコピーする。
- これらのファイルを実行し、エラーメッセージを確認する。
- 実行ファイルが「DLLファイルが見つかりません」というエラーメッセージを返した場合、MicrosoftのSysinternalsが提供しているProcess Monitorツールを起動し、実行ファイルを再度実行する。
- Process Monitorの出力を確認する。
実行ファイルが実行された時に、DLLファイルを同じディレクトリまたは別のディレクトリで探そうとする振る舞いを、Process Monitorで確認できた場合、この実行ファイルをDLLサイドローディング攻撃に使用できる可能性があります。
▲「Libcurl.dllが見つかりませんでした」というエラーメッセージが表示される
■例:GUP.exe
旧バージョンのGUP.exeはDLLサイドローディングの脆弱性を持っています。このファイルはWinGup用の実行ファイルです。WinGupは、Notepad++(人気のある「メモ帳」の代替アプリケーション)などに含まれているWindows実行ファイル向けの汎用アップデータです。 この実行ファイルは、通常、\Program Files\Notepad++\updater\ディレクトリに置かれています。
GUP.exeがDLLのサイドローディングを提供する可能性があるかどうかを調べるために、GUP.exeを空のディレクトリにコピーし、同ファイルを実行しました。その結果、次のようなエラーメッセージが表示されました。
The code execution cannot proceed because libcurl.dll was not found. Reinstalling the program may fix this problem.(libcurl.dllが見つからなかったため、コードの実行を続行できません。プログラムを再インストールすることで、この問題を解決できる場合があります。)
次に、Process Monitorを起動し、空のディレクトリにあるGUP.exeを再実行しました。すると、このGUP.exeファイルは、同じディレクトリにあるlibcurl.dllモジュールと、さらに複数の場所にあるlibcurl.dllモジュールを見つけようと試みました。
▲GUP.exeがlibcurl.dllを見つけようとしていることを示すProcess Monitorの出力
このスクリーンショットは、GUP.exeが同じディレクトリにあるlibcurlモジュールだけでなく、WindowsのDLL検索順序に従って複数の場所でlibcurlモジュールの検索を試みていることを示しています。
これは、GUP.exeによりロードされる独自のlibcurl.dllを作成できる可能性があることを示唆しています。
■エクスポートの決定
続いて、GUP.exeをIDA Proに読み込み、インポートアドレステーブル(IAT)を参照することで、この実行ファイルがインポートする必要がある関数とエクスポートの名前を確認しました。GUP.exeファイルはlibcurl.dllに含まれている複数のエクスポートをインポートしています。
▲GUP.exeはlibcurl.dllからのインポートを探す
これらのエクスポートについては、cURLのドキュメントを参照することで、必要に応じて関数を構築できました。
▲cURLドキュメントにある例
注:Red Canaryのアトミックテストプロジェクトのソースコードは、エクスポートが機能する必要はないことを示しています。攻撃プロセスを容易にするために、コードのヘッダーセクションでは、これらのエクスポートを宣言するだけでよいのです。
▲libcurl.dllのエクスポートを宣言するヘッダーセクション
■インプラントDLLの構築
我々は、悪意あるコマンドをDllUnregisterServer()メソッドに格納しました。このメソッドは、ロード時に、DllMain()からDLL_PROCESS_ATTACHが呼び出される際に実行されます。
▲DllUnregisterServer()メソッドに悪意あるコマンドを格納
ロード時に、この悪意あるバージョンのlibcurl.dllは、リモートサーバからMeterpreterペイロードを取得するPowerShellコマンドを実行します。
■インプラントDLLの兵器化と配信
我々は次のような攻撃経路を使用しました。
- LegitDocument.zipアーカイブがLNKショートカットファイルを開く。
- LNKショートカットファイルがcmd.exeプロセスを起動する。
- cmd.exeプロセスがGUP.exeプロセスを起動する。
- GUPプロセスが、悪意あるlibcurl.dllファイルをサイドロードする。
- 悪意あるlibcurl.dllファイルが、cmd.exeプロセスを起動する。
- cmd.exeプロセスは、powershell.exeプロセスを起動し、悪意あるコマンドをロードする。
- powershell.exeプロセスは、コマンド&コントロールセンターに接続する。
我々が辿った攻撃経路を次の図に示します。
我々は自らの攻撃を兵器化するために、ショートカット(LNK)ファイルを作成し、cmd.exeを呼び出してGUP.exeを実行するように変更しました。GUP.exeは悪意あるlibcurl.dllファイルをロードした後、Meterpreterペイロードを起動します。
LNKファイルを正規のものに似せるため、アイコンを文書ファイルのアイコンに変更し、ファイルのメタデータと思われるコメントを追加し、GUP.exeとlibcurl.dllを隠しファイルとして設定しました。その後、すべてのファイルをパスワードで保護されたZIPファイルへとパッケージ化しました。
▲LNKファイルの兵器化
▲配信準備が完了したステージングされたZIPファイル
LNKファイルを実行すると、予想通りPowershellが起動し、Meterpreterセッションが開始されました。
▲Meterpreterセッション
■生成されたプロセスの分析
このセクションでは、被害者の端末上で生成されたテレメトリデータの分析について説明します。
■プロセスツリー
我々が作成した悪意あるDLLを起動すると、複数のプロセスが起動しました。
Cybereasonのプロセスツリーでは、LNKファイルからGUP.exeが実行されたことが確認できます。GUP.exeが悪意あるDLLをロードすると、そのDLLはcmd.exeとpowershell.exeの子プロセスを展開し、それによりMeterpreterペイロードが実行できるようになりました。
▲cmd.exeとpowershell.exeの子プロセスを表示したプロセスツリー(Cybereason Defense Platformでの表示)
Cybereasonは、Powershell.exeローダーに基づいて、この振る舞いに関するMalOpを検知・生成しました。
▲Meterpreterセッションコマンドの結果として生成された子プロセス(Cybereason Defense Platformでの表示)
ブルーチーム:DLLサイドローディング攻撃の分析
DLLサイドローディング攻撃は、広く一般的に行われています。よく知られた攻撃としては、2021年のNetwireとRemcosマルウェアを使った攻撃、Kaseyaへの攻撃、2018年のOperation SoftCellが挙げられます。2022年には、Mustang PandaグループがDLLサイドローディングを利用してPlugXをロードしました。PlugXとは、脅威アクターの間で広く普及している複数のモジュールを組み込んだ「リモートアクセス型トロイの木馬(RAT)」です。
DLLサイドローディング攻撃手法がいかに普及しているかについては、Hijack Labsをご覧ください。
■NetWireとRemcos(2021年)
マルウェア | 脆弱性のあるソフトウェア | DLL名 | 備考 |
---|---|---|---|
NetWire、Remcos | OpenVPN GUI (openvpn-gui.exe) | libcrypto-1_1.dll | 米国納税者を標的にしたNetWireとRemcosマルウェア攻撃 |
2021年3月、米国の納税者を標的にした攻撃において、NetWireとRemcosという名の知られた商用RATが、税金関連の内容を含むとされる文書と共に配信されました。
▲悪意あるlibcrypto-1_1.dllが正規のopenvpn-gui.exeによりサイドロードされた結果、最終的にRemcos/NetWireがロードされる(Cybereason Defense Platformでの表示)
NetWire RATは、悪意あるコードをtracert.exeにインジェクトすることで、OpenVPNクライアント(openvpn-gui.exe)と共にlibcrypto-1_1.dllというトロイの木馬と化したDLLファイルをダウンロードします。ユーザーがこのDLLファイルを実行すると、当該マルウェアはlibcrypto-1_1.dllをOpenVPNクライアントにサイドロードすることで、NetWireに応答するnotepad.exeプロセスに対して、悪意あるコードを最終的にインジェクトします。
■Kaseyaへの攻撃(2021年)
マルウェア | 脆弱性のあるソフトウェア | DLL名 | 備考 |
---|---|---|---|
REvil | Windows Defender (MsMpEng.exe) | mpsvc.dll | サイバーリーズン vs. REvilランサムウェア:Kaseyaに対する攻撃の記録 |
2021年、とある脅威アクターは、世界中の企業に対するサプライチェーン攻撃の一環として、マネージドサービスプロバイダ(MSP)であるKaseyaを利用して、RaaS(Ransomware as a Service)プログラムであるREvilを展開しました。
REvilマルウェアは、Kaseyaのagentmon.exeエージェントを通じて最初のアクセス権を獲得した後、Microsoft Defenderの脆弱性バイナリであるMsMpEng.exeを利用して、悪意あるmpsvc.dllモジュールをサイドロードしました。
▲Kaseyaのハッキングされたエージェントが正規のmsmpeng.exeをロードすると、その結果、悪意あるバージョンのmpsvc.dllがサイドロードされる(Cybereason Defense Platformでの表示)
■Operation SoftCell(2018年)
マルウェア | 脆弱性のあるソフトウェア | DLL名 | 備考 |
---|---|---|---|
PoisonIVY (PIVY) | Samsung RunHelp (RunHelp.exe) | ssMUIDLL.dll | 通信事業者を狙った世界規模のサイバー攻撃:Operation SoftCell |
2018年にサイバーリーズンは、通信事業者を標的とした、数年前から進行中のAPT(Advanced Persistent Threat)攻撃を確認しました。この攻撃における1つのフェーズでは、侵害された環境でのアクセスを維持するためにPoisonIvy(PIVY)RATが使用されていました。
▲Runhelp.exe はssMUIDLL.dllをサイドロードした後、nslookup.exeを起動する(Cybereason Defense Platformでの表示)
この攻撃では、DLLのサイドローディング手法を使用して、信頼できる署名付きのSamsungツールであるRunHelp.exeと共にPIVYペイロードをドロップします。手順は次のようになります。
- マルウェアは、署名された正規のSamsungツールを含むNullsoft Scriptable Install System(NSIS)パッケージを作成する。
- ユーザーがNSISパッケージを実行すると、インストーラースクリプトがSamsungツールを抽出し、正規のDLLであるssMUIDLL.dllと同じ名前を持つ偽のDLLを追加する。SamsungのアプリケーションはssMUIDLL.dllを必要とする。
- Samsungツールが、PIVYステージャーを含む偽のssMUIDLL.dllファイルをロードする。
- この偽のDLLは、同じフォルダ内のBLOBペイロードを復号化する。このフォルダには、PIVYのペイロードも含まれていた。
- PIVYマルウェアは、永続化を実現するために、不正なスケジュールタスクを作成する。
■調査:Mustang PandaによるPlugXのロード
PlugXマルウェアのサンプルを分析することで、このマルウェアがDLLサイドローディング手法をいかに活用しているかを調べました。
脅威アクター | マルウェア | 脆弱性のあるソフトウェア | DLL名 |
---|---|---|---|
Mustang Panda | PlugX | Adobe Reader(AAM update.exe) | hex.dll |
中国のサイバー諜報グループであるMustang Pandaは、マルウェアPlugXの改訂版を使用して、多くの組織を標的としています。PlugXとは、複数のモジュールが埋め込まれたRATです。
Cybereason GSOCチームは、Mustang PandaグループがUSBデバイスに保存された一連のファイルを使用することでPlugXペイロードをロードした、2022年のインシデントを調査しました。
このUSBデバイスには、次の4つのファイルが含まれていました。
- D:\AdobeHelp.exe:DLLサイドローディングを引き起こす悪意ある実行ファイル
- D:\RECYCLERS.BIN\AAM Update.exe:DLLサイドローディングの脆弱性がある正規のAdobeアップデート実行ファイル
- D:\RECYCLERS.BIN\hex.dll:PlugXペイロードを実行するローダーDLLファイル
- D:\RECYCLERS.BIN\adobeupdate.dat:暗号化されたペイロード
注:これらのファイル名は異なる場合があります。多くのペイロードには.datという拡張子が付けられています。
▲この攻撃で使用されるファイル
このインシデントの攻撃チェーンは以下の通りです。
このインシデントでは、次のことが実行されます。
- 被害者がUSBキーを挿入すると、AdobeHelp.exeが起動される。
- 続いて、正規のAAM Update.exeファイルが実行される。
- AAM Update.exeが悪意あるhex.dllをサイドロードする。
- hex.dllが、adobeupdate.datに格納されているペイロードを復号化した後、PlugXをロードする。
- その後、PlugXが感染後の処理(偵察とコマンド&コントロール)を実行する。
■初期アクセス:PlugXのロード
被害者のコンピューターにアクセスするために、脅威アクターは最初のバイナリであるadobehelp.exeを実行します。Cybereason NGAVエンジンは、このバイナリを検知します。
▲Adobeupdate.exeファイルエレメント(Cybereasonプラットフォームでの表示)
このファイルの署名者である「Wuhan Aixinsen Technology Co., Ltd.」は、この例におけるその他の悪意ある実行ファイルの署名者でもあります。adobehelp.exeを実行した結果、次のようなプロセスツリーが生成されます。
▲PlugXがロードされた時のプロセスツリー(Cybereason Defense Platformでの表示)
まず、adobehelp.exeは、Adobeによるデジタル署名付きの正規バイナリであるadobeupdate.exeを実行します。ただし、adobeupdate.exeにはDLLサイドローディングの脆弱性があるため、adobeupdate.exeは、正規バージョンのhex.dllその正規フォルダからロードする代わりに、RECYCLERS.BINフォルダにあるモジュールhex.dllをサイドロードしてしまいます。
hex.dllモジュールは、実際にはPlugXローダーです。hex.dllモジュールはadobeupdate.datをロードした後、それを復号化することで、PlugXのペイロードを取得します。
下記に示すCybereasonプラットフォームのLoaded Modules画面は、adobeupdate.exeとaam update.exeの各プロセスがhex.dllファイルをロードする様子を示しています。
▲Adobeupdate.exeとaam update.exeによるhex.dllのロード(Cybereason Defense Platformでの表示)
Mustang Pandaは、後続のすべてのAdobeプロセスにおいて、悪意あるhex.dllファイルをサイドロードします。Cybereasonプラットフォームでは、hex.dllファイルがへのアクセスされたことが、adobeupdate.exeのファイルイベントにおいて表示されます。
▲adobeupdate.exe プロセスに関連するファイルイベント(Cybereason Defense Platformでの表示)
Process Monitorにもhex.dllファイルがロードされたことが表示されます。
▲Process Monitorにhex.dllのロードが表示される
hex.dllモジュールはadobeupdate.datをロードし、それを復号化することで、実際のPlugXペイロードを取得します。その後、hex.dllがPlugXをロードすると、同バイナリは別のフォルダ(C: \Users[username]\AAM Updatevlm)に異なるファイルをコピーした上で、同フォルダに含まれているAAM Update.exeを実行します。
Process Monitorには、これらのプロセスに関連するシステムイベントにおいて、暗号化されたPlugXペイロードであるadobeupdate.datファイルをadobeupdate.exeが読み込む様子が示されます。
▲adobeupdate.exeがadobeupdate.datを読み込む(Process Monitorでの表示)
永続化このサンプルは、3つのフェーズを持つ永続化のメカニズムを含んでいます。それは以下の通りです。
- 端末のメインボリューム上のフォルダにファイルをコピーする。
- ユーザーがコンピューターにログオンするたびにマルウェアが自動的に実行されるように、レジストリキーを作成する。
- 攻撃者により管理されるエンドポイントに接続することで、リモートアクセスを維持する。
■ファイルのコピー
USBデバイスを取り外した場合でも、悪意あるPlugXローダーのコピーが端末上に存在し続けるようにするために、当該バイナリは「C:\Users\[ユーザー名]\AAM Updatevlm\」という名のフォルダを作成した後、下記ファイルを同フォルダにコピーします。
- AAM Update.exe
- hex.dll
- Adobeupdate.dat
- AdobeHelp.exe
▲Adobeupdate.datはC:\Users[ユーザー名]\AAM Updatevlm\を作成し、USB デバイスからファイルをコピーする
■レジストリの操作
同バイナリは、感染先のホストのWindowsレジストリに次のパスを設定してAutorunキーを作成することで、ユーザーが同端末にログオンするたびにPlugXが実行されるようにします。
- HKCU\Software\Microsoft\Windows\CurrentVersion\Run\AAM Updatevlm
- HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run\AAM Updatevlm
▲adobeupdate.exe プロセスに関連するレジストリイベント
Process Monitorでは、この動作は次のように表示されます。
▲設定されたレジストリ値を表示するProcess Monitor
■リモート接続
リモートアクセスを維持するために、aam update.exeプロセスはIPアドレス 45.251.240[.]55に接続します。
▲aam update.exeプロセスによるネットワーク接続(Cybereason Defense Platformでの表示)
このIPアドレスはMustang Pandaと関連しており、http[:]//45.251.240[.]55:443/updateというURLへのアクセスを試みます。このマルウェアは、TCPポート443(HTTPS)、8080、8000経由で同IPアドレスに接続します。
■偵察
バイナリがUSB経由で他の機器に感染するように設定されている場合、このサンプルは、次のコマンドを使用してBATファイルを自動実行します。
C:\Windows\system32\cmd.exe /c D:\RECYCLERS.BIN\FEAC369263B0908F\tmp.bat
このBATファイルは、以下のOSおよびネットワーク偵察コマンドを発行します。
- Ipconfig
- Netstat
- Arp
- Systeminfo
- Tasklist
この操作により、次のようなプロセスツリーが生成されます。この例では、当該バイナリは-app引数付きで実行されます。
▲USB感染モードが有効な場合のOSおよびネットワーク偵察のプロセスツリー表示(Cybereason Defense Platformでの表示)
パープルチーム:検知とハンティング戦略
■DLLサイドローディングを検知する方法
DLLサイドローディング攻撃を検知するには、特定の警告サインを探すか、またはオープンソースプロジェクトを利用します。
■警告サイン
DLLサイドローディング攻撃の兆候としては、署名付きのPE(ポータブル実行)ファイル内の署名無しのDLL、疑わしいロードパス、PEのコンパイル時間とDLLのロード時間のずれを示すタイムスタンプなどが挙げられます。
■署名付きPEによる署名無しDLLのロード
正規のPEは多くの場合デジタル署名付きであり、そのPEがロードするDLLもまた多くの場合デジタル署名付きです。デジタル署名付きの正規のPEが署名無しのDLLをロードすることは、特に昇格した権限を持つプロセスが実行されている場合、攻撃の兆候となる可能性があります。
■疑わしいローディングパス
DLLサイドローディングとは、WindowsのDLL検索順序を悪用して、安全なファイルよりも先に悪意あるファイルを読み込むものです。これらのファイルのパスには、そのファイルが悪意あるものであることを示すサインが含まれていることがあります。正規の検証済みソフトウェアファイルのパスには、一般に、よく知られた企業や製品への明確な参照が含まれています。たとえば、CybereasonのDLLファイルのパスは、「C:/<ユーザー名>/programs/Cybereason/1234.dll」のようになります。DLLが“Desktop”、“Downloads”、“%programdata%”などのテキストを含むパスからロードされた場合、そのDLLは悪意あるものである可能性があります。
■コンパイル時のタイムスタンプ
各PEには、バイナリファイルがコンパイルされた時刻を示すタイムスタンプがあります。実行ファイルが持つコンパイル時のタイムスタンプと、PEによりロードされるDLLの1つが持つタイムスタンプが大きく異なる場合、そのようなロードされるDLLは悪意あるインプラントである可能性があります。
■オープンソースプロジェクトを利用する
いくつかのオープンソースプロジェクトは、DLLサイドローディングに取り組んでいます。例としては、Windows Feature Hunter、DLL Spy、Hijack Libsなどが挙げられます。
■Windows Feature Hunter
Windows Feature Hunter(WFH)は、概念実証用のPythonスクリプトです。WFHは、動的解析ツールキットであるFridaを使用することで、Windows実行ファイルにおける一般的な脆弱性、または不審な機能の特定を支援します。
WFHを使うと、大規模環境において、DLLのサイドローディングやCOM(Component Object Model)のハイジャックの可能性を自動的に特定できます。
▲WFHのヘルプ出力画面
■DLLSpy
DLLSpyは、下記に示す3つのアプローチを通じて、実行中のプロセス、サービス、静的PEにおけるDLLサイドローディング、およびその他のサイドローディング攻撃を検知します。
- 動的(Dynamic):当該プロセスがロードしたモジュールのリストをループ処理することで、各プロセスがロードしたモジュールをスキャンします。続いて、モジュールがサイドロードまたは上書きされる可能性を判断するために、DLLSpyは各モジュールが物理的にディスク上に置かれている場所に対して書き込みを試みます。
- 静的(Static):現在実行中のプロセスのバイナリファイルから、DLL名またはDLLパスを含む文字列を検索します。
- 再帰的(Recursive):過去に調査したプロセスのすべてのDLLをスキャンすることで、これらのプロセスのDLLがロードした追加DLLを探します。その後、見つかったDLLがサイドローディングに対して脆弱であるかどうかを判断します。
▲DLLSpyからの出力例
■Hijack Libs
Hijack Libsは、DLLサイドローディングやその他のDLLハイジャック攻撃に対して脆弱であるPEのリストを提供しています。このリポジトリを利用することで、防御者は、各自の環境内で標的となる可能性のあるDLLに関する情報を確保できます。
▲Hijack Libにおけるwsc.dllに関するエントリ
Cybereason GSOC MDRによる推奨事項
DLLサイドローディング攻撃を効率的に検知するために、サイバーリーズンでは次のことを推奨しています。
- Cybereasonプラットフォームで、シグネチャモードとAI(人工知能)機能を有効にし、両機能の検知モードと実行防止モードを選択すること。
- 電子メールやインターネットなど、外部から発信されるファイルに注意すること。
- Cybereason MDRチームは、特定の脅威を検知するためのカスタムハンティングクエリを提供しています。お問い合わせはこちら
2022年下半期セキュリティ予測 〜4つの脅威から紐解く、 2022年上半期の振り返りと下半期のサイバーセキュリティの展望〜
サイバーリーズンは大きな影響を及ぼす4つの脅威を2022年下半期のサイバーセキュリティ予測として取り上げました。
4つの脅威についてそれぞれ2022年上半期の動向を振り返りながら、2022年下半期のサイバーセキュリティ予測について説明します。
https://www.cybereason.co.jp/product-documents/survey-report/8823/