Japan
サイト内の現在位置
ハッシュ値問い合わせツール「munin」のご紹介
NECセキュリティブログ2023年10月20日
NECサイバーセキュリティ戦略統括部セキュリティ技術センターの岡田です。デジタルフォレンジックやインシデントレスポンスについて勉強をしていく上で、有用なツールやアーティファクトなどを日頃から調査・検証を行っています。今回のブログでは、調査の中で発見したツールの一つであるオンラインハッシュチェッカーmunin [1]をご紹介したいと思います。
フォレンジック作業におけるハッシュ値とは
ツールの紹介をする前にフォレンジック作業で得られるハッシュ値に関して、少し説明したいと思います。フォレンジック作業内で実際にハッシュ値を取得する場合は様々あると思われますが、今回は解析対象としているwindowsのAmcacheに関して、説明したいと思います。
Amcacheとは単独のレジストリハイブファイルとして記録されるアーティファクトです。PC内に現存もしくは過去に存在していた一定の実行ファイルについて、ファイルパスとハッシュ値(SHA-1)等が記録されています。ただし、Microsoft社はAmcacheに関する仕様を公開していないため、記録される実行ファイルの正確な条件などは不明ですが、過去のフォレンジック的経験から重要なアーティファクトの一つとしてみなされています。
muninとは
今回取り上げるmuninとは一般的に広く知られているネットワークリソース監視ツールのmuninでなく、VirusTotal [2]をはじめとするオンライン上のハッシュ値検索を自動で問い合わせてくれるツールです。Pythonで書かれており、ライセンス形態はApache2.0となっております。対応している問い合わせ先として登録できるのは以下の通りです。
基本的な使い方
動作環境
- ubuntu 22.04
- munin
- スキャン対象
- Cybderdefenderの問題「Sysinternals」
[10]
- Cybderdefenderの問題「Sysinternals」
コマンドを実行する前に設定ファイルにAPI keyを登録する必要があります。今回は例としてVirusTotalのAPI keyを登録したい思います。VirustotalのAPIkeyを取得するには、ユーザ登録する必要があります。ユーザ登録の仕方やAPI keyの取得方法に関しては、VirusTotalのドキュメントを参考にしていただければ幸いです [13]。Apikeyを取得後、munin.iniを編集しAPI keyを登録します。

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

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

実行後、問い合わせた結果がcheck-results_ <問い合わせたファイル名>.csvファイルに保存されています。
また、一度問い合わせた内容はキャッシュがvt-hash-db.jsonというjsonファイルに保持されています。そのため、同じ内容を問い合わせた場合は基本的にキャッシュから復元されます。
次に、実際に侵害があったディスクに対して実行した結果を見てみたいと思います。例としてCybderdefenderの問題を対象にして行いと思います。
ディスクイメージが配布されていますのでツールを使い、Amcacheだけを取り出しました。
AmchcheはSHA-1ハッシュを保持していますので、こちらをVirusTotalに問い合わせしたいと思います。抽出した内容をハッシュ値のみテキストファイルに保存します。その後、以下のコマンドを使用し、問い合わせを行います。

実行結果は、先ほど同じようにcheck-results_ <問い合わせたファイル名>.csvファイルに保存されています。図4の場合はcheck-results_sysinternal.csvというファイルに問い合わせ結果が保存されています。
解析結果の一例
実際に生成されたcsvファイルで、図4の問い合わせ結果を見てみたいと思います。

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

実行すると対話モードに入り、個別でハッシュ値の問い合わせを行うことができます。
コマンドライン上でハッシュ値を入力し、control + Dを押すと通常と同じように問い合わせを行うことができます。
Web機能
本ツールはweb機能としても使用することができます。この機能を利用することで、簡易的なwebサーバを立て、ハッシュ値に関して問い合わせを行うことができます。
実際に利用してみます。本機能を利用する場合は、—webオプションと-wオプションを付与する必要があります。--webオプションは、muninをwebサービスとして起動するために必要なオプションです。-wオプションで、どのポートを使用するかを指定することができます。

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

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

問い合わせ結果がJSON形式で出力されます。
まとめ
今回はハッシュ値の問い合わせを自動化してくれるツールであるmuninを紹介しました。フォレンジック作業を行う際、Amcacheの取得結果をオンラインでハッシュ値検索することが多いです。muninではデフォルトでVirusTotalへの問い合わせを自動化できるようになっていますが、加えて他のサイトへの問い合わせも実行化可能です。手間のかかる作業を複数自動化できるため、非常に有用と考えています。
今後もインシデントレスポンスを行う際有用と思われる様々なツールを調査・検証を行い、お客様のインシデント対応依頼にスピーディかつ正確に調査を実施し、意思決定をサポートしていきたいと思っています。
参考文献
- [1]
- [2]
- [3]HybridAnalysis
https://www.hybrid-analysis.com/
- [4]Any.Run
https://any.run/
- [5]URLhaus
https://urlhaus.abuse.ch/
- [6]
- [7]MalShare
https://malshare.com/
- [8]
- [9]hashlookup
https://circl.lu/services/hashlookup/
- [10]Sysinternals Blue Team Challenge
https://cyberdefenders.org/blueteam-ctf-challenges/100#nav-questions
- [11]CyberDefenders
https://cyberdefenders.org/
- [12]トレーニングプラットフォーム「CyberDefenders」のご紹介
https://jpn.nec.com/cybersecurity/blog/211119/index.html - [13]VirusTotal Documentation
https://support.virustotal.com/hc/en-us/categories/360000162878-Documentation
- [14]VirusTotal Documentation api
https://developers.virustotal.com/reference/public-vs-premium-api
付録
使用可能のオプション一部を以下にまとめております。ご利用の際のご参考になれば幸いです。
表 1.オプションの一覧(一部)

執筆者プロフィール
岡田 真一(おかだ しんいち)
セキュリティ技術センター リスクハンティングチーム
脆弱性診断、ツール開発・検証、デジタルフォレンジック業務などに従事。
CEH、CDFP-Bを保持

執筆者の他の記事を読む
アクセスランキング