●「Debugger」メニュー(つづき)
検体を読み込み、解析した後にデバッガを使う方法は前のページで述べました。
もう一つ、デバッガ機能を使うケースがあります。それは、「実行中のプロセスに対して解析を行う場合」です。普通は、発見した検体を解析してから行います。しかし、以下のようなケースの場合、プロセスにアタッチして解析を行う場合があります。
- マルウェアが、別のプロセスを起動させる場合
- サービスとして登録されたマルウェアを解析する場合
マルウェアが別プロセスを起動させる例としては、Process Hollowingのテクニックを使っている場合です。Process Hollowingについては、「Process Hollowing」(英語)の記事が、比較的詳しく解説していました。他にも、このキーワードで調べればたくさん出てきます。このテクニックでは、悪意あるコードを展開した新たなプロセスを起動しますので、CreateProcessし、コードを改ざんしてResumeProcessまたはResumeThreadする直前でアタッチし、ブレークポイントを設定して解析する、ということになります。
サービスとして登録されたマルウェアを解析する例としては、WannaCryの他のPCへ感染を広げるための処理部分の解析などです。ただし、サービスとして普通に起動してしまうと、普通にマルウェアとして活動を開始してしまいます。このため、静的解析である程度ロジックを読んでおき、一部の処理を書き換えて(コードの書き換えは、「Edit」メニューの記事参照)永久ループにしたり、sleepで処理の開始を遅延させておき、その間にアタッチをする、といった工夫が必要となります。
アタッチをする場合には、IRAを起動し、最初のメニューでNewを選択し、ファイルの選択でキャンセルを押すと、何の検体も読み込んでいないIDAが起動します。ここで「Debugger」メニューを押すと、「Run」と「Attach」があるので、「Attach」からデバッガを選択します。すると、プロセスのリストが表示されるため、解析対象のプロセスを選択してください。注意事項として、32bitと64bitは別のアプリケーションになるため、CFF Explorerなどで32ビットアプリケーションなのか、64ビットアプリケーションなのか事前に調べておいたほうがスムーズでしょう。Attachした後の解析は、通常の解析と大差ありませんので、一度試してみると良いでしょう。