ウィルスを通信から発見するツール
NetStatusMonitor
フリーソフト Ver1.4
対応OS Windows10/Windows8.1/Windows8/Windows7(64ビット/32ビット)
(※)VistaやXPでも多分動きますが確認してません(本ファイル最後の注意事項参照)
本ソフトは.NET Framework 4版と.NET
Framework3.5版の2種類があります
Windows10/8.1/8をお使いの方は.NET Framework 4版をお使いください
Windows7をお使いの方は.NET
Framework 3.5版をお使いください
NetStatusMonitorで何ができるか?
ウィルスの被害が続いています
ウィルスの感染経路の1つとして「メールファイルの添付ファイルを開いて感染した」というケースがありますが、
最近は「標的型メール」と言って「特定の企業や役所に限定した、関係者からのメールを装ったメールで文面もまとも」な物が
増えてきていますので、昔と違って「全員が完璧に添付ファイルを開かずにおくというのは難しい」状況です・・・
更にウィルスの感染経路はメールの添付ファイルや怪しげなサイトを見ての感染経路だけでなく、
JavaやFlashやWindows自体のセキュリティホールを悪用した感染経路で、「普通のサイトを普通に見てるだけでも感染する」経路すら
日常的になっており、これらを完全に回避する事は不可能な状況になりつつあります・・・
(※)もちろん、JavaやFlashやWindowsなどは最新版を使ったりセキュリティパッチを当てる必要はありますし、
怪しげな添付ファイルは開かないなどの注意も引き続き必要ですが、「それだけでは100%は防げない」という事です
(防げてるのが80%なのか90%なのかに関わらず10%でも20%でも感染する人が出るなら、それはアウトなのです・・・)
感染経路の話とは別に、感染ファイルを開いてしまったタイミングにおいては、本来は(ほぼ全員が入れているであろう)
ノートン、マカフィー、ウィルスバスター、フリーのアンチウィルスソフトなどのアンチウィルスソフトが駆除してくれるはずで
これも80%なのか90%なのか駆除の効果もあるんだと思いますが「100%ではありません」(ここでも完全ではありません)
ウィルスの被害と、ウィルス対策の話って、個人的には「ミサイル防衛構想」の話と凄く似てると思ってます
「ミサイル防衛」では、ミサイル発射直後の「ブースト段階」、飛行中の「ミッドコース段階」、弾着寸前の「ターミナル段階」の
3段階に分けてそれぞれ迎撃しようという話なのですが、ウィルスの被害と駆除の話って似てると思いませんか?
具体的には、
「ブースト段階」・・・メールの添付ファイルを開いたり、セキュリティホールを突かれたりして感染する段階(100%は対処できない)
「ミッドコース段階」・・・ノートンやマカフィーなどのアンチウィルスソフトで駆除する段階(100%は対処できない)
「ターミナル段階」・・・駆除に失敗して感染しちゃったウィルスが通信を始めて実際に被害がでるか?でないか?のタイミング
になります
ミサイル防衛においても「ターミナル段階」の迎撃では、仮に迎撃に成功しても(破片による被害など)結局被害が出るケースがあるんですが、
ウィルス対策においても「ターミナル段階」では、ある意味「既に対策が間に合ってない」というか「間に合ってるんだか間に合ってないんだかぎりぎり」
とも言えますが、少なくとも「ウィルス感染して被害に気づかないまま放置する」よりは、「ここで気付いて対策できた方がまし」という状況になるかと思います
2015年6月の年金機構のウィルス被害の例なども、(感染者本人のPCそのものではないにしても)、ネットの通信経路で
関係者が気付いたのが起点らしいので、ある意味「ターミナル段階」での対策となります(間に合わなかったケースですが・・・)
ウィルス対策における「ターミナル段階とは何か?」と言いますと、感染したウィルスがネットを経由して情報を外部のサーバーに送信する事になります
「ブースト段階」の感染経路は様々な経路が日々進化してる状況なので止め様が無い状況で、「ミッドコース段階」の
アンチウィルスソフトによるウィルス駆除も、ウィルスの亜種が日々続々と出ている状況ではアンチウィルスソフトのパターンファイルが間に合わずに
「検出できない例」が続発している状況です・・・実際に、今後も「100%の対策は難しい」と思います(せいぜいが80%〜90%防げたら御の字)
さて「ターミナル段階」(最終段階)です、ウィルス被害における「ターミナル段階」は、感染したウィルスが「外部のサーバーに対して通信して情報を送る」訳ですが
感染するウィルスのファイル名やプロセス名が亜種で次々と増えるのに比べると、感染後のウィルスが「通信する相手のサーバー」というのは
そんなに増やせませんしそんなに変えられません
・・・という事はウィルス対策において「ターミナル段階」でのネット経由での検知は、他の段階に比べるとやりやすいはずです
(ただ、問題点としては、この段階に来てるという事は既に間に合ってない可能性も高いという事になりますが・・・)
Windowsの場合だと、コマンドプロンプト画面で使うnetstatコマンドなどでこの情報を入手して解析する訳ですが、
はっきり言って物凄く面倒くさい作業になると思います
マイクロソフトがフリーソフトとして出しているTCPView.exeという物もありますが、netstatに比べるとGUI化されてる分見やすいですが
ウィルス検出の為のソフトではないので、やはり面倒くさいです
今回、netstat.exeコマンドやTCPView.exeの代わりに、「ウィルス感染のネット接続を学習型の除外システムで発見しやすくするフリーソフト」
(一部のウィルスパターンは完全自動検出可能)であるNetStatusMonitorという物を作ってみました
常駐型で普段はアイコン化されていて表示されませんが、60秒に一度の定期チェックを行い、問題が検出されれば
黄色い画面で安全か?危険か?を確認する事が可能で、(更にこの内容を学習します)
更に、Windowsサービスであるsvchostexeを詐称するケースのウィルス被害や
SYN_SENTが多発するウィルス被害のケースに対しては完全自動で検出が可能です
(基本的な通信チェックは、ユーザーそれぞれの「除外」登録による半自動チェックですが、netstat.exeやTCPView.exeを使うよりは
遥かに楽になるはずです)
ウィルス対策については「転ばぬ先の杖」が必要なケースがありますので、是非お試しください
尚、NetStatusMonitorは、ノートン、マカフィー、ウィルスバスター、フリーソフトのアンチウィルスソフトなどとは「原理が違います」ので
併用可能です(どちらかというと、netstat.exeコマンドを代替するものです)
簡単な使い方
1、NetStatusMonitor.exeをダブルクリックして起動します
2、NetStatusMonitorは常駐型のプログラムなので、画面右上の「X」ボタンを押してもアイコン化するだけで終了しません
プログラムを終了する場合は画面右上の「プログラム終了」ボタンを押してください
(※)画面右上の「X」ボタンを押した際には、タスクトレイに常駐する様になりました
タスクトレイのアイコンをダブルクリックすると、NetStatusMonitorのウィンドウを再表示します
(※)常駐してる際も、プログラムの終了方法は同じですが、タスクトレイアイコンを右クリックしてメニューから
「終了」を選択しても終了できます
3、初回起動時には、上の2つのリスト、「クライアントポート(要確認)」と「サーバーポート(要確認)」に一覧が表示され、
2つのリストが黄色く表示されます
4、画面左上から3番目の「全て除外する」ボタンを押します
5、警告ダイヤログが表示されますが、「はい」を選択してください
(※)ウィルスに感染してない通常状態の場合は、初回起動時は「全て除外する」ボタンを押して問題ないと思います
既にウィルスに感染した心配がある方は、「全て除外する」ボタンを押す代わりに、(後述する)個別の確認と除外を行ってください
6、「全て除外する」ボタンを押した結果、上の2つのリストは空になり、代わりに一番下の段の
「除外ファイル名」リストと「除外プロセス」リストに除外リストが登録されました
(※)「プロセス名」と「ファイル名」が検出できる項目はファイル名で除外、「プロセス名」しか検出できない項目は
「プロセス名」で除外します。除外された項目は次回の更新時に自動的に、上から3段目、4段目の
「クライアントポート」(除外済み)と「サーバーポート」(除外済み)に登録されます
(※)「プロセス名」しか検出できない項目はWindowsサービスなどになります
Windowsサービスとしてはsvchost.exeが有名なのですが、このsvchost.exeと同じ名前で偽装したウィルスも存在する為、
偽装チェック用の検出リストもあります(svchost.exeではファイル名が表示されないはずなのに、表示されたらおかしいというチェック)
7、画面左上の「手動更新」ボタンを押して手動で再チェックします
(※)NetStatusMonitorは常駐型なので60秒に1回ずつ定期的に自動チェックされますが、
「手動更新」ボタンを押す事でいつでもチェック可能です
8、「手動更新」の結果、上のリスト2つは白くなりました
上のリスト2つの検出結果が空白で白い場合には安全な状態です
アイコン化するなどして、しばらく放置してみましょう(1分に1回ずつ自動更新されます)
アイコン化して放置しておいても、自動更新の結果、不審な通信が見つかったら画面がポップアップ表示されます
9、説明の例では、しばらく放置した結果、プロセス名が「wlmail.exe」、ファイル名が「C:\Program Files\Windows
Live\Mail\wlmail.exe」
という項目が「クライアントポート」(要確認)に表示され、リストが黄色くなりました
この例ではプロセス名とファイル名が表示されているので「安全なプログラムか?」、「ウィルスなどの危険性があるか?」を
Googleで検索するなどで確認しやすいです(答えを言えばWindows Live
Mailで安全なのですが)
10、リスト上の項目を右クリックするか、項目を選択して「詳細」ボタンを押すと、詳細画面が表示されます
(※)詳細画面では、ファイル名の表示されないサービスなどで、詳細なサービス名が表示されたり、
接続先の外部アドレスがIPアドレスだけでなく、「a23-206-255-185.deploy.static.akamaitechnologies.com」の様な
ドメイン名表示もされます
これらの情報を確認して(必要があればGoogleで検索するなどして)安全なプログラムやサービスである事を確認してください
11、「wlmail.exe」という項目が安全である事が確認できたら、項目をダブルクリックするか、選択して「除外する」ボタンを
押す事で除外リストに登録する事ができます
除外リストに登録された物は次回の検索では安全リスト(除外済みリスト)に表示されます
除外したら、画面左上の「手動更新」を押して除外されている事を確認してください
12、この例は、プロセス名「iexplore.exe」、ファイル名「C:\Program Files\Internet
Explorer\iexplore.exe」という項目が大量の
通信をしている例ですが、同じ「プロセス名」(もしくは同じ「ファイル名」)の項目を除外する場合は、どれか1つを除外するだけで
大丈夫です
他の項目は除外せずに残っていても「手動更新」すれば消えます(もしくは次回の60秒後の更新で消えます)
13、NetStatusMonitorは、この様に60秒ごとの自動更新と、検出された項目を1つずつ「除外」する事で、除外リストを学習していきます
ある程度学習すると、NetStatusMonitorが常駐していても一切画面に表示されなくなるかと思います
14、NetStatusMonitorの学習が終わり、「通常は検出画面がポップアップされない状態」で使い続けて頂ければ
突然ポップアップで検出された通信が「あやしい可能性がある」判断ができるかと思います
(自分でインストールしたプログラムなどの可能性もありますので、続けて確認&除外する形にもなりますが、
確認して「あきらかに怪しい」場合に気づく事が容易になります)
14、ウィルスには色々な形がありますが、svchost.exeというWindowsサービスに詐称するウィルスプログラムが比較的多いです
NetStatusMonitorでは本物のsvchost.exeは「プロセス」のみ「svchost.exe」と表示され、ファイル名は空白になるのですが
ウィルスが詐称した場合には、これを自動的に検出できます
15、本物のウィルスでなくても、通信機能のあるフリーソフトなどのファイル名をsvchost.exeとコピーして起動すれば
感染状態をシミュレートできます
この例では、C:\000\TVToolWeb\NET2\TVToolWeb.exeというファイルをC:\000\TVToolWeb\NET2\svchost.exeとファイル名だけ
svchost.exeにコピーして通信した際にNetStatusMonitorが検出した画面例です(本物の詐称ウィルスもこの形で自動検出可能です)
(※)svchost.exeというファイル名にするソフトはほぼ皆無のはずなので、このケースは確実にウィルス感染が疑われます
16、ウィルス感染の典型的な例としてはもう1つ、クライアントポートにおいて「状態」が「SYN_SENT」の物が多数発生する
ケースというのがあり、この状態もNetStatusMonitorは自動検出する事が可能です
(※)除外リストに入っていても「SYN_SENT」は検出され、(正常な通信のケースもあるので)、SYN_SENTのログが10個以上
あった場合だけ画面がピンク色に表示されます
SYN_SENTで検出されたから「100%確実にウィルス感染」とは言い切れないのですが、かなり危険なケースもあると思って
確認した方がいいかと思います(数十個以上の場合は明らかにおかしいと思います)
17、画面左上の「設定」ボタンを押す事で設定画面を開きます
18、設定画面では各種設定が行えます
19、NetStatusMonitorは(必要な時だけ起動してチェックする使い方でもいいのですが)、
基本的には常駐型のソフトなので次の様な設定がオススメです
常駐して監視する
1、上記の常駐設定をしておくと、Windowsの起動時に自動実行されてタスクバーに常駐して1分ごとに通信をチェックする事ができます
(※)NetStatusMonitorは常駐して監視する事も、必要な時だけ起動して確認する事も可能です
(常駐しても重くなりませんので、常駐しての監視も一度お試しください。尚、既存のアンチウィルスソフトと共存可能です)
2、常駐していますので、通常はタスクバーに隠れています
3、1分ごとの通信チェックで不審な通信を見つけた場合には、画面がポップアップして警告表示されます
通信内容を確認して問題がなければ「除外」処理を行ってください
4、尚、通常の通信でもいくつかのプロセスがSYN_SENT状態になっている事がありますが、除外済みの安全なプロセスで
数個のSYN_SENTが発生するのは通常の状態なので特に警告は出しません(画面には表示が残りますが、アイコン時の
ポップアップ表示などはされません)
SYN_SENTが15個以上など「異常に多い場合」のみエラー表示されます
「外部アドレスへのアクセス回数」を確認する
(外部アドレスごとの接続回数を多い順にチェックする)
1、本機能を使う為には、あらかじめ設定画面で、「全ての外部通信ログをログファイルに出力する」に
チェックを付けておく必要があります(60秒ごとの通信チェックでログファイルが保存される様になります)
2、「外部アドレスへのアクセス回数」ボタンを押します
3、外部アドレス別の通信ログが回数順に表示されます
プロセス名やファイル名から安全だと分かる物はいいのですが、(プロセス名しか表示されず、何をやっているか分からない物など)
気になる項目がある場合はその項目をダブルクリックするか、選択して「Whois」ボタンを押してください
(※)この例では「74.125.204.125」をWhoisで確認します
4、Whoisで確認した結果、「Country」(国)が「US」(アメリカ)であり、ドメインの登録企業がGoogleである事が確認できましたので
安全な接続先である事がわかります
(※)接続先の国が中国やロシアなど想定してない国だったり、ドメインの登録企業が気になる場合は更に確認してみてください
ブラックリスト登録したIPアドレスへの外部接続検出機能
年金機構のウィルス被害などで話題になっているEmdiviウィルスなどを自動する為の機能として
「ブラックリスト登録したIPアドレスへの外部接続検出機能」を追加しました
(※)初期状態でEmdiviウィルス用のブロックリストが登録されていますので、
Emdiviウィルスの通信を自動検出可能です
1、60秒ごとの通信チェック中に「ブロックリストに登録されたIPアドレスへの通信」を検出した場合、
検出画面を表示します
2、この状態はかなり危険な状態である可能性が高い為、ウィルス感染のチェックを直ちに行ってください
(※)但し、ブラックリスト登録してあるIPアドレスの一覧情報が間違っている場合はご検出もあり得ますので
ブラックリストのチェック&更新は頻繁に行ってください
3、ブラックリストの変更・登録は、設定画面の「ブラックリストIPアドレス一覧を編集する」から可能です
4、メモ帳で開いたブラックリスト一覧を編集してください
(※)*から始まる行はコメント行です
(※)年金機構などのウィルス被害で有名なEmdiviウィルスのブラックリストは
下記のURLを参考に登録しています(ドメイン名やURLの情報だったのでIPアドレスを調べた上で登録しています)
http://d.hatena.ne.jp/Kango/20141107/1415370890
http://pastebin.com/j4a1xxtR
アンインストール方法
1.設定画面で「Windowsの起動時に自動実行しない」ボタンを押してください
(※)事前に「Windowsの起動時に自動実行する」ボタンを押していなかった場合には不要ですが、「自動実行しない」だけ押しても問題ありません
2、NetStatusMonitorを終了してください
3、ファイルを削除すれば、アンインストールは完了です
注意事項
WindowsXPで使う場合の注意事項
(※)WindowsXPは基本的にはサポート外です
WindowsXPでは、他OSと違ってサービス名svchost.exeに対して「ファイル名が表示される」挙動になる為、
誤検出が発生します
これを回避する為には、NetStatusMonitorを終了した状態で、data/service.datファイルを削除してから
NetStatusMonitorを起動してみてください
(※)基本的にはWindows7以降でお使いください
感想/要望はメールで結構ですが、質問については
私のホームページをご覧の上、Twitter(@khb02323)やSkype(khb02323)、LINE(khb02323)などをご利用ください
更新履歴
Ver1.0
・初公開バージョン
Ver1.0A
・ソフトの名前を「ウィルスを通信から発見するツール」に変更しました
・SYN_SENTの回数が閾値より少ない場合は常駐時のポップアップ表示をしない様に修正しました
・SYN_SENTの回数を設定可能にしました(デフォルト15回)
Ver1.1
・「外部アドレスへのアクセス回数」の集計機能を追加しました
(外部アドレス別の通信回数を集計して、回数順に表示する機能です。通信回数が多い通信先が安全かの確認が簡単になります)
・Whois機能を追加しました
怪しい外部アドレス(例:74.125.204.125)などをWhoisを使って詳細に確認する事が可能になりました。接続先の国やドメインを登録した企業名などがわかります
これまでも、詳細画面でIPアドレス→ドメイン名の逆引き機能はありましたが、Whoisでは更に詳細に確認可能です
・ログを直近7日分だけ保存し、それ以前のログは削除する機能を追加しました
(ログの削除は起動時、及び毎日深夜3:05に行われます)
Ver1.2
・ブラックリスト登録したIPアドレスへの外部接続検出機能を追加しました
(年金機構のウィルス感染などで話題になっているEmdiviウィルスのブラックリスト設定を登録済みです)
・Emdiviウィルスのブラックリスト登録済みの為、初期状態でEmdiviウィルスの自動検出が可能です
・ブラックリストIPアドレスの登録は設定画面から行えます(メモ帳にて編集可能です)
Ver1.3
・Whoisの利用サービスを変更しました
・Whoisでのチェックを外部ブラウザを使う形に変更しました
・タスクトレイに常駐する様にしました (※)要望の多かった変更です
(アイコン化ボタンを押すとアイコン化し、右上の「X」ボタンを押すとタスクトレイに常駐します)
・通信チェック中にプログラムを終了した際の不具合を修正しました
Ver1.4
・検出結果が0件など、問題が無い際には画面を非表示にする様に変更しました
(検出結果が無くなったのに画面が残っているのは見苦しかった為)
・Windows10の一部環境(おそらく32bit版Windows10で、アップデートのどこかの時点から)
プロセス名が「svchost.exe」、ファイル名が「C:\WINDOWS\System32\svchost.exe」の項目(本物のWindowsのサービス)を
赤判定として表示する不具合が発生したのでこれそ修正しました
(※)以前はsvchost.exeが、ファイル名として「C:\WINDOWS\System32\svchost.exe」と検出される事は無かったのですが、
32bit版Windows10のどこかのアップデート以降挙動が変わった様です
黄色項目としては検出されますので「除外」して検出されない様にしてください