Atom
HTB - Windows Attacks & Defense

HTB - Windows Attacks & Defense

AD攻防

AD 基本介紹

Windows 常見驗證方式

  • 帳密 / 雜湊(LM、NTLM、NetNTLM)
  • Kerberos
  • LDAP 驗證(帳密或憑證)

Kerberos:票證制度
KDC(Key Distribution Center) 在 DC 上,會發票證:

替代文字
Kerberos 基本構想

重要連接埠

  • 53 DNS
  • 88 Kerberos
  • 135 WMI/RPC
  • 137-139 / 445 SMB
  • 389 / 636 LDAP
  • 3389 RDP
  • 5985 / 5986 WinRM

Windows event ID

AD / 帳密 / 橫向移動常看 Event ID

[登入與驗證]
4624 成功登入
4625 登入失敗
4648 使用明確帳密登入
4672 高權限登入
4768 Kerberos TGT
4769 Kerberos TGS
4771 Kerberos 預先驗證失敗
4776 NTLM 驗證

[帳號與群組]
4720 建立帳號
4723 嘗試修改密碼
4724 重設密碼
4738 使用者帳號屬性變更
4728 加入全域安全群組
4732 加入本機安全群組
4756 加入通用安全群組

[AD 物件]
5136 AD 物件修改
5137 AD 物件建立
5139 AD 物件移動
5141 AD 物件刪除

[共享 / 檔案 / 程序]
5140 存取共享
5145 檢查共享檔案存取權限
4663 存取檔案/物件
4688 程序建立
4104 PowerShell 腳本區塊
4742 電腦物件修改

證據鏈搜查用

AN=Account Name (帳戶名稱)

Event ID 檢查欄位 ID意思 常見攻擊關聯
4624 AN, Logon Type, Source Network Address 成功登入 撿到帳密登入、RDP、SMB、橫向移動
4625 AN, Status, Source Network Address 登入失敗 暴力破解、噴密碼、帳號探測
4648 Process Name, Account Whose Credentials Were Used, Target Server 明確指定帳密登入 runas、偷來的帳密被拿去用
4672 AN, Privileges 高權限登入 管理員登入、升權後活動
4768 AN, Client Address 請求 TGT Kerberos 驗證起點、AS-REP 關聯
4769 AN, Service Name, Client Address 請求 TGS Kerberoasting、SPN 服務存取
4771 AN, Client Address, Failure Code Kerberos 預驗證失敗 密碼錯誤、爆破
4776 AN, Workstation NTLM 驗證 NTLM 登入、PtH 關聯
4720 Target Account Name, Subject Account Name 建立帳號 後門帳號、持久化
4724 Target Account Name, Subject Account Name 重設他人密碼 濫權、接管帳號
4738 Target Account Name, Subject Account Name 使用者帳號屬性變更 帳號設定異動、可疑屬性修改
4728 Member Name, Group Name 加入群組 升權、加入管理員群組
4732 Member Name, Group Name 加入群組 升權、加入管理員群組
4756 Member Name, Group Name 加入群組 升權、加入管理員群組
5136 Object DN, Attribute LDAP Display Name, Value AD 物件屬性被改 description/info 被塞密碼、SPN 修改
5137 Object DN AD 物件建立 建立後門物件
5141 Object DN AD 物件刪除 清痕、破壞
5140 Share Name, Client Address 存取共享 探索共享、碰 SYSVOL
5145 Share Name, Relative Target Name, Accesses 對共享內檔案做細部存取檢查 搜 XML、找 GPP、枚舉共享
4663 Object Name, Process Name, Accesses 實際存取檔案/物件 讀敏感檔案、碰 XML
4688 New Process Name, Command Line, Creator Process Name 建立程序 執行 powershell/findstr/net/dsquery
4104 Script Block Text, User ID PowerShell 腳本內容 PowerView、AD 枚舉、SYSVOL 搜尋
5156 Application Name, Destination Port 程序建立允許連線 連 SMB/LDAP/Kerberos、橫向移動
Sysmon 1 Image, CommandLine, ParentImage 程序建立 枚舉工具、惡意程序
Sysmon 3 Image, DestinationIp, DestinationPort 網路連線 連 DC、SMB、LDAP
Sysmon 11 TargetFilename, Image 建立檔案 工具輸出、惡意放置

攻擊手法(重點是檢測,攻擊會放在其他筆記)

Kerberoasting vs AS-REP Roasting 對照表

項目 Kerberoasting AS-REP Roasting
目標帳號 有 SPN 的服務帳號 啟用 Do not require Kerberos preauthentication 的帳號
取得的材料 TGS 相關票證材料 AS-REP / 認證回應材料
主要看哪個設定 有沒有 SPN 有沒有關 pre-auth
成功關鍵 服務帳號密碼強度 使用者帳號密碼強度
常見事件 4769 4768
常見防禦 強密碼、gMSA、清理 SPN、限制 RC4 關閉不必要的 no-preauth、長密碼、定期盤點
核心本質 針對服務票證離線爆破 針對免 pre-auth 帳號的認證回應離線爆破

GPP Passwords(2014年前建立環境才有此漏洞)

GPP 密码
GPP Passwords 攻擊可以從兩個面向偵測:一是監控 SYSVOL 中敏感 XML 檔案的讀取行為(4663),二是監控外洩帳號後續是否出現可疑登入或 Kerberos 驗證事件(4624、4625、4768)。

  • 4663 有人存取了敏感檔案 / 物件
    在這裡用來抓:誰去讀 Groups.xml
  • 4624 成功登入
    在這裡用來抓:偷到 GPP 密碼後成功登入
  • 4625 登入失敗
    在這裡用來抓:嘗試使用舊密碼或錯誤密碼登入
  • 4768 要求 TGT
    在這裡用來抓:該帳號開始走 Kerberos 驗證流程

GPO Permissions/GPO Files(並非攻擊手法,單純講述如何查看被修改的文件)

如果攻擊者能改 GPO,那就可能透過 GPO 下發惡意設定、惡意排程、惡意檔案。
開啟 Directory Service Changes auditing
監控 5136
看誰改了哪個 GPO(GUID)

Windows 事件 ID 5136 表示「目錄服務物件已修改」(A directory service object was modified)。此安全性記錄檔事件用於稽核 Active Directory (AD) 中的變更,例如屬性修改、權限變更或成員新增(如 Domain Admins)。此事件會記錄執行操作的帳戶、修改的物件、屬性名稱以及舊值與新值。


Credentials in Shares 共享憑證

帳密放在共享資料夾內
檢測方式:

  • 4625 失敗登入
    常見於帳號密碼錯誤導致登入失敗。
  • 4771 Kerberos pre-auth failed
    使用 Kerberos 嘗試登入,但密碼錯了。
  • 4776 NTLM 驗證失敗 / 憑證驗證失敗
    可用來看到對某帳號提供了錯誤密碼。

檢查是否有共享資料夾:
方法1.

1
compmgmt.msc

系統工具 → 共用資料夾 → 共用
方法2.

1
Get-SmbShare | Select-Object Name, Path, Description

共享檢查

第一步:列出所有 share

1
net share

1
Get-SmbShare | Select Name,Path

第二步:檢查可疑 share 的權限

1
Get-SmbShareAccess -Name "ShareName"

第三步:檢查對應資料夾 NTFS 權限
看資料夾內容 → 安全性
或:

1
Get-Acl "實際路徑"

第四步:人工看內容
特別看:scripts、deploy、backup、install、config

第五步:從別台主機測試能不能列出或連入
1
net view \\主機名

Credentials in Object Properties 物件屬性中的憑證

檢查是否有Credentials in Object Properties

  1. AD 使用者 description / info
    先跑:
    1
    2
    3
    Get-ADUser -Filter * -Properties Description,Info |
    Where-Object { $_.Description -or $_.Info } |
    Select Name,SamAccountName,Description,Info
  2. 關鍵字搜尋
    1
    2
    3
    4
    5
    Get-ADUser -Filter * -Properties Description,Info |
    Where-Object {
    $_.Description -match 'pass|pwd|password|密碼|帳密' -or
    $_.Info -match 'pass|pwd|password|密碼|帳密'
    }
  3. SYSVOL XML
    1
    Get-ChildItem "\\contoso.local\SYSVOL" -Recurse -Include *.xml
  4. 本機 share
    1
    net share
  5. 檢查共享權限
    1
    Get-SmbShareAccess -Name "<共享名稱>"

DCSync說明

判斷4624登入IP是否正常
過濾4769確認是否有請求

Golden Ticket

Golden Ticket手法

無法直接看到 forge 過程
因此只能觀察偽造票後的使用行為
核心看:
4624 / 4625
4768 / 4769
重點觀察行為關聯:

  • 非常用來源 IP
  • 管理員不在 PAW 上登入
  • 4769 沒有合理前置 4768
  • 異常存取 DC / krbtgt / CIFS / LDAP

Kerberos Constrained Delegation

域渗透中的 Kerberos 委派攻击

檢查4624 Transited Services,確認是否有:

  • KCD abuse
  • 服務代使用者登入
  • 高權限帳號異常出現
    檢查4769
  • delegation 後續服務存取
  • 異常票證請求
  • 高價值服務存取

替代文字

Print Spooler & NTLM Relaying

红队域渗透NTLM Relay:强制认证方式总结

檢查4624:

  • 來源是工作站、攻擊機、跳板機,而不是該電腦自己
  • Authentication Package = NTLM
  • Logon Type = 3
手法 主要服務面 協定 核心特色
PrinterBug Print Spooler MS-RPRN 最經典 coercion,靠列印 RPC
PetitPotam EFSRPC MS-EFSR 很常拿來配 AD CS / relay
DFSCoerce DFS Namespace MS-DFSNM 利用 DFS 管理 RPC
ShadowCoerce FSRVP / VSS MS-FSRVP 利用檔案快照相關 RPC
PrivExchange Exchange Exchange-related 偏 Exchange 場景的強制驗證

Coercing Attacks & Unconstrained Delegation

AD 攻防實戰演練 Day 17:Kerberos 無約束委派攻擊 - 從子域 DC 跨域提升至父域控制器
AD 提权-委派攻击

檢查windows防火牆:

  • DC是否收到來自某主機的445 inbound
  • DC是否送出outbound
  • 是否在不該互通的網段/VLAN
  • 是否短時間重複發生

替代文字

PKI - ESC1

關於分分鐘拿下整個網域,你還疏忽了什麼?
Certified Pre-Owned

檢查可疑請求,對方是否真的登入成功。

  • 檢查CA 4886/4887 (是否用敏感模板申請,例如DomainController)
  • 檢查DC是否有4768(重點看來源IP是否為本身)
  • 檢查是否有DC 4624
本文作者:Atom
本文鏈接:https://d0ngd.github.io/2026/03/08/Windows Attacks & Defense/
版權聲明:本文採用 CC BY-NC-SA 3.0 CN 協議進行許可