T1213.001

Confluence

Adversaries may leverage Confluence repositories to mine valuable information. Often found in development environments alongside Atlassian JIRA, Confluence is generally used to store development-related documentation but may contain diverse categories of sensitive information including: policies and procedures, physical/logical network diagrams, system architecture diagrams, technical system documentation, testing/development credentials, work/project schedules, source code snippets, and links to internal resources. LAPSUS$ is documented to have specifically searched victim Confluence and JIRA instances to discover high-privilege account credentials as part of their data theft operations, making this a high-value target during the collection phase of an intrusion.

Microsoft Sentinel / Defender
kusto
let BulkAccessThreshold = 40;
let SensitiveSearchTerms = dynamic([
  "password", "passwd", "credential", "secret", "api key", "apikey",
  "token", "vpn", "ssh", "private key", "aws", "azure", "gcp",
  "database password", "db pass", "connection string", "bearer",
  "service account", "ldap", "kerberos", "access key"
]);
// Detect bulk Confluence access and credential hunting via Microsoft Defender for Cloud Apps
CloudAppEvents
| where Timestamp > ago(24h)
| where AppName has_any ("Confluence", "Atlassian")
| where ActionType in~ (
    "PageViewed", "ContentViewed", "SpaceViewed",
    "AttachmentDownloaded", "ContentExported", "SpaceExported",
    "PagePrinted", "SearchPerformed",
    "page_viewed", "space_viewed", "content_exported",
    "attachment_downloaded", "search_performed"
  )
| extend SearchQuery = tostring(RawEventData.searchQuery)
| extend SpaceKey = tostring(RawEventData.spaceKey)
| extend PageTitle = coalesce(tostring(ObjectName), tostring(RawEventData.pageTitle))
| extend IsSensitiveSearch = (SearchQuery has_any (SensitiveSearchTerms))
| summarize
    TotalActions = count(),
    UniquePages = dcount(PageTitle),
    UniqueSpaces = dcount(SpaceKey),
    SensitiveSearchCount = countif(IsSensitiveSearch == true),
    ExportCount = countif(ActionType in~ ("ContentExported", "SpaceExported", "PagePrinted", "content_exported", "space_exported")),
    DownloadCount = countif(ActionType in~ ("AttachmentDownloaded", "attachment_downloaded")),
    ActionTypes = make_set(ActionType, 8),
    SampleTitles = make_set(PageTitle, 10),
    SensitiveTermsFound = make_set(SearchQuery, 5),
    FirstActivity = min(Timestamp),
    LastActivity = max(Timestamp)
    by AccountObjectId, AccountDisplayName, IPAddress, UserAgent
| where TotalActions > BulkAccessThreshold
    or SensitiveSearchCount > 0
    or ExportCount > 5
    or (UniqueSpaces > 5 and TotalActions > 20)
| extend DurationMinutes = max_of(datetime_diff('minute', LastActivity, FirstActivity), 1)
| extend AccessRatePerMinute = round(toreal(TotalActions) / DurationMinutes, 2)
| extend ThreatIndicator = case(
    AccessRatePerMinute > 10, "Automated scraping detected — exceeds 10 pages/min",
    SensitiveSearchCount > 0, "Credential/secret hunting via search queries",
    ExportCount > 5, "Bulk content export activity",
    UniqueSpaces > 10, "Multi-space enumeration pattern",
    TotalActions > 100, "High-volume bulk access",
    "Elevated Confluence access above threshold")
| project
    Timestamp = FirstActivity,
    AccountDisplayName,
    AccountObjectId,
    IPAddress,
    UserAgent,
    TotalActions,
    UniquePages,
    UniqueSpaces,
    SensitiveSearchCount,
    SensitiveTermsFound,
    ExportCount,
    DownloadCount,
    AccessRatePerMinute,
    ThreatIndicator,
    ActionTypes,
    SampleTitles,
    LastActivity
| sort by TotalActions desc
medium severity medium confidence

Data Sources

Application Log: Application Log Content Microsoft Defender for Cloud Apps Atlassian Confluence Audit Log

Required Tables

CloudAppEvents

False Positives

  • Content migration projects or Confluence-to-Confluence migrations where automation accesses all pages systematically with high volume and speed
  • Documentation teams or technical writers conducting content audits, broken link validation, or space-wide inventories across multiple spaces
  • Enterprise search indexing crawlers (Elasticsearch, Algolia connectors) that periodically ingest Confluence content for full-text search
  • New employees or contractors onboarding who rapidly read many documentation pages in their first week
  • Automated backup and archival tools performing scheduled full-space exports on a recurring basis
  • Developer tooling integrations (IDE plugins, CI/CD pipeline documentation steps) that programmatically read Confluence pages

Unlock Pro Content

Get the full detection package for T1213.001 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections