Identify Roles
Adversaries may gather information about identities and roles within the victim organization to support targeting. Role-specific intelligence reveals key personnel — IT administrators, executives, HR, and finance staff — along with their access levels and responsibilities, enabling highly effective spear-phishing, social engineering, and targeted intrusion campaigns. Threat actors including Volt Typhoon, LAPSUS$, FIN7, and HEXANE have used role identification to select high-value targets with privileged access before or during compromise. Detection is fundamentally limited for this PRE-technique because reconnaissance primarily occurs externally via LinkedIn, company websites, OSINT tools, and data-broker APIs, generating no telemetry within the victim environment. Detectable edge cases include: OSINT tool execution on managed endpoints (insider threat or compromised machine being weaponized), connections to data-broker and people-search APIs from corporate networks via non-browser processes, scraping of the organization's own personnel-facing web properties, and post-compromise internal role enumeration via Active Directory LDAP queries or Microsoft Graph API calls targeting role attributes.
let OsintToolNames = dynamic(["theharvester", "crosslinked", "linkedint", "phoneinfoga", "reconng", "recon-ng", "spiderfoot", "maltego", "littlebrother", "osrframework", "linkedin2username"]);
let DataBrokerDomains = dynamic(["hunter.io", "rocketreach.co", "clearbit.com", "apollo.io", "zoominfo.com", "lusha.com", "seamless.ai", "swordfish.ai", "contactout.com", "signalhire.com", "pipl.com", "kendo.io", "snov.io", "voilanorbert.com"]);
let PersonnelPagePaths = dynamic(["/team", "/leadership", "/executives", "/staff", "/our-team", "/people", "/management", "/board", "/directory", "/org-chart", "/orgchart", "/about-us/team", "/about/team"]);
// Branch 1: OSINT tool execution on managed endpoints (insider threat or compromised endpoint)
let OsintToolExec = DeviceProcessEvents
| where Timestamp > ago(24h)
| where tolower(FileName) has_any (OsintToolNames)
or (
FileName in~ ("python.exe", "python3", "python", "bash", "sh", "cmd.exe", "powershell.exe")
and tolower(ProcessCommandLine) has_any (OsintToolNames)
)
| extend DetectionBranch = "OSINT_Tool_Execution"
| extend RiskIndicator = strcat("OSINT tool detected on managed endpoint: ", FileName)
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
InitiatingProcessFileName, InitiatingProcessCommandLine,
DetectionBranch, RiskIndicator;
// Branch 2: Non-browser process connections to data-broker / people-search APIs
let DataBrokerConnections = DeviceNetworkEvents
| where Timestamp > ago(24h)
| where RemoteUrl has_any (DataBrokerDomains)
| where InitiatingProcessFileName !in~ ("chrome.exe", "msedge.exe", "firefox.exe", "brave.exe",
"opera.exe", "iexplore.exe", "safari", "chromium")
| extend DetectionBranch = "DataBroker_API_Connection"
| extend RiskIndicator = strcat("Non-browser process accessing data-broker API: ",
InitiatingProcessFileName, " -> ", RemoteUrl)
| project Timestamp, DeviceName,
AccountName = InitiatingProcessAccountName,
FileName = InitiatingProcessFileName,
ProcessCommandLine = InitiatingProcessCommandLine,
InitiatingProcessFileName, InitiatingProcessCommandLine,
DetectionBranch, RiskIndicator;
union OsintToolExec, DataBrokerConnections
| sort by Timestamp desc Data Sources
Required Tables
False Positives
- Security team members or penetration testers running OSINT tools as part of authorized red team engagements or attack surface assessments
- Recruiting and HR personnel using data-broker tools (ZoomInfo, Apollo, Clearbit, Hunter.io) for candidate sourcing via local scripts or integrations rather than browser
- Sales and marketing teams with CRM enrichment integrations (Salesforce, HubSpot) that use contact-data APIs via background processes rather than browser-based access
- Threat intelligence analysts using OSINT frameworks (Recon-ng, SpiderFoot, Maltego) for adversary infrastructure research as part of their daily workflow
- IT administrators using LinkedIn2Username or similar tools for authorized user enumeration during security posture assessments
References (12)
- https://attack.mitre.org/techniques/T1591/004/
- https://threatpost.com/broadvoice-leaks-350m-records-voicemail-transcripts/160158/
- https://www.microsoft.com/security/blog/2022/03/22/dev-0537-criminal-actor-targeting-organizations-for-data-exfiltration-and-destruction/
- https://www.cisa.gov/news-events/cybersecurity-advisories/aa24-038a
- https://www.secureworks.com/blog/lyceum-takes-center-stage-in-middle-east-campaign
- https://www.clearskysec.com/siamesekitten/
- https://github.com/laramies/theHarvester
- https://github.com/m8sec/CrossLinked
- https://hunter.io/api-documentation/v2
- https://learn.microsoft.com/en-us/azure/active-directory/reports-monitoring/reference-audit-activities
- https://learn.microsoft.com/en-us/graph/api/user-list
- https://www.blackberry.com/us/en/solutions/endpoint-security/ransomware-protection/fin7
Unlock Pro Content
Get the full detection package for T1591.004 including response playbook, investigation guide, and atomic red team tests.