Compact
true
担当領域:リスクハンティング/専門分野:インシデントレスポンス、フォレンジック
脆弱性診断やマルウェア解析業務を経て、現在はインシデント対応業務に従事。

本記事ではインシデントレスポンス(IR)における初動対応、特にファストフォレンジックを支援するツール、Unix-like Artifacts Collector(以下「UAC」と称する)[1]についてご紹介します。

UACとは

UACとは、インシデントレスポンス(IR)およびファストフォレンジックで必要な証拠となるデータを収集するツールです。軽量なシェルスクリプトで動作し、Unix系のアーティファクトの収集を自動で行います。

主要な特徴

UACは、IRでの迅速なデータ収集を可能にするための以下4つの特徴があります。

表1:UACの主要な特徴

特徴
1
1
詳細
1
1
クロスプラットフォーム対応
1
1
Linux、macOS、ESXi、AIX、FreeBSD、NetBSD、OpenBSD、NetScaler、SolarisといったUnix系のOSで動作
1
1
ソフトウェアのインストール不要
1
1
外部ライブラリへの依存性がなく、ターゲットシステムへのソフトウェア等のインストールも不要
1
1
揮発性の原則の遵守
1
1
揮発性の原則に従い、実行中のプロセス、メモリなど、揮発性の高いデータから優先的に収集
1
1
高いカスタマイズ性
1
1
収集するデータの種類や方法はYAMLファイルで定義されており、カスタマイズ可能
1
1

プロファイル(モード)の選択

UACでは、調査のフェーズや目的に応じて収集するデータの範囲を選択できるよう、以下4つのプロファイル(モード)が用意されています。

表2:UACのプロファイル一覧

プロファイル
1
1
目的/特徴
1
1
full
1
1
  • 詳細な調査を目的とし、収集可能なすべてのアーティファクトを収集
  • 最も時間がかかり、ファイズサイズも大きくなる
1
1
ir_triage
1
1
ファストフォレンジックを目的とし、揮発性の高いものと特に調査に必要なアーティファクトに絞って収集
1
1
offline
1
1
オフライン環境(マウントされたディスクイメージなど)でアーティファクトを収集
1
1
offline_ir_triage
1
1
offlineの中でも特に調査に必要なアーティファクトに絞って収集
1
1

UACの実行とファストフォレンジック調査

それではUACを動かしてみます。なお、UACを実行する際は証拠の完全性を確保するために、USBなど外部メディアから実行し、ターゲットシステム内のファイルを上書きしないようにすることを推奨します。

UACの実行手順

UACのインストールは至って簡単で、Gitリポジトリからクローンするだけで必要な準備が完了します。

# Gitリポジトリからクローン
git clone https://github.com/tclahr/uac.git

# 使用するプロファイルと結果の出力先を設定してUACを実行
sudo ./uac -p <使用するプロファイル> <結果を出力するパス>

図1:UbuntuでのUACの実行画面
図1:UbuntuでのUACの実行画面
100

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

図2:UACの出力結果(tar.gz)を解凍後のフォルダ構成
図2:UACの出力結果(tar.gz)を解凍後のフォルダ構成
100

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

図3:UACの出力結果(live_response/system)
図3:UACの出力結果(live_response/system)
100

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

図4:live_response/vmsフォルダ(ESXiで使用可能なesxcliコマンドの出力結果)
図4:live_response/vmsフォルダ(ESXiで使用可能なesxcliコマンドの出力結果)
100
図5:network/plutil_-p_library-preferences-systemconfiguration-preferences.plist.txt(macOSで使用可能なplutilコマンドの出力結果)
図5:network/plutil_-p_library-preferences-systemconfiguration-preferences.plist.txt(macOSで使用可能なplutilコマンドの出力結果)
100

収集可能なアーティファクト

解凍後のフォルダ構成とアーティファクトの種類は以下になります。

表3:UACで収集可能なアーティファクト一覧

フォルダ名
1
1
アーティファクトの種類
1
1
live_response
1
1
コンテナ、ハードウェア、ネットワーク、パッケージ、プロセス、ストレージ、システム、vmsに関する揮発性データ
1
1
system
1
1
異常な権限・ファイル属性を持つファイル、書き込み可能なファイル、隠しファイル等
1
1
[root]
1
1
ログ等の重要なファイルやディレクトリをそのままコピーしたもの
1
1
bodyfile
1
1
ファイルシステムのメタデータ
1
1
hash_executables
1
1
実行可能ファイルのハッシュ値(MD5/SHA256)
1
1
packages
1
1

インストール済みパッケージに関する情報

※ パッケージがインストールされていない場合は作成されない

1
1
memory_dump
1
1

コアダンプファイルや、メモリダンプツールの実行結果

※ ツールやコアダンプファイルがない場合は作成されない

1
1
chkrootkit
1
1

ルートキット検出ツール「chkrootkit」の実行結果

※ ツールがない場合は作成されない

1
1
osquery
1
1

「osquery」の実行結果(ユーザ活動、永続化、ネットワークの揮発性データなどを収集)

※ ツールがない場合は作成されない

1
1

収集可能なアーティファクトのうち、標準的な環境であれば必ず作成される5つのフォルダの内容について、抜粋して紹介します。

live_response/system
主に調査で使用する標準コマンドの実行結果がテキストファイルで出力されます。
例として、live_response/system配下にあるsystemctl_list_unit-files.txtというファイルを見てみると、systemctl list-unitsコマンドの出力結果がそのまま出力されていることが確認できます。

図6:live_response/system/systemctl_list_unit-files.txtの中身
図6:live_response/system/systemctl_list_unit-files.txtの中身
100

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

図7:[root]ディレクトリの中身
図7:[root]ディレクトリの中身
100
図8:[root]/var/logディレクトリの中身
図8:[root]/var/logディレクトリの中身
100

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

図9:bodyfile/bodyfile.txtの中身
図9:bodyfile/bodyfile.txtの中身
100

あとはパース処理を行い、ツールを用いて可視化することで調査を進めることができます。今回は例としてPlaso[2]でパース処理を行い、Kibana[3]でログの確認を行いました。

図10:bodyfile.txtを投入後のKibanaの画面
図10:bodyfile.txtを投入後のKibanaの画面
100

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

図11:hash_executables/hash_executables.md5の中身
図11:hash_executables/hash_executables.md5の中身
100

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

図12:ハッシュ値検索ツールの実行結果
図12:ハッシュ値検索ツールの実行結果
100

まとめ

今回は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/

執筆者プロフィール

執筆者
original
50

Ao森(あおもり)※ハンドルネーム
担当領域:リスクハンティング
専門分野:インシデントレスポンス、フォレンジック

脆弱性診断やマルウェア解析業務を経て、現在はインシデント対応業務に従事。