Permission Groups Discovery
Adversaries may attempt to discover group and permission settings to understand which user accounts and groups are available, group memberships, and which users and groups have elevated permissions. This information informs targeting decisions and enables privilege escalation, lateral movement, and persistence planning. Common enumeration methods include native Windows commands (net group, net localgroup), PowerShell cmdlets (Get-ADGroup, Get-LocalGroup), LDAP queries, BloodHound/SharpHound collection, Linux identity commands (id, groups, getent group), and cloud-provider APIs. Threat actors including APT41, TA505, Volt Typhoon, and Scattered Spider have used these techniques in real-world intrusions.
let GroupDiscoveryCommands = dynamic([
"net group", "net localgroup", "net user /domain",
"Get-ADGroup", "Get-ADGroupMember", "Get-LocalGroup", "Get-LocalGroupMember",
"dsquery group", "dsget group",
"gpresult", "whoami /groups", "whoami /all",
"id ", "id;", "groups ", "getent group",
"SharpHound", "BloodHound"
]);
let SuspiciousParents = dynamic([
"cmd.exe", "powershell.exe", "pwsh.exe", "wscript.exe", "cscript.exe",
"mshta.exe", "rundll32.exe", "regsvr32.exe", "svchost.exe"
]);
DeviceProcessEvents
| where Timestamp > ago(24h)
| where (
// net.exe based group enumeration
(FileName =~ "net.exe" or FileName =~ "net1.exe")
and ProcessCommandLine has_any ("group", "localgroup")
) or (
// PowerShell AD/local group cmdlets
(FileName =~ "powershell.exe" or FileName =~ "pwsh.exe")
and ProcessCommandLine has_any ("Get-ADGroup", "Get-ADGroupMember", "Get-LocalGroup", "Get-LocalGroupMember", "Get-ADPrincipalGroupMembership")
) or (
// dsquery/dsget LDAP group enumeration
(FileName =~ "dsquery.exe" or FileName =~ "dsget.exe")
and ProcessCommandLine has "group"
) or (
// whoami with group flags — common post-exploitation recon
FileName =~ "whoami.exe"
and ProcessCommandLine has_any ("/groups", "/all", "/priv")
) or (
// gpresult — Group Policy result showing group memberships
FileName =~ "gpresult.exe"
) or (
// BloodHound / SharpHound collector binaries
ProcessCommandLine has_any ("SharpHound", "BloodHound", "-CollectionMethod", "--CollectionMethods")
)
| extend IsDomainGroupQuery = ProcessCommandLine has_any ("/domain", "net group", "dsquery group", "Get-ADGroup")
| extend IsLocalGroupQuery = ProcessCommandLine has_any ("localgroup", "Get-LocalGroup", "whoami /groups")
| extend IsBloodHound = ProcessCommandLine has_any ("SharpHound", "BloodHound", "-CollectionMethod")
| extend SuspiciousParent = InitiatingProcessFileName has_any (SuspiciousParents)
| project Timestamp, DeviceName, AccountName, AccountDomain,
FileName, ProcessCommandLine,
InitiatingProcessFileName, InitiatingProcessCommandLine,
IsDomainGroupQuery, IsLocalGroupQuery, IsBloodHound, SuspiciousParent
| sort by Timestamp desc Data Sources
Required Tables
False Positives
- IT administrators and helpdesk staff routinely running net localgroup or net group to troubleshoot access issues
- Active Directory management scripts and scheduled tasks using Get-ADGroup or Get-ADGroupMember for account provisioning
- Security tools and monitoring agents (e.g., CrowdStrike, Tenable) that enumerate group memberships as part of posture assessment
- Software installation processes that check for membership in local Administrators or specific service groups
- Legitimate BloodHound usage by authorized red team or vulnerability management teams with change management records
- GPO deployment verification scripts using gpresult to confirm policy application to the correct groups
References (11)
- https://attack.mitre.org/techniques/T1069/
- https://attack.mitre.org/techniques/T1069/001/
- https://attack.mitre.org/techniques/T1069/002/
- https://attack.mitre.org/techniques/T1069/003/
- https://www.crowdstrike.com/blog/hidden-administrative-accounts-bloodhound-to-the-rescue/
- https://learn.microsoft.com/en-us/defender-endpoint/advanced-hunting-deviceprocessevents-table
- https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/net-group
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1069.001/T1069.001.md
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1069.002/T1069.002.md
- https://github.com/BloodHoundAD/BloodHound
- https://www.mandiant.com/resources/blog/apt41-initiates-global-intrusion-campaign-using-multiple-exploits
Unlock Pro Content
Get the full detection package for T1069 including response playbook, investigation guide, and atomic red team tests.