右クリックで表示されるメニューにも色々機能があります。
概ね、トップのメニューで見られる同じ名前の機能があり、当然機能も同じです。
そんな中で、特に便利なのにトップメニューに見あたらなかったため、紹介しそびれていた機能を紹介しています。
(まあ、多分私の見落とし。)
●関数のクロスリファレンス機能
選択した関数に対し、その関数を呼び出している呼び出し元、その関数が呼び出している関数を表またはツリー状にして表示してくれる機能です。
はっきり言って、これ超便利です。
IDA Proにも同様な機能はあるのですが、使い始めた当初はそういった機能を十分に把握しておらず。初めて知ったときには目からウロコが大量に落ちました。あと、「この機能知ってれば、あの解析もこの解析ももっと楽だったんじゃね?」と涙すら落ちかけましたよ。独学で解析してると、こういうナレッジ不足になりやすいのはネックですね(ちなみに、IDAの機能はSANSのFOR 610受けたときに初めて知った)。今回、このツールでなるべく一通り機能を触ってみようと思ったのも、「知ってれば使ってたのにぃいいいいい!!」をなるべく無くしたい、というのもあります。
(まあ、触ってみても機能を理解できなかったり、使いこなせるかはまた別の話)
特に、解析できた特長的な機能の関数を呼び出している場所を調べることで、どんな機能がその関数を利用しているかを知ったり、調査しようとしている関数がどんな関数を呼んでいるかを調べることで、ある程度の機能類推ができるといった効果があります。
例えば、ランサムウェアを解析しているケースで、暗号化している関数を見つけたとき、この関数を呼び出しているところはどこか?を調べると、どういった処理の流れでその暗号化をしているかが分かり、全貌の把握に役立ちます。
結構前のLockyは一度見たのですが、これの暗号化はファイルデータを暗号化するAES128、AESの共通鍵を暗号化するRSA暗号化処理のほかに、もう一つストリーム暗号/復号化処理(だと思う、そこまで暗号詳しくないけどブロック暗号じゃなさそうな共通鍵暗号)がありました。この暗号化処理はなんじゃらほい、と思って調べてみたら、C&Cと通信するときに使う暗号化処理でした。そしてコイツの呼び出し元を調べたら、ファイルを暗号化したAES鍵を暗号化するためのRSA公開鍵の復号のほか、被害者端末の情報や被害者の識別IDを暗号化してC&Cサーバに送信する際にも呼んでるのが見つかったりしました。つまり、「このマルウェアに他に情報漏えいの可能性がないか?」の可能性を調べろと言われたら、C&Cとの通信で暗号化/復号化しているこの関数を参照している処理をクロスリファレンスで調べ、その前にやってる処理を読めば見つけられる、というワケですな(もちろん、他に処理がある可能性も否定しませんが・・・ねw)。な、超便利だろう?そうだろう?
まあ、Search機能でラベル名などで追ったりしてもいいんですけどね。やはり、クロスリファレンスで表やツリー表示し、クリックでダイナミックにジャンプできるのは便利なんですよ。一回使ってみてくださいよ、ホント。
クロスリファレンスは、対象の関数のラベルなどにカーソルを合わせ、右クリックで表示されるポップアップメニューの「References」からサブメニューが出るため、ここから機能を呼び出します。
クロスリファレンスの使用例(表):
・対象のラベルを右クリックし、ポップアップメニューの「References」→「Show References to (ラベル名)」
クロスリファレンスの使用例(ツリー):
・対象のラベルを右クリックし、ポップアップメニューの「References」→「Show Call Trees」