Sysmon v13.34

By Mark Russinovich and Thomas Garnier

公開日: 2022 年 5 月 11 日

DownloadSysmon(3.1 MB) のダウンロード

Linux 用 Sysmon のダウンロード (GitHub)

はじめに

System Monitor (Sysmon) はWindowsシステム サービスおよびデバイス ドライバーであり、システムにインストールされると、システムの再起動後もシステムの再起動を通じて常駐し、システム アクティビティを監視し、Windows イベント ログに記録します。 プロセスの作成、ネットワーク接続、ファイル作成日時の変更に関する詳細情報を提供します。 Windowsイベント コレクションまたは SIEM エージェントを使用して生成されたイベントを収集し、その後それらを分析することで、悪意のあるアクティビティや異常なアクティビティを特定し、侵入者やマルウェアがネットワーク上でどのように動作するかを理解できます。

Sysmon は、生成されるイベントの分析も、攻撃者の保護または非表示を試みることもしないことに注意してください。

Sysmon 機能の概要

Sysmon には、次の機能が含まれています。

  • 現在のプロセスと親プロセスの両方の完全なコマンド ラインを使用してプロセスの作成をログに記録します。
  • SHA1 (既定値)、MD5、SHA256、IMPHASH を使用してプロセス イメージ ファイルのハッシュを記録します。
  • 複数のハッシュを同時に使用できます。
  • プロセス ID を再利用Windows場合でもイベントの関連付けを可能にするプロセス作成イベントにプロセス GUID が含まれています。
  • 各イベントにセッション GUID を含め、同じログオン セッションでのイベントの関連付けを許可します。
  • 署名とハッシュを使用してドライバーまたは DLL の読み込みをログに記録します。
  • ディスクとボリュームの生読み取りアクセス用にログが開きます。
  • 必要に応じて、各接続のソース プロセス、IP アドレス、ポート番号、ホスト名、ポート名など、ネットワーク接続をログに記録します。
  • ファイルの作成時間の変更を検出して、ファイルが実際に作成された時期を把握します。 ファイル作成タイムスタンプの変更は、マルウェアがトラックをカバーするために一般的に使用される手法です。
  • レジストリで変更された場合は、構成を自動的に再読み込みします。
  • 特定のイベントを動的に含めたり除外したりするためのルール フィルタリング。
  • 高度なカーネル モード マルウェアによって行われたアクティビティをキャプチャするために、ブート プロセスの初期からイベントを生成します。

Screenshots (スクリーンショット)

EventViewer

使用

Sysmon をインストールおよびアンインストールし、その構成を確認および変更するための簡単なコマンド ライン オプションを備えた一般的な使用法:

インストール: sysmon64 -i [<configfile>]
構成の更新: sysmon64 -c [<configfile>]
イベント マニフェストをインストールします。 sysmon64 -m
印刷スキーマ: sysmon64 -s
アンインストール: sysmon64 -u [force]

パラメーター 説明
-i サービスとドライバーをインストールします。 必要に応じて、構成ファイルを取得します。
-c インストールされている Sysmon ドライバーの構成を更新するか、他の引数が指定されていない場合は、現在の構成をダンプします。 必要に応じて、構成ファイルを取得します。
-m イベント マニフェストをインストールします (サービスのインストールでも暗黙的に実行されます)。
-s 印刷構成スキーマ定義。
-u サービスとドライバーをアンインストールします。 使用 -u force すると、一部のコンポーネントがインストールされていない場合でもアンインストールが続行されます。

サービスはイベントを直ちにログに記録し、ドライバーはブート開始ドライバーとしてインストールされ、起動時にサービスがイベント ログに書き込む、ブートの初期からアクティビティをキャプチャします。

Vista 以降では、イベントは .Applications and Services Logs/Microsoft/Windows/Sysmon/Operational 古いシステムでは、イベントはイベント ログに System 書き込まれます。

構成ファイルの詳細が必要な場合は、コマンドを -? config 使用します。

インストール時に EULA を自動的に同意するように指定 -accepteula します。それ以外の場合は、それを受け入れるように対話形式で求められます。

インストールもアンインストールも再起動は必要ありません。

使用例

既定の設定でインストールする (SHA1 でハッシュされたプロセス イメージとネットワーク監視なし)

sysmon -accepteula -i

構成ファイルを使用して Sysmon をインストールする (後述)

sysmon -accepteula -i c:\windows\config.xml

アンインストール

sysmon -u

現在の構成をダンプする

sysmon -c

構成ファイルを使用してアクティブな Sysmon を再構成する (後述)

sysmon -c c:\windows\config.xml

構成を既定の設定に変更する

sysmon -c --

構成スキーマを表示する

sysmon -s

イベント

Vista 以降では、イベントが格納され Applications and Services Logs/Microsoft/Windows/Sysmon/Operational、古いシステム 上のイベントはシステム イベント ログに書き込まれます。 イベント タイムスタンプは UTC 標準時刻です。

Sysmon によって生成される各イベントの種類の例を次に示します。

イベント ID 1: プロセスの作成

プロセス作成イベントは、新しく作成されたプロセスに関する拡張情報を提供します。 完全なコマンド ラインは、プロセスの実行に関するコンテキストを提供します。 ProcessGUID フィールドは、イベントの関連付けをより簡単にするために、ドメイン全体でこのプロセスの一意の値です。 ハッシュは、HashType フィールドのアルゴリズムを使用したファイルの完全なハッシュです。

イベント ID 2: プロセスによってファイルの作成時間が変更されました

変更ファイル作成時刻イベントは、ファイル作成時刻がプロセスによって明示的に変更されたときに登録されます。 このイベントは、ファイルの実際の作成時間を追跡するのに役立ちます。 攻撃者は、バックドアのファイル作成時間を変更して、オペレーティング システムにインストールされたように見せる可能性があります。 多くのプロセスでは、ファイルの作成時間が正当に変更されることに注意してください。悪意のあるアクティビティを示すわけではありません。

イベント ID 3: ネットワーク接続

ネットワーク接続イベントは、マシン上の TCP/UDP 接続をログに記録します。 この機能は既定で無効になっています。 各接続は、ProcessId フィールドと ProcessGUID フィールドを介してプロセスにリンクされます。 このイベントには、送信元と宛先のホスト名の IP アドレス、ポート番号、IPv6 の状態も含まれます。

イベント ID 4: Sysmon サービスの状態が変更されました

サービス状態変更イベントは、Sysmon サービスの状態 (開始または停止) を報告します。

イベント ID 5: プロセスが終了しました

プロセス終了イベントは、プロセスが終了すると報告されます。 これは、プロセスの UtcTime、ProcessGuid、ProcessId を提供します。

イベント ID 6: ドライバーが読み込まれました

ドライバー読み込みイベントは、システムに読み込まれているドライバーに関する情報を提供します。 構成されたハッシュと署名情報が提供されます。 シグネチャは、パフォーマンス上の理由から非同期的に作成され、読み込み後にファイルが削除されたかどうかを示します。

イベント ID 7: イメージの読み込み

モジュールが特定のプロセスで読み込まれるときに、イメージがイベント ログを読み込んだ。 このイベントは既定で無効になっており、–l オプションを使用して構成する必要があります。 これは、モジュールが読み込まれるプロセス、ハッシュ、署名情報を示します。 シグネチャは、パフォーマンス上の理由から非同期的に作成され、読み込み後にファイルが削除されたかどうかを示します。 すべてのイメージ読み込みイベントを監視すると多数のイベントが生成されるため、このイベントは慎重に構成する必要があります。

イベント ID 8: CreateRemoteThread

CreateRemoteThread イベントは、プロセスが別のプロセスでスレッドを作成するタイミングを検出します。 この手法は、コードを挿入し、他のプロセスで非表示にするためにマルウェアによって使用されます。 このイベントは、ソース プロセスとターゲット プロセスを示します。 新しいスレッド (StartAddress、StartModule、StartFunction) で実行されるコードに関する情報が提供されます。 StartModule フィールドと StartFunction フィールドが推測されることに注意してください。開始アドレスが読み込まれたモジュールまたはエクスポートされた既知の関数の外部にある場合は空である可能性があります。

イベント ID 9: RawAccessRead

RawAccessRead イベントは、プロセスがデノテーションを使用してドライブから読み取り操作を実行するタイミングを \\.\ 検出します。 この手法は、読み取り用にロックされているファイルのデータ流出だけでなく、ファイル アクセス監査ツールを回避するために、マルウェアによってよく使用されます。 このイベントは、ソース プロセスとターゲット デバイスを示します。

イベント ID 10: ProcessAccess

プロセスが別のプロセスを開くと、プロセスが別のプロセスを開くと、その後に情報クエリが実行されたり、ターゲット プロセスのアドレス空間を読み取りおよび書き込んだりする操作が報告されます。 これにより、Pass-the-Hash 攻撃で使用する資格情報を盗むために、ローカル セキュリティ機関 (Lsass.exe) などのプロセスのメモリコンテンツを読み取るハッキング ツールの検出が可能になります。 これを有効にすると、状態を照会するプロセスを繰り返し開くアクティブな診断ユーティリティがある場合、大量のログが生成される可能性があるため、通常は、期待されるアクセスを削除するフィルターでのみ実行する必要があります。

イベント ID 11: FileCreate

ファイルの作成操作は、ファイルの作成時または上書き時にログに記録されます。 このイベントは、スタートアップ フォルダーなどの自動開始の場所の監視や、マルウェアが最初の感染時にドロップする一般的な場所である一時的なディレクトリとダウンロード ディレクトリを監視する場合に役立ちます。

イベント ID 12: RegistryEvent (オブジェクトの作成と削除)

レジストリ キーと値の作成操作と削除操作は、このイベントの種類にマップされます。これは、レジストリの自動開始の場所への変更や特定のマルウェア レジストリの変更を監視する場合に役立ちます。

Sysmon では、レジストリ ルート キー名の短縮バージョンが使用され、次のマッピングが使用されます。

キー名 省略形
HKEY_LOCAL_MACHINE HKLM
HKEY_USERS HKU
HKEY_LOCAL_MACHINE\System\ControlSet00x HKLM\System\CurrentControlSet
HKEY_LOCAL_MACHINE\Classes HKCR

イベント ID 13: RegistryEvent (値セット)

このレジストリ イベントの種類は、レジストリ値の変更を識別します。 このイベントは、DWORD 型と QWORD 型のレジストリ値に対して書き込まれた値を記録します。

イベント ID 14: RegistryEvent (キーと値の名前変更)

レジストリ キーと値の名前変更操作は、このイベントの種類にマップされ、名前が変更されたキーまたは値の新しい名前が記録されます。

イベント ID 15: FileCreateStreamHash

このイベントは、名前付きファイル ストリームが作成されるとログに記録され、ストリームが割り当てられているファイルの内容 (名前なしストリーム) のハッシュと、名前付きストリームの内容をログに記録するイベントが生成されます。 ブラウザーのダウンロードを介して実行可能ファイルや構成設定を削除するマルウェアのバリエーションがあり、このイベントは、"Web のマーク" ストリームをアタッチしている Zone.Identifier ブラウザーに基づいてキャプチャすることを目的としています。

イベント ID 16: ServiceConfigurationChange

このイベントは、フィルター処理規則が更新されたときなど、Sysmon 構成の変更をログに記録します。

イベント ID 17: PipeEvent (パイプの作成)

このイベントは、名前付きパイプが作成されるときに生成されます。 マルウェアは、多くの場合、プロセス間通信に名前付きパイプを使用します。

イベント ID 18: PipeEvent (パイプ接続済み)

このイベントは、クライアントとサーバーの間に名前付きパイプ接続が確立されたときにログに記録されます。

イベント ID 19: WmiEvent (WmiEventFilter アクティビティが検出されました)

WMI イベント フィルター (マルウェアが実行するために使用するメソッド) が登録されている場合、このイベントは WMI 名前空間、フィルター名、およびフィルター式をログに記録します。

イベント ID 20: WmiEvent (WmiEventConsumer アクティビティが検出されました)

このイベントは、WMI コンシューマーの登録を記録し、コンシューマー名、ログ、および宛先を記録します。

イベント ID 21: WmiEvent (WmiEventConsumerToFilter アクティビティが検出されました)

コンシューマーがフィルターにバインドされると、このイベントはコンシューマー名とフィルター パスをログに記録します。

イベント ID 22: DNSEvent (DNS クエリ)

このイベントは、結果が成功したか失敗したか、キャッシュされているかに関係なく、プロセスが DNS クエリを実行するときに生成されます。 このイベントのテレメトリはWindows 8.1用に追加されたため、Windows 7 以前では使用できません。

イベント ID 23: FileDelete (アーカイブされたファイルの削除)

ファイルが削除されました。 また、イベントのログ記録に加えて、削除されたファイルも (C:\Sysmon既定ではArchiveDirectory) に保存されます。 通常の動作条件下では、このディレクトリは不合理なサイズに拡大する可能性があります。同様の動作についてはイベント ID 26 FileDeleteDetected を参照してください。ただし、削除されたファイルは保存しません。

イベント ID 24: ClipboardChange (クリップボード内の新しいコンテンツ)

このイベントは、システム クリップボードの内容が変更されたときに生成されます。

イベント ID 25: ProcessTampering (プロセス イメージの変更)

このイベントは、"hollow" や "herpaderp" などのプロセス非表示手法が検出されるときに生成されます。

イベント ID 26: FileDeleteDetected (ログに記録されたファイルの削除)

ファイルが削除されました。

イベント ID 255: エラー

このイベントは、Sysmon 内でエラーが発生したときに生成されます。 システムが負荷がかかっていて、特定のタスクが実行できなかった場合や、Sysmon サービスにバグが存在する場合に発生する可能性があります。 Sysinternals フォーラムまたは Twitter (@markrussinovich) 経由でバグを報告できます。

構成ファイル

構成ファイルは、 -i (インストール) または -c (インストール) 構成スイッチの後に指定できます。 これらの機能を使用すると、事前設定の構成を簡単にデプロイし、キャプチャされたイベントをフィルター処理できます。

単純な構成 xml ファイルは次のようになります。

Configuration file

構成ファイルには、Sysmon タグの schemaversion 属性が含まれています。 このバージョンは Sysmon バイナリ バージョンとは独立しており、古い構成ファイルの解析が可能です。 "-? を使用して、現在のスキーマ バージョンを取得できます。 config" コマンド ライン。 構成エントリは Sysmon タグのすぐ下にあり、フィルターは EventFiltering タグの下にあります。

構成エントリ

構成エントリはコマンド ライン スイッチに似ていますが、次のものが含まれます。

構成エントリには、次のものが含まれます。

入力 説明
ArchiveDirectory String 削除時コピー ファイルが移動されるボリューム ルートのディレクトリの名前。 ディレクトリはシステム ACL で保護されます (Sysinternals の PsExec を使用して、ディレクトリ psexec -sid cmdにアクセスできます)。 既定値: Sysmon
CheckRevocation Boolean 署名失効チェックを制御します。 既定値はTrue
CopyOnDeletePE Boolean 削除された実行可能イメージ ファイルを保持します。 既定値はFalse
CopyOnDeleteSIDs 文字列 ファイルの削除が保持されるアカウント SID のコンマ区切りの一覧。
CopyOnDeleteExtensions 文字列 削除時に保持されるファイルの拡張機能。
CopyOnDeleteProcesses 文字列 ファイルの削除が保持されるプロセス名。
DnsLookup Boolean 逆引き DNS 参照を制御します。 既定値はTrue
DriverName String ドライバーとサービス イメージに指定された名前を使用します。
HashAlgorithms 文字列 ハッシュに適用するハッシュ アルゴリズム。 サポートされるアルゴリズムには、MD5、SHA1、SHA256、IMPHASH、* (すべて) が含まれます。 既定値はなし

コマンド ライン スイッチの構成エントリは、Sysmon 使用法の出力で説明されています。 パラメーターは、タグに基づいて省略可能です。 コマンド ライン スイッチもイベントを有効にする場合は、フィルター タグを使用して構成する必要があります。 -s スイッチを指定して、イベント タグ、各イベントのフィールド名と型など、完全な構成スキーマを Sysmon に出力させることができます。 たとえば、イベントの種類のスキーマを次に RawAccessRead 示します。

<event name="SYSMON_RAWACCESS_READ" value="9" level="Informational "template="RawAccessRead detected" rulename="RawAccessRead" version="2">  
  <data name="UtcTime" inType="win:UnicodeString" outType="xs:string"/>  
  <data name="ProcessGuid" inType="win:GUID"/>  
  <data name="ProcessId" inType="win:UInt32" outType="win:PID"/>  
  <data name="Image" inType="win:UnicodeString" outType="xs:string"/>  
  <data name="Device" inType="win:UnicodeString" outType="xs:string"/>  
</event>  

イベント フィルター処理エントリ

イベント フィルター処理を使用すると、生成されたイベントをフィルター処理できます。 多くの場合、イベントは騒がしい可能性があり、すべてを収集することはできません。 たとえば、特定のプロセスに対してのみネットワーク接続に関心があるが、それらのすべてには関心がない場合があります。 収集するデータを減らすホストの出力をフィルター処理できます。

各イベントには、構成ファイルの EventFiltering ノードの下に独自のフィルター タグがあります。

id タグ Event
1 ProcessCreate プロセスの作成
2 FileCreateTime ファイルの作成時間
3 NetworkConnect ネットワーク接続が検出されました
4 n/a Sysmon サービスの状態の変更 (フィルター処理できません)
5 ProcessTerminate プロセスが終了しました
6 DriverLoad ドライバーの読み込み
7 ImageLoad 読み込まれたイメージ
8 CreateRemoteThread CreateRemoteThread が検出されました
9 RawAccessRead RawAccessRead が検出されました
10 ProcessAccess アクセスされたプロセス
11 FileCreate 作成されたファイル
12 RegistryEvent レジストリ オブジェクトの追加または削除
13 RegistryEvent レジストリ値の設定
14 RegistryEvent レジストリ オブジェクトの名前が変更された
15 FileCreateStreamHash 作成されたファイル ストリーム
16 n/a Sysmon 構成の変更 (フィルター処理できません)
17 PipeEvent 名前付きパイプが作成されました
18 PipeEvent 接続された名前付きパイプ
19 WmiEvent WMI フィルター
20 WmiEvent WMI コンシューマー
21 WmiEvent WMI コンシューマー フィルター
22 DNSQuery DNS クエリ
23 FileDelete アーカイブされたファイルの削除
24 ClipboardChange クリップボードの新しいコンテンツ
25 ProcessTampering イメージの変更を処理する
26 FileDeleteDetected ログに記録されたファイルの削除

これらのタグは、タスク名のイベント ビューアーでも確認できます。

イベントが onmatch 一致する場合、フィルターが適用されます。 フィルター タグの属性を onmatch 使用して変更できます。 値が指定されている場合は "include"、一致したイベントのみが含まれることを意味します。 これが設定 "exclude"されている場合、ルールが一致する場合を除き、イベントが含まれます。 イベント ID ごとにインクルード フィルター セットと除外フィルター セットの両方を指定できます。除外一致が優先されます。

各フィルターには、0 個以上のルールを含めることができます。 フィルター タグの下の各タグは、イベントのフィールド名です。 同じフィールド名の条件を指定するルールは OR 条件として動作し、異なるフィールド名を指定するルールは AND 条件として動作します。 フィールド ルールでは、条件を使用して値を照合することもできます。 条件は次のとおりです (すべて大文字と小文字は区別されません)。

Condition 説明
is 既定値は等しい
は任意です フィールドは、区切られた値の ; 1 つです
そうじゃないです 値が異なる
contains フィールドには、この値が含まれています
には次のものが含まれます。 フィールドには、区切り記号付き値のいずれかが ; 含まれています
にはすべて含まれています フィールドには、区切り記号付き値がすべて ; 含まれています
除外 フィールドにこの値が含まれていない
を除外します。 フィールドに区切られた値が ; 1 つ以上含まれていない
すべて除外 フィールドに区切り値が ; 含まれていない
で始まる フィールドは、この値で始まります
end with フィールドは、この値で終わります
で始まる フィールドは、この値で始まらない
で終わっていない フィールドは、この値で終わらない
未満 辞書式比較が 0 未満
以上 辞書式比較が 0 より大きい
image イメージ パス (完全パスまたはイメージ名のみ) と一致します。 例: lsass.exe 一致します c:\windows\system32\lsass.exe

属性として指定することで、別の条件を使用できます。 これにより、パスにiexplore.exeを持つプロセスからネットワーク アクティビティが除外されます。

<NetworkConnect onmatch="exclude">
  <Image condition="contains">iexplore.exe</Image>
</NetworkConnect>

イベントがログに記録されたルールの一致を Sysmon に報告するには、ルールに名前を追加します。

<NetworkConnect onmatch="exclude">
  <Image name="network iexplore" condition="contains">iexplore.exe</Image>
</NetworkConnect>

同じタグに対して含めるルールと除外するルールの両方を使用できます。除外ルールのオーバーライドにはルールが含まれます。 ルール内では、フィルター条件には OR 動作があります。

前に示したサンプル構成では、ネットワーク フィルターはインクルードルールと除外ルールの両方を使用して、名前を持つ iexplore.exe プロセスを除くすべてのプロセスによってポート 80 と 443 へのアクティビティをキャプチャします。

1 つ以上のイベントの規則結合の種類を AND または OR に明示的に設定できるルール グループを使用して、ルールの結合方法をオーバーライドすることもできます。

次の例は、この使用方法を示しています。 最初のルール グループでは、コマンド ライン引数100のみを指定して実行するとtimeout.exe、プロセス作成イベントが生成されますが、プロセス終了イベントは終了ping.exeイベントとしてtimeout.exe生成されます。

  <EventFiltering>
    <RuleGroup name="group 1" groupRelation="and">
      <ProcessCreate onmatch="include">
        <Image condition="contains">timeout.exe</Image>
        <CommandLine condition="contains">100</CommandLine>
      </ProcessCreate>
    </RuleGroup>
    <RuleGroup groupRelation="or">
      <ProcessTerminate onmatch="include">
        <Image condition="contains">timeout.exe</Image>
        <Image condition="contains">ping.exe</Image>
      </ProcessTerminate>        
    </RuleGroup>
    <ImageLoad onmatch="include"/>
  </EventFiltering>

DownloadSysmon(3.1 MB) のダウンロード

以下で実行されます。

  • クライアント: Windows 8.1以降。
  • サーバー: Windows Server 2012以降。