Weird Wired World

Programming, Security

Cuckooの検知/回避

SandboxであるCuckooの検知について書く。

f:id:enufranz:20171120225011p:plain:w150

Cuckoo(カッコウ、クックー)はオンラインスキャナのVirus Total等多くの採用実績がある,OSSのSandboxである。OSSなので誰でも簡単に利用できる一方で,解析には注意が必要と考える。Sandbox上で解析対象の挙動に問題がなくても,Sandboxを検知して回避した(本来と違う挙動をとった)可能性があるからだ。これを防ぐために,言い換えるとSandboxを正しく利用するために,マルウェアの利用するSandboxの検知技術を把握しておくことが重要と考える。

ということで今回は概要の紹介を,以降で( ゆーっくり(^^;) )検証コードを試し書きしてみます。なお本記事の内容は各位の責任と判断でご利用ください

マルウェアの備える解析検知/回避機能

イタチごっこの歴史で培ったいわばマルウェアの自己防衛機能。今回取り上げるSandboxの検知(Sandbox Evasion)を含めて主に以下の5つがある:

  • Sandbox Evasion: Sandboxの検知を回避する
  • Antivirus Evasion; ウイルス対策ソフトの検知を回避する
  • Anti-debugging; デバッガによる動的実行の解析を回避する
  • Anti-disassembly: 逆アセンブラによるリバースエンジニアリングを回避する
  • Process Tricks: プロセスを改ざんしWindowsやアプリケーションの検知を回避する

これらの方法は下記のwikiにまとめられている。SandboxのCheatSheetもあるので必見。

http://unprotect.tdgt.org/index.php/Unprotect_Project

Cuckooの検知/回避

上記の参考サイト(2017.11.20閲覧)から特にSandboxの検知回避方法について抄訳とコメントをする。 解析者としてはこれらによって回避されないよう注意する。

種別 項目 説明
Cuckoo Folder ゲストでC:\Cuckooのような特別なパスが使われることがある
→このパスが存在するかを確認する
Hooked Function Cuckooはゲストの幾つかのAPIをHookする
例えばファイル削除のDeleteFileWなどがあり,全てのリストはドキュメント参照
→これらのAPIのHookの有無を確認する
Pipe Cuckooはホストとゲストの通信にパイプ\\\\.\\pipe\\cuckooを使う
→このファイルが存在するかを確認する
Agent Cuckooはホストとゲストの通信にPythonのAgent(agent.py)を使う
→プロセスpython.exeまたはpythonw.exeを探すか,ファイルagent.pyを探す
Sandbox
共通
OnsetDelay 特定の時刻に実行することで,悪意のあるコードの実行を遅らせる
Stalling code 時間のかかる処理を入れておき,悪意のあるコードの実行を遅らせる
Extended sleep code 長いsleepを入れておき,悪意のあるコードの実行を遅らせる
User interaction マウスやキーボードの動作をトリガーにすることで,自動での検知を回避する
例: 複数回のクリックがあるまで待機(Trojan.APT.BaneChant)
Office RecentFiles 通常使うPCであればOfficeの履歴があるはず
Screen resolution Sandboxを利用する際に画面サイズは800x600かそれ以下であることが多い
Installed software 解析者であればPythonやデバッガなど解析に有用なソフトウェアがあるはず
Memory size 通常のPCであればメモリは4G以上あるはず
Drive size 通常のPCであればディスクサイズが80GB以上あるはず
Hostname ホスト名がSandboxによくあるものかを確認する
例: Sandbox, Maltest, Malware, malsand, ClonePC
USB Drive 通常のPCであればUSBドライブが幾つかついているはず
Printer 通常のPCであれば複数のプリンタに接続しているはず
Processor 通常のPCで1コアのCPUを使うことはまずないが,仮想環境は初期設定で1であることが多い
→プロセッサの数を確認する

( 通常のPCとは家庭やオフィスで使われる一般的なPC(組み込み用途ではない)で,ネイティブで動いているものを指す。)

ところで,どのマルウェアが何の技術を使うかのデータベースってあるのでしょうか。どう探せばいいかも分からん(^^;)。上記のin the wildの実例を見れれば便利だと思う。気づいたら上の表に書き込んでいきます! :D