Ghidraの操作メモ - Windowメニュー(その5) - | reverse-eg-mal-memoのブログ

reverse-eg-mal-memoのブログ

サイバーセキュリティに関して、あれこれとメモするという、チラシの裏的存在。
medium(英語):https://sachiel-archangel.medium.com/

Defined Strings

解析で見つかった文字列を表示します。

プログラム動作時に名前解決で用いる文字列や、スクリプトのコマンド文字列など、機能を知るための助けになる文字列や、IoCに使える文字列が含まれていることがあり、静的解析ではStringsは必ず確認すると言ってもいいでしょう。少なくとも私は見ていますね。

 

もっとも、他でも述べている通り、最近ではマルウェア全体をパッキングしていることが多いです。この場合、アンパックした後の文字列を見る必要があります。

文字列を暗号化していて使用の都度復号化するケースもあります。一昔前に見たランサムウェアも、一部のAPIの利用を秘匿するために、Importテーブルに載せず、GetProcAddressで取得していました。このときの関数名も暗号化されており、直前に復号、GetProcAddress後に関数名を破棄していました。このような場合では、どうしてもDefined Stringsには表れず、デバッガでの追跡が現実的になります。

 

雑なランサムウェアの場合、アンパックし、メモリに展開された領域に、暗号化対象とする拡張子を平文で格納しているものもあります。

デバッガ機能が追加され、任意のタイミングでStringsを再解析できるような機能がついたら、大化けしそう・・・と妄想してみる。

 

 

 

●Disassembled View

逆アセンブルコードを表示します。

・・・が、Listingの画面とどう違うの?がちょっと良く分かりませんでした。

 

 

 

●Equates table

パラメータに名前を付ける機能(Equate)で付けられた名前と値を一覧表示します。

解析された値に意味がある場合、それに名前を付けておくことで、解析者に値の意味を分かりやすくする目的の機能です。

 

 

機能の使用例:

  1. Listingの画面で、名前を付けたい数値にカーソルを合わせ、右クリックでポップアップメニューを表示し、「Set Equate...」をクリック。
  2. 「Set Equate」ダイアログの「Equate String」に付ける名前を入力し、OKをクリック。
  3. 値が文字列に変更されている。