最近のマルウェアは普通に耐解析機能をもっているらしい。
日本年金機構でのEmdiviもしかり。
sandboxによる解析を検出したり、OllyDbgやSoftIce, WireSharkなども検出するようだ。
さらに、パックされてるし、一定期間は動作しないなどもあり、そりゃ解析する方も大変だよね。
##どうやって耐解析機能をもたせるんだろう
純粋に技術としての興味です。
何がどうリスクなのか、それはどの程度なのかを正確に把握するには、攻撃手法を知る必要がある。
ググって見つけたこの資料がちょっと古いけど興味深かった。
(基本、ここではWindowsの話として)
- APIによるデバッガの検出
それようのAPIが用意されているのであれば素直な方法よね。
- Winでは構造化例外の処理が異なるらしい
何が違うんだろう?わからんね。
- 実行時間計測
処理時間が想定より長ければ、デバッグされていると判定。これもわかりやすいけど、いたるところに置かれたら解析は大変そう。
- デバッガ読み込み妨害
そういう手もあるのか。不正なPEにすることで、実行はできるがOllyDbgでは読み込めないとか、かなりトリッキーだな。
- INT3検出
INT3(ソフトウェアブレークポイント)の数を定期的に数えてデバッグを検出するって。これも解析する側にとってはきついね。ブレークポイントかけると、発動しないんだよね、とかなりそう。ハードウェアブレークかければいいのかもだけど。
などなど。かなり賢い。
マルウェアは、OSや他のアプリの脆弱性(仕様?)も積極的に使って自分を隠そうとする。今やこんなに高度なことをやってるのね。
おわり。