Permission Requirements (Least Privilege)
Critical: NO Domain Admin Required
You do NOT need Domain Admin for assessment activities. Using DA creates unnecessary risk. The permissions below follow least privilege principle.
Permission Tiers
Required Tier 1: Read-Only Discovery
Sufficient for 90% of assessment activities
- ✓ Domain Users membership (baseline)
- ✓ Read access to AD objects (default)
- ✓ Read access to GPOs and SYSVOL
- ✓
Event Log Readersgroup
Recommended Tier 2: Enhanced Discovery
For comprehensive security assessment
- ✓ All Tier 1 permissions
- ✓
Remote Management Usersgroup - ✓ Read access to AdminSDHolder
- ✓ Read access to Deleted Objects (optional)
Situational Tier 3: Advanced Analysis
Only when specifically required
- ✓ All Tier 1 & 2 permissions
- ✓
Replicating Directory Changes All(DCSync - password audit only) - ✓ Local admin on sample workstations (LAPS audit)
Permission Matrix by Activity
| Assessment Activity | Required Permission | AD Group | Risk |
|---|---|---|---|
| Enumerate users, groups, OUs | Read AD objects | Domain Users | Low |
| List privileged group members | Read AD objects | Domain Users | Low |
| Run BloodHound collection | Read AD + Session enum | Domain Users | Medium |
| Retrieve Security Event Logs | Read event logs | Event Log Readers | Low |
| Check Kerberos delegation | Read service accounts | Domain Users | Low |
| WMI queries on endpoints | Remote WMI access | Remote Management Users | Medium |
| Password hash extraction (DCSync) | Replicating Directory Changes All | Explicit delegation | High |
Client Communication Script
"We require a dedicated service account with read-only access to Active Directory. This account does NOT need Domain Admin privileges. We follow least privilege to minimize risk during assessment."
Service Account Configuration
Client IT team should create a dedicated service account for the assessment. This ensures audit trail clarity and allows immediate revocation after engagement.
Account Specifications
| Attribute | Value | Rationale |
|---|---|---|
| Account Name | svc-iamsec-audit | Clear naming identifying purpose |
| Display Name | Identity Bytes - Security Assessment | Identifies vendor for audit trail |
| Password | 25+ characters, complex | Exceeds policy, resistant to cracking |
| Expiration | Engagement end date + 7 days | Auto-cleanup if manual revocation forgotten |
| Group Membership | Event Log Readers, Remote Management Users | Minimum required permissions |
Account Creation Script (For Client)
# Create Assessment Service Account (Run as Domain Admin - one time by client)
$AccountName = "svc-iamsec-audit"
$DisplayName = "Identity Bytes - Security Assessment"
$OUPath = "OU=Service Accounts,DC=contoso,DC=com" # Adjust to your OU
$EngagementEnd = (Get-Date).AddDays(21) # 3-week engagement
# Generate secure password
Add-Type -AssemblyName System.Web
$Password = [System.Web.Security.Membership]::GeneratePassword(25, 5)
$SecurePass = ConvertTo-SecureString $Password -AsPlainText -Force
# Create account
New-ADUser -Name $AccountName -SamAccountName $AccountName `
-UserPrincipalName "$AccountName@$((Get-ADDomain).DNSRoot)" `
-DisplayName $DisplayName -Path $OUPath `
-AccountPassword $SecurePass -Enabled $true `
-PasswordNeverExpires $false -CannotChangePassword $true `
-AccountExpirationDate $EngagementEnd
# Add to required groups (least privilege)
Add-ADGroupMember -Identity "Event Log Readers" -Members $AccountName
Add-ADGroupMember -Identity "Remote Management Users" -Members $AccountName
Write-Host "`nAccount Created: $AccountName" -ForegroundColor Green
Write-Host "Password: $Password" -ForegroundColor Yellow
Write-Host "Expires: $($EngagementEnd.ToString('yyyy-MM-dd'))"
Write-Host "`n[!] Share password via secure channel only!" -ForegroundColor Red
Post-Engagement Decommissioning
# Decommission Assessment Account (Run within 24 hours of engagement end)
$AccountName = "svc-iamsec-audit"
# Step 1: Disable immediately
Disable-ADAccount -Identity $AccountName
Write-Host "[+] Account disabled" -ForegroundColor Green
# Step 2: Remove from all groups
$Account = Get-ADUser $AccountName -Properties MemberOf
foreach ($Group in $Account.MemberOf) {
Remove-ADGroupMember -Identity $Group -Members $AccountName -Confirm:$false
}
Write-Host "[+] Removed from all groups" -ForegroundColor Green
# Step 3: Move to Disabled Users OU (optional)
# Move-ADObject -Identity (Get-ADUser $AccountName).DistinguishedName `
# -TargetPath "OU=Disabled Users,DC=contoso,DC=com"
Write-Host "[COMPLETE] Account decommissioned" -ForegroundColor Cyan
Privileged Account Discovery Process
Follow this workflow to systematically discover all privileged accounts, service accounts, and high-risk configurations.
Environment Reconnaissance
Collect baseline: Forest/domain structure, trust relationships, functional levels, DC inventory, sites topology.
Privileged Group Enumeration
Tier 0 (Critical): Domain Admins, Enterprise Admins, Schema Admins, Administrators
Tier 1 (High): Account Operators, Backup Operators, Server Operators, DnsAdmins
Tier 2 (Medium): Remote Desktop Users, Hyper-V Administrators
Service Account Discovery
Methods: SPN-based (Kerberoastable), naming patterns (svc-*, sa-*), PasswordNeverExpires flag, gMSA/sMSA objects, accounts with delegation.
Kerberos Security Audit
Check for: Kerberoastable accounts (SPNs), AS-REP Roastable (no pre-auth), Unconstrained delegation, Constrained delegation with protocol transition.
AdminSDHolder Analysis
Review AdminSDHolder ACL for non-standard permissions. Check for accounts with adminCount=1 that aren't in privileged groups (orphaned flags).
Attack Path Analysis (BloodHound)
Map relationships: Shortest paths to DA, Kerberoastable users with paths to high-value targets, computers where DAs have sessions, users with DCSync rights.
Stale Account Identification
Identify: No login in 90+ days, never logged in, passwords >365 days old, disabled accounts still in privileged groups.
Free Tool Integration Guide
These tools complement the PowerShell toolkit. Use them in combination for maximum coverage.
BloodHound
Attack Path AnalysisBest For: Understanding attacker movement from initial access to DA
PingCastle
AD Security ScoringBest For: Executive risk scoring and misconfiguration detection
Purple Knight
Security IndicatorsBest For: Detecting IOCs and validating security controls
ADRecon
Data ExtractionBest For: Raw data extraction and evidence collection
Tool Execution
Tool Output Report Section Mapping
| Report Section | BloodHound | PingCastle | ADRecon | Custom Scripts |
|---|---|---|---|---|
| Executive Summary | Attack path count | Risk score (0-100) | - | - |
| Privileged Inventory | DA session locations | Group members | Full user export | Tiered analysis |
| Service Account Risks | Kerberoastable paths | SPN analysis | UserSPNs sheet | Password age, flags |
| Attack Paths | Full visualization | - | ACL data | - |
| Kerberos Security | Delegation paths | Krbtgt analysis | SPN data | Detailed flags |
Assessment Report Structure
Professional report that communicates findings to both technical and executive audiences.
Executive Summary (1-2 pages)
High-level findings for C-suite. Include risk score, critical finding count, business impact. No technical jargon.
Scope & Methodology (1 page)
What was assessed, tools used, account permissions. Provides defensibility and context.
Risk Dashboard (1 page)
Visual metrics: privileged count, Kerberoastable accounts, stale accounts, attack paths to DA, compliance status.
Detailed Findings (10-20 pages)
Each finding: Description, Evidence, Risk Rating, Business Impact, Remediation Steps, MITRE ATT&CK references.
Attack Path Analysis (3-5 pages)
BloodHound visualizations showing paths to DA. Narrative explaining each attack chain.
Remediation Roadmap (2-3 pages)
Prioritized plan: Quick Wins (0-30 days), Short-term (30-90 days), Long-term (90-365 days).
Appendix: Account Inventories
CSV exports of privileged accounts, service accounts, stale accounts with full details.
Deliverable Formats
| Deliverable | Format | Audience |
|---|---|---|
| Executive Report | C-Suite, Board | |
| Technical Report | IT Security, Admins | |
| Findings Workbook | XLSX | IT Teams |
| Executive Presentation | PPTX | Leadership |
| Remediation Tracker | XLSX | Project Managers |
| Raw Tool Outputs | ZIP | Technical Reference |
Statement of Work Template
Template Usage
Replace [BRACKETED] text with client-specific information.
1. Engagement Overview
Project: Active Directory Security Assessment
Client: [CLIENT NAME]
Prepared By: Identity Bytes Consulting
Identity Bytes will conduct a comprehensive security assessment of [CLIENT NAME]'s Active Directory environment to identify privileged account risks, security misconfigurations, and potential attack paths.
2. Scope of Work
In Scope:
- Active Directory forest: [FOREST NAME]
- Domains: [DOMAIN1], [DOMAIN2]
- Estimated users: [COUNT]
Assessment Components:
- ✓ Privileged account enumeration and tiering
- ✓ Service account discovery and risk assessment
- ✓ Kerberos security review (Kerberoasting, delegation)
- ✓ Password policy evaluation
- ✓ Stale and orphaned account identification
- ✓ Trust relationship security review
- ✓ Attack path mapping (BloodHound)
- ✓ AD security scoring (PingCastle)
Out of Scope:
- ✗ Penetration testing or exploitation
- ✗ Azure AD / Entra ID (available as add-on)
- ✗ Remediation implementation
3. Timeline
| Phase | Activities | Duration |
|---|---|---|
| Kickoff | Access provisioning, environment docs | Days 1-2 |
| Discovery | Data collection with automated tools | Days 3-5 |
| Analysis | Finding analysis, attack path mapping | Days 6-8 |
| Reporting | Report writing, quality review | Days 9-10 |
| Delivery | Client review, final delivery | Days 11-14 |
Total Duration: 2-3 weeks
4. Investment
| Environment | Users | Price |
|---|---|---|
| Small | Up to 500 | $7,500 |
| Medium | 501 - 2,500 | $10,000 |
| Large | 2,501 - 10,000 | $15,000 |
| Enterprise | 10,000+ | Custom |
Add-ons: Azure AD (+$5K), Multi-forest (+$3K/forest), Remediation support (+$2.5K)
Payment: 50% on signature, 50% on delivery. Net 30.
5. Client Responsibilities
- Dedicated AD service account (specs provided)
- VPN or on-site access to domain-joined workstation
- Technical point of contact for questions
- Response to access requests within 24 hours
6. Confidentiality
- All data encrypted at rest and in transit
- Data retained for engagement + 30 days only
- Secure deletion after retention period
- NDA required prior to engagement