導入
マルウェアはさまざまな方法で展開される可能性があり、そのすべてが単一のファイルを実行するのと同じくらい簡単に分析できるわけではありません。DLL、構成ファイル、データ リソースのいずれの場合でも、多くのサンプルは、適切に機能するためにシステム上で特定のコンテンツが利用可能である必要があります。これは、第 2 段階のマルウェア自体が複数のファイルに拡散している間は最初のドロッパーが利用できない可能性があるため、インシデントへの対応中に回収されたサンプルに特に当てはまります。
この短いブログ投稿では、複数のファイルを Recorded Future Sandbox に同時に送信して分析する方法と、これを利用してサンプルの実行方法をより細かく制御する例をいくつか紹介します。
Web UI 経由で複数のファイルを送信する
ファイルを一度に送信するには、分析のために仮想マシンに保存するすべての内容を含む zip ファイルを作成します。
サンドボックス ポータル ダッシュボードから[送信] をクリックすると、次のようなページが表示されます。
左側のテーブルでは、各実行可能ファイルの横にチェックボックスが表示されます。ファイルのボックスを選択すると、選択したファイルが VM 上のエージェントによって実行される新しい分析が作成されます。
注意: Emlファイルはアーカイブとして扱われ、.emlから抽出された対応するファイルは事前に選択する必要があります。
生成された分析ごとに、アーカイブ内のすべてのファイルと選択されたファイルがマシンに抽出されます。つまり、ほとんどの場合、サンプルは実行中にアクセスする必要がある場合にそれらを見つけることができるということです。ファイルは、次のローカルAppDataフォルダにあります。 C:\\Users\\Admin\\AppData\\Local\\Temp :
カスタムオプションで送信する
場合によっては、サンプルがファイルの特定のパスを参照したり、適切に実行するために特定のコマンドライン パラメータを必要とすることがあります。これを行うには複数の方法がありますが、上記の機能のおかげで、必要なアクションを実行するPowerShellスクリプトを作成し、それをzipで送信して.ps1のみを選択することで、実行プロセスをカスタマイズするのは比較的簡単です。上記のようにファイルします。例えば:
Move-Item -Path "example-dll-1.dll" -Dest "C:\System32\sample-dll.dll"Start-Process -FilePath "example-sample.exe" -ArgumentList "-t","-x"
上記の.ps1スクリプトは DLL を System32 フォルダーにコピーし、特定のオプションを使用してサンプルを実行します。
コンソール API 経由で複数のファイルを送信する
API 経由で送信するときに実行するファイルを選択することもできます。これらを使用すると、API 経由で送信するときに起動オプションをカスタマイズできます。これには、仮想マシンによって実行されるアーカイブ内の特定のファイルの定義も含まれます。
次のコマンドを使用すると、アーカイブを送信し、分析対象を選択できます。
curl -H '認証: Bearer<API-KEY> ' \
-X ポスト \
-F 'file=@<LOCAL PATH TO ARCHIVE> ' \
-F '_json={"profiles":[{"pick":"<TARGET FILEPATH IN ARCHIVE>","profile":"<PROFILE ID>"} ],"kind":"file","interactive":false}' \
'https://api.tria.ge/v0/samples'
実行するファイルは、 pickの分野profiles物体。ここで入力するパスは、アーカイブ自体のルートを基準とする必要があります。アーカイブを送信するときにこれを指定しない場合、サンドボックスはサポートするファイルごとに個別の分析を作成します。
上記のコマンドで利用可能なプロファイルIDのリストは、 /profiles APIエンドポイント:
curl -H '認証: Bearer <API-KEY>' https://api.tria.ge/v0/profiles
サンプルのステータスを確認すると、指定されたファイルに対して 1 つのタスクが作成されたことがわかります。
curl -s -H '認証: Bearer <API-KEY>' 'https://api.tria.ge/v0/samples/<SAMPLE-ID>'{
"id": "<SAMPLE-ID> ",
「ステータス」:「報告済み」
"種類": "ファイル",
「ファイル名」: 「example-2.zip」「プライベート」:true、
「タスク」: [
{
"id": "task1",
"status": "reported",
"target": "example-ps1.ps1"
}
],
「送信済み」: 「2020-01-14T16:18:55.746135Z」
「完了」: 「2020-01-14T16:20:09Z」
}
まとめ
このガイドが、Recorded Future Sandbox を最大限に活用するのに役立つことを願っています。コマンド例を含む API の詳細については、 Sandbox API ドキュメントをご覧ください。