ウィルス・マルウェア駆除作業中のレジストリ操作で、コンピュータ及びインターネット用セキュリティ関連企業Trend Microのセキュリティ情報の指示に従ったつもりだったのですが、誤って以下の値を削除してしまいました。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Userinit = “userinit.exe,%Windows%\system\svchost.exe”
感染していたのはマルウェアは、「 WORM_SMALL.HYN 」です。
感染発覚からレジストリを削除するまでの経緯
やっかいなことに、このマルウェアに感染しているのは顧客先のデスクトップPCだったのです。このデスクトップPCにUSBを挿して、デスクトップ内のデータをコピーするとUSBが感染します。
おそらくデータをコピーしなくてもUSBを挿しただけで感染すると思われます。
感染したUSBを他のPCに挿すとそのPCも感染するので、こうして拡散されていきます。
アンチウィルスソフトをインストールしているPCにUSBを挿すと警告メッセージが表示されるので気が付くことができます。
または、やウィルス対策機能の付いたUSBを挿した時に警告メッセージが表示されます。
ある日、顧客が「PCから定期的にデータをコピーしたい。」というので、試しに顧客のPCにウィルス対策機能付きUSBを挿すと警告メッセージが表示されました。
「PCにUSBを挿したことは無い」と顧客は言うので、他の誰かが感染しているUSBを挿したのだと思われます。
こちらが原因だと思われるのに顧客に対して「PCがウィルスに感染してます」とはとても伝えられないので、こっそり削除することにしたのですが、これが大変な事になるとは思ってませんでした。
Trend Microの情報から対応した方法
リンク先>>WORM_SMALL.HYN – 脅威データベース – Trend Micro
このリンクの手順4の部分です。
手順 4
このレジストリ値を削除します。
[ 詳細 ]
警告:レジストリはWindowsの構成情報が格納されているデータベースであり、レジストリの編集内容に問題があると、システムが正常に動作しなくなる場合があります。
レジストリの編集はお客様の責任で行っていただくようお願いいたします。弊社ではレジストリの編集による如何なる問題に対しても補償いたしかねます。
レジストリの編集前にこちらをご参照ください。
In HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Userinit = “userinit.exe,%Windows%\system\svchost.exe”
レジストリを修正したらWindowsにログオンできなくなった
レジストリを削除するまではユーザー選択のアイコン表示がされることなくログオンできていたのですが、このレジストリを削除したことでユーザー選択のアイコンが表示されるようになりました。
またユーザーアイコンをクリックしてもログオン処理後に壁紙が表示された直後、勝手にログオフされてユーザー選択のアイコン表示画面に戻ってしまうようになってしまいました。
最悪なことには、パソコンの電源を入れた時に何故かキーボードのキー入力を受け付けないため、BIOS画面への切替えもできず、Safemodeで立ち上げることもできないため、Administratorを選択することもできませんでした。
パソコンのOSがWindows XPだったため、ネットでいろいろと調べてもGoogle検索結果からクリックしてもサイトへのリンク切ればかりでした。(例えばこのリンク: http://support.microsoft.com/kb/307545/ja)
ただ、ここの記載されている内容に従って作業された方が結果ドツボにはまったようです。(プレインストール版だと、C:\Windows\repair\systemが存在しないそうですが、その代わりにsystem.bakがあるため、system.bakをsystemに書き換えて強行した結果、Windows起動時に「Issas.exe システムエラー「このパスワードを更新しようとしたときに、リターン状況は現在のパスワードが正しくない状態の時に示されます。」エラーが出て再起動を繰り返すそうです。
HDDとして認識させて、強制的な復活を試みる
奇跡的というか幸いなことに、Groovyハードディスク簡単接続セットを持っていたため、立ち上がらなくなったパソコンからHDDを外し、別のパソコン(Windows10)にUSBで接続して、外付けドライブとしてHDDの中を見ることができました。
次に、外付けドライブとして認識されているHDDに保存されているレジストリの編集を試みます。
HKEY_LOCAL_MACHINE\SOFTWAREに該当するファイルは、%Windows\System32\config\の中にあるファイルです。
今回は、%Windows\Repairフォルダの中に、初期レジストリファイルと思われるSAM、SECURITY、SOFTWAREファイルがあり、操作したSOFTWARE部分だけでもよかったのですが、いったんDEFAULT、SAM、SECURITY、SOFTWARE、SYSTEM.bakファイルを%Windows\System32\config\の中にコピーし(当然、作業前にオリジナルのDEFAULT、SAM、SECURITY、SOFTWARE、SYSTEMファイルは名前の変更をしておき、%Repair\ SYSTEM.bakファイルは、%CONFIG\ SYSTEMファイルとしました。)、HDDを戻し、パソコンを起動時させると全ての設定がデフォルト画面と思われる状態でWindowsが起動されました。
手順4のレジストリ値の削除前にレジストリをエクスポートでバックアップを取っていたため、regeditを起動し、エクスポートしておいたファイルをインポートしました。
この時、「一部のレジストリ値の変更はできませんでした」メッセージが表示されたため、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinlogonのUserinitの値を見てみると、未だ「”userinit.exe,%Windows%\system\svchost.exe”」のままでした。
パソコンが立ち上がらなくなった時に、インターネットでいろいろ調べている中で見つけたUserinitの正しい値( Userinit=”C:\WINDOWS\system32\userinit.exe,” )に修正して、再起動させたところ、Windowsは元の設定の状態で起動し、ウィルスセキュリティUSBを挿してもウィスルは検知されなくなりました。
どうやらとんでもないことをしていたようです
後日、正常に作動するWindowsXPのパソコンのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinlogonのUserinitの値を見ると、Userinit=”C:\WINDOWS\system32\userinit.exe,”となっていたため、修正は正しかったということがわかりました。
さらに改めていろいろと調べてみると、「userinit.exe」は、とても重要な実行ファイルでした。
「userinit.exe」は、Windowsマシンにユーザーがログオンすると、ログオン直後に起動するプロセスで、Winlogonにより「userinit.exe」が実行されます。
「Userinit.exe」はユーザー固有(HKCU)のレジストリを読み込み、ログオン・スクリプトを実行しスタートアッププログラム実行、ネットワーク接続を再確立してWindowsユーザーインターフェイスであるExplorer.exeを自動的に起動しているのもこのプロセスでした。
このことを知っていれば、レジストリ編集の時に「userinit.exe」を削除するなんてことはしなかったと思います。全ては知識不足が招いたことではあります。
今回は無事に元に戻すことができました。今回の出来事を通して気が付いたこととして、
レジストリを修正しようとする人へ送るアドバイス
今回のトラブルで勉強になったことは以下です。
- Groovyハードディスク簡単接続セットを持っていて本当に良かったです。
- レジストリ編集をする前に、%Windows\System32\configフォルダをコピー保存しておいた方がいいです。つまり、編集をする前にその編集するファイルのバックアップを取っておいた方がいいということです。
ウィルスやマルウェアに感染していたとしても、ソフトで駆除できるものであれば、レジストリの編集をすることはないし、今回のマルウェアに関しては、手動による実行ファイル・フォルダ・自動実行用のレジストリの削除作業であったため、レジストリを削除したことで、今後、自動実行されることはなくなったと思います。
また、「userinit.exe」ファイルは、WindowsXPだけではなく、Windows7やWindows10にも共通するファイルなので、レジストリ値修正によるマルウェアやウィルス駆除を試みようと思っている人は十分に注意してください。