Manual AD Tripwires Testing
This guide covers manual testing methods for AD Tripwires when you need detailed validation of specific Active Directory attack detection techniques.
Customer Environment Impact
Manual AD Tripwires testing generates real events and activity in your customer environment. This includes actual AD events on Domain Controllers, Windows Security Event log entries, and authentication attempts that may trigger other security monitoring systems.
Domain User Scraping Detection
Test Scenario: Simulate an attacker scraping user account descriptions to find exposed credentials.
Testing Steps
-
Identify Decoy Accounts
# Get specific AD Tripwire decoy account Get-ADUser -Identity "<tripwire account name>" -Properties Description
-
Simulate Credential Scraping
# Enumerate user descriptions (simulating attacker behavior) Get-ADUser -Filter * -Properties Description | Where-Object {$_.Description -ne $null} | Select-Object Name, Description
-
Attempt to Use Discovered Credentials
-
Extract any credentials found in decoy account descriptions
- Attempt authentication using those credentials
- Monitor for detection and alerting
Expected Results
- Alert should be generated within 5-10 minutes
- Alert should include source IP, username attempted, and timestamp
- Event should be logged in Domain Controller security logs
Kerberoasting Detection
Test Scenario: Simulate an attacker requesting Kerberos service tickets for offline password cracking.
Testing Steps
-
Identify Service Accounts with SPNs
# Get specific AD Tripwire service account Get-ADUser -Identity "<tripwire service account name>" -Properties ServicePrincipalName
-
Request Service Tickets
# Use Invoke-Kerberoast or similar tool to request tickets # Example using PowerShell: setspn -T <domain.com> -Q */* | findstr "test-webserver.internal" # Request TGS for the tripwire service account Add-Type -AssemblyName System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "HTTP/test-webserver.internal"
-
Alternative Methods
# Using Invoke-Kerberoast (if available) Invoke-Kerberoast -Identity "<tripwire service account name>" # Using Rubeus # Rubeus.exe kerberoast /user:<tripwire service account name>
Expected Results
- TGS request should be logged as Event ID 4769
- Alert should be generated indicating Kerberoasting attempt
- Alert should include service account name and requesting user
AS-REP Roasting Detection
Test Scenario: Simulate an attacker requesting authentication responses for accounts without pre-authentication.
Testing Steps
-
Identify Vulnerable Accounts
# Get specific AD Tripwire account with pre-authentication disabled Get-ADUser -Identity "<tripwire account name>" -Properties DoesNotRequirePreAuth
-
Request AS-REP
# Use Rubeus or similar tool to request AS-REP # Example command: # Rubeus.exe asreproast /domain:<domain.com> /user:<tripwire account name>
-
Alternative Methods
# Using impacket GetNPUsers python3 GetNPUsers.py <domain.com>/<username> -dc-ip <domain-controller-ip> -request # Using PowerShell Get-ASREPHash -UserName "<tripwire account name>" -Domain "<domain.com>"
Expected Results
- AS-REP request should be logged as Event ID 4768
- Alert should be generated indicating AS-REP roasting attempt
- Alert should include target account and source information
Advanced Testing Scenarios
Credential Stuffing Simulation
Test detection of credential reuse attempts:
# Attempt authentication with discovered credentials
$credential = Get-Credential -UserName "<tripwire account name>"
Test-ComputerSecureChannel -Credential $credential
LDAP Enumeration Testing
Test detection of LDAP queries against tripwire accounts:
# LDAP enumeration that might discover tripwire accounts
Get-ADUser -LDAPFilter "(servicePrincipalName=*)" -Properties servicePrincipalName
Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=4194304))"
Event Validation
Manual Event Checking
Verify that expected events are generated:
# Check for Kerberoasting events (Event ID 4769)
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4769; StartTime=(Get-Date).AddMinutes(-30)} |
Where-Object {$_.Message -like "*<tripwire service account name>*"}
# Check for AS-REP roasting events (Event ID 4768)
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4768; StartTime=(Get-Date).AddMinutes(-30)} |
Where-Object {$_.Message -like "*<tripwire account name>*"}
# Check for authentication failures (Event ID 4625)
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625; StartTime=(Get-Date).AddMinutes(-30)} |
Where-Object {$_.Message -like "*<tripwire account name>*"}
Safety Considerations for Manual Testing
Pre-Testing Requirements
- Obtain explicit approval from IT and security teams
- Notify SOC/security operations about planned testing
- Ensure test environment is properly isolated if possible
- Document all planned test activities
- Verify rollback procedures are in place
During Testing
- Execute tests during designated maintenance windows
- Monitor Domain Controller performance
- Track all commands executed with timestamps
- Watch for unexpected system behavior
- Stop testing if performance issues occur
Post-Testing Cleanup
- Verify all test events were properly logged
- Check that no persistent changes were made
- Document all results and observations
- Clean up any temporary files or artifacts
- Update testing procedures based on findings
Troubleshooting Manual AD Testing
Events Not Generated
Possible Causes:
- Domain policy not properly applied
- Audit logging not enabled for required events
- Domain Controller time synchronization issues
- Insufficient privileges for test execution
Solutions:
# Verify audit policy settings
auditpol /get /category:"Account Logon"
auditpol /get /category:"Logon/Logoff"
# Check domain controller time
w32tm /query /status
# Verify required events are enabled
Get-WinEvent -ListLog Security | Select-Object LogName, IsEnabled, MaximumSizeInBytes
Events Not Forwarded
Possible Causes:
- "IoA Collector" scheduled task not running
- Network connectivity issues
- Event Collector configuration problems
Solutions:
# Check scheduled task status
Get-ScheduledTask -TaskName "IoA Collector" | Get-ScheduledTaskInfo
# Test network connectivity
Test-NetConnection -ComputerName tripwires.horizon3.ai -Port 443
# Check event forwarding logs
Get-WinEvent -LogName "Microsoft-Windows-Forwarding/Operational" -MaxEvents 50
False Negatives
Possible Causes:
- Tripwire accounts not properly configured
- Events not matching expected patterns
- Timing issues with event collection
Solutions:
- Verify tripwire account attributes match expected configuration
- Check event log timing against test execution
- Review AD Agent logs for processing errors
- Validate network connectivity from Domain Controllers
Best Practices for Manual AD Testing
Test Sequencing
- Start with least intrusive tests (account enumeration)
- Progress to authentication attempts
- Finish with service ticket requests
- Allow adequate time between tests for event processing
Documentation Requirements
- Record exact commands used
- Document timestamps for all activities
- Note any error messages or unexpected behavior
- Track alert generation timing
- Maintain audit trail for compliance
Coordination Requirements
- Schedule tests during approved maintenance windows
- Coordinate with Domain Controller administrators
- Inform security monitoring teams
- Plan for potential impact on other AD services
- Ensure proper change management approval