Windowsのローカルアカウントのユーザーパスワードは特別なツールを使わなくとも、強制的に変更することが可能です。
これがどういった仕組みで行われているのか気になったので調べました。
Windows標準機能のみを使用してパスワードを解除する
普通に考えるとパスワードが分からないローカルアカウントに対してパスワードの変更を要求することはできないように思われます。
もし好き勝手にパスワードを変更することができればそれはパスワードを設定した意味がなくなってしまいパスワードが意味をなさないからです。
ですが実際できてしまいます。
しかもWindowsの標準的な機能のみを使用して、です。
以下の手順を踏むことでローカルアカウントのパスワードは解除できます。
- インストールメディアなどを使用して回復環境に入る
- パスワードを解除したいアカウントがあるパーティションのsystem32に入り以下のファイルをリネームする
- sethc.exeを適当な名前に変更(退避用)
- cmd.exeをsethc.exeに変更
- 回復環境から出て通常起動する
- サインイン画面でシフトキーを5回押してコマンドプロンプトを起動
- net user “target user name” “new passward"を実行
この手順で3分もかからずパスワードを変更できてしまいます。
どのような仕組みで強制的にパスワードを変更しているのか
パスワードを忘れてしまった場合の救済策として使えるこの手法ですが、原理的に見てみると不正な権限昇格といえます。
つまりWindowsの脆弱性を利用していると言い換え可能だと思います。
この方法は本来サインイン後でないと管理者実行できないコマンドプロンプトを抜け道的な方法で使えるようにしているからです。
ちなみにサインイン前に管理者権限でコマンドプロンプトを開くことが目的であるため、sethc.exe以外でもこの手法は使えるようです。
My Man file「Windowsの正規機能を悪用した権限昇格のメモ」2022年7月2日取得
パスワードをかけているからといって安全ではない
パスワードをかけていたとしても簡単にサインインできてしまうため、悪意を持った第三者に対してサインインパスワードはセキュリティ対策としてほとんど意味を成しません。
bitlockerなどのドライブの暗号化をすることによってこの手法を防ぐことができます。
bitlockerを有効にした場合、回復キーの管理といったコストが増える点に留意してください。