LoginSignup
5
1

More than 1 year has passed since last update.

マルウェアのアンパックについて

Last updated at Posted at 2021-12-19

Windowsマルウェアを対象とする。

パックされているかの確認

Detect It Easyで確認

スクリーンショット 2021-12-19 14.12.36.png
下の方にパッカーなどの情報が表示される。

pestudioのfunctionsの部分を確認

スクリーンショット 2021-12-19 14.15.02.png
functionsの数が少ないとパックされている可能性がある。

pestudioのsectionsの部分を確認

スクリーンショット 2021-12-19 14.15.49.png
パックされていない場合はraw-sizeとvirtual-sizeはほぼ同じ値になっているはずだが、
上の画像では、raw-sizeの値が0x00000000となっている。
また、UPX0などの見慣れないセクションがあるため、パックされている可能性がある。

アンパックする

自動でアンパック

自動でアンパックしてくれるツールがあるので、それを試してみる価値あり(できないこともある)

手動でアンパック

1. 本来のエントリポイントの特定

スクリーンショット 2021-12-19 14.15.49.png
UPX1にentry-pointがあるため、ここからアンパックが実行される。
Ghidraで確認してみる。
スクリーンショット 2021-12-19 16.02.24.png
上の画像は、アンパックのエントリポイントの部分を表示している。
スクリーンショット 2021-12-19 15.00.07.png
スクリーンショット 2021-12-19 15.01.35.png
Function Graphの一部を写しているが、jmpの先が書かれていない部分がある。
ここがアンパックの終わり(本来のエントリポイントへのjmp)の可能性がある。
今回は004595e0が元のエントリポイントである。

2. デバッガでメモリダンプ

x64dbgを使う。
まず、004595e0まで実行する。
スクリーンショット 2021-12-19 15.29.24.png
この状態でScyllaを使う。
何もしないで一旦ダンプする。
その後インポートテーブルを修正してパッチを適応する。
スクリーンショット 2021-12-19 15.37.56.png
これでアンパックは完了。

before

スクリーンショット 2021-12-19 14.15.02.png

after

スクリーンショット 2021-12-19 15.47.47.png
functionsの数が増えていることがわかる。
なお、アンパック後の検体のhash値がアンパック前と変わるため、注意が必要。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1