セキュリティ設定¶
彼らは何ですか¶
攻撃者が変わる Windows の 非表示のままにして資格情報にアクセスするためのセキュリティ設定。彼らはオフになります Microsoft Defender またはツールをそこから除外するか、 Windows 平文のパスワードを保持し、リモート デスクトップを開き、ファイアウォールをオフにし、沈黙させます。 PowerShell ロギング。レジストリには次の設定が保存されます。
SOFTWARE: Defender、その除外とポリシー。 UAC;リモート デスクトップとファイアウォールのポリシー。 PowerShell の実行ポリシー、ロギング ポリシー、および AMSI プロバイダー。システムの復元。イベントログチャネル。SYSTEM(コントロール セットごと):WDigest、LSA 保護、Credential Guard、制限付き管理者、NTLM。リモートデスクトップ。ファイアウォールプロファイル。 SMBv1;最終アクセス時間。各イベント ログのサイズ。NTUSER.DAT: ユーザーの PowerShell 実行ポリシーとログ ポリシー、および Windows スクリプト ホストの AMSI。
parse-registry security-settings は、検出した各設定をレコードとして報告します。各レコードには、設定の値、値の意味、および がデフォルトの を弱めるかどうか (保護または証拠ソースをオフにするか、値を指定しない場合の現在の Windows (10 および 11) よりも低くするかどうか) が含まれます。
この証拠から判断できること: ハイブの保存時点で、この設定はこの値であり、キーの最終書き込み時刻はこの時刻でした。保護を弱める設定は調査の手掛かりであり、侵害の証明ではありません。管理者、グループポリシー、他のセキュリティ製品、古い Windows バージョンでも設定される値があり、一般的な場合は説明に記載しています。
場所¶
C:\Windows\System32\config\SOFTWARE
Microsoft\Windows Defender[\Real-Time Protection|\Features|\Spynet]
Microsoft\Windows Defender\Exclusions\Paths|Extensions|Processes|IpAddresses|TemporaryPaths
Policies\Microsoft\Windows Defender\…
Microsoft\Windows\CurrentVersion\Policies\System UAC
Policies\Microsoft\Windows NT\Terminal Services RDP policy
Policies\Microsoft\WindowsFirewall\<profile> firewall policy
Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell ExecutionPolicy
Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging|ModuleLogging|Transcription
Microsoft\AMSI\Providers\{CLSID}
Microsoft\Windows NT\CurrentVersion\SystemRestore DisableSR
Microsoft\Windows\CurrentVersion\WINEVT\Channels\<channel> Enabled, MaxSize
C:\Windows\System32\config\SYSTEM (ControlSet00N\…)
Control\SecurityProviders\WDigest UseLogonCredential
Control\Lsa RunAsPPL, LsaCfgFlags, DisableRestrictedAdmin, LmCompatibilityLevel
Control\Terminal Server[\WinStations\RDP-Tcp] fDenyTSConnections, PortNumber, UserAuthentication
Services\SharedAccess\Parameters\FirewallPolicy\<profile> EnableFirewall
Services\LanmanServer\Parameters SMB1
Control\FileSystem NtfsDisableLastAccessUpdate
Services\EventLog\<log> MaxSize
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell ExecutionPolicy
Software\Policies\Microsoft\Windows\PowerShell\…
Software\Microsoft\Windows Script\Settings AmsiEnable
トランザクション ログを含む 3 つのハイブすべてを収集します。収集の直前に変更された設定は、ログにのみ存在する可能性があります。
分析時の注意点¶
- Stored 構成は有効な保護状態ではありません。 収集されたレジストリ値と、破損した値リストの診断行が報告されます。欠落したデータは、デフォルト、未収集のソース、または別の管理メカニズムを反映している可能性があります。保護が有効か無効かを証明するものではありません。
WeakensDefaultフラグ設定が適用されると、指定されたベースラインが削減される可能性があります。 - レガシー Defender フラグは無視される場合があります。
DisableAntiSpywareおよびDisableAntivirusは、Defender が停止したことを証明しません。適用可能性は、プラットフォームのバージョン、オンボーディング、および改ざん保護によって異なります。 Microsoft では、これらの従来の設定 について説明します。 - 最新の管理対象除外はレジストリ キャプチャでは使用できない場合があります。 プラットフォーム 4.18.25110.6 以降、エンドポイント構成管理に Defender を使用するデバイスでは、除外構成を取得するためにサポートされている Defender PowerShell コマンドレットが必要です。したがって、オフラインのレジストリが存在しないことは、除外が存在しないことを証明するものではありません。 Microsoft 構成ガイダンス。
- Weakened は悪意のあるものではありません。 例:
DisableAntiSpyware= 1 は、別のウイルス対策プログラムが登録されているときに Windows によっても設定されます。- リモート デスクトップはサーバー上で意図的に開かれます。
- Windows 7 は、より小さなイベント ログを保持し、最終アクセス時刻を更新しませんでした。
- デフォルトはバージョンによって異なります。 一部の値は以前はデフォルトでした。
NtfsDisableLastAccessUpdate= 1 は、Windows 10 1803 より前のデフォルトでした。評決なしで報告されていますが、後のバージョンで手動で設定された0x80000001は弱体化されています。RunAsPPL、LsaCfgFlags、UseLogonCredentialを現在の Windows と比較します。- Defender 除外: 各パス、拡張子、プロセス、またはアドレスはレコードです。除外するたびに Defender が弱まります。 Defender 自体を追加する
TemporaryPathsには評決がありません。ユーザーが書き込み可能なフォルダー、.ps1/.exe拡張機能、および LOLBins (rundll32.exe、powershell.exe) を探します。 - ポリシー キー (
Policy= True) は、グループ ポリシー、ツール、およびポリシーがローカル設定に影響を与えることを知っている攻撃者によって書き込まれます。それらをドメインの GPO と関連付けます。 - イベント ログ チャネル: のみ 25 セキュリティ関連チャネルが報告され、Windows がデフォルトで各チャネルをオンにするかどうかが報告されます。たとえば、
TaskScheduler/OperationalとDNS-Client/Operationalはデフォルトではオフになっています。その他にはparse-registry readを使用してください。 - Key 回:
KeyLastWrittenUTCはキーのものなので、この値がいつ変更されたかというと必ずしもそうではありません。Policiesキー全体が一度に書き込まれるのが一般的です。 - コントロール セット: デフォルトでは、最後に使用されたコントロール セット Windows が読み取られます。
--all-control-setsはすべてを読み取ります。
Juntei で解析する¶
Usage: juntei parse-registry security-settings <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SOFTWARE, SYSTEM and NTUSER.DAT hives
-f, --file <FILE> Parse one hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Filtering:
--all-control-sets Every control set, not only the one in use
--weakened-only Only settings that weaken the default
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry security-settings -d evidence/ -o settings.csv
juntei parse-registry security-settings --weakened-only -d evidence/ -t jsonl \
| jq -r '[.Host, .Area, .KeyPath, .ValueName, .Value, .Meaning] | @tsv'
概要では、エリアごとに設定がカウントされます。ここには、デフォルトとすべての Defender の除外を弱める設定がリストされています。
出力フィールド¶
| フィールド | 解釈 |
|---|---|
Host, SourcePath, HiveType |
ホスト、ハイブ、およびそのタイプ (SOFTWARE、SYSTEM、NTUSER.DAT)。 |
ControlSet, IsCurrentControlSet |
SYSTEM の場合: コントロール セット、および Windows が最後に使用したものであるかどうか。 Select\Current が欠落しているか無効である場合は不明です。 |
User, UserSID |
NTUSER.DAT の場合: プロファイル フォルダーの名前、およびシステムの ProfileList からのユーザーの SID。 |
Area |
defender, uac, credentials, remote_access, network, powershell, evidence. |
Setting |
それは何ですか: defender_disable_realtime_monitoring、defender_exclusion_path、uac_local_account_token_filter_policy、wdigest_use_logon_credential、rdp_deny_connections、powershell_script_block_logging、event_channel_enabled、… |
Value |
値: 10 進数の数値、文字列、または除外そのもの。値が設定のタイプではない場合は空です。 |
Meaning |
値の意味。 |
WeakensDefault |
True 値が弱まる場合は現在の Windows がそれなしで行うこと、False がそうでない場合、空である場合はそれが適用されない (サイズ、ポート、AMSI プロバイダー)、または伝えることができない。 |
Policy |
キーが Policies キーの下にあるかどうか。 |
KeyPath, ValueName |
キーと値。除外の値の名前は除外される項目です。 AMSI プロバイダーには何もありません。 |
KeyLastWrittenUTC |
キーの最後の書き込み。 |
DataRaw |
値のバイト (16 進数) (設定のタイプではない場合)。 |
TransactionLogStatus, LogsApplied |
レジストリ回復コンテキスト。 |
Problems |
間違ったタイプの値と読み取れないキー。 |
調査戦略¶
- すべてのホストで
--weakened-onlyを実行し、ホスト間を比較すると、1 つのホストのみの設定が目立ちます。 - ホスト上および Defender のログで見つかったツールに対して各 Defender 除外を確認します (イベント 5007 は構成変更を記録します)。
- 重要な時間をログオン、サービスのインストール、プロセスの作成と関連付けます。
reg.exe、Set-MpPreference、netsh advfirewall、およびpowershellコマンド ラインを探します (イベント 4688、Sysmon 1 および 13、PowerShell) 4104)。 - 資格情報設定 (
WDigest、RunAsPPL、LocalAccountTokenFilterPolicy、DisableRestrictedAdmin) については、資格情報のダンプを探し、その後ハッシュを渡します。 - デフォルトを復元するために削除された値には
parse-registry read --recover-deletedを使用し、古いコントロール セットには--all-control-setsを使用します。