インシデント調査
セキュリティ・インシデントとは、ここでは情報セキュリティのインシデント(事件)を指し、インシデント対応とは、組織内でインシデントが発生した場合に、初期段階で適切な調査と対応の判断を行うことで、被害の範囲を最小限に留めるための行動です。
尚、本解説は、IPA 情報処理推進機構の「インシデント発生時の初動調査の手引き」に基づいています。
インシデント調査の流れ
インシデントの調査は、攻撃の確認、感染の確認、被害の把握、対策の有効性の確認の4つのフェーズに分かれ、それぞれで調査の目的や対象が異なります。
- 攻撃の有無の確認
- メールの送信元のFQDN/IPアドレスは攻撃インフラの可能性があるか?
- 添付ファイルが不審な挙動をしないか?
- 感染の有無の確認
初動調査としてマルウェアの感染が発生しているか調査を行います。- 永続化設定の調査(PC)
- 実行痕跡の調査(PC)
- 感染頻出箇所の調査(PC)
- 外部通信の調査(Proxyサーバ、Firewall)
- 被害範囲の把握
以下の観点から調査を行い被害範囲を把握します。- 通信先と通信元
- 被害範囲
- 情報漏えい
- 対策の有効性の確認
セキュリティ・インシデントが再発していないかの確認を行います。
PCを経由して行われる標的型攻撃においては、初期感染や感染拡大の段階ではPC の調査が不可欠になります。初期感染の場合、ログオンユーザがアクセスしやすい箇所に感染することが多いため、情報収集もそのログオンユーザで行うことが推奨されます。
以下は初動調査に絞って説明します。
永続化設定
永続化設定とは、PC端末などに感染させた状態を維持し、後からネットワークに再度侵入できるよう、RAT(Remote Access Tool)やダウンローダなどのツールを自動起動するようPCの設定を変更することです。
RATとは、外部ネットワークからシステムにリモートアクセスし、対象PCで情報収集などの様々な操作を目的として攻撃者に利用されるツールです。
永続化されたマルウェアは多くの場合、正規ファイルと同じか似せたファイル名やサービス名に偽装されます。自分でインストールしていないアプリケーションがないか、実行ファイルが配置された場所に不自然な点がないかなど不審点を洗い出します。
情報収集
WindowsOSでは次のような箇所が永続化に利用されます。このような箇所に、覚えのない設定がいつのまにか追加されていないかを調査する必要があります。
- スタートアップ起動プログラム
システムのスタートアップ時に起動されるプログラムをレジストリから取得します。対象レジストリとコマンドは以下になります。このような場所に覚えのないプログラム名であれば、フォルダ内容を確認する必要があります。【設定レジストリ】
HKLM\Software\Microsoft\Windows\CurrentVersion\
HKLM\Software\Microsoft\Windows NT\CurrentVersion\
HKCU\Software\Microsoft\Windows\CurrentVersion\
HKCU\Software\Microsoft\Windows NT\CurrentVersion\
HKU\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\
【コマンド構文】
reg query レジストリ名 オプション
- サービス起動プログラム
サービス起動プログラムをレジストリから収集します。対象レジストリとコマンドは以下になります。特に「ImagePath」の部分に着目し、情報収集結果から不審点がないかを調査すると効率的です。【設定レジストリ】
HKLM\SYSTEM\currentControlSet\services
【コマンド例】
reg query HKLM\SYSTEM\currentControlSet\services /s
- スタートアップフォルダ
スタートアップフォルダについては、以下の3つの手順で確認します。- スタートアップフォルダの位置の確認
- 指定されているフォルダのファイル一覧確認
- リンクファイルの内容確認
対象レジストリとコマンドは以下になります。
【設定レジストリ】
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders:Startup
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders:Startup
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders:Startup
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders:Startup
【コマンド例】
reg query “HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders” /v “Startup”
reg query “HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders” /v “Startup”
- タイムスケジュール
【コマンド例】
schtasks /fo CSV /query /v
調査と評価
永続化では、フォルダ名やファイル名などを偽装し、利用者から発見されにくいように工夫します。次のような偽装が行われます。
- 正規のアプリケーションに似せたフォルダ名、ファイル名などを使用する。
- Windows標準の正規プログラムを利用する。
- ファイルを隠し属性にしてデフォルトのエクスプローラでは見えなくする。
- javascript、vbscript、PowerShell などのスクリプトがよく利用される。
- 実行プログラムを隠蔽するためリンクファイルを指定する。
従って、以下のような点に注する必要があります。
- 意図しないプログラムが起動する設定になっていないか?
- 覚えのない設定がいつのまにか追加されていないか?
- インストールした覚えのないアプリケーションがないか?
- 実行ファイルが配置された場所に不自然な点がないか?
- 実行ファイルのファイル名、サービス名に違和感はないか?
実行痕跡
マルウェアの実行痕跡は、アプリケーションの動作記録のログだけでなく、その他のログも手掛かりとする必要があります。
情報収集
特にアプリケーションの実行記録として、代表的な実行痕跡は以下のものがあります。
- Prefetch Files
Prefetch フォルダに生成されたファイルのファイル名とタイムスタンプから、実行しようとしたファイル名と実行日付、起動時の読み込みファイル、実行回数などが確認できます。【フォルダパス】
C:\Windows\Prefetch【コマンド例】
dir /od /tc C:\Windows\PreFetch\ rem 作成日でソートした一覧表示
dir /od /tw C:\Windows\PreFetch\ rem 最終更新日でソートした一覧表示 - 最近使ったファイル
フォルダに生成されたリンクファイルのファイル名から、開いたファイルが確認できます。【フォルダパス】
C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Recent - 最近使ったOfficeドキュメント
フォルダに生成されたリンクファイルのファイル名から、Office で開いたドキュメントが確認できます。【フォルダパス】
C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Office\Recent - AppCompatCache
次回のアプリケーション起動のためのキャッシュとして保持される値で、アプリケーション実行時のファイル名、最終更新日、サイズ、ファイルの実行可否が確認できます。
【レジストリ】
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache【コマンド例】
reg export “HKLM\SYSTEM\CurrentControlSet\Control\Session Manager \AppCompatCache” 任意のファイル名.reg - UserAssist
エクスプローラ経由で実行したプログラム情報が記録されており、どのユーザアカウントが実行したかの確認ができます。【レジストリ】
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist【コマンド例】
reg export “HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist” 任意のファイル名.reg - RunMRU
「ファイル名を指定して実行」で実行したプログラム情報が確認できます。【レジストリ】
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU【コマンド例】
reg query ” HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU ” /s - TypedURLs
InternetExplorer でアクセスした直近のURL が確認できます。【レジストリ】
HKCU\SOFTWARE\Microsoft\Internet Explorer\TypedURLs【コマンド例】
reg query “HKCU\SOFTWARE\Microsoft\Internet Explorer\TypedURLs” /s
調査と評価
永続化されている不審ファイルの実行痕跡が残っていないか以下の観点で確認します。
- 不審ファイル名、日付・時間での痕跡はないか?
不審メールが特定されている場合は、添付ファイルを開いたかどうか、URLにアクセスした痕跡があるか、また不審ファイルが特定されている場合では、不審ファイルを実行してしまったかどうかを確認します。 - 同組織で発見されたマルウェアに感染していないか?
被害組織で使われるマルウェアやツールは共通している場合も多いため、発見されたマルウェアやツールが、同一組織内の他のPC で配置や実行がされていないかを確認します。 - 偽装によく使われる拡張子の痕跡はないか?
2重に拡張子を持つ、RLO(Right-to-Left Override)、ファイル名を長い空白を入れるなどの偽装テクニックなどがあります。 - 攻撃によく使われるツールの痕跡はないか
これらのファイル名を使って、取得した結果から文字列検索を行います。PowerShell.exe Windows OS 標準。高機能なスクリプト言語。 wmic.exe Windows OS 標準。WMI(管理基盤アーキテクチャ)にアクセスするためのコマンドラインツール。 at.exe Windows OS 標準。スケジュール作成コマンド。リモートでのプログラム実行に使われる。 schtasks.exe Windows OS 標準。タスクスケジューラのタスクを操作するコマンド。リモートでのプログラム実行に使われる。 Psexec.exe Windows Sysinternals に含まれるリモートシステムでのプログラム実行ツール。組織内での感染拡大に使われる。 wce.exe ハッキングツール。Windows Credential Editor の略で、ログオン中のパスワードを出力する。 Mimikatz.exe ハッキングツール。メモリ上に保持されているアカウントの認証情報にアクセスし、管理者権限の奪取に使われる。 gsedump.exe ハッキングツール。パスワードハッシュを出力する。
外部通信
外部通信とは、攻撃用に送り込まれたマルウェアから、攻撃者が準備したC2サーバ(Command & Controlサーバ)へ通信させることでネットワーク接続を確立させることを指します。
このときの接続時に使うポートは、組織で一般的に許可されるポート(例えばHTTP やHTTPSなど)を利用し、正規通信に紛れ込ませるという手法をとります。ネットワーク接続情報を取得し、意図しない通信先がないかを確認します。
尚、PC の場合は、PC のDNS リゾルバが残しているDNS キャッシュが調査の対象となりますが、マルウェアによっては、IP アドレスで直接通信先を指定する場合があるので、必ずしもDNS キャッシュに記録が残るわけではありません。
情報収集
外部通信情報は、DNSキャッシュとネットワーク接続情報から取得します。
- DNSキャッシュ
【コマンド例】
ipconfig /displaydns - ネットワーク接続情報
【コマンド構文】
netstat オプション
調査と評価
PC端末での調査の場合、以下が調査の調査の対象となります。
- PCのリゾルバが残しているDNSキャッシュ
- プロキシサーバ、ファイアウォール、DNSサーバ
- ネットワーク接続情報
これらのログや出力結果に不審な通信先がないかを確認することで、C2サーバとの通信を発見されることがあります。FQDN とその解決結果を抽出し通信先の評価を行いますが、C2サーバの特性と考えられるのはおおよそ以下の3つです。
- ローカルドメインには存在しない
- 正規ドメインのサブドメインには存在しない
- 過去に攻撃やマルウェア配布に利用された可能性がある
これらの特性を利用すると、下記の手順での抽出となります。
- ローカルドメインの名前解決とローカルネットワークアドレスを除く
- 信頼できるドメイン名を除く
- 抽出されたFQDN とIP アドレスを、攻撃情報を公開しているサイトで同件がないか確認する
感染頻出箇所
感染頻出箇所とは、マルウェアが配置されやすい(攻撃者が利用しやすい)フォルダです。特に管理者権限ではない一般利用者権限でも、環境変数でアクセスし易い箇所がそれにあたります。
感染頻出箇所の共通点は、一般利用者権限のユーザに対して多くの権限が与えられていることです。そのため、この場所を利用すれば、標的型攻撃でも成功する可能性が高くなります。
情報収集
感染頻出箇所の例は以下になります。
環境変数等 | 実フォルダ例 |
%TEMP% | C:\Users\%USERNAME%\AppData\Local\Temp |
%PROGRAMDATA% %ALLUSERSPROFILE% |
C:\ProgramData |
%APPDATA% | C:\Users\%USERNAME%\AppData\Roaming |
%LOCALAPPDATA% | C:\Users\%USERNAME%\AppData\Local |
%PUBLIC% | C:\Users\Public |
マルウェアや不審ファイルは、隠し属性が与えられていたり、補助的なデータ保存場所
である代替データストリームなどの場所に隠されている場合があります。ファイル名一覧を取得する際には、これらも表示させるオプションが必要です。
【コマンド例】 dir /a /r /s C:\ProgramData dir /a /r /s C:\Users\%USERNAME%\AppData dir /a /r /s C:\Users\Public dir /a /r /s C:\Windows\System32 |
調査と評価
感染頻出箇所の調査の観点は以下になります。
- 攻撃ツールらしきものがないか
よく使われる攻撃ツールのうち、WindowsOS 標準でないものが存在を確認します。但し、これらのファイル名は一部を改変している例もあるため、攻撃ツールにファイル名が近いものを抽出する必要があります。 - 情報窃取の痕跡らしきものがないか
攻撃者が外部へ情報を持ち出す場合、圧縮ファイルで行うことがあるので、RAR、ZIP といった圧縮ファイルの存在を確認します。

