EDRを回避するためのスター・ウォーズのジェダイ・マインド・トリック
スター・ウォーズファンの方なら知っていると思いますが、「スター・ウォーズ エピソード4」の中で、オビ=ワンが「マインド・トリック」を使ってストーム・トルーパーを欺き、ルークと彼がR2-D2とC-3POを連れて検問を通過する場面がありました(実際にはストーム・トルーパーが探していたドロイドだったにも関わらず)。
これと同じように、経験豊富なサイバー犯罪者は、多くのセキュリティツール(EDRソリューションを含む)を欺き、悪意のあるシェルコードが検知されずに通過できるような「ジェダイ・マインド・トリック」を独自に開発しました。攻撃者は、検知されないようにしながら損害を与えるために、迂回テクニックを使うことが多くなっています。
この記事では、さまざまな回避方法を分析した上で、攻撃者があなたの環境に侵入しないようにするための防御方法も提案します。
攻撃者がEDRをバイパスするための3つの方法
以下は、攻撃者がEDRソリューションを回避するための3つの方法です。AMSIバイパス、アンフック、リフレクティブDLLロードです。各手法の詳細と、Deep InstinctがこれらのEDRバイパス手法の防止にどのように役立つかをご覧ください。
1. AMSI バイパス
AMSI(Anti-Malware Scan Interface)は、サードパーティのマルウェア対策ソリューションが、PowerShell、スクリプトエンジン、.NETフレームワーク、WMIなどのMicrosoftコンポーネントやアプリケーションを可視化できるようにするMicrosoftのフレームワークです。EDR ソリューションは、このフレームワークを使用して、ファイル、メモリ、ストリームをスキャンし、悪意のあるペイロードを検知します。
これらのコンポーネットやアプリケーションは、サイバー犯罪者がWindowsデバイスに対する攻撃を仕掛ける際に頻繁に使用されるため、より高度な攻撃者が攻撃を成功させるためにAMSIを回避する方法を見つけようとすることは理にかなっています。
AMSIを回避するための方法として、リフレクション、COMサーバーのハイジャック、メモリパッチなど、攻撃者が利用可能な手法がすでにいくつか発見されています。AMSIを回避する方法を用いた最近の攻撃の例として、 Ant Tesla リモートアクセス型トロイの木馬 (RAT) があり、メモリパッチ法を用いて、ステージ2ローダーと最終ペイロードの検知を回避しています。
AMSIのバイパス手法を防ぐには?
これはとても怖いことだと思いませんか?マイクロソフトがエンドポイントセキュリティを回避できないようにするために作成したインターフェースそのものが、今や回避されつつあるのです。
Deep Instinctは、「メモリ内の保護」機能を使用して、AMSIを回避しようとするプロセスを終了させることで、AMSIのバイパス手法を防止できます。AMSIのバイパス手法とセキュリティツールの対応についての詳細は、Black Hatのセッション「AMSI Unchained」のスライドをご覧ください。
2. アンフック
アンフッキングの手法を理解するためには、「フッキング」とは何かということを基本的に理解しておく必要があります。API(アプリケーションプログラミングインターフェース)とは、コンピュータシステム上で物事を実現するためにコードが使用されるインターフェースのことです。Windowsには、システムやカーネルレベルへの直接アクセスを必要とする命令を実行するために呼び出すことができるAPI(syscallなど)のセットがあります。前の攻撃方法で述べたように、ほとんどのEDRソリューションは、ゲートウェイであるntdll.dllに「フック」して、メモリへの疑わしい呼び出しを監視することで利用しています。
アンフッキングとは、Windowsがプロセス起動時にEDRフックバージョンをロードした後に、攻撃者がフックされていない新鮮なntdll.dllをロードさせる技法のことを指します。これによって、EDRは実行中のコードに気づくことができず、APIコールのリターンアドレスを監視できなくなるため、製品として機能しなくなります。徹底したハッカーであれば、さらに作業の最後にEDRを「再フック」させることで、自分たちの攻撃の痕跡を消すことまでします。フック解除の仕組みについては、EDRをバイパスして認証情報をダンプする「red teamの記事(英語)」 で詳しく解説しています。
アンフッキングを防ぐには?
ダイレクトシステムコールと同様に、アンフックという手法は、EDRがその仕事をするのを妨害することによって、検知を回避しようとします。Deep Instinctは、これらのメモリ領域への変更を監視することにより、エージェントのフックに対する変更の試みを防ぐことでこの問題に対処しています。これにより、関連するメモリ領域にアクセスしようとする試みは、悪意があると判断され、阻止されることになります。
3. リフレクティブDLLロード
リフレクティブDLLロードは、リモートコードインジェクションの一種で、攻撃者がディスクからDLLをロードする代わりに、既存のプロセスにメモリからDLLをロードする手法です。EDRソリューションは通常、ディスクから読み込まれるDLLを監視してシステムを保護するため、リフレクティブDLLロードは、EDRのレーダーから隠れて静かに活動できる形になります。この手法は、すでに説明した他の手法と組み合わせて使用されることが多く、現代の攻撃者のツールキットの大部分を占める Cobalt Strike および Metasploit フレームワークでも多用されています。
Reflective DLLを防ぐには?
Deep Instinctは、Reflective DLLのロードに使用されるローカルメモリ領域の割り当てを監視し、それらのメモリ領域からのPE(ポータブル実行ファイル)のロードの試みを阻止することにより、この手法に対する防御を提供します。図2は、この種の攻撃を防止するDeep Instinctの例を示しています。
EDRにとって、これらのバイパス・トリックが持つ意味とは?
ここまで、洗練されていないハッカーでも簡単に見つけ、実行することができるEDRバイパス手法の一例について見てきました。EDRの強みは、脅威が環境に侵入した後に悪意のある行動を検知することですが、検知レーダー自体に引っかからなくなっては意味がありません。そもそもランサムウェアのような高度な攻撃を阻止するには検知して対処するアプローチでは限界があります。
私たちはEDRの導入自体に反対しているわけではありません。目指すべきアプローチとしてはまず有効な予防が先にあるべきだと言っているのです。既知、未知、ランサムウェア、ゼロデイなどの脅威を阻止するためには、それらに対して有効な予防を最初の防御ラインとする必要があります。EDRソリューションは、既知の悪意のある脅威や、データが盗まれ、被害が発生した場合に、それらの攻撃を分析したり特定する作業には優れていますが、未知の脅威がエンドポイント、サーバー、またはストレージに侵入する前に阻止するという真の予防との間には大きなギャップが存在します。
私たちは今、攻撃者がセキュリティ制御を回避することにますます巧みになっていくまさにターニングポイントにいると言えます。EDRだけでは、最先端の脅威を阻止することはできません。 AIやディープラーニングを採用したソリューションの進歩は、こうした「ジェダイ・マインド・トリック」から身を守るための武器となり、未知のマルウェア、ランサムウェア、ゼロデイ脅威の環境での実行を阻止してくれます。これらの高度な脅威が暗号化、データ流出、または潜伏活動などを行う前に停止することで、ますます複雑でインパクトが大きくなりつつある脅威環境において組織が求めるセキュリティが実現できます。その結果、リスクが低減し、SOCの効率が向上し、セキュリティスタック全体の有効性を高めることができるでしょう。
攻撃者にEDRを回避されないようにしましょう。より詳しく知りたい方は、こちらからお問い合わせまたは 製品デモをリクエストください。
Further Reading:
- https://www.deepinstinct.com/ja/blog/8-reasons-why-edr-is-not-enough
- https://www.deepinstinct.com/ja/blog/evading-antivirus-detection-with-inline-hooks
- https://www.deepinstinct.com/ja/blog/cobalt-strike-post-exploitation-attackers-toolkit
参考文献
Agent Tesla Trojan ‘Kneecaps’ Microsoft’s Anti-Malware Interface
https://threatpost.com/agent-tesla-microsoft-asmi/163581/
A new BluStealer Loader Uses Direct Syscalls to Evade EDRs
https://blog.minerva-labs.com/a-new-blustealer-loader-uses-direct-syscalls-to-evade-edrs
BluStealer Malware Targets Cookies, Passwords, and Cryptocurrency Wallets
https://www.cyclonis.com/bluestealer-malware-targets-cookies-passwords-cryptocurrency-wallets/
Bypassing Cylance and other AVs/EDRs by Unhooking Windows APIs
https://www.ired.team/offensive-security/defense-evasion/bypassing-cylance-and-other-avs-edrs-by-unhooking-windows-apis
Cobalt Strike 4.4: The One with the Reconnect Button
https://www.cobaltstrike.com/blog/cobalt-strike-4-4-the-one-with-the-reconnect-button/
DLL Injection
https://pentestlab.blog/2017/04/04/dll-injection/