事の発端は、今年のはじめに Windows7 Home Premium Edition のPCを買った知人から、このPCを複数人で使わせたいがセキュリティ確保のためにパスワードの桁数ポリシーをつけたいということでした。
Professional Edition 以上ならローカルセキュリティポリシーのパスワードのポリシーでパスワードの長さについて設定することができますが、 Home Premium Edition はローカルセキュリティポリシーがないので、GUIで設定することができません。
しかし、GUIツールが無いだけでどうせレジストリに設定データ持たせているだけだろうということで、レジストリの分析が始まったわけです。
まず、レジストリのどこにパスワードポリシーの設定があるか分からなかったので、パスワードポリシーの設定変更前と後のレジストリをregeditでエクスポートしてWinMergeで差分を見てみることにしました。
しかし、どうもパスワードポリシーの設定っぽいキーが見当たりません。
で、調べるうちに、regeditでは普通に見れない下記のレジストリハイブがあることがわかりました。
HKEY_LOCAL_MACHINE\SAM
HKEY_LOCAL_MACHINE\Security
どうやらこの中にパスワードポリシーがあるっぽいのですが、regedit では上記ハイブ以下はみれません。
LocalSystemアカウント(NT AUTHORITY\Systemユーザ)でないとみれないようです。(LocalSystemアカウントについては、サービスで使用される「System」「Local Service」「Network Service」アカウントとは? - @ITを参照)
つまり、LocalSystemアカウントでレジストリエディタ(regedit)を起動すれば良いわけです。
そのために、PsExec.exe を使ってレジストリエディタを起動します。
PsExec.exe については、(ツール)リモートコンピュータ(Windows)のコマンドやプログラムを実行するPsExecを参照。
コマンドプロンプトで下記のように入力します。
(WindowsVista以降ならコマンドプロンプトを管理者権限で起動しないとアクセス拒否になります)
psexec.exe -s -i regedit
これで、HKLM\SECURITYとHKLM\SAM配下が見れるようになりました。
この状態で、ポリシー設定前と後の状態をエクスポートと、差分を取ります。
パスワードの桁数を6文字から5文字に変更した場合ですが、下記のようになっていました。(変更点が赤色。他のデータは00でダミー化)
"F"=hex:00,00,00,00,00,00,00,00,00,00,0000,00,00,00,00,59,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
03,00,00,00,00,00,00,05,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
どうやら、この赤色部分がパスワードの桁数ポリシーに関係する設定っぽいです。
しかし、SECURITY配下って基本的にバイナリで格納されている場合がおおく、どこからどこまでがパスワードポリシーの設定なのかわかりませんでした。
ハックサイトとかを調査すればより分かるんでしょうが、今回は時間がないということで、ここで諦めました。
結局、運用ルールをしっかり守って使ってもらうようにしてくれとしました。
ちなみに、HKLM\SAM配下はSAM(Security Account Manager)データベースと呼ばれており、ここにWindowsログインパスワードのハッシュも格納されているようです。
特にXP以前のOSはデフォルトで、セキュリティが弱いLMハッシュがはいっており、短いパスワードなら比較的簡単にクラックできるようですね。
Windowsパスワード解析ツールOphcrackを試してみたではツールを使って、SAMデータベース内のLMハッシュからパスワードを解析するツールについて書いています。
備考:
この記事執筆中に見つけたんですが、あいむの珍妄想ページ ~ののキューブ ~レジストリのカスタマイズ、@IT:Windows TIPS -- Tips:レジストリへのアクセスをモニタする方法では、フリーソフトRegmonを使ってレジストリ変更点や参照を追跡できることが書いてありました。これを使えばもっと簡単にレジストリの場所を特定できたかもしれません。
参考: