これは、異常なシステムコールを監視するためのETWベースのPOCです。
現在のところ、NtOpenThread と NtSetContextThread のシステムコールを監視して、ダイレクトおよびインダイレクトシステムコールの両方を示すIOCを特定します。
このプロジェクトは、ETW、より正確にはカーネルベースのETWプロバイダーを使用してIOCを監視します。
カーネル内に存在するETWプロバイダーは効果的に活用できます。発行されたイベントのコールトレースには、システムコールが実行されたユーザーモードアドレスが含まれているためです。
これにより、脅威アクターによってしばしば利用される手法である、ダイレクトおよびインダイレクトシステムコールを示すIOCの監視が可能になります:
1: 信頼されていないモジュールからシステムコールが実行された(=ダイレクトシステムコール)
2: ntdll内で使用されたシステムコールスタブが、実行されたシステムコールと一致しない(=インダイレクトシステムコール)
このプロジェクトでは、Microsoft-Windows-Kernel-Audit-API-Callsプロバイダーを使用して、NtSetContextThreadまたはNtOpenThreadのシステムコールによってそれぞれトリガーされるOpenThreadおよびSetContextThreadイベントを監視します。
EVENT_ENABLE_PROPERTY_STACK_TRACEフラグを使用してコールトレースを有効にします。
これはPOCであり、2つの特定のシステムコールのみを監視します。もちろん、他のカーネルベースのプロバイダーを使用してテレメトリを強化することも可能です。
このプロジェクトには、素晴らしいSysWhispers3を使用して作成された、ダイレクトおよびインダイレクトシステムコールを使用する2つのサンプルプログラムが含まれています。
これらは次のように生成されました:
python3 syswhispers.py -a x64 -m jumper_randomized --functions NtSetContextThread
python3 syswhispers.py -a x64 -m embedded --functions NtSetContextThread
実行すると、異常なシステムコールが特定されるはずです:

10.0.19044 でテスト済み。
IsElevated()