Uncovering a New Persistence Technique: TypeLib Hijacking with Explorer.exe
2024/10/30 SecurityOnline — MTS Innovation Center CICADA8 チームの Michael Zhmailo により、永続化のための新しい方法が発見された。この方法は、Windows COM (Component Object Model) システム内の TypeLib ライブラリをハイジャックし、explorer.exe などのプロセスを具体的にターゲットにして、ステルス性の高い永続的なコード実行を実現するものだ。

従来の永続化の手法である、レジストリ キー/スケジュールタスク/AutoRun フォルダーなどはよく知られており、厳重に監視されている。Zhmailo も、「これらの従来からの方法は、防御側によく知られているため、簡単に検出できる」と述べている。しかし、彼は、未知のアプローチを検出する必要性に駆り立てられ、長年にわたり Windows で用いられているコンポーネントである、COM システムに注目した。

この手法の核心は、COM クラスとインターフェイスに関する重要な情報を取り込んだ、TypeLib の悪用にある。この魔法は、LoadTypeLib() 関数で発生しする。通常において、この関数は、レジストリ内の指定されたパスから TypeLib ライブラリをロードしている。
そして Zhmailo が発見したのは、”explorer.exe” が LoadTypeLib() 関数を呼び出し、モニカに必要なレジストリ キーをハイジャックすると、そのモニカが explorer.exe 内でインスタンス化され、そのコードが実行されるというチェーンである。
それが示すのは、”explorer.exe” 内でコード実行が可能になるという点だ。このプロセスは、オペレーティング・システムで自動的に開始され、途切れることのない永続性を確立する。

Zhmailo のチームは、悪用可能な TypeLib の検出を支援するために、脆弱なレジストリ・エントリの検出を自動化する、TypeLibWalker というツールを作成した。彼らのレポートには、「このツールを使用すると、ハイジャックされる可能性のある、脆弱なレジストリ・エントリを検出するプロセスを自動化できる。つまり、それを知っている攻撃者は、上書き可能な TypeLib パスを特定し、レジストリの変更を手動で監視することなく、ステルス的な永続性を実現できる」と記されている。
Explorer の TypeLib をハイジャックすることで、ステルス性と継続性を確保した形の侵害が可能になるとのことです。Windows の COM クラスは、たぶん Win 95 のあたりから在るのではないかと思いますが、こうしたレガシー製品を抱える Microsoft も大変ですね。とは言え、それらのレガシーの積み重ねの上に、いまのポジションがあるわけですから、ここは頑張ってほしいところです。よろしければ、2024/08/07 の「Microsoft の Security First:すべてにおいてセキュリティが優先する方針を明示」を、ご参照ください。
You must be logged in to post a comment.