「Analyzing Malware」2章 パックされているマルウェアの解析 俺的備忘録

アナライジング・マルウェア ―フリーツールを使った感染事案対処 (Art Of Reversing)

アナライジング・マルウェア ―フリーツールを使った感染事案対処 (Art Of Reversing)

2章を一通り読み終わりました。備忘録的にまとめてみます。

PEファイルフォーマット
Windowsのexeやdllなどの実行ファイルで用いられているフォーマット。この形式を知らずしてMalwareを語ることなかれ、というぐらい重要みたい

  • PEファイルフォーマットはwinnt.hで定義されている
  • 仕様書がMicrosoftより公開されている。
  • 仕様書や実技を何度も繰り返してファイルフォーマットへの慣れが必要っぽい

アンパックのながれ
1. デバッガでOEPまで実行する
いくつかテクニックがあるとのこと

  • pushadに対応するpopadに着目する
  • 動的に生成されたエリア(圧縮されたデータの展開されたエリア)への制御が移動したところに着目
  • jmp/call命令に着目する

2. OEPが見つかったらメモリのダンプ
3. IATの再構築 IATはローダによって書き換えられているので、ロード前の値に修復する


アンパックを妨害するテクニック

  • Stolen Bytes 動的に確保された領域にオリジナルコードの一部分をコピーしたコードの実行後、元のコードを続けて実行する。メモリダンプの習得を妨害する
  • SizeOfImageの改変 PEヘッダ内のOptionalHeader構造体に含まれる値。メモリにロードされるファイルのサイズを示す値で、異常に大きい値をいれることでデバッガのアッタチやメモリダンプを妨害する
  • Import Redirection IATの再構築時や、逆アセンブラでの解析時にImport中のAPIをわかりにくくする。レジスタにアドレスを格納してJump命令で読み出すなどすると、Call命令の読み出しと違いAPIの情報がとりにくくなる。

2章読み終えた時点ですでに理解がおいつくのが大変です。何べんも読み直してマスターしていきたいと思います。