
JavaScript マルウェアを学習するためのツール。
悪意のあるJavaScriptを解析するためのユーティリティ。
npmからbox-jsをインストールするだけです:
npm install box-js --global
box-js は以下の形式でも利用可能です:
- Cuckooモジュールとして(
integrationsディレクトリおよび Nwinternights/Cuckoo_Boxjs を参照);- Dockerfileとして(
integrations/README.mdを参照);- セキュリティ専門家向けのディストリビューションのパッケージとして(REMnux、BlackArch);
- オープンソースアプリケーションの一部として(Intel Owl);
- 商用のサードパーティサービスの一部として(any.run)。
sample.js というサンプルがあるとします。解析するには、単に以下を実行します:
box-js sample.js
ペイロードをダウンロードしたい場合も多いでしょう。ダウンロードを有効にするには --download フラグを使用します。それ以外の場合、エンジンは404エラーをシミュレートし、スクリプトは配布サイトがダウンしていると思い込んで、フォールバックサイトに問い合わせるようになります。
Box.js は Windows JScript 環境をエミュレートし、エミュレーションの概要をコンソールに出力し、sample.js.results というフォルダを作成します(すでに存在する場合は sample.js.1.results などを作成します)。このフォルダには以下のものが含まれます:
analysis.log - 画面上に出力された解析のログ;snippets.json - サンプルによって実行されたコード片(JavaScript、シェルコマンドなど)のリスト;urls.json - コンタクトされたURLのリスト;active_urls.json - アクティブなマルウェアをドロップすると思われるURLのリスト;resources.json - ファイルタイプとハッシュを含む ADODB ストリーム(スクリプトがディスクに書き込んだファイル);IOC.json - IOC(侵害の指標)として特定された動作のリスト。これには、レジストリアクセス、書き込まれたファイル、HTTPリクエストなどが含まれます。これらは自分で分析するか、Malwr、VirusTotal、またはCuckooサンドボックスに自動的に送信することができます。詳細については、box-export --help を実行してください。
さらなる分離のために、一時的なDockerコンテナ内で解析を実行することをお勧めします。詳細については
integrations/README.mdを参照してください。
解析を自動化したい場合は、戻りコード(
integrations/README.mdに記載)を使用して、異なる種類のエラーを区別できます。
git から取得した box-js リポジトリには boilerplate.js ファイルが含まれています。このファイルは、document などの一般的なブラウザオブジェクトのスタブバージョンを定義しています。--prepended-code=DIR/boilerplate.js オプション(DIR はクローンした box-js リポジトリのディレクトリ)または --prepended-code=default を指定して解析を再実行してみてください。--prepended-code オプションは、box-js に指定されたファイル内の JavaScript を解析対象のサンプルの先頭に追加するよう指示します。
boilerplate.js をコピーし、必要に応じて独自のスタブクラスやオブジェクトなどを追加できることに注意してください。--prepended-code=show-default コマンドラインオプションを使用すると、デフォルトの box-js の boilerplate.js ファイルの完全なパスが表示されます。
box.js は通常単一ファイルに使用されますが、バッチ解析も実行できます。解析するファイルやフォルダのリストを渡すだけです:
box-js sample1.js sample2.js /var/data/mySamples ...
デフォルトでは、box.js はサンプルを並列処理し、コアごとに1つの解析を実行します。--threads に値を指定することで異なる設定を使用できます。特に、0 は制限を解除し、box-js が可能な限り多くの解析スレッドを生成するようにし、非常に高速な解析が可能になりますが、システムに過負荷がかかる可能性があります(解析は通常 CPU バウンドであり、RAM バウンドではありません)。
--loglevel=warn を使用すると、解析関連のメッセージを抑制し、進行状況情報のみを表示できます。
解析が完了したら、アクティブなURLを次のように抽出できます:
cat ./*.results/active_urls.json | sort | uniq