LAB/ACTIVE DIRECTORY/ACL ENUMERATION
SYNCING
COMMAND VAULT // REASONING ATTACHED

Every command must answer “why”.

Syntax, purpose, expected output, next decision và common mistake — trong cùng một record.

7 VERIFIED RECORDS
IDENTITY // WINDOWS

Convert-NameToSid

$sid = Convert-NameToSid wley

Chuyển principal name thành SID để lọc ACE.

WHY

ACE gắn quyền với trustee SID, không dựa vào tên hiển thị.

EXPECTED

SID dạng S-1-5-21-…

NEXT

Dùng $sid trong Get-DomainObjectACL filter.

COMMON FAILURENhầm local SID với domain SID hoặc không đối chiếu identity context.

ACL // WINDOWS

Get-DomainObjectACL

Get-DomainObjectACL -Identity * -ResolveGUIDs | ? { $_.SecurityIdentifier -eq $sid }

Tìm object mà SID hiện tại có direct control.

WHY

Directory ACL lưu ACE theo trustee SID và target object.

EXPECTED

ObjectDN, right, ObjectAceType, trustee và inheritance.

NEXT

Triage right và đặt câu hỏi 'so what?'.

COMMON FAILUREQuên -ResolveGUIDs hoặc chỉ query một target đã đoán trước.

GROUPS // WINDOWS

Get-DomainGroup

Get-DomainGroup -Identity 'Help Desk Level 1' | select memberof

Tìm parent groups để mở rộng transitive control.

WHY

Nested membership có thể nối quyền qua nhiều tầng.

EXPECTED

Danh sách parent group DN.

NEXT

Phân tích outbound control của từng parent.

COMMON FAILUREDừng ở một tầng hoặc không kiểm soát vòng lặp.

ACL LAB // WINDOWS

Set-DomainObject

Set-DomainObject -Identity adunn -Set @{serviceprincipalname='nonexistent/acl-lab'}

Minh họa GenericWrite/GenericAll → fake SPN trong lab.

WHY

Quyền ghi trên user có thể cho phép sửa servicePrincipalName.

EXPECTED

SPN lab trên target và Event 5136 tương ứng.

NEXT

Thực hiện lab evidence rồi xóa SPN trước khi mất quyền.

COMMON FAILUREChạy ngoài scope hoặc quên cleanup order.

CLEANUP // WINDOWS

Set-DomainObject

Set-DomainObject -Identity adunn -Clear serviceprincipalname

Xóa SPN giả khi vẫn còn quyền ghi.

WHY

Rời group trước có thể làm mất khả năng rollback.

EXPECTED

SPN trở về baseline.

NEXT

Rời group, rollback password và re-enumerate.

COMMON FAILURECleanup sai thứ tự gây deadlock.

DETECTION // WINDOWS

Get-WinEvent

Get-WinEvent -FilterHashtable @{LogName='Security'; Id=5136}

Tìm sự kiện thay đổi directory object.

WHY

5136 ghi actor, object và attribute khi auditing phù hợp được bật.

EXPECTED

Directory Service Change events.

NEXT

Trích SDDL và đối chiếu change log.

COMMON FAILUREKhông bật audit policy hoặc nhầm timestamp/timezone.

DETECTION // WINDOWS

ConvertFrom-SddlString

ConvertFrom-SddlString '<SDDL_STRING>'

Dịch SDDL thành cấu trúc quyền dễ đọc.

WHY

SDDL tối ưu cho máy, không cho analyst đọc trực tiếp.

EXPECTED

Owner/group/DACL/ACE đã phân tích.

NEXT

Xác định ai thay đổi quyền gì và ghi vào report.

COMMON FAILUREDiễn giải SDDL thiếu object context.