15章
1 Web履歴/最近使用したファイルの解析
ユーザー・アクティビティ調査の概要
標的型攻撃メールや通常のメールに偽装したばらまきメール(以下、一括して「不正メール」と呼びます)による攻撃手法を例にすると、インシデントレスポンスにおいて着目すべき「ユーザー・アクティビティ」は、
- 善意のPC利用者による、不正メール等に記載された誘導URL(フィッシング等の不正リンク)へのアクセス状況や、リンク先からの不正ファイル(Maldoc等)ダウンロード状況 → Webブラウザ履歴の調査
- 善意のPC利用者が、ビジネス文書等に偽装した不正ファイルをOfficeアプリ等で開いた履歴 → 最近使用したファイルの調査
などでしょう。
この節では、これらのアクティビティについて、Webブラウザの履歴が記録されるアーティファクトや、最近使用したファイルの履歴が記録されるアーティファクトを対象とした調査手法を紹介します。
なお、不正メールによる攻撃の場合、メール受信日時もインシデントのタイムライン調査に必要ですし、本文の記載内容や送信元メールアドレスはIoC情報として有効です。このような電子メールの調査も視野に入れるべきでしょう。電子メールの証拠保全や解析方法については、組織で使用する電子メールソフトやメールサーバーの操作方法に依存しますので、ここでは紹介していません。
ユーザー・アクティビティの調査は、インシデントレスポンスのみならず、不正調査や犯罪捜査での重要な証拠にもなります。そうした事案では、調査対象者や犯罪者の行動を知る、もしくは裏付けるために、対象者が利用するPCに対して、綿密なユーザー・アクティビティの調査が必要となるでしょう。ユーザー・アクティビティの調査により、不正調査や犯罪捜査において収集する証拠の例としては、次のようなものが考えられます。
- 情報漏えい事案における、内部関係者による故意の有無
- 調査対象者の個人アカウントによるクラウドストレージへのアクセス履歴
- 本来はアクセス権のないファイルの閲覧履歴
- ライバル企業や個人情報売買業者等のサイトに対するアクセス履歴
- 犯罪者による犯行準備・実行の痕跡収集
- 犯行に使用した凶器等の購入履歴
- 不正アクセスが行われたサイトへのアクセス履歴
- 犯行に関係する計画書やメモ等の文書ファイルを閲覧・編集した履歴
ここで紹介するユーザー・アクティビティの調査手法は、このような事案の調査においても応用できるでしょう。また、インシデントの可能性があるイベントのトリアージにおいて、外部からの攻撃なのか、内部での意図的な不正行為や過失が原因なのか、という切り分けが必要な場合にも有効です。
Webブラウザ履歴のアーティファクト
インシデントレスポンスにおいて、Webブラウザによるユーザー・アクティビティを調査する動機には、次のようなものがあるでしょう。
- 不正メールにより誘導されたマルウェア等配布サイトへのアクセス状況調査
- フィッシングメールにより誘導されたフィッシングサイトの調査
- 水飲み場攻撃(水飲み場:マルウェア等配布目的で不正に改ざんされた正規サイト)の調査
こうした調査でもっとも重要となるアーティファクトは、Webサイトの閲覧履歴とファイルのダウンロード履歴になります。このようなアーティファクトは、Webブラウザの種類によって記録されるファイルや形式が異なりますが、大別すると「Webヒストリー」と「キャッシュリスト」の2つになるでしょう。
Webヒストリー
- 一般的に、各Webブラウザソフトによって、Historyファイルと呼ばれる閲覧履歴データとして記録
- アクセス先URL、ページタイトル、最終アクセス日時、アクセス回数等が記録
- 利用者の意図的な操作(ブックマークやリンクのクリック、URLの直接入力)により、アクセス先のページに遷移したタイミングで記録
- ファイルのダウンロードリンクをクリックして、ローカルディスクへファイルを直接保存した場合は、ページ遷移が発生しないため、記録されないケースあり
キャッシュリスト
- 一般的に、Webブラウザのキャッシュ機能は、アクセスしたサイトのHTMLファイル、動画や画像ファイル、CSSファイル、スクリプトファイル等をローカルディスクに一時保存して、通信量削減とブラウジングの高速化を図るもの
- キャッシュしたファイルは、アクセスしたサイトごとにキャッシュリスト化
- ファイル名、アクセス先(ダウンロードURL)、最終アクセス日時等が記録
- キャッシュリストは次回のアクセス時に参照され、Webサーバの更新日時とキャッシュしたファイルの最終アクセス日時を比較して、変更がなければキャッシュしたファイルを表示
- ダウンロードリンクからローカルディスクへ直接保存したファイルも、キャッシュリストに記録されるケースが多い
国内外で比較的利用シェアが高いWebブラウザソフト(Google Chrome、Microsoft Edge、Mozilla Firefox)における、Webヒストリーとキャッシュリストが記録されるアーティファクトの格納場所は、次のとおりです。
※ いずれもWindowsにおける現行バージョン(2023年9月現在)の場合です。バージョンアップにより変更される場合があります。
※ Windowsユーザーごとに記録されますので、インシデント発生時のログオンユーザーを事前に確認しておくことで、効率的に調査できます。
Google Chrome
- Webヒストリー(単一ファイル)
C:\Users\(ユーザー名)\AppData\Local\Google\Chrome\User Data\Default\History
- キャッシュ(フォルダ) ※ CDIR-Cでの収集対象外
C:\Users\(ユーザー名)\AppData\Local\Google\Chrome\User Data\Default\Cache\Cache_Data
Microsoft Edge
※ 2020年1月15日以降のChromium ベース版
- Webヒストリー(単一ファイル)
C:\Users\(ユーザー名)\AppData\Local\Microsoft\Edge\User Data\Default\History
- キャッシュ(フォルダ) ※ CDIR-Cでの収集対象外
C:\Users\(ユーザー名)\AppData\Local\Microsoft\Edge\User Data\Default\Cache\Cache_Data
Mozilla Firefox
- Webヒストリー(単一ファイル)
C:\Users\(ユーザー名)\AppData\Roaming\Mozilla\Firefox\Profiles\(Firefoxプロファイル名).default-release\places.sqliteC:\Users\(ユーザー名)\AppData\Roaming\Mozilla\Firefox\Profiles\(Firefoxプロファイル名).default-release\cookies.sqlite
- キャッシュ(フォルダ) ※ CDIR-Cでの収集対象外
C:\Users\(ユーザー名)\AppData\Local\Mozilla\Firefox\Profiles\(Firefoxプロファイル名).default-release\cache2
Webブラウザ履歴の調査方法
WebヒストリーとキャッシュからWebブラウザ履歴を可視化するには、いずれも解析ツールによるパース作業が必要です。多くの有償解析ツールでは、各種Webブラウザに対応したパース機能を提供しています。
一方、無償でかつ各種Webブラウザに対応しており、さらにバージョンアップにも迅速に対応するツールとして、「NirSoft」サイトが提供している「Web Browsing Tool」が有名です。同ツール群の中には、さまざまなWebブラウザやアーティファクトに対応した複数のパースツールが含まれています。
ここでは、NirSoftのWeb Browsing Toolを使用した調査方法について紹介します。なお、CDIR-AでもWeb Browsing Toolの一部をバンドルしています。
Webヒストリーの調査
Webヒストリーの保全については、CDIR-Cにより、前述の各Webヒストリーファイルを自動収集できます。収集した各アーティファクトは、CDIR-Cの保全フォルダ~「Web」サブフォルダ内の、さらに各Webブラウザ別サブフォルダに区分され、すべてのユーザーのWebヒストリーファイルを保存します。ファイル名には、プロファイル名を先頭に付加して、どのユーザーのWebヒストリーかを識別できるようになっています。
- CDIR-Cによる保全例(Google Chromeの「History」ファイル)

- 上記保全例のフォルダ階層をtreeコマンドで表示
\---PC-a001
|
\---Web
+---Chrome
| axdf_user_Default_History
| user-sales01_Default_History
|
+---Edge
| axdf_user_Default_History
| user-sales01_Default_History
|
\---Firefox
axdf_user_bxwnzz6n.default-release_cookies.sqlite
axdf_user_bxwnzz6n.default-release_places.sqlite
保全した各アーティファクトのパースには、Web Browsing Tool(NirSoft)の「BrowsingHistoryView」が対応しています。
BrowsingHistoryViewは、読み込んだWebヒストリーを独自のGUI画面で分析できます。また、CLIで実行し、パース結果をCSVファイルへ出力することもできます(GUI画面からCSVへ保存することもできます)。
- BrowsingHistoryViewのGUI表示例

- CLIでの実行例 (※ Google ChromeのWebヒストリーをパースするオプション例)
BrowsingHistoryView.exe /HistorySource 6 /VisitTimeFilterType 1 /CustomFiles.ChromeFiles "(保全したWebヒストリーファイル名)" /scomma "(出力するCSVファイル名)"
- パース後のCSVファイルの出力例

BrowsingHistoryViewの具体的な使用方法は、後続の Hands-on-1 で紹介します。
キャッシュの調査
キャッシュフォルダの保全については、前述の各Webブラウザのキャッシュフォルダを対象として、論理コピーにより個別に保全作業を実施する必要があります。保全作業には、タイムスタンプを変更せずに論理コピーができる、FTK ImagerのExport機能の利用を推奨します。次の図は、FTK Imagerにより、Google Chromeのキャッシュフォルダを保全する例です。
- FTK ImagerによるGoogle Chromeキャッシュフォルダの保全例 (Export Files)

保全したキャッシュフォルダから、キャッシュリストをパースする作業には、Web Browsing Tool(NirSoft)の「ChromeCacheView」(Google Chrome、Microsoft Edge兼用)、「MzCacheView」(Mozilla Firefox用)の使用を推奨します。
いずれも、BrowsingHistoryViewと同様、パースしたキャッシュリストを独自のGUI画面で分析することもできますし、CLIで実行し、パース結果をCSVファイルへ出力することもできます(GUI画面からCSVへ保存することもできます)。
- ChromeCacheViewのGUI表示例

- CLIでの実行例 (※ Google Chromeのキャッシュリストをパースするオプション例)
ChromeCacheView.exe -folder "(保全したキャッシュフォルダ名)" /scomma "(出力するCSVファイル名)"
- パース後のCSVファイルの出力例

ChromeCacheViewの具体的な使用方法については、後続の Hands-on-1 で紹介します。
URLエンコード/デコードについて
Webヒストリーやキャッシュリストに記録されるURLは、利用者が認識するものと異なる場合があります。具体的には、URLに次の文字が含まれる場合です。
- 日本語などのマルチバイト文字列
- 「/」「?」など、URLで特殊な意味を持つ予約文字(本来の用途以外で使用する場合)
このような文字がURLに含まれている場合、そのままのURLでは通信を行うことができませんので、WebブラウザはURLエンコード(パーセントエンコード)と呼ばれる方法で、その文字をアスキー文字列(半角アルファベット・数字・記号)に置換します。
URLエンコードは、置換対象の文字を、「%」に続く16進数で表現します。例えば、「/」(スラッシュ)は「%2F」と表現します。実際のURLエンコード例を、次のHTMLファイルをサンプルとして説明します。
- 日本語のリンクが記述されたサンプルHTMLファイル

このリンクをクリックした場合、次のURLがジャンプ先(ダウンロードURL)です。
hxxp://www.example.jp/files/業務資料.xlsx
このままではHTTPプロトコルでの通信ができませんので、Webブラウザは次のようにURLエンコードを行って通信します。
hxxp://www.example.jp/files/%E6%A5%AD%E5%8B%99%E8%B3%87%E6%96%99.xlsx
Webヒストリーやキャッシュリストの履歴には、URLエンコード後のURLが記録されますので、調査の際にはその点を留意して下さい。
例えば、このサンプルHTMLからファイルをダウンロードした場合、PCから発見された当該ファイル(業務資料.xlsx)のダウンロードURLを調査しようとすると、URLエンコード後のファイル名(%E6%A5%AD%E5%8B%99%E8%B3%87%E6%96%99.xlsx)で履歴を検索しなければヒットしません。
逆に、Webヒストリーやキャッシュリストから不審なダウンロードの履歴を発見した場合、実際にPCへ保存されたファイル名(業務資料.xls)を確認するには、URLデコードを行う必要があります。
URLエンコード/デコードは、いずれも前章で紹介した「CyberChef」等で変換できます。
次の図は、先述のサンプルHTMLのリンクを、CyberChefでURLエンコード/デコードした例です。
- URLエンコードの例

- URLデコードの例

「最近使ったファイル」のアーティファクト
Windowsでは、「最近使ったファイル」の履歴が複数のアーティファクトに記録されます。このような履歴は、スタートメニュー、タスクバー、各アプリケーションの「ファイルを開く」メニューなどで、直近に使用したファイルを表示するために記録されているものです。こうした履歴により、PCの利用者が開いたドキュメント等のファイル名や使用日時が明らかになることが期待できます。インシデントレスポンスのみならず、不正調査・犯罪捜査でも、ユーザー・アクティビティとして重要な証跡になるケースが多いことは想像に難くないでしょう。
ここでは、インシデントレスポンスにおいて有用な2つのアーティファクト(Recent、JumpList)を紹介します。
Recent
「最近使ったファイル」の履歴として一般的にも知られる Recent は、各ユーザープロファイルの「Recent」フォルダに、使用したファイルへのショートカットファイル(.lnk)として記録されます。各ショートカットファイルのタイムスタンプ(作成日時、更新日時)は、実際にファイルが使用された日時(初回使用日時、最終使用日時)とみなすことができます。この履歴は、Windows7ではスタートメニューの「最近使ったファイル」から表示できましたが、Windows10以降は同メニューが廃止されたため、エクスプローラーにより「Recent」フォルダを直接開いて参照します(Windowsキー + R から「recent」と入力すると同フォルダが開きます)。
格納されるフォルダは次のファイルパスです。
C:\Users\(ユーザー名)\AppData\Roaming\Microsoft\Windows\Recent
※
C:\Users\(ユーザー名)\AppDataフォルダは隠しファイル属性となっていますので、エクスプローラのディレクトリリストから開く場合は、「表示メニュー」から「隠しファイル」の表示を有効にして下さい。
なお、日本語版Windowsのエクスプローラーでは、「Recent」が「最近使った項目」と和訳されて表示されます。また、各ショートカットファイルの拡張子は「.lnk」ではなく、ショートカット先ファイル(使用したファイル)の拡張子に変換されて表示されます。
次の例では、このPCにおいて「出張結果メモ.txt」というファイルが使用(メモ帳等のアプリケーションによるオープン)されており、その最終使用日時はショートカットの更新日時とみなすことができますので、2022年4月22日の22時03分と考えられます。
- Windows エクスプローラーでRecentフォルダを表示

このように、「Recent」フォルダ内のショートカットファイル名が、実際に使用されたファイル名として表示されます。使用されたファイルの保存先(パス)は、プロパティの「リンク先」から確認できます。次の例では、「出張結果メモ.txt」はドキュメントフォルダに保存されていたことがわかります。
- 「出張結果メモ.txt」(ショートカットファイル)のプロパティ

なお、FTK Imagerで「Recent」フォルダを参照すると、本来のショートカットファイル名は「実際に使用されたファイル名」+「同ファイル名の拡張子」+「.lnk」であることがわかります。
- FTK Imagerで上の図と同じRecentフォルダを表示

※ FTK Imagerでは、タイムスタンプは世界標準時(UTC)で表示されるため、日本時間(JST)の9時間前となっています。
JumpList
JumpList(ジャンプリスト)は、前述のRecentフォルダ内にある、2つのサブフォルダ(AutomaticDestinations、CustomDestinations)内に記録されるアーティファクトで、アプリケーション別のファイル使用履歴が保存されます。いずれのサブフォルダも、Windows標準のエクスプローラーでは表示制限されており、アクセスできません。FTK Imager等の保全ツールでアクセスしましょう。
- FTK ImagerでAutomaticDestinationsサブフォルダを表示

サブフォルダ内の各ファイル名には、次のように、アプリケーション別にAppID(アプリケーションファイルパスをベースとしたハッシュ値)が付与されています。
(AppID).automaticDestinations-ms(AppID).customDestinations-ms- 例:
9b9cdc69c1c24e2b.automaticDestinations-ms(9b9cdc69c1c24e2bは「メモ帳:Notepad」アプリのAppID)
- 例:
各ファイルはバイナリ形式であり、JumpListに対応した解析ツールでパースする必要があります。また、AppIDとアプリケーションの紐づけは公式には公開されていませんが、セキュリティベンダーやリサーチャーによって実証的に紐づけられたリストが公開されています。
- 公開されたAppIDリストの例
上記リストを公開したSANS社インストラクターのEric Zimmerman氏は、JumpListのパースツールも作成しています。当該ツールは、「JumpList Explorer」として無償公開されており、JumpListの各ファイルを一括で読み込んでパースするとともに、AppIDから自動的にアプリケーションを紐づけて表示します。
次の図は、「JumpList Explorer」により、FTK Imagerで AutomaticDestinationsサブフォルダから保全した、各 JumpListファイルをパースした例です。この図では、「メモ帳:Notepad」アプリの JumpListファイルを選択して、同アプリで開いたドキュメントファイルの情報を表示しています。

RecentとJumpListの記録には重複するところも多く、調査が簡単なRecentを優先しがちですが、Recentは攻撃者や犯罪者によって簡単に消去することもできます。ファイルの使用履歴を調査する際には、JumpListも併せて調査することを推奨します。
ここまで紹介したとおり、ユーザー・アクティビティの調査からPC利用者の行動を把握することで、多くの有用な情報や証拠を得ることができます。一方、密かに活動を開始したマルウェアや攻撃者の挙動を知ることは難しいでしょう。インシデントレスポンスにおけるユーザー・アクティビティの調査では、その目的を定めて、適切な労力をバランスよく投入する必要があります。
インシデントレスポンスにおいては、マルウェア感染時のPC利用者の行動を把握することで、再発防止教育やシステムのセキュリティ強化に資する有用な情報を得ることが期待できます。ここで紹介したアーティファクトのほか、ローカルディスク上のファイルに対する、作成/更新/移動/複写/リネームなどの操作履歴も、併せて調査することを推奨します。ファイルの操作履歴(MFT、USNジャーナル)については、後続の章「ファイルシステムの調査」「ファイル操作履歴の調査」で詳しく紹介します。