サイト内の現在位置

ハッシュ値問い合わせツール「munin」のご紹介

NECセキュリティブログ

2023年10月20日

NECサイバーセキュリティ戦略統括部セキュリティ技術センターの岡田です。デジタルフォレンジックやインシデントレスポンスについて勉強をしていく上で、有用なツールやアーティファクトなどを日頃から調査・検証を行っています。今回のブログでは、調査の中で発見したツールの一つであるオンラインハッシュチェッカーmunin new window[1]をご紹介したいと思います。

フォレンジック作業におけるハッシュ値とは

ツールの紹介をする前にフォレンジック作業で得られるハッシュ値に関して、少し説明したいと思います。フォレンジック作業内で実際にハッシュ値を取得する場合は様々あると思われますが、今回は解析対象としているwindowsのAmcacheに関して、説明したいと思います。
Amcacheとは単独のレジストリハイブファイルとして記録されるアーティファクトです。PC内に現存もしくは過去に存在していた一定の実行ファイルについて、ファイルパスとハッシュ値(SHA-1)等が記録されています。ただし、Microsoft社はAmcacheに関する仕様を公開していないため、記録される実行ファイルの正確な条件などは不明ですが、過去のフォレンジック的経験から重要なアーティファクトの一つとしてみなされています。

muninとは

今回取り上げるmuninとは一般的に広く知られているネットワークリソース監視ツールのmuninでなく、VirusTotal new window[2]をはじめとするオンライン上のハッシュ値検索を自動で問い合わせてくれるツールです。Pythonで書かれており、ライセンス形態はApache2.0となっております。対応している問い合わせ先として登録できるのは以下の通りです。

Virustotal new window[2]
HybridAnalysis new window[3]
Any.Run new window[4]
URLhaus new window[5]
MISP new window[6]
Malshare new window[7]
Valhalla new window[8]
Hashlookup new window[9]

基本的な使い方

動作環境

  • ubuntu 22.04
  • munin
  • スキャン対象
    • Cybderdefenderの問題「Sysinternals」new window[10]
  • (注:
    Cyberdefender new window[11]は主にブルーチーム向けの演習サービスです。詳細をご覧になりたい方は過去の記事を参考にしてください[12] 。)

コマンドを実行する前に設定ファイルにAPI keyを登録する必要があります。今回は例としてVirusTotalのAPI keyを登録したい思います。VirustotalのAPIkeyを取得するには、ユーザ登録する必要があります。ユーザ登録の仕方やAPI keyの取得方法に関しては、VirusTotalのドキュメントを参考にしていただければ幸いです new window[13]。Apikeyを取得後、munin.iniを編集しAPI keyを登録します。

図 1.iniファイルの一部

VirusTotalのAPIは無料ユーザの場合、1分間で4リクエストかつ1日500リクエストに制限されています。より詳細にAPI に関しての制限等知りたい方は、VirusTotalのドキュメントをご参照ください new window[14]。そのため、実際に使用する場合は制限を超えないように注意が必要です。
実際にmuninでは、以下の画像のようにiniファイルでVirusTotalの問い合わせに制限をかけています。

図 2.iniファイルの一部

その後、下記で示すコマンドを実行することでVirusTotalに問い合わせた結果が出力されます。初回の実行に関しては、あらかじめ用意されているmunin-demo.txtで問い合わせを開始することが推奨されています。引数としてはiniファイルとハッシュ値が記載されているテキストファイルを指定します。

図 3.デモファイル問い合わせの一部

実行後、問い合わせた結果がcheck-results_ <問い合わせたファイル名>.csvファイルに保存されています。
また、一度問い合わせた内容はキャッシュがvt-hash-db.jsonというjsonファイルに保持されています。そのため、同じ内容を問い合わせた場合は基本的にキャッシュから復元されます。

次に、実際に侵害があったディスクに対して実行した結果を見てみたいと思います。例としてCybderdefenderの問題を対象にして行いと思います。
ディスクイメージが配布されていますのでツールを使い、Amcacheだけを取り出しました。
AmchcheはSHA-1ハッシュを保持していますので、こちらをVirusTotalに問い合わせしたいと思います。抽出した内容をハッシュ値のみテキストファイルに保存します。その後、以下のコマンドを使用し、問い合わせを行います。

図 4.スキャン対象のファイル問い合わせ一部

実行結果は、先ほど同じようにcheck-results_ <問い合わせたファイル名>.csvファイルに保存されています。図4の場合はcheck-results_sysinternal.csvというファイルに問い合わせ結果が保存されています。

解析結果の一例

実際に生成されたcsvファイルで、図4の問い合わせ結果を見てみたいと思います。

図 5.出力されたcsvファイルの解析結果

Ratingを基にソートするとマルウェアと思われるファイルを特定することができました。

CLI(コマンドラインインターフェース)機能

本ツールはCLI機能を使用することができます。この機能を利用する場合、ハッシュ値を記載したテキストファイルを用意する必要がありません。
実際に利用してみます。本機能を利用する場合は、—cliオプションを付与する必要があります。このオプションを付与すると、従来自動問い合わせからコマンドラインの入力に切り替えることができます。

図 6.cli機能の実行結果

実行すると対話モードに入り、個別でハッシュ値の問い合わせを行うことができます。
コマンドライン上でハッシュ値を入力し、control + Dを押すと通常と同じように問い合わせを行うことができます。

Web機能

本ツールはweb機能としても使用することができます。この機能を利用することで、簡易的なwebサーバを立て、ハッシュ値に関して問い合わせを行うことができます。
実際に利用してみます。本機能を利用する場合は、—webオプションと-wオプションを付与する必要があります。--webオプションは、muninをwebサービスとして起動するために必要なオプションです。-wオプションで、どのポートを使用するかを指定することができます。

図 7.web機能の実行結果

図7のような画面になり、webサービスにアクセスすることができます。図7に記載されているURLにアクセスすると、次のような画面になります。

図 8.webサイトをアクセス

エラーが出ており、このままでは問い合わせを行うことができません。urlの後に/<ハッシュ値>を付与して問い合わせを行う必要があります。
次の通りURLの後にハッシュ値を入力し、再度アクセスして問い合わせを行います。

図 9.ハッシュ値を入力してwebサイトをアクセス

問い合わせ結果がJSON形式で出力されます。

まとめ

今回はハッシュ値の問い合わせを自動化してくれるツールであるmuninを紹介しました。フォレンジック作業を行う際、Amcacheの取得結果をオンラインでハッシュ値検索することが多いです。muninではデフォルトでVirusTotalへの問い合わせを自動化できるようになっていますが、加えて他のサイトへの問い合わせも実行化可能です。手間のかかる作業を複数自動化できるため、非常に有用と考えています。
今後もインシデントレスポンスを行う際有用と思われる様々なツールを調査・検証を行い、お客様のインシデント対応依頼にスピーディかつ正確に調査を実施し、意思決定をサポートしていきたいと思っています。

参考文献

付録

使用可能のオプション一部を以下にまとめております。ご利用の際のご参考になれば幸いです。

表 1.オプションの一覧(一部)

執筆者プロフィール

岡田 真一(おかだ しんいち)
セキュリティ技術センター リスクハンティングチーム

脆弱性診断、ツール開発・検証、デジタルフォレンジック業務などに従事。
CEH、CDFP-Bを保持

執筆者の他の記事を読む

アクセスランキング