先日、SANSのナイトセミナーでLennyさん(マルウェア解析の専門家、https://zeltser.com)に教わった Process Hacker というツールについて、勉強がてら紹介します。
こちらに簡単な説明もあります。
ダウンロードとインストール
それでは、さっそく本家のサイトからダウンロードしてインストールします。現在の最新は Version 2.39.124 というもので、2016年3月29日にリリースされました。最近はリリースがないですが、Version 3.0系列での開発が進んでいるようです。
起動したところはこんな感じです。プロセスが木構造になっていて、わかりやすいですね。
青がシステムプロセス、水色がサービスプロセス、黄色が所有しているプロセスです。ピンクが Immersive Process または DLL(ってよくわかりませんが新しいAPIを使ったものだそうで、システム関係と思えばよさそう)、グレーが停止中のもの(Suspended)、明るい緑は .NET プロセス(またはDLL)です。色はオプションで変えられます。
タスクマネージャとの違い
システム標準の状態で、何か困ってプロセスの状態を見たいときには CTRL-ALT-DEL でタスクマネージャを選びますよね。
Windows関係だと、もう一つプロセスエクスプローラーというのがありますが、今回これは置いておいて、タスクマネージャと比較してみます。
どちらも、CPUとかIO、メモリ使用量など情報がありますが、タスクマネージャのほうはちょっと探しにくい感じです。Process Hacker のほうは、プロセスとサービスを明確に分けているところや、Network のアクティビティが別タブになっている点が親切ですね。
CPUやメモリの使用率グラフはどちらも似ています。上がタスクマネージャー、下が Process Hacker です。
両者で微妙に計算の仕方が違うようですが、Process Hackerで特徴的なのは Network+DiskをまとめてI/Oとしているところで、合理的だなと思います。
便利な使い方
この手のツールの使い方は人それぞれだと思いますが、私の使い方は主に3つです。
1.こっそり動いているプロセスを殺す
あるソフトを立ち上げて、終了したのに、何かが裏で走っている。気持ち悪いですよね。そういう時に、プロセスを殺して片付けるために使ってます。例えば、PC用のLINEクライアント。デジカメで撮った写真をトークに流して共有したりするときに、たまに使うのですが、こいつは終了してもプロセスが残ります。ユーザが終了、と言っているのだから、余計なプロセスを残さず終了してもらいたいものです。
2.ネットワークの監視
これはタスクマネージャーにはできないのですが、Process Hacker の Network タブは便利です。どのアプリが、どういうサイトと通信しているか(正確には、どのポートで待ち受けしているとか、TCPコネクションを張っているとか)、簡単にわかります。
例えば Microsoft Storeアプリが何やら通信しているな、ということから、そういえば「アプリの自動更新」がONになったままだった、ということに気づいたり。SearchUI.exe は、どうして使ってないときに https のセッションを張るのか、不思議に思ったり。chromeとfirefoxの挙動の違いなんかもわかります。
また、気に食わないセッションを切断することもできます(とは言え、自動的に再接続かかったりしてあまり意味がないですが)。
3.プロセスの研究
Process Hackerでプロセスを右クリックして、プロパティを眺めると、非常に細かい情報が手に入ります。メモリーマップや、どんなDLLを呼び出しているか、スレッドはいくつ立てているか、優先度はどうか、などなど。私はWindowsプログラマではないですが、これだけ詳しく出してもらうと、どんなことをしているプログラムなのか観察するのに大変便利です。
まとめ
Process Hackerについて、簡単に紹介しました。マルウェア解析の専門家が勧めるだけあって、使いこなすのは大変だと思いますが、Windowsの環境を監視するなら最強のツールだと思います。システムの挙動がおかしいとき、変なプロセスはないか、変なコネクションは張られていないか、確認できるというのは心強いです。
追記(2019年12月)
気が付いたら、Windows Defenderに「危険なソフト」扱いされて消されてしまいました。うーむ...OSの提供元が危険認定しているものを使い続けるのはどうかと思うので、当面は Sysinternals のツールに乗り換えることにしました。残念。