Sysmon - ルールについてのルール
Sysmon - ルールについてのルール
- Sysmon - The rules about rules を翻訳したものです
Sysmonをしばらく使用している方は、ここしばらくの間、フィルタルールの目的と実際の動作との間に相違があることに注意してください。この記事の目的は、いくつかの一般的な混乱の原因を明らかにし、なぜそのようになっているのかを説明することです。そうは言っても、早速入ってみましょう。
同じフィールドに複数のルールがある場合
これは最も基本的なケースであり、最も混乱の少ないケースです。なぜならば、これらが’OR’を使用して結合されるというのは、これまでも、そして現在も変わらないケースだからです。したがって、次の例では、コマンドラインにiexplore.exeまたはfirefox.exeが含まれている場合にのみ、Sysmonがプロセス作成イベントをログに記録します。
<EventFiltering>
<ProcessCreate onmatch="include">
<CommandLine condition="contains">iexplore.exe</CommandLine>
<CommandLine condition="contains">firefox.exe</CommandLine>
</ProcessCreate>
</EventFiltering>
この構成のバリエーションとして、同じイベントに対してルールを含める場合と除外する場合があります。ここでは、除外ルールが常に優先されます。したがって、次の例では、ブラウザがエクスプローラによって起動されたときのブラウザイベントを省略します。
<EventFiltering>
<ProcessCreate onmatch="include">
<CommandLine condition="contains">iexplore.exe</CommandLine>
<CommandLine condition="contains">firefox.exe</CommandLine>
</ProcessCreate>
<ProcessCreate onmatch="exclude">
<ParentImage condition="is">c:\windows\explorer.exe</ParentImage>
</ProcessCreate>
</EventFiltering>
今のところ順調です。私が話をしているユーザーのほとんどはこれに満足している。異なる分野のルールがどのように組み合わされているかということが、彼らにとって居心地の悪いところです。これについて次にお話ししましょう
異なるフィールドに対する複数のルール
多くの、そして大部分は自ら招いた理由から、これが混乱の主な原因である。ドキュメントでは、異なるフィールドのルールは’AND’を使用して結合されると常に述べられており、これが正しい場合もあれば、正しくない場合もあります。長年にわたり、私たちはいくつかのエッジケースに対処しようとしてきましたが、一般的にこれは、どのフィールドの組み合わせが使用され、どのイベントに適用されたかに依存して、両方の非決定論的ハイブリッドでした。
これはすべてSysmon 8.02で変更されています。この動作をドキュメントと一致させるための要求が繰り返されたため、’AND’ロジックが一貫して動作するように、ハイブリッドAND/ORフィルタリングをすべて解決しました。これがドキュメントと一致し、全員が満足しました。
そうかもしれません。実装はドキュメントと一致するようになりましたが、この変更以前は、最も一般的に使用されるフィールドの多くは、以前はORを使用して結合されていました。ユーザーは、これがドキュメントに反することを認識していましたが、実際にはこのように動作するため、’OR’と考えざるを得ず、そのように動作することに依存するようになりました。このようにして、これらのユーザに対して、8.02は、既存の構成を破壊し、それらをひどく破壊した。
ルールグループ
Sysmon 9.0では、’AND’を使ってルールを結合したいユーザーと、’OR’を使い続けたいユーザーの要求を満たすために、ルールグループの概念を導入しました。
ルール・グループは完全にオプションであり、異なるフィールドのルールを結合する方法を明示的に定義するために使用できます。最も基本的なレベルでは、オプションのname属性の有無にかかわらず、1つのルール・グループを構成全体に適用できます。
<EventFiltering>
<RuleGroup groupRelation="or">
<ProcessCreate onmatch="exclude"/>
<ImageLoad onmatch="exclude"/>
</RuleGroup>
</EventFiltering>
別の方法として、異なるイベントに複数のルール・グループを使用することもできます。
<EventFiltering>
<RuleGroup name=”group1” groupRelation="or">
<ProcessCreate onmatch="exclude"/>
</RuleGroup>
<RuleGroup name=”group2” groupRelation="and">
<ImageLoad onmatch="exclude"/>
</RuleGroup>
</EventFiltering>
次の例のNetworkConnectイベントのように、ルール・グループからイベントを完全に除外することもできます。
<EventFiltering>
<RuleGroup name=”group1” groupRelation="or">
<ProcessCreate onmatch="exclude"/>
</RuleGroup>
<RuleGroup name=”group2” groupRelation="and">
<ImageLoad onmatch="exclude"/>
</RuleGroup>
<NetworkConnect onmatch="exclude"/>
</EventFiltering>
デフォルト値
ルール・グループはオプションであり、イベントはルール・グループから省略できるため、これらのルールのデフォルト値を選択する必要がありました。Sysmon 8.02で’OR’から’AND’に切り替えた経験を考慮して、このデフォルトでは’OR’に戻すことを選択しています。
ただし、これは下位互換性を目的としたものであるため、ユーザは設定ファイルを変更せずにSysmon 9.0以降に移行できます。ドキュメントに記載されているように、意図したデフォルト値である「および 」を復活させたいと考えています。Sysmon 9.0はスキーマバージョン4.1でリリースされているため、4.1以下のバージョンはデフォルトで「または 」になり、スキーマバージョン4.1より大きいバージョンはデフォルトで’AND’になります。
したがって、次の例では、コマンド行にiexplore.exeが含まれているか、親コマンド行にexplorer.exeが含まれている場合に、プロセス作成イベントを記録します。
<Sysmon schemaversion="4.1">
<EventFiltering>
<ProcessCreate onmatch="include">
<CommandLine condition="contains">iexplore.exe</CommandLine>
<ParentCommandLine condition="contains">explorer.exe</CommandLine>
</ProcessCreate>
</EventFiltering>
<Sysmon>
一方、この例では、コマンド行と親コマンド行の両方が一致した場合にのみイベントを記録します。
<Sysmon schemaversion="4.21">
<EventFiltering>
<ProcessCreate onmatch="include">
<CommandLine condition="contains">iexplore.exe</CommandLine>
<ParentCommandLine condition="contains">explorer.exe</CommandLine>
</ProcessCreate>
</EventFiltering>
<Sysmon>
最近、DNSロギングをSysmonに追加しました。これは一般的な機能ですが、この機能を利用するには、スキーマのバージョンを4.21に上げる必要があります。DNSを有効にした後で構成ファイルの問題を報告したユーザーが何人かいるので、その理由が明らかになっていることを期待しています。構成が従来の’OR’動作に依存している場合は、次の例に示すように、これを明示的に定義するトップレベルルールグループを追加します。
<Sysmon schemaversion="4.21">
<EventFiltering>
<RuleGroup groupRelation="or">
<ProcessCreate onmatch="include">
<CommandLine condition="contains">iexplore.exe</CommandLine>
<ParentCommandLine condition="contains">explorer.exe</CommandLine>
</ProcessCreate>
<RuleGroup groupRelation="or">
</EventFiltering>
<Sysmon>
ルール構造と柔軟性を進化させていく一方で、パフォーマンスへの影響にも敏感になっていく必要があります。ただし、お客様の環境でこの機能を向上させる方法についてご意見やご提案がある場合は、syssite@microsoft.com.までお問い合わせください。