トレーニング
認定資格
Microsoft Certified: Security Operations Analyst Associate - Certifications
Microsoft Sentinel、Microsoft Defender for Cloud、Microsoft 365 Defender を使って、脅威の調査、検索、軽減を行います。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
作成者: Mark Russinovich および Thomas Garnier
公開日: 2024 年 7 月 23 日
Sysmon をダウンロード (4.6 MB)
Sysmon for Linux (GitHub) をダウンロード
システム モニター (Sysmon) は、Windows システム サービスであり、システムにインストールされた後はシステムが再起動しても常駐してシステム アクティビティの監視と Windows イベント ログへの記録を行うデバイス ドライバーです。 プロセスの作成、ネットワーク接続、ファイル作成日時の変更に関する詳細情報を提供します。 Windows イベント コレクションまたは SIEM エージェントを使用して生成されたイベントを収集してから、それらを分析することで、悪意のある、または異常なアクティビティを特定し、侵入者とマルウェアがネットワーク上でどのように動作するかを理解できます。 サービスは保護されたプロセスとして実行されるため、ユーザー モードでのさまざまな対話が禁止されます。
Sysmon は、生成するイベントの分析を提供せず、また攻撃者に対してそれ自体を隠そうともしないことに注意してください。
Sysmon には、次の機能があります。
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
に格納され、それより古いシステムでは、イベントは System
イベント ログに書き込まれます。
イベントのタイムスタンプは UTC 標準時です。
Sysmon で生成される各イベントの種類の例を次に示します。
プロセス作成イベントでは、新しく作成されたプロセスに関する拡張情報を提供します。 コマンド ライン全体が、プロセスの実行に関するコンテキストを提供します。 ProcessGUID
フィールドは、イベントの関連付けを容易にするためにドメイン全体でこのプロセスの一意の値です。 ハッシュは、HashType
フィールド内のアルゴリズムを含むファイルの完全なハッシュです。
ファイル作成時間の変更イベントは、ファイル作成時間がプロセスによって明示的に変更されたときに登録されます。 このイベントは、ファイルの実際の作成時間を追跡するのに役立ちます。 攻撃者は、バックドアのファイル作成時間を変更して、オペレーティング システムと一緒にインストールされたように見せかける可能性があります。 多くのプロセスではファイルの作成時間が正当な手段で変更され、必ずしも悪意のあるアクティビティを示しているわけではないことに注意してください。
ネットワーク接続イベントでは、マシン上の TCP/UDP 接続がログに記録されます。 この機能は既定で無効になっています。 各接続は、ProcessId
フィールドと ProcessGuid
フィールドを介してプロセスにリンクされます。 また、このイベントには、送信元と宛先のホスト名、IP アドレス、ポート番号、IPv6 の状態も含まれます。
サービス状態変更イベントは、Sysmon サービスの状態 (開始または停止) を報告します。
プロセス終了イベントは、プロセスが終了した時点を報告します。 プロセスの UtcTime
、ProcessGuid
、ProcessId
を提供します。
ドライバー読み込みイベントは、システムに読み込まれているドライバーに関する情報を提供します。 構成されたハッシュが署名情報と共に提供されます。 署名はパフォーマンス上の理由から非同期的に作成され、読み込み後にファイルが削除されたかどうかを示します。
イメージ読み込みイベントは、モジュールが特定のプロセスに読み込まれた時点をログに記録します。 このイベントは既定で無効になっており、"–l
" オプションを使用して構成する必要があります。 モジュールが読み込まれるプロセス、ハッシュ、署名情報を示します。 署名はパフォーマンス上の理由から非同期的に作成され、読み込み後にファイルが削除されたかどうかを示します。 すべてのイメージ読み込みイベントを監視すると大量のログが生成されるため、このイベントは慎重に構成する必要があります。
CreateRemoteThread
イベントは、プロセスが別のプロセスでスレッドを作成する時点を検出します。 この手法は、他のプロセスでコードを挿入して隠すためにマルウェアによって使用されます。 このイベントは、ソース プロセスとターゲット プロセスを示します。 新しいスレッドで実行されるコードに関する情報 StartAddress
、StartModule
および StartFunction
を提供します。 StartModule
および StartFunction
フィールドは推論され、開始アドレスが読み込まれたモジュールまたは既知のエクスポートされた関数の外部にある場合は空であることに注意してください。
RawAccessRead
イベントは、プロセスが \\.\
記号を使用してドライブからの読み取り操作を行う時点を検出します。 この手法は、多くの場合、読み取り用にロックされているファイルのデータ抜き取りや、ファイル アクセス監査ツールを回避するためにマルウェアによって使用されます。 このイベントは、ソース プロセスとターゲット デバイスを示します。
プロセス アクセス イベントは、プロセスが別のプロセスを開いた時点、多くの場合は情報のクエリが続く操作、またはターゲット プロセスのアドレス空間の読み取りと書き込みを報告します。 これにより、パスザハッシュ攻撃で使用する資格情報を盗むために、ローカル セキュリティ機関 (Lsass.exe) などのプロセスのメモリの内容を読み取るハッキング ツールを検出できます。 これを有効にすると、状態を照会するためにプロセスを繰り返し開くアクティブな診断ユーティリティがある場合、大量のログが生成される可能性があるため、通常は、期待されるアクセスを削除するフィルターでのみ実行する必要があります。
ファイルの作成操作は、ファイルの作成または上書き時にログに記録されます。 このイベントは、スタートアップ フォルダーなどの自動起動の場所や、初期感染時にマルウェアがドロップする一般的な場所である一時ディレクトリとダウンロード ディレクトリの監視に役立ちます。
レジストリ キーと値の作成操作と削除操作は、このイベントの種類にマップされます。これは、レジストリの自動開始の場所への変更や特定のマルウェア レジストリの変更を監視するのに役立ちます。
Sysmon では、短縮バージョンのレジストリ ルート キー名が次のマッピングで使用されます。
キー名 | 省略形 |
---|---|
HKEY_LOCAL_MACHINE |
HKLM |
HKEY_USERS |
HKU |
HKEY_LOCAL_MACHINE\System\ControlSet00x |
HKLM\System\CurrentControlSet |
HKEY_LOCAL_MACHINE\Classes |
HKCR |
このレジストリ イベントの種類は、レジストリ値の変更を識別します。 このイベントは、種類 DWORD
と QWORD
のレジストリ値に対して書き込まれた値を記録します。
レジストリ キーと値の名前変更操作は、このイベントの種類にマップされ、名前が変更されたキーまたは値の新しい名前を記録します。
このイベントは、名前付きファイル ストリームが作成される時点をログに記録し、ストリームが割り当てられているファイルの内容 (名前のないストリーム) のハッシュと、名前付きストリームの内容をログに記録するイベントを生成します。 ブラウザーのダウンロードを介して実行可能ファイルまたは構成設定を削除する別の種類のマルウェアがあり、このイベントは、Zone.Identifier
"mark of the web" ストリームをアタッチするブラウザーに基づいてこれをキャプチャすることを目的としています。
このイベントは、フィルター処理ルールが更新された時点など、Sysmon 構成の変更をログに記録します。
このイベントは、名前付きパイプが作成されたときに生成されます。 マルウェアは、多くの場合、プロセス間通信に名前付きパイプを使用します。
このイベントは、クライアントとサーバーの間で名前付きパイプ接続が確立された時点をログに記録します。
WMI イベント フィルター (マルウェアが実行するために使用するメソッド) が登録されている場合、このイベントは WMI 名前空間、フィルター名、フィルター式をログに記録します。
このイベントは、WMI コンシューマーの登録をログに記録し、コンシューマー名、ログ、宛先を記録します。
コンシューマーがフィルターにバインドされると、このイベントによってコンシューマー名とフィルター パスがログに記録されます。
このイベントは、結果が成功したか失敗したか、キャッシュされているかどうかに関係なく、プロセスが DNS クエリを実行するときに生成されます。 このイベントのテレメトリは Windows 8.1 用に追加されたため、Windows 7 以前では使用できません。
ファイルが削除されました。 イベントのログ記録に加えて、削除されたファイルが ArchiveDirectory
(既定では C:\Sysmon
) に保存されます。 通常の動作状態では、このディレクトリは不合理なサイズに拡大する可能性があります。同様の動作についてはイベント ID 26: FileDeleteDetected
を参照してください。ただし、削除されたファイルは保存されません。
このイベントは、システム クリップボードの内容が変更されたときに生成されます。
このイベントは、"hollow" や "herpaderp" などのプロセス非表示手法が検出されたときに生成されます。
ファイルが削除されました。
このイベントは、Sysmon が実行可能ファイル (PE 形式) の作成を検出してブロックするときに生成されます。
このイベントは、Sysmon が SDelete などのツールからのファイルのシュレッディングを検出してブロックするときに生成されます。
このイベントは、Sysmon が新しい実行可能ファイル (PE 形式) の作成を検出したときに生成されます。
このイベントは、Sysmon 内でエラーが発生したときに生成されます。 システムの負荷が高く、特定のタスクを実行できなかった場合、または Sysmon サービスにバグが存在する場合、または特定のセキュリティと整合性の条件が満たされていない場合でも発生する可能性があります。 Sysinternals フォーラムまたは Twitter (@markrussinovich) でバグを報告できます。
構成ファイルは、-i (インストール) または -c (インストール) 構成スイッチの後に指定できます。 事前設定された構成をデプロイし、キャプチャされたイベントをフィルター処理するのが容易になります。
単純な構成 xml ファイルは次のようになります。
<Sysmon schemaversion="4.82">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<DriverLoad onmatch="exclude">
<Signature condition="contains">microsoft</Signature>
<Signature condition="contains">windows</Signature>
</DriverLoad>
<!-- Do not log process termination -->
<ProcessTerminate onmatch="include" />
<!-- Log network connection if the destination port equal 443 -->
<!-- or 80, and process isn't InternetExplorer -->
<NetworkConnect onmatch="include">
<DestinationPort>443</DestinationPort>
<DestinationPort>80</DestinationPort>
</NetworkConnect>
<NetworkConnect onmatch="exclude">
<Image condition="end with">iexplore.exe</Image>
</NetworkConnect>
</EventFiltering>
</Sysmon>
構成ファイルには、Sysmon タグの schemaversion 属性が含まれています。 このバージョンは Sysmon バイナリ バージョンとは無関係であり、古い構成ファイルの解析が可能になります。 "-? config
" コマンド ラインを使用して、現在のスキーマ バージョンを取得できます。 構成エントリは Sysmon
タグのすぐ下にあり、フィルターは EventFiltering
タグの下にあります。
構成エントリはコマンド ライン スイッチに似ており、次のものが含まれます
構成エントリには、次のものが含まれます。
入力 | Value | 説明 |
---|---|---|
ArchiveDirectory | String | copy-on-delete ファイルが移動される先のボリューム ルートにあるディレクトリの名前。 このディレクトリはシステム ACL で保護されています (Sysinternals の PsExec を使用して、psexec -sid cmd を使用してディレクトリにアクセスできます)。 既定値: Sysmon |
CheckRevocation | ブール型 | 署名失効チェックを制御します。 既定値: True |
CopyOnDeletePE | ブール型 | 削除された実行可能イメージ ファイルを保持します。 既定値: False |
CopyOnDeleteSIDs | 文字列 | ファイルの削除が保持されるアカウント SID のコンマ区切りリスト。 |
CopyOnDeleteExtensions | 文字列 | 削除時に保持されるファイルの拡張子。 |
CopyOnDeleteProcesses | 文字列 | ファイルの削除が保持されるプロセス名。 |
DnsLookup | ブール型 | 逆引き DNS 参照を制御します。 既定値: True |
DriverName | String | ドライバーとサービス イメージに指定された名前を使用します。 |
HashAlgorithms | 文字列 | ハッシュに適用するハッシュ アルゴリズム。 サポートされるアルゴリズムには、MD5、SHA1、SHA256、IMPHASH、* (すべて) があります。 既定値: None |
コマンド ライン スイッチの構成エントリは、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 | Tag | Event |
---|---|---|
1 | ProcessCreate | プロセスの作成 |
2 | FileCreateTime | ファイル作成時間 |
3 | NetworkConnect | ネットワーク接続が検出されました |
4 | 該当なし | 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 | 該当なし | 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 | ファイルの削除がログに記録されました |
27 | FileBlockExecutable | ファイル ブロック実行可能ファイル |
28 | FileBlockShredding | ファイル ブロックのシュレッディング |
29 | FileExecutableDetected | ファイル実行可能ファイルが検出されました |
これらのタグは、タスク名のイベント ビューアーでも確認できます。
イベントが一致する場合、onmatch
フィルターが適用されます。 フィルター タグの onmatch
属性を使用して変更できます。 値が "include"
の場合は、一致したイベントのみが含まれることを意味します。 "exclude"
に設定される場合、ルールが一致する場合を除き、イベントが含まれます。 イベント ID ごとに include フィルター セットと exclude フィルター セットの両方を指定できます。この場合、exclude の一致が優先されます。
各フィルターには、0 個以上のルールを含めることができます。 フィルター タグの下にある各タグは、イベントのフィールド名です。 同じフィールド名の条件を指定するルールは OR 条件として動作し、異なるフィールド名を指定するルールは AND 条件として動作します。 フィールド ルールも、条件を使用して値を照合できます。 条件は次のとおりです (すべて大文字と小文字は区別されません)。
Condition | 説明 |
---|---|
is | 既定値。値は等しい |
is any | このフィールドは、; で区切られた値のいずれかです |
is not | 値が異なります |
contains | フィールドにこの値が含まれます |
contains any | フィールドには、; で区切られた値のいずれかが含まれます |
contains all | フィールドには、; で区切られた値のすべてが含まれます |
excludes | フィールドにこの値は含まれません |
excludes any | フィールドに、; で区切られた値が 1 つ以上含まれません |
excludes all | フィールドに、; で区切られた値が含まれません |
begin with | フィールドは、この値で始まります |
end with | フィールドは、この値で終わります |
not begin with | フィールドの先頭はこの値ではありません |
not end with | フィールドの末尾はこの値ではありません |
less than | 辞書順比較が 0 未満です |
more than | 辞書順比較が 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 に明示的に設定できます。
次の例は、この使用方法を示しています。 最初のルール グループでは、timeout.exe
が 100
のコマンド ライン引数でのみ実行されると、プロセス作成イベントが生成されますが、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>
Sysmon をダウンロード (4.6 MB)
実行場所:
トレーニング
認定資格
Microsoft Certified: Security Operations Analyst Associate - Certifications
Microsoft Sentinel、Microsoft Defender for Cloud、Microsoft 365 Defender を使って、脅威の調査、検索、軽減を行います。