SeTakeOwnershipPrivilege の悪用
概要
SeTakeOwnershipPrivilege は、オブジェクト(ファイル、レジストリキー、サービスなど)に対する既存の ACL を無視して、所有権を自分に強制的に移せる特権。オブジェクトの所有者は、そのオブジェクトの ACL を自由に書き換えられるため、所有権さえ奪ってしまえば、その後は任意のアクセス権を自分に付与できる。
本来アクセスできないはずの高権限プロセスの実行ファイルや、保護されたレジストリキーに対してこの特権を使うと、「所有権奪取 → ACL 書き換え → 自由にアクセス」という流れで、間接的に権限昇格や設定改ざんにつなげられる。
手順
whoami /privでSeTakeOwnershipPrivilegeが有効になっているか確認する。- 対象オブジェクトの所有者を自分(または自分が制御するグループ)に変更する。
- 所有者になった状態で ACL を書き換え、フルコントロールなど必要な権限を自分に付与する。
- 付与された権限で対象オブジェクトを操作する(実行ファイルの差し替え、レジストリ値の書き換えなど)。
コマンド
:: ファイルの所有権を奪う
takeown /f C:\path\to\target.exe
:: 所有者になった後、自分にフルコントロールを付与
icacls C:\path\to\target.exe /grant user:F
注意点
- 重要なシステムファイルやサービスの実行ファイルに対する所有権変更は、サービスの動作に影響するため、検証環境以外では慎重に扱う。