パスワードをDLLに隠す・・・


 今日、こんな作業が僕のところへ来ました。「クライアントのマシンのAdministratorのパスワードを強制的に同じパスワードに変更させたいんだけど」というものでした。Administratorのパスワードを変えるにはローカルのAdministrators権限を持っている必要があります。そこで、RunAs.exeというツール(確かWindows2000には標準であるはず)を使って、Administratorに偽装してもらう手段をとりました。このツールは偽装したいユーザ名、パスワードを入力すると、そのユーザ権限で処理が実行できるというものです。このツールからパスワード変更をするVBSを呼び出してもらい、パスワードを変換します。ここで、当然クライアントには新しく設定するAdministratorのパスワードは見せたくない訳です。そこで、DLLの中に変数を書いて、そこを呼び出す事にします。これで、一般ユーザからはパスワードは見えません・・・と思ったのですが、VBで作ったDLLを秀丸エディタで開くと、なんとパスワードが表示されているではありませんか?一見、文字化けしてるのでわからなそうなのですが、よく見ていくとバレバレです。この手はシェアウェアのパスワードを見るのによく使われているそうです。対策としては、ビット演算しておくとか、変数をいくつかに分けて保存しておくなどの手段が有効だそうです。

 今回は社内の作業だったので、被害というものはなかったですが(というか同時にユーザにもAdministrators権限をつけちゃってるし(笑))、これが一般ユーザ向けだったらと思うと恐ろしい限りです。みなさんも気を付けましょう。


戻る