Establish Accounts
This detection identifies observable indicators of adversary account establishment activity within the target environment — specifically inbound communications from newly created or privacy-focused email accounts targeting multiple employees, suspicious authentication attempts from externally established personas, and endpoint connections to account creation infrastructure. Since T1585 is a PRE-ATT&CK technique occurring outside the victim network, detections focus on the downstream effects: spearphishing precursor activity from zero-history email accounts, bulk contact campaigns from free/disposable email providers, and network telemetry showing corporate endpoints researching persona-associated platforms. Coverage spans all three sub-techniques: social media (T1585.001), email (T1585.002), and cloud account (T1585.003) establishment.
What is T1585 Establish Accounts?
Establish Accounts (T1585) maps to the Resource Development tactic — the adversary is trying to establish resources they can use to support operations in MITRE ATT&CK.
This page provides production-ready detection logic for Establish Accounts, covering the data sources and telemetry it touches: Microsoft Defender for Office 365. The queries below are rated medium severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.
MITRE ATT&CK
- Tactic
- Resource Development
- Technique
- T1585 Establish Accounts
- Canonical reference
- https://attack.mitre.org/techniques/T1585/
let PrivacyEmailDomains = dynamic([
"protonmail.com", "proton.me", "tutanota.com", "tutamail.com",
"cock.li", "disroot.org", "riseup.net", "mailfence.com",
"guerrillamail.com", "temp-mail.org", "mailinator.com",
"10minutemail.com", "throwam.com", "yopmail.com"
]);
let SuspiciousFreeProviders = dynamic([
"gmail.com", "yahoo.com", "hotmail.com", "outlook.com",
"live.com", "icloud.com", "aol.com"
]);
let LookbackDays = 14d;
EmailEvents
| where TimeGenerated > ago(LookbackDays)
| where DeliveryAction in ("Delivered", "Junked", "Blocked")
| where EmailDirection == "Inbound"
| extend SenderDomain = tolower(tostring(split(SenderFromAddress, "@")[1]))
| where SenderDomain in~ (PrivacyEmailDomains) or SenderDomain in~ (SuspiciousFreeProviders)
| summarize
EmailCount = count(),
TargetedUsers = dcount(RecipientEmailAddress),
TargetedRecipients = make_set(RecipientEmailAddress, 10),
AttachmentEmails = countif(AttachmentCount > 0),
LinkEmails = countif(UrlCount > 0),
DeliveredCount = countif(DeliveryAction == "Delivered"),
JunkedCount = countif(DeliveryAction == "Junked"),
SampleSubjects = make_set(Subject, 5),
FirstContact = min(TimeGenerated),
LastContact = max(TimeGenerated)
by SenderFromAddress, SenderDomain
| extend
CampaignDurationHours = datetime_diff("hour", LastContact, FirstContact),
IsPrivacyProvider = SenderDomain in~ (PrivacyEmailDomains),
IsFreeProvider = SenderDomain in~ (SuspiciousFreeProviders)
| extend RiskScore =
// Multi-target contact is a strong signal
case(TargetedUsers >= 10, 40, TargetedUsers >= 5, 25, TargetedUsers >= 2, 10, 0)
// Privacy/anonymous providers weighted higher
+ case(IsPrivacyProvider, 25, IsFreeProvider and TargetedUsers >= 3, 15, 0)
// Attachment-bearing emails increase risk
+ case(AttachmentEmails >= 3, 20, AttachmentEmails >= 1, 10, 0)
// Link-only campaigns (credential harvest setup)
+ case(LinkEmails >= 5 and AttachmentEmails == 0, 15, LinkEmails >= 2, 8, 0)
// Burst pattern within short window
+ case(EmailCount >= 5 and CampaignDurationHours <= 2, 15, 0)
| where RiskScore >= 25
| project
TimeGenerated = FirstContact,
SenderFromAddress,
SenderDomain,
IsPrivacyProvider,
EmailCount,
TargetedUsers,
TargetedRecipients,
AttachmentEmails,
LinkEmails,
DeliveredCount,
JunkedCount,
CampaignDurationHours,
SampleSubjects,
RiskScore,
LastContact
| order by RiskScore desc Detects inbound email campaigns from privacy-focused or free email providers targeting multiple employees, a behavioral signature of adversary persona-based spearphishing precursor activity. Scores risk based on provider type, number of targeted users, presence of attachments or links, and burst timing patterns consistent with automated persona-driven contact campaigns.
Data Sources
Required Tables
False Positives
- Legitimate mass newsletters or marketing emails from Gmail/Yahoo senders — filter by adding known sender domains to allowlist
- Corporate recruitment contacts from candidates using personal email accounts targeting HR or hiring managers
- External security researchers or vendors using ProtonMail for legitimate privacy reasons contacting security teams
- Conference or event organizers using free email providers sending bulk invitations to multiple employees
Sigma rule & cross-platform mapping
The detection logic for Establish Accounts (T1585) above is provided in a vendor-neutral
form so you can deploy it on any SIEM. The same logic is shipped here as native
KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the
following logsource:
logsource:
product: azure Browse the community-maintained Sigma rules for this technique:
Platform-specific guides for T1585
References (7)
- https://attack.mitre.org/techniques/T1585/
- https://attack.mitre.org/techniques/T1585/001/
- https://attack.mitre.org/techniques/T1585/002/
- https://attack.mitre.org/techniques/T1585/003/
- https://www.mandiant.com/resources/apt1-exposing-one-of-chinas-cyber-espionage-units
- https://www.cisa.gov/news-events/cybersecurity-advisories/aa24-249a
- https://www.youtube.com/watch?v=G0rKrTCZ_Ek
Testing Methodology
Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Simulate Persona-Based Inbound Email Campaign from Privacy Provider
Expected signal: EmailEvents table in Microsoft Defender for Office 365 should show matching records; Message Trace output confirms telemetry is flowing for privacy-provider senders
- Test 2Test Network Detection for Social Media Account Registration Activity
Expected signal: Sysmon Event ID 22 (DNS Query) for registration domains; DeviceNetworkEvents ConnectionSuccess/ConnectionAttempted events for HTTPS connections to signup paths
- Test 3Simulate Cloud Account Creation for Persona Infrastructure (Azure CLI)
Expected signal: AuditLogs in Azure AD / Microsoft Sentinel: Operation=Add application or Invite external user, Category=ApplicationManagement or UserManagement. CloudAppEvents table should show account creation activity.
Unlock Pro Content
Get the full detection package for T1585 including response playbook, investigation guide, and atomic red team tests.