Technical Operations Guide

AD Security Assessment

Complete guide for privileged account discovery, permissions requirements, free tool integration, and professional deliverables.

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 Readers group

Recommended Tier 2: Enhanced Discovery

For comprehensive security assessment

  • All Tier 1 permissions
  • Remote Management Users group
  • 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 ActivityRequired PermissionAD GroupRisk
Enumerate users, groups, OUsRead AD objectsDomain UsersLow
List privileged group membersRead AD objectsDomain UsersLow
Run BloodHound collectionRead AD + Session enumDomain UsersMedium
Retrieve Security Event LogsRead event logsEvent Log ReadersLow
Check Kerberos delegationRead service accountsDomain UsersLow
WMI queries on endpointsRemote WMI accessRemote Management UsersMedium
Password hash extraction (DCSync)Replicating Directory Changes AllExplicit delegationHigh

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

AttributeValueRationale
Account Namesvc-iamsec-auditClear naming identifying purpose
Display NameIdentity Bytes - Security AssessmentIdentifies vendor for audit trail
Password25+ characters, complexExceeds policy, resistant to cracking
ExpirationEngagement end date + 7 daysAuto-cleanup if manual revocation forgotten
Group MembershipEvent Log Readers, Remote Management UsersMinimum required permissions

Account Creation Script (For Client)

PowerShell Create-AssessmentAccount.ps1
# 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

PowerShell Remove-AssessmentAccount.ps1
# 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.

1

Environment Reconnaissance

Collect baseline: Forest/domain structure, trust relationships, functional levels, DC inventory, sites topology.

2

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

3

Service Account Discovery

Methods: SPN-based (Kerberoastable), naming patterns (svc-*, sa-*), PasswordNeverExpires flag, gMSA/sMSA objects, accounts with delegation.

4

Kerberos Security Audit

Check for: Kerberoastable accounts (SPNs), AS-REP Roastable (no pre-auth), Unconstrained delegation, Constrained delegation with protocol transition.

5

AdminSDHolder Analysis

Review AdminSDHolder ACL for non-standard permissions. Check for accounts with adminCount=1 that aren't in privileged groups (orphaned flags).

6

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.

7

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 Analysis
Maps AD relationships and attack paths
Identifies privilege escalation routes
Visual graph database (Neo4j)

Best For: Understanding attacker movement from initial access to DA

PingCastle

AD Security Scoring
Comprehensive AD health assessment
Risk scoring (0-100 scale)
Executive-friendly HTML report

Best For: Executive risk scoring and misconfiguration detection

Purple Knight

Security Indicators
100+ security indicators
MITRE ATT&CK mapping
Pre/post exposure indicators

Best For: Detecting IOCs and validating security controls

ADRecon

Data Extraction
Comprehensive AD enumeration
Excel report generation
GPO, DNS, LAPS, BitLocker data

Best For: Raw data extraction and evidence collection

Tool Execution

BloodHound Collection
PowerShell BloodHound Collection
# Download SharpHound from: https://github.com/BloodHoundAD/SharpHound
$OutputPath = "C:\Assessment\BloodHound"
New-Item -ItemType Directory -Path $OutputPath -Force | Out-Null

# Full collection (comprehensive - takes 30-60 min)
.\SharpHound.exe --CollectionMethods All --OutputDirectory $OutputPath `
    --OutputPrefix "$(Get-Date -Format 'yyyyMMdd')_Full" --ZipFileName "BloodHound.zip"

# Stealth mode (minimal noise - use if client concerned)
# .\SharpHound.exe --CollectionMethods DCOnly --Stealth --OutputDirectory $OutputPath

# Import into BloodHound:
# 1. Start Neo4j: neo4j console
# 2. Launch BloodHound GUI
# 3. Drag ZIP file into interface

# Key Queries to Run:
# - "Find Shortest Paths to Domain Admins"
# - "Find Kerberoastable Users with Most Privileges"
# - "Find Principals with DCSync Rights"
# - "Shortest Paths to Unconstrained Delegation"
PingCastle Assessment
CMD PingCastle Execution
REM Download from: https://pingcastle.com

REM Full healthcheck (primary assessment)
PingCastle.exe --healthcheck --server * --no-enum-limit

REM Risk Score Interpretation:
REM   0-10:   Excellent
REM   11-30:  Good
REM   31-50:  Fair
REM   51-70:  Poor
REM   71-100: Critical

REM Targeted scanners
PingCastle.exe --scanner smb --server *      REM SMB signing
PingCastle.exe --scanner laps_bitlocker --server *  REM LAPS deployment
PingCastle.exe --scanner spooler --server *  REM PrintNightmare
ADRecon Data Extraction
PowerShell ADRecon Collection
# Download from: https://github.com/sense-of-security/ADRecon
$OutputPath = "C:\Assessment\ADRecon"

# Full collection with Excel output
.\ADRecon.ps1 -OutputDir $OutputPath -GenExcel -Collect All

# Key data points to analyze from Excel:
# Users sheet: PasswordNeverExpires, LastLogonDate > 90 days, PasswordLastSet > 365 days
# UserSPNs sheet: All entries are Kerberoastable targets
# Groups/GroupMembers: Nested privileged group memberships
# ACLs sheet: Non-default permissions on Domain root, GenericAll on privileged objects
# LAPS sheet: Computers without LAPS (LAPS not deployed)

Tool Output Report Section Mapping

Report SectionBloodHoundPingCastleADReconCustom Scripts
Executive SummaryAttack path countRisk score (0-100)--
Privileged InventoryDA session locationsGroup membersFull user exportTiered analysis
Service Account RisksKerberoastable pathsSPN analysisUserSPNs sheetPassword age, flags
Attack PathsFull visualization-ACL data-
Kerberos SecurityDelegation pathsKrbtgt analysisSPN dataDetailed flags

Assessment Report Structure

Professional report that communicates findings to both technical and executive audiences.

1

Executive Summary (1-2 pages)

High-level findings for C-suite. Include risk score, critical finding count, business impact. No technical jargon.

2

Scope & Methodology (1 page)

What was assessed, tools used, account permissions. Provides defensibility and context.

3

Risk Dashboard (1 page)

Visual metrics: privileged count, Kerberoastable accounts, stale accounts, attack paths to DA, compliance status.

4

Detailed Findings (10-20 pages)

Each finding: Description, Evidence, Risk Rating, Business Impact, Remediation Steps, MITRE ATT&CK references.

5

Attack Path Analysis (3-5 pages)

BloodHound visualizations showing paths to DA. Narrative explaining each attack chain.

6

Remediation Roadmap (2-3 pages)

Prioritized plan: Quick Wins (0-30 days), Short-term (30-90 days), Long-term (90-365 days).

A

Appendix: Account Inventories

CSV exports of privileged accounts, service accounts, stale accounts with full details.

Deliverable Formats

DeliverableFormatAudience
Executive ReportPDFC-Suite, Board
Technical ReportPDFIT Security, Admins
Findings WorkbookXLSXIT Teams
Executive PresentationPPTXLeadership
Remediation TrackerXLSXProject Managers
Raw Tool OutputsZIPTechnical 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

PhaseActivitiesDuration
KickoffAccess provisioning, environment docsDays 1-2
DiscoveryData collection with automated toolsDays 3-5
AnalysisFinding analysis, attack path mappingDays 6-8
ReportingReport writing, quality reviewDays 9-10
DeliveryClient review, final deliveryDays 11-14

Total Duration: 2-3 weeks

4. Investment

EnvironmentUsersPrice
SmallUp to 500$7,500
Medium501 - 2,500$10,000
Large2,501 - 10,000$15,000
Enterprise10,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