trustme — TrustedInstallerになりすますBOF

Security

概要

trustmeは、Cobalt StrikeのBeacon用に作られたBOFで、管理者権限からさらに高い権限コンテキストを得るために設計されています。具体的にはDISM(Deployment Image Servicing and Management)関連のAPI呼び出しをトリガーし、TrustedInstallerに関連するトークン情報を得た上でスレッドインパーソネーションを行い、NT AUTHORITY\SYSTEMとして動作しつつトークンにNT SERVICE\TrustedInstallerのSIDを含めます。この組み合わせにより、通常はTrustedInstallerのみが所有・制御するファイルやレジストリ項目の変更が可能になります。リポジトリはC言語実装のBOFと定義ファイル等で構成されています。

GitHub

リポジトリの統計情報

  • スター数: 6
  • フォーク数: 0
  • ウォッチャー数: 6
  • コミット数: 4
  • ファイル数: 4
  • メインの言語: C

主な特徴

  • Cobalt Strike用BOFとして提供され、Beaconから直接実行可能
  • DISM関連のAPIトリガーによりTrustedInstallerのSIDをトークンに付与
  • スレッドインパーソネーション手法を用いて昇格・権限切り替えを実現
  • 最小限のファイル群でシンプルに実装(Cソース+ヘッダ+定義ファイル)

技術的なポイント

trustmeは「権限の移譲(impersonation)」と「特権トークンの利用」を組み合わせた攻撃的/テスト向けのユーティリティです。大まかな流れとしては、まずDISM関連の処理を外部トリガーすることでTrustedInstallerの実行コンテキストまたはその属性に紐づくトークン情報を引き出し、得られたトークン/SIDを用いて自身のスレッドをインパーソネート(模倣)します。これによりプロセスがNT AUTHORITY\SYSTEMの権限を持ちながら、トークンのグループにNT SERVICE\TrustedInstallerを含む状態を実現します。結果として、通常の管理者権限では変更できないシステムファイルやOSコンポーネントに対する変更が可能になります。

実装面ではC言語でBOFとして組み込まれ、Cobalt Strike Beaconのメモリ内実行に適した形で最小限の依存で動作するよう設計されています。スレッドインパーソネーションはWindowsのセキュリティトークン機構を利用するため、動作には特定の権限やOSの構成が影響します。こうした手法はフォレンジックや検出観点で特徴的な痕跡(例:通常のプロセスフロー外でのDISM呼び出し、トークンの異常なグループ付与、SeImpersonate系の操作ログなど)を残すため、セキュリティ製品やログ監視で検出可能な場合があります。

注意点として、本ツールは強力な権限を取得するために設計されているため、誤用や実運用環境での無許可利用は重大なセキュリティリスクを招きます。研究・防御検証や許可されたペネトレーションテストの範囲内でのみ用いるべきです。またOSバージョンやパッチレベル、セキュリティポリシーによって挙動が変化するため、検証時は環境依存性を考慮する必要があります。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • beacon.h: file
  • trustme.c: file
  • trustme.cna: file

まとめ

管理者からTrustedInstallerコンテキストを模倣する実験的BOF。検証用途で慎重に扱うべきツール。

リポジトリ情報:

(注)本記事はリポジトリの解説を目的としており、悪意ある利用を助長するものではありません。適法かつ倫理的な範囲での利用を厳守してください。