Japan
サイト内の現在位置
Unix系のファストフォレンジックツール「UAC」
NECセキュリティブログ2025年10月24日
本記事ではインシデントレスポンス(IR)における初動対応、特にファストフォレンジックを支援するツール、Unix-like Artifacts Collector(以下「UAC」と称する)
[1]についてご紹介します。
目次
UACとは
UACとは、インシデントレスポンス(IR)およびファストフォレンジックで必要な証拠となるデータを収集するツールです。軽量なシェルスクリプトで動作し、Unix系のアーティファクトの収集を自動で行います。
主要な特徴
UACは、IRでの迅速なデータ収集を可能にするための以下4つの特徴があります。
| 特徴 | 詳細 |
| クロスプラットフォーム対応 | Linux、macOS、ESXi、AIX、FreeBSD、NetBSD、OpenBSD、NetScaler、SolarisといったUnix系のOSで動作 |
| ソフトウェアのインストール不要 | 外部ライブラリへの依存性がなく、ターゲットシステムへのソフトウェア等のインストールも不要 |
| 揮発性の原則の遵守 | 揮発性の原則に従い、実行中のプロセス、メモリなど、揮発性の高いデータから優先的に収集 |
| 高いカスタマイズ性 | 収集するデータの種類や方法はYAMLファイルで定義されており、カスタマイズ可能 |
プロファイル(モード)の選択
UACでは、調査のフェーズや目的に応じて収集するデータの範囲を選択できるよう、以下4つのプロファイル(モード)が用意されています。
| プロファイル | 目的/特徴 |
| full |
|
| ir_triage | ファストフォレンジックを目的とし、揮発性の高いものと特に調査に必要なアーティファクトに絞って収集 |
| offline | オフライン環境(マウントされたディスクイメージなど)でアーティファクトを収集 |
| offline_ir_triage | offlineの中でも特に調査に必要なアーティファクトに絞って収集 |
UACの実行とファストフォレンジック調査
それではUACを動かしてみます。なお、UACを実行する際は証拠の完全性を確保するために、USBなど外部メディアから実行し、ターゲットシステム内のファイルを上書きしないようにすることを推奨します。
UACの実行手順
UACのインストールは至って簡単で、Gitリポジトリからクローンするだけで必要な準備が完了します。
# Gitリポジトリからクローン
git clone https://github.com/tclahr/uac.git
# 使用するプロファイルと結果の出力先を設定してUACを実行
sudo ./uac -p <使用するプロファイル> <結果を出力するパス>

実行完了すると、結果がtar.gzに圧縮された形で出力されます。出力ファイルを解凍するとアーティファクトのカテゴリごとに分類されたフォルダを確認することできます。

それぞれのフォルダの中にはアーティファクトが格納されており、これらの情報を用いて調査を進めていくことが可能です。

なお、UACはOSやその環境に存在するツール/コマンドごとにアーティファクトの数が変化します。また、ESXiやmacOSなどOS独自のコマンドにも対応しています。


収集可能なアーティファクト
解凍後のフォルダ構成とアーティファクトの種類は以下になります。
| フォルダ名 | アーティファクトの種類 |
| live_response | コンテナ、ハードウェア、ネットワーク、パッケージ、プロセス、ストレージ、システム、vmsに関する揮発性データ |
| system | 異常な権限・ファイル属性を持つファイル、書き込み可能なファイル、隠しファイル等 |
| [root] | ログ等の重要なファイルやディレクトリをそのままコピーしたもの |
| bodyfile | ファイルシステムのメタデータ |
| hash_executables | 実行可能ファイルのハッシュ値(MD5/SHA256) |
| packages | インストール済みパッケージに関する情報
|
| memory_dump | コアダンプファイルや、メモリダンプツールの実行結果
|
| chkrootkit | ルートキット検出ツール「chkrootkit」の実行結果
|
| osquery | 「osquery」の実行結果(ユーザ活動、永続化、ネットワークの揮発性データなどを収集)
|
収集可能なアーティファクトのうち、標準的な環境であれば必ず作成される5つのフォルダの内容について、抜粋して紹介します。
live_response/system
主に調査で使用する標準コマンドの実行結果がテキストファイルで出力されます。
例として、live_response/system配下にあるsystemctl_list_unit-files.txtというファイルを見てみると、systemctl list-unitsコマンドの出力結果がそのまま出力されていることが確認できます。

[root]
調査にあたり重要なファイルおよびディレクトリの構造がそのままコピーされており、ログファイルやシステムの設定ファイル等はここから確認することが可能です。


bodyfile
bodyfileフォルダにはbodyfile.txtというstatコマンドの実行結果が格納されます。このbodyfile.txtには/proc、/procfsフォルダを除いたすべてのファイルのメタデータが出力されます。


hash_executables
hash_executablesフォルダには、/proc、/procfsを除き、実行権限が付与されているすべてのファイルのSHA1とMD5のハッシュ値が出力されます。

あとは上記のファイルからハッシュ値を切り出し、VirusTotal
[4]などのマルウェアDBと照合することで、システム内に存在する既知のマルウェアや攻撃ツールを特定することが可能です。今回は例としてVirusTotalのAPIを使用して、ハッシュ値をVirusTotalで検索するスクリプトを作成し、検索したハッシュ値を持つファイルが悪性判定されるかを確認しました(なお、VirusTotalは無償版だと1日上限500回、1分で4回のAPI制限があることに注意が必要です)。

まとめ
今回はUnix系のファストフォレンジックツールとしてUACを紹介しました。本ツールはUnix系の環境でファストフォレンジックに必要なアーティファクトを自動で収集することが可能です。異なるOSが混在する複雑な環境においても、均一かつ迅速な証拠収集を可能にし、IR時のツールとして有用であると考えています。
参考文献
- [1]GitHub - tclahr/uac
https://github.com/tclahr/uac - [2]Parsing UAC output - UAC Documentation
https://tclahr.github.io/uac-docs/parsing_uac_output/ - [3]Kibana: — データを探索、可視化、分析 | Elastic
https://www.elastic.co/jp/kibana - [4]VirusTotal
https://www.virustotal.com/gui/
執筆者プロフィール
Ao森(あおもり)※ハンドルネーム
担当領域:リスクハンティング
専門分野:インシデントレスポンス、フォレンジック
脆弱性診断やマルウェア解析業務を経て、現在はインシデント対応業務に従事。

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