実際の攻撃者を捕らえるSysmon設定
Sysmonに関する意見: IRで本当に重要なイベントID、なぜolafhartong/sysmon-modularが正しいベースラインなのか、そして実際の攻撃に対してあなたを盲目にする設定ミス。
Sysmonは、Windowsエンドポイントにデプロイできる単一最高レバレッジのツールです。無料で、Microsoftによって署名されており、適切に設定されたSysmonはWindowsをブラックボックスから実際に調査できるものに変えます。一方、不適切に設定されたSysmonは、過度に積極的なフィルターによって可視性のほとんどが除外された、同じディスクスペースコストです。私は、最初のものより2番目のものを持つ環境により多く入りました。
これは、エンドポイント可視性に触れるすべてのエンゲージメントで私が主張する設定姿勢です。
ディスクスペースに見合う価値のあるEID
Sysmonはバージョン15時点で29のイベントIDを定義します。すべて必要ではありません。バイトあたりのリターン順で、コストするストレージを取り戻すもの:
- EID 1 Process create。DFIRで単一最も有用なイベント。親プロセス、子プロセス、コマンドライン、整合性レベル、ユーザー、両方のプロセスハッシュ、プロセスGUID。Sysmonから他に何もログに記録しないなら、これを記録してください。
- EID 3 Network connection。ソースプロセス、宛先IP、ポート、プロセスイメージを持つすべての送信TCP/UDP接続。C2検出イベント。ここではフィルターが不可欠です (デフォルトインストールではすべてのブラウザリクエストがログに記録され、保持が1週間で消費されます) が、イベントあたりの価値は極めて高いです。異常なプロセスから異常な宛先への送信 (
rundll32.exeから住宅IPへ、mshta.exeから何かへ) をキャッチします。 - EID 7 Image loaded。ロードされたイメージハッシュと署名状態を持つDLLとドライバーのロード。これはDLL検索順序ハイジャック、サイドローディング、未署名ドライバーを捕まえる方法です。すべてをログに記録するのは高価です。署名されていないモジュールと非標準の場所からロードされたモジュールをログに記録するのは安価で高収量です。
- EID 10 Process accessed。ソースプロセス、ターゲットプロセス、付与されたアクセスマスク、コールトレースを持つクロスプロセスメモリアクセスイベント。これは認証情報ダンピングイベントです。
mimikatzはlsass.exeをPROCESS_VM_READ(0x10) とPROCESS_QUERY_INFORMATION(0x400) で開きます。すべての現代のダンパーはそうします。検出は自然と書かれます。 - EID 11 File created。書き込みプロセスを持つ新しいファイル作成。実行に至らなかったドロッパーアクティビティ、ランサムウェアステージング、ほとんどのLOLBin仲介のペイロード書き込みを捕まえます。
これら5つが基礎です。それらだけを、よく設定して持っていれば、実際の侵入と呼ばれるものになる前に、ほとんどのものを捕まえています。
オンにする価値のある次のティア:
- EID 8 CreateRemoteThread。プロセス境界を越えたスレッドインジェクション。古典的なプロセスインジェクションイベント。
- EID 13 Registry value set。レジストリ経由の永続化。runキー、サービス、image file execution options、COMハイジャックパスに調整します。
- EID 17/18 Named pipe created/connected。Cobalt Strikeビーコンと多くのポストエクスプロイテーションフレームワークは、SMBとプロセス間通信に名前付きパイプを使用します。パイプ名はしばしばエンゲージメントからエンゲージメントへ生き残るデフォルトです。
- EID 22 DNS query。要求プロセスを持つ送信DNS。EID 3がTCP/UDPソケットを開かなかったために接続を見逃した場合、DNSベースのC2 (DGA、DNSトンネル) を捕まえます。
- EID 25 Process tampering。イメージ操作イベント (process hollowing、doppelganging)。Sysmon 13+。
EID 12 (registry key/value create)、14 (registry key/value renamed)、15 (FileCreateStreamHash付きfile stream created) と23 (アーカイブ付きfile delete) は特定の調査で有用ですが、デフォルトでどこにもログに記録するには多すぎる量を生成します。注意深く監視しているホストまたは特定のパスに対してオンにしてください。
EID 2 (process changed file creation time) はニッチなanti-timestompイベントです。ファイルサーバーには価値があります。他は任意です。
EID 4、5、6 (Sysmon状態イベント) は運用的で検出ではありません。Sysmonが改ざんされたときがわかるようにログに記録してください。
なぜ olafhartong/sysmon-modular が正しい出発点か
さまざまな品質の公開Sysmon設定が半ダースあります。最も引用される2つはSwiftOnSecurityの sysmon-config とOlaf Hartongの sysmon-modular です。両方とも良いです。sysmon-modular がその構造のため私が推進するものです。
モジュラーレイアウトは、デプロイメント時に連結される個々のXMLファイルにEIDとテクニックでフィルターを分割します。これがもたらす利点:
- Diff可能性。単一テクニックのフィルターへの変更はgitで単一ファイルのdiffとして表示されます。小さな変更がノイズに消える4000行のモノリシックXMLと比較してください。
- 環境ごとのオーバーレイ。アップストリームツリーをコミットし、独自のファイルで環境固有の除外を上にレイヤー化します。アップストリームがフィルターを更新するとき、
git mergeを行い、オーバーレイは生き残ります。 - カバレッジ駆動の作成。フィルターはMITRE ATT&CKテクニックで整理されています。どのテクニックに対してカバレッジがあり、どれにないかが一目でわかります。ギャップ分析はファイルツリーです。
- アクティブなメンテナンス。Hartongは新しいテクニックと新しいSysmonバージョンに対してリポジトリを更新します。SwiftOnSecurity設定は、更新の間に長い停滞期間があります。
sysmon-modular から始めてください。設定管理ツリーにコミットします。除外をレイヤー化します。ゼロから独自のものを書かないでください。何かを見逃します。
あなたを盲目にする設定ミス
実際のエンゲージメントで最も可視性をコストするパターン:
EID 1で過度に積極的に除外する。本能は、ボリュームを管理可能に保つために、すべてのおしゃべりな正当なプロセスを除外することです。間違いは、その親から攻撃者が何をスポーンできるかを考えずに、親パスまたはイメージで除外することです。services.exe のすべての子を除外する場合、PsExecがインストールしたサービスバイナリが実行される正確な場所を除外しています。User (既知の良好なバイナリを実行するシステムアカウント) で、IntegrityLevel で、正確な CommandLine 一致で除外し、親だけではなく。
EID 3をイメージ名で除外する。「chrome.exe からのすべてのネットワーク接続を除外する」が標準的な悪いルールです。攻撃者がEID 3ロギングを回避する必要があるときに最初にすることは、ブラウザプロセスをハイジャックすることです。宛先IP範囲で (RFC1918からRFC1918へ、自分のインフラ)、ポートで (検証したIPCポートセット)、またはプロセス+宛先タプルで除外してください。決してイメージだけでは。
EID 7をまったくログに記録しない。Image loadロギングはボリュームで最も重いSysmon EIDです。無効にする誘惑は強いです。無効にするコストは、現代の侵入で最も一般的なテクニックであるDLLサイドローディングがあなたに見えないことです。中間の道: Image load を未署名モジュール、%APPDATA%、%LOCALAPPDATA%、%TEMP%、%PUBLIC%、%PROGRAMDATA% からロードされたモジュール、既知の乱用リストに一致する名前のモジュールにフィルターします。これはボリュームを1桁削減し、シグナルを保ちます。
ユーザー書き込み可能パスでEID 11を完全に欠く。%TEMP%、%APPDATA%\Roaming、%LOCALAPPDATA%、%PUBLIC% に対してログに記録されたEID 11は、ほとんどすべてのドロッパーを捕まえます。一部の設定はボリュームのためにこれらを除外します。ボリュームがポイントです: それが重要な書き込みが発生する場所です。
欲しいハッシュアルゴリズムを含めない。<HashAlgorithms> 要素はSysmonが計算するハッシュを制御します。デフォルトはSHA1のみです。IMPHASH はimport-hashで、マルウェアトラッキングで大いに使用されます。SHA256 はほとんどの脅威インテリジェンスプラットフォームがキーとするものです。<HashAlgorithms>md5,sha256,imphash</HashAlgorithms> を設定して、イベントがインテルデータが使用するものと並ぶようにします。
親でコマンドラインをログに記録しない。Sysmon EID 1は CommandLine (子) と ParentCommandLine (親) の両方をログに記録します。一部の設定は ParentCommandLine を無効にします。これはプロセスツリー調査での最も有用なピボットを殺します。それなしでは、親イメージ名はありますが、その親をどの引数で開始したかわかりません。
EID 22 (DNS) をまったく有効にしない。DNSロギングは最近のものです (Sysmon 10+) で、多くの設定はそれより前です。オンにしてください。おしゃべりなホスト (*.windowsupdate.com、内部AD) をフィルターし、他はすべてログに記録します。
ディスクスペースのトレードオフ
典型的なワークステーション上のよく設定されたSysmonは、1日あたり100-500 MBのEVTXを生成します。忙しいサーバーでは、1-5 GB。デフォルトチャネルサイズは64 MBで、これは Microsoft-Windows-Sysmon%4Operational.evtx ファイルが数時間でロールし、使用可能な保持が短いことを意味します。
修正は2段階です。最初に、チャネルサイズを上げます。wevtutil sl Microsoft-Windows-Sysmon/Operational /ms:4294967296 で4 GBに設定し、ほとんどのホストで数日から数週間を与えます。2番目に、より長い保持を持つ中央コレクターに転送します。WECは機能します。SIEMエージェントは機能します。Sysmon-modular WECサブスクリプションリポジトリには、チャネルサブスクリプション用のXMLがあります。
集中化された保持はローカル保持よりも重要です。なぜなら、ローカルファイルは攻撃者がクリアできるものだからです。彼らが到達できないコレクターでの転送されたコピーは耐久性のある記録です。両方を設定してください。
良いSysmonが調査でどのように見えるか
sysmon-modular がデプロイされ、5つのコアEIDすべてがログに記録され、EID 7が興味深いモジュールにフィルターされ、コレクターに転送されているホストは、以下を提供します:
- ホスト上のすべての実行のためのプロセスツリー、コマンドライン、ハッシュ、ユーザーコンテキスト付き。
- 発信プロセスを持つすべての送信ネットワーク接続。
- ユーザー書き込み可能ディレクトリからのすべてのDLLロード。
lsass.exeに対するすべてのメモリアクセス。%TEMP%と%APPDATA%内のすべてのファイル作成。- 要求プロセスを持つすべてのDNSクエリ。
侵入ストーリーはこのデータから自然に読み取れます。推測する必要はありません。彫り出す必要はありません。上から下まで読み、ストーリーのギャップが追跡する質問です。バイナリ実行証拠のためのAmCacheとPrefetch、永続性のためのレジストリ、フィルターがオフだった場合にSysmonのEID 11が見逃した可能性のあるファイルシステム変更のためのUSN journalと相互参照します。
Sysmonなしでは、Security.evtx と希望リストがあります。
さらなる読み物
- Olaf Hartongのsysmon-modular。リポジトリ。READMEを読み、次にフィルタースタイルの感覚をつかむためにテクニック固有のXMLファイルを3つか4つ読んでください。
- MicrosoftのSysmonドキュメント。公式リファレンス。薄いが正確。
- Roberto RodriguezのThreatHunter-Playbook。クエリが記された、Sysmon駆動のハント。
- TrustedSec sysmon-community-guide。フィルターセマンティクスのためのリファレンスドキュメント。