[レポート]エンドポイント・セキュリティか、エンド・オブ・セキュリティか? Trend Micro Apex Oneの攻略 – CODE BLUE 2023 #codeblue_jp

CODE BLUE 2023で行われた「エンドポイント・セキュリティか、エンド・オブ・セキュリティか? Trend Micro Apex Oneの攻略」というセッションのレポートです。
2023.11.08

こんにちは、臼田です。

みなさん、セキュリティ対策してますか?(挨拶

今回はCODE BLUE 2023で行われた以下のセッションのレポートです。

エンドポイント・セキュリティか、エンド・オブ・セキュリティか? Trend Micro Apex Oneの攻略

企業のセキュリティ強化のために設計されたEDR(Endpoint Detection and Response)は、適切にデプロイされない場合、、セキュリティの脅威となる可能性がある。

この講演では、Trend Micro Apex One EDRの実装上の問題を悪用し、Windows上でローカル権限昇格をする方法を紹介する。われわれの研究では、Apex Oneのセキュリティエージェントと、システムサービス間のIPC(プロセス間通信)に焦点を当て、アーキテクチャ設計と実装の問題を探った。

調査中、20件以上のローカル権限昇格の脆弱性を発見し報告している。これらの脆弱性が修正された後も、開発者がWindowsのメカニズムに精通していないために、これらのパッチを回避することができる。

Apex Oneのアーキテクチャ上の問題を掘り下げることで、Apex OneのIPC検証メカニズムの進化を解明し、Windows APIの絶妙な抜け穴を明らかにした。また、これらの脆弱性の根本的な原因と攻撃テクニックについても共有する。

この講演を通じて、システムサービスにおける潜在的なセキュリティの問題を開発者が深く理解することで、セキュリティ製品を開発する際に、より厳密に実践されることを期待する。

Presented by : シィフォン・ペン - Shih-Fong Peng リン・ウー - Ling Wu

レポート

  • Trend Micro Apex Oneのエクスプロイトの話
  • 自己紹介
    • Lays
    • TRAPA Security
    • HITCONもやっている
  • 大事なこと
    • Trend Microのセキュリティがしっかりしていないということではない
    • 他のベンダーでも同じ問題はある
    • 攻撃の仕組みの認知向上に役立ててください
  • ハイライト
    • ロジックにフォーカス20以上のLPEバグ
  • なぜApex Oneを対象にしたか
    • Trend MicroはEDRでリーディング
    • ZDIがバグバウンティを提供していて、Apex Oneは金額が高い
  • Apex One
    • 歴史の古い製品
    • Office Scanから来ている
    • アーキテクチャは昔からある
    • エージェントがクライアントにインストールされている
    • 今回の研究はエージェントにフォーカスしている
  • Windows LPE
    • エージェントはアンチウイルスと同じもの
    • インストールされ、より高い権限を使う
    • User ModeアプリケーションからPrivileged ServicesやKernel Driversに上げる必要がある
    • IOCTLを使いたいが限定的
    • ターゲットをシステムサービスに移した
    • システム権限で確認した
    • デフォルトでシステム権限がある
    • TmCCSF Serviceが権限を持っている
    • Named Pipeのread/writeできる
    • IPC Serverは堅牢ではなさそう
    • 深掘りすることにした
    • OIPCというものが見つかった
    • 拡張されたIPC
    • トレンドマイクロ独自で昔から使われている
    • OIPCはすべての人にread/writeを提供していた
    • OIPCをどう攻撃するか
      • リバースしてコマンドを確認した
      • 20以上の定義がある
      • コマンドにはメッセージハッシュがあった
      • 暗号化はされていない
      • OIPCの使い方はまちまち
      • 統一化されていない
    • OIPCのリクエストはすぐに作れた
    • しかしリクエストはドロップされた
    • DLLをインジェクションしてバイパスできる
    • そして任意のOIPCコマンドを送ることができるようになった
    • OIPCのメカニズム
      • webでフロントエンドだけでチェックしているものに似ている
      • パスワードのチェックがあるが、OIPCに直接リクエストを送ることでバイパスできる
    • もちろんDLLインジェクションは保護されている
    • DLL Sideloadingを使えばいい
    • 新しい検証メカニズムが導入され対策された
    • それでOIPCはセキュアになったか?
      • いたちごっこのようなもの
      • しかし積極的に改善はされている
  • Named Pipeを使うトリック
    • SMBを使ってアクセスできる
    • クライアントPIDをバイパスできる
  • 開発者はどうすればいいか
    • 権限管理する
    • アーキテクチャデザイン
    • IPCの暗号化も検討する
      • リバースを完全に対策出来ないが難読化して時間を稼ぐことができる
  • OIPCの権限昇格
    • 今回は4つのサービスをエクスプロイトした
    • あと2つについても話す
    • CNTAoSMgr
      • 8つのCVEがみつかった
      • プラグインのパスが完全に攻撃者がコントロールできる
    • トレンドマイクロはこのコマンドを削除して対応した
    • なんどかパッチが当たって、ようやく完全に対応できた
    • 陳腐化されたアーキテクチャの維持が難しいことがわかる
    • 開発者がその機能の目的が理解できないかもしれない
  • LoadLibraryトリック
    • .dllがついていないファイルを読み込む
    • チェックとローディングがアンバランス
    • .dllがあるものと無いものを用意する
    • 拡張子がついていないサインされたものがチェックされ、dllを付け加えてロードする
    • チェックプロセスに問題があってレースコンディションもできる
  • 署名されたライブラリに脆弱性があったら?
    • もちろん悪用できる
    • TmProxy32.dll
  • LoadLibraryは難しい
    • ユーザーにパスを提供してもらうようにしてはならない
    • 署名をチェックする
    • コードを実行すべきではない
  • NTRTScan
    • OIPCのコマンドを2つ見つけている
    • パラメータをコントロールすれば任意の書き込みができる
    • 引数インジェクションできる
    • パッチ後
      • ダブルクォートは置き換えられる
      • しかしシングルクォートはつかえる
      • 2つのシングルクォートで元の引数を無視するようにした
    • 更にパッチ
      • Directory Junctionであるかを確認
  • 開発者の学び
    • 権限の最小化
    • ユーザーインプットを使っては行けない
      • Windowsのパスはいろんな表現がある
  • まとめ
    • セキュリティプロダクトがセキュアとは限らない
    • 時にはセキュリティプロダクトを取り込むことでリスクが増える可能性がある
    • 大いなる責任が伴う
    • 開発者はそれが動く環境をよく理解する必要がある

感想

強い権限をもつプロダクトであるからこそより気をつけたいですね。

セキュリティプロダクトも最新にアップデートしてきましょう!