Windows DNSサーバーは、イベントビューアに3か所、オプションのテキストファイルにログを書き込みます:
- Microsoft → Windows → DNS-Server → Audit:ゾーンとレコードの変更。現在のWindows Serverではデフォルトでオン。
- Microsoft → Windows → DNS-Server → Analytical:すべてのクエリと応答。デフォルトでオフであり、解析ログを表示するまで表示されません。
- DNS Server、アプリケーションとサービスログの下:サービスレベルイベント(開始、停止、ゾーン読み込みエラーなど)。
- The デバッグログ、通常C:WindowsSystem32dnsdns.logにあるDNSマネージャーで有効にするテキストファイル。
コアエクスポートは昇格されたプロンプトからの1行:
wevtutil epl "Microsoft-Windows-DNSServer/Audit" C:logsdns_audit.evtx
ネットワーク上のほぼすべてのものがDNSクエリを作成し、マルウェアも含まれます。クエリログはDNSトンネリング、ドメイン生成アルゴリズム、既知の悪意あるドメインへのコールを露出します。監査ログは、誰かが静かにレコードを変更したことを示します。Prime CoreはDNSデータに対する{N}の検出ルールを持ち、{M}のMITRE ATT&CK技術にマッピングされます。その中には:DNSを介したコマンド&コントロール(T1071.004)とドメイン生成アルゴリズム(T1568.002)があります。
始める前に
クエリログはおそらくオンになっていませんでした。 解析チャネルはデフォルトでオフです。すでに起こったことを調査している場合、サーバーからのクエリログはおそらくありません。代わりに利用できるのはクライアント側(Sysmonイベント22、またはDNSクライアントログ)、ファイアウォールやプロキシログ、またはネットワークセンサーです。今すぐオンにすることで、今後役立ちます。
クエリログをオンにする (将来のために)。イベントビューアで、 View → Show Analytic and Debug Logsを選択し、その後右クリックして Analytical をDNS-Serverの下に選んで Enable Logを選択します。またはコマンドラインから:
wevtutil sl "Microsoft-Windows-DNSServer/Analytical" /e:true
Microsoftはオーバーヘッドを控えめに説明していますが、非常に忙しいリゾルバーではオンにする前にテストしてください。
DNSサーバーか、DNSを実行しているドメインコントローラーでの昇格されたプロンプトが必要です。
ログをエクスポートする
:: レコードとゾーンの変更
wevtutil epl "Microsoft-Windows-DNSServer/Audit" C:logsdns_audit.evtx
:: サービスレベルイベント
wevtutil epl "DNS Server" C:logsdns_server.evtx
:: クエリと応答(解析が有効である場合のみ)
wevtutil epl "Microsoft-Windows-DNSServer/Analytical" C:logsdns_analytical.evtx
解析チャネルは通常のログとは異なる動作をします。イベントビューアはイベントを表示する前にログを無効にするよう求めるかもしれません。PowerShellのGet-WinEventは、-Oldestでのみそれらを読み取ります。
デバッグログ はプレーンテキストで、 DNS マネージャー → サーバーのプロパティ → デバッグログで設定されます。それはパケットを詳細に記録し、そのサイズの制限に達すると上書きします。それをそのままコピーしてください:copy C:WindowsSystem32dnsdns.log C:logs.
何を探すべきか
| シグナル | それが意味する可能性のあること |
|---|---|
| クエリで非常に長くランダムな見た目のサブドメイン | DNSトンネリング、クエリ名にデータが密輸される |
| 1つのクライアントが多数の失敗したルックアップ(NXDOMAIN)を生成している | マルウェアが生成したドメインを循環している |
| 1つのホストからのTXTクエリの大量発行 | トンネリングまたはコマンド&コントロール |
| 変更ウィンドウ外で作成、削除または変更されたレコードの監査イベント | レコード乗っ取り、例:新しいwpadレコード |
| DNSサーバーサービスによりロードされたプラグインDLL | SYSTEMとしてコードを実行するためのDnsAdminsグループの悪用 |
LogTotalにアップロードしてレビュー
LogTotalはEVTXをネイティブに読み取ります。まず知っておくべきこと: LogTotalはまだEVTXファイルをサニタイズしません。 DNSログは内部ホスト名やクライアントIPを含みます。アップロードは生ファイルを渡すことと同じ扱いです:テストサーバーでは問題ありませんが、本番サーバーでは、データ処理を担当する人からの許可を得てください。
今日サニタイズが必要な場合、まずJSONに変換してください:evtx_dump -o jsonl dns_audit.evtx > dns_audit.jsonl.
- アップロード。 開く logtotal.com してファイルをドロップします。
- レビュー。
問題が発生した場合
| 症状 | 考えられる原因 | Fix |
|---|---|---|
| イベントビューアに解析チャネルがない | 解析ログはデフォルトで非表示です | View → Show Analytic and Debug Logs |
| 解析チャネルが空である | それは一度も有効にされていなかった | 有効にします;それまでの履歴はありません |
| 解析ログでのGet-WinEventエラー | 解析ログには-Oldestが必要です | -Oldestを追加 |
| 監査チャネルがない | 更新プログラムのない古いWindows Server | OSバージョンを確認し、デバッグログを使用してください |
| デバッグログが短時間しかカバーしていない | それはサイズ制限に達し上書きされました | 制限を引き上げるか、他の場所にログを転送します |
FAQ
サーバーログかクライアントログか?
DNSサーバーはどのクライアントIPが尋ねたかを教えてくれます。クライアントのみがどのプロセスが尋ねたかを教えてくれます。これが、エンドポイントでのSysmonイベント22がサーバーログを非常によく補完する理由です。
デバッグログは解析チャネルより優れているか?
デバッグログはより多くのパケット詳細を保持しますが、コストが高く自動的に上書きされます。ほとんどの調査では、解析チャネルがより良いデフォルトです。