技術の家庭菜園

https://tpcbtw.com/

Windowsの脆弱性(?)と中学生の話

前回に引き続き自分語り。今日は過去のお話。でもちょっと技術の話。

私とコンピュータ

ゲームは1日1時間とするとした香川県の条例が記憶に新しいが、私はその点、厳しい家庭に育ち、ゲームは全ての宿題を終えたあと、1日30分までとされた。
ゲームも最新のハード・ソフトは買ってもらえず、従兄弟から譲り受けたスーファミ、初代PSとGBAがある程度だった。
パソコンはあったのだが、パソコンの使用もゲームとの合計で30分の制限であった。

私はその限られた30分の多くをパソコンを触るのに使った。
8歳の頃、yahooきっずで検索するということを憶えた。
9歳の頃、人差し指で日本語入力モードのキーボードを叩きながら知らない誰かと必死にチャットをした。
10歳の頃、MMORPGにどっぷりはまった。
そして13歳の頃、Windows VISTAが我が家に来た頃に、この30分の取り決めは形骸化した。

我が家のPC事情とWindows VISTA

我が家には物心がつく頃にはパソコンがあった。
しかし決して裕福な家庭ではなかったので、そう頻繁に買い換えたりなど出来ない。
私が初めて触ったのはWindows95であったが、そのマシンは構成そのまま98、98SEとバージョンアップされ、
2001年に、やっとMEが搭載された新しいマシンを購入した。数カ月後XPの発表があるとも知らずに。
さて、稀代のクソOSとして名高いWindowsMEだが、せっかく買ったと言うこともあり、これも後にクソOSとされるVISTAの登場までおよそ5年使い続けられた。

さて9x系のOSの特徴でもあるが、当時の情勢から言ってもそこまでセキュリティや、アカウント、という概念が重要視されていない。
そもそも今のように一人一台デバイスを持つ時代ではない、基本的に共用マシンである。
Guestユーザー権限でも基本的に色々できちゃうのが9x系である。
その特性を活かし、親が不在の時は30分の掟を破り隠れてひたすらパソコンを触っていた。

一方NT系、そしてVISTAというのは情勢的にも、セキュリティやアカウントコントロールというものをしっかり重視して作られている。
UAC(ユーザーアカウントコントロール)はVISTAから追加された機能であり、全てのソフトにおける動作権限を一般ユーザーにして、管理者権限を必要とするソフトが動いた場合、逐一権限を管理者に昇格させるか尋ねる。
XPでは基本的に管理者ユーザーが実行するソフトウェアは全て管理者権限で動くという仕様もあり、ある程度の規模のソフトウェアは管理者権限であることを前提に作られていた。
それはネットケームも例外ではない。あの頃のゲームはほぼ全て管理者権限を必要とした。

これにより我が家には変化が起こった。
まずこの共用PCに個人のアカウントが作られた。
そして、親に管理者権限、子に標準ユーザー権限を与えた。子のユーザーにはペアレンタルコントロールにより21時以降の利用を制限した。
これにより、私はゲームを起動する際は親にパスワードの入力を求めなくてはならず、
そして21時になると全て強制的にログオフされる地獄のような環境ができあがった。
つまり私は親がいないところで隠れてゲームをすることができなくなったのだ。

当然私は改善を要求した。
だが父は言った「気に食わないなら自分でパスワードを破ってみせろ」と。

「どうせできない」そう思っての発言だったかもしれない。
しかし、このような試行錯誤が技術の上達に最も効果的である事を常々言っていた父であるから、良い教育と思っての発言だったのかもしれない。

前者だとしたら、この半年後にパスワードは破られることになるので、ざまぁみろだ。
後者だとしたら、たしかに技術は飛躍的に上昇したが、薄暗い技術ばかり身についたので、教育上よろしくはなかったことを付け加えておこう。

試行錯誤

ネットゲームをやりたい一心で、数少ない30分を使い様々なことを調べた。

LinuxというOSがCDから起動することを知り、KNOPPIXを実際に焼いて動かしてみた。
しかし動作が重くブラウジングさえストレスを感じた。加えてゲームがやりたいのにLinuxでは意味がない。*1

パスワードクラッキングという概念を知った。
OphcrackというWindowsに対しCDブートでブルートフォースを行うツールが有るのだが、これを動かした。
だが、Ophcrackはブートしたものの、エラーで止まってしまう。
幾つかのバージョンを動かすが、どうしてもうまく行かなかった。

コンピュータウイルスというものが実際はどのようなものなのか知った。
特にキーロガーと呼ばれるキー入力を全て記憶するトロイの木馬は役に立ちそうだった。
ウイルス対策ソフトの設定に四苦八苦しながら、自宅のマシンにキーロガーを埋め込んだ。
これでパスワードを親に入力してもらえれば、それがログとして残るという仕組みだ。
だがUACなどのパスワード入力画面が出て画面が暗くなったとき、バックグラウンドのアプリはキー入力を感知できなくなった。
またログオン時はキーロガーを立ち上げれないので、パスワード入力を検知できない。

ソーシャルエンジニアリング

技術的に、行き詰まってしまった。そもそも相手はMicrosoftである。勝ち目なんかない。
周りにパソコンに詳しい人などいやしない。
というかパスクラしたいです!と10歳程度の少年がやってきたらまずすべきことは通報だ。人に相談すべきことではない。まぁまだ当時は寛容な時代だったが。
ネット掲示板に行っても「まず服を脱ぎます」からの不毛なやり取りが始まることは目に見えている。

ここで一度私は方針転換を迫られた。
技術を追い詰めるには中学生の私は無知すぎた。正攻法でこれを破るのは不可能である。

ここで知った重要な技術の一つが、ソーシャルエンジニアリングである。
これは人間の心理的な隙を利用し、クラッキング(ハッキング)を行う技術である。
具体的に言ってしまえば、人が操作しているところを後ろから覗いたり(ショルダーハック)、パスワードが書いてある紙をゴミ箱から漁ったり(スキャベンジング)など、バカみたいな手法が多い。
しかし、かのケビンミトニックもその殆どをソーシャルエンジニアリングに頼ったことからも分かる通り、重要なクラッキング技術である。

ソーシャルエンジニアリングの本質は心理的な隙と技術を組み合わせることである。
当然親は私にキーボードを覗き込まれるのを警戒しながらパスワードを入力する。そこに隙はない。
Microsoftだって簡単にパスワードを破れるようなOSはつくらない。そこにも隙はない。

しかし丁寧な観察とほんの少しの技術があれば、遠いところに隙は見えてくるのだ。あとはそこに誘導してあげれば良い。

パスワード変更の脆弱性

UACが立ち上がると、パスワード認証画面はキーロガーで感知できないことを話した。
これは理屈を説明するとあの暗転画面は「昇格のプロンプト」と呼ばれており、その際に「セキュリティ保護されたデスクトップ」にデスクトップを切り替えている。

f:id:tpcbtw:20201229022045p:plain

昇格のプロンプト(一般ユーザーであればここで管理者ユーザーの認証を求められる)

これにより、他で動いているソフトからはセキュリティ保護されたデスクトップを見ることは出来なくなるのだ。
キーロガーでパスワードを入力しているところを検知はできないし、例えばもっと単純にスクショなどもできない。ぜひ試してみてほしい。

一方でパスワードの変更は画面の暗転がない、つまり、セキュリティ保護されて”いない”通常のデスクトップで開く。

f:id:tpcbtw:20201229022459p:plain

パスワードの変更画面

ゆえにパスワードの変更で現在のパスワードと新しいパスワードを入力するが、これはキーロガーで盗み取れるのだ。
これは丁寧に丁寧に自分自身のキーロガーのログを読んで気づいた。

つまり自分のアカウントでなく、親の、管理者ユーザーでキーロガーを動かし、長期的な観察をすればパスワードは盗れるのだ。
そのためには一旦親のアカウントに入って作業する必要がある。

パスワードリセットディスクの隙

もう一つ、有効な手立てを打ち立てることが出来た。

f:id:tpcbtw:20201229022704p:plain

パスワードディスクの作成ウィザード

VISTA以降のOSにはパスワードリセットディスクという機能がある。
これは現代のOSにもあるものの、そこまでメジャーな機能でもない。
これはUSBメモリ等をキーとして、パスワードをリセットする機能であり、パスワードを忘れてたときの回避策として有効な機能だ。
パスワードリセットディスクとなったUSBメモリはくれぐれも厳重に保管しておく必要がある。

このパスワードリセットディスクであるが、一度作成すると、新しいリセットディスクを作成するまで、もしくは機能をオフにするまで、ずっと有効である。
高いセキュリティを考えるのであれば、パスワード変更時に旧キーの認証と書き換えもするべきだろうが、利便性を考えこのような仕様になっているのであろう。

この仕様には隙がある。例えばPCの設置者と利用者が異なる場合を考えよう。会社ではよくある話だ。
設置者がPCを設置し、ユーザー作成から環境構築まで行う。そしてそのユーザーとパスワードを利用者に引き継ぎ、利用者はパスワードを変更する。
ここまでよくありそうな話だ。だがここで設置者がパスワードリセットディスクを作っていたとしたらどうだろう?
数年後、パスワードが定期的に変更され適切に運用されていたそのPCを、悪意のある元設置者が触ったら?

実行

さて、この状況に誘導してみよう。まずPCに適当にソフトを入れて重くしておく。
そうして暫く経ったあとに、父に、なんか重くなってきたしそろそろ一回OSクリーンインストールしない?と話を振る。
今日日パソコンが重いからとOSのクリーンインストールを気軽にする人は少ないだろうが、昔はよくあった話だ。父も2,3年に1度は行っていた。
父は確かに重いからと同意し、あとは私がその面倒な作業に立候補すれば、これ幸いと父はその作業を手放す。

さて、面倒な作業と引き換えに仕込める状況が出来上がった。
最初のユーザーを作る際にこっそりパスワードリセットディスクを作る。
元入っていたソフトを一つ一つ再インストールする中で、こっそりキーロガーを仕組む、キーロガーが動作するようセキュリティに穴も開けておく。
あとはすっかり元通りにし、管理者ユーザーを父に引き継ぐ。

父は私に教えられたパスワードでログオンし、すぐさまパスワードを変更する。それがログを取られているとも知らずに。

そのあと

入手したパスワードを使って私はキーロガーを削除した。流石に精神衛生上あまり良くない。
念願のパスワードを手にし親がいないときコソコソとゲームをやっていたが、1ヶ月くらいたって流石にバレた。
怒られるなぁと思いつつ、破ってみせろと言われたので破った、と説明したら意外にも何も言われなかった。
ただそれとこれは話が別、ゲームパソコンが1日30分のルールは守れ、とだけであった。
だがその後すぐその制限が60分になって、ほぼ無視されるようになったのは、おそらくこの取組の影響が大きいだろう。

パスワードの方はというと、バレた直後に変更された。
キーロガーはもう動いてなかったので、翌週にパスワードリセットディスクでパスワードを消して*2、再度キーロガーを仕込んだ。
そんな感じのイタチごっこを2,3回繰り返したあと、パスワードは変わらなくなった。

ちなみに受験期が近くなったこともあり、どっちにしろ私もゲームはあまりやらなくなった。

私はその後もコンピュータの探求に励み、高校で基本情報技術者まで取得したものの、大学では情報学科ではなく物理学科に進学した。
親の教育が正しかったのかどうかは結局よくわからないが、この出来事が私の人格形成に大きな影響を与えたのは間違いない。

 

*1:中学生の私はWineなどは知るよしもなかった。それに今の私の技術でもDirectXを使うゲームをWineで動かすことはできないだろう。

*2:ここでパスワードの変更をしてしまえば、当然親がPCにログインできなくなるという状況を作り上げれるが、大目玉を食らうことは必至であろう。