Sandboxを回避するときに使われるテクニック
TryHackMeのSandbox EvasionでSandboxによる検知を回避する方法が紹介されていたのでここでまとめておく。
Sleeping
Sandboxは調査のためにキューイングされる検体に対して、リソースの過剰な割り当てを防止するために時間上の制約を設けている。もし仮にSandboxが5分しか実行されないことが分かっている場合、マルウエアは5分間スリープすることでSandboxによる検知を回避することができる。具体的な方法としては単に一定時間が過ぎるのを待つか、複雑で時間がかかる計算を実行してやり過ごすなど。
Geolocation
Sandboxはオンプレミス環境よりもAnti Virusプロバイダによってホストされていることが多い。 そこでマルウエアの実行環境のグローバルIPを確認し、ターゲット組織や住宅に割り当てられているIPアドレス帯でのみ実行するように制御することでSandbox上での実行を防ぐことができる。
System Information
Any.RunでホストされているSandboxは1コアのCPUと4GBのRAMを備えた仮想マシンで提供されている。通常マルウエアのターゲットとして意図しているワークステーションはCPUを複数コア、メモリも8GB以上は備えていることが多い。システム情報を確認することで容易にSandboxかどうかおおよその推測をすることができる。
また以下の情報もSandbox環境かどうかの判定に使用することができる。
- ストレージのシリアル番号
- PCのホスト名
- BIOS/UEFIバージョンとシリアル番号
- WindowsプロダクトキーとOSバージョン
- ネットワークアダプタの情報
- 仮想環境か物理環境か
- 現在サインインしているユーザ
ドメイン情報
ほとんどのSandboxはADのドメインに参加していないので、もしドメインに参加していないホストであれば狙いたいターゲットとは違う可能性がある。 クエリで以下の情報を要求すれば、ドメインに参加しているかどうかがわかる。
- コンピュータ群
- ユーザアカウント群
- 最終ログイン者
- グループ群
- ドメイン管理者
- 企業管理者
- ドメインコントローラ
- サービスアカウント
- DNSサーバ