2019年11月24日

アンチサンドボックス化 マルウェア回避テクニック第 3 回:

This blog, which follows up on our previous blog and is part of our series on different malware evasion techniques, will focus on various methods empl

本ブログでは、 前回のブログ に続き、様々なマルウェアの回避技術を紹介するシリーズの一環として、仮想化インフラ自体とは無関係で、より一般的な動的解析の回避を目的とした解析/サンドボックス環境を検知・回避するためにマルウェアが採用する Vahttps://deepinsarchive.wpengin...; の手法に焦点を当てます。

解析環境/サンドボックスの検出と回避

Time-delay による回避

解析とサンドボックス回避の最もシンプルで長期的な方法の一つは、どんなサンドボックスでも、キューの中の次のサンプルに移る前に、各与えられた解析に有限の時間(通常は数分程度)しか割り当てられないという単純な前提に基づいています。

マルウェアは、この時間枠を超えて実行を遅らせることで、悪意のある行動や活動をサンドボックスから隠すことができます。これは、一般的に「Sleep」または「NtDelayExecution」のWindows APIを使用することで実現されますが、一部のサンドボックスはこの動作を回避するためにパッチを適用しています。この結果、一部のマルウェアは、分析/サンドボックス環境の追加指標としてこれらのパッチを検出するように進化しました。これは、タイムスタンプを取得して眠りにつき、目覚めたときにそのタイムスタンプを確認することで行われます。以前に取得したタイムスタンプとの時間差が、マルウェアがスリープするようにプログラムされた時間と大幅に異なる場合、マルウェアは実行を回避または調整します。同様のタイムスタンプ機構の例は、Deep Instinctが2018年の夏に発見した MyloBot に見られます。

ユーザー チェック

また、マルウェアの開発者は、サンドボックスや解析環境を回避するために、マルウェアが実行されているマシンを実際に操作しているユーザーがいるかどうかを確認する様々なチェックを行う方法を、時間をかけて追加してきました。

例 :

  • マウスカーソルの位置 :マウスのカーソルの位置が長期間にわたって変化しているかどうかをチェックすることで、実際のユーザーが操作していないマシンをマルウェアが検出することができます。マウスカーソルの位置が永続的に変化していることが判明した場合、そのマシンはサンドボックスである可能性が高くなります
  • 最近開いたファイル数/デスクトップ上のファイル数:実行マシンで最近開いたファイル数やデスクトップ上のファイル数が少ないことが確認された場合、サンドボックスである可能性が高くなります
  • 画面解像度 :実行マシンのディスプレイ解像度が異常に低く(800×600など)、現代のユーザーが許容できないような場合、そのマシンはサンドボックスである可能性が高くなります
  • アプリケーション数/アクティブウィンドウ数/プロセス数の実行 :現在実行中のアプリケーションや現在アクティブなウィンドウ、または現在実行中のプロセスの数が異常に少ない場合、そのマシンはサンドボックスである可能性が高いと言えます
  • 低い CPU コア数/ RAM:CPU コア数や利用可能なシステム RAM の量が少ない場合(例:シングルCPUコア、1 GBの RAM )、そのマシンはサンドボックスである可能性が高いと考えられます

リサーチャー対策チェック 

マルウェアの開発者は、マルウェアの研究者やアナリストが一般的に使用しているツールについて理解を深め、実行マシン上にそのようなツールが存在したりアクティブであることが検出された場合には、その実行を回避または調整するようにマルウェアを適宜修正してきました。これらのツールには、デバッガ、ディスアセンブラ、ネットワーク監視ユーティリティ/スニファなどのユーティリティが含まれます。

例 :

  • Wireshark.exe
  • Fiddler.exe
  • Procmon.exe / Procmon64.exe
  • Procexp.exe / Procexp64.exe
  • Sysmon.exe / Sysmon64.exe
  • ProcessHacker.exe
  • OllyDbg.exe
  • ImmunityDebugger.exe
  • Windbgx86.exe / Windbgx64.exe
  • x32dbg.exe / x64dbg.exe
  • Python.exe

まとめ

上述および 第 2 回のブログ で述べたチェック、方法、および技術を任意の数だけ組み合わせて採用することで、マルウェアは環境認識をかなりの程度まで高め、望ましくない環境で実行されていることを検出した場合には、その実行を回避または調整することができます。

マルウェアの開発者とマルウェアの研究者やアナリストとの間では、検出を回避したり改善したりするための独自の方法や手段を開発しながら、常に猫とネズミのゲームが進行しています。シリーズの最終回となる第4回目のブログでは、Living off the Land techniques のテクニックについてご紹介します。