Skip to content

[New Rule] Azure WireServer Abuse Related Detections - #6668

Open
terrancedejesus wants to merge 9 commits into
mainfrom
azure-wireserver-detections
Open

[New Rule] Azure WireServer Abuse Related Detections#6668
terrancedejesus wants to merge 9 commits into
mainfrom
azure-wireserver-detections

Conversation

@terrancedejesus

@terrancedejesus terrancedejesus commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Summary - What I changed

Azure VMs expose WireServer at 168.63.129.16:80 and HostGAPlugin at :32526. Those endpoints return GoalState, transport certificates, and vmSettings / protectedSettings that embed SAS URLs for Microsoft fabric blobs. CyberCX and NetSPI documented decrypting the LinuxTransport / CRP cert and reading those settings without the IMDS metadata header. From a compromised guest or via SSRF, an attacker scrapes WireServer, decrypts the transport cert, and can walk anonymously accessible blobs.

  • Azure WireServer Unusual Process Connection - unusual guest processes reaching WireServer (:80) or HostGAPlugin (:32526)
  • Azure WireServer HTTP Request from Unexpected User Agent - GoalState / certificates / vmSettings requests whose user agent is not the Azure guest agent
  • Azure WireServer OpenSSL Certificate Decrypt or LinuxTransport Generation - openssl cms/smime -decrypt or LinuxTransport cert generation outside waagent paths
  • Azure Storage Anonymous Blob Access to Unusual Resource - first-seen anonymous data-plane reads of a storage resource

How To Test

Validated against TRADE emulation telemetry (wslin5b7592 / wswin5b7592): StorageRead platform logs, Elastic Defend network, and NPC HTTP on ports 80 and 32526.

Screenshot 2026-08-27 at 10 57 24 AM Screenshot 2026-08-27 at 10 55 48 AM Screenshot 2026-08-27 at 10 59 31 AM Screenshot 2026-08-27 at 11 01 12 AM

Checklist

  • Added a label for the type of pr: Rule: New
  • Secret and sensitive material has been managed correctly
  • Documentation and comments were added for features that require explanation

Detects the documented WireServer/HostGAPlugin scrape chain used to decrypt transport certs and replay guest-agent SAS against Azure Storage.

Co-authored-by: Cursor <cursoragent@cursor.com>
@elastic-vault-github-plugin-prod

elastic-vault-github-plugin-prod Bot commented Aug 18, 2026

Copy link
Copy Markdown

⛔️ Test failed

Results
  • ❌ Azure Storage SAS Retrieval of Guest Agent Blobs (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer Unusual Process Connection (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer HTTP Request from Unexpected User Agent (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer OpenSSL Certificate Decrypt or LinuxTransport Generation (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure Storage Anonymous Blob Access to Unusual Resource (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@terrancedejesus terrancedejesus changed the title [New Rule] Azure WireServer Credential Scraping Detections [New Rule] Azure WireServer Abuse Related Detections Aug 18, 2026
@terrancedejesus terrancedejesus self-assigned this Aug 18, 2026
Clarified the context of Azure Storage SAS retrieval detection and false positives.
@elastic-vault-github-plugin-prod

elastic-vault-github-plugin-prod Bot commented Aug 27, 2026

Copy link
Copy Markdown

⛔️ Test failed

Results
  • ❌ Azure Storage SAS Retrieval of Guest Agent Blobs (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer Unusual Process Connection (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer HTTP Request from Unexpected User Agent (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer OpenSSL Certificate Decrypt or LinuxTransport Generation (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure Storage Anonymous Blob Access to Unusual Resource (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

terrancedejesus and others added 3 commits August 27, 2026 10:51
Customer StorageRead cannot see Microsoft fabric $system blobs, so that rule is removed. OpenSSL now matches cms and smime decrypt and excludes waagent LinuxTransport generation.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@elastic-vault-github-plugin-prod

elastic-vault-github-plugin-prod Bot commented Aug 27, 2026

Copy link
Copy Markdown

⛔️ Test failed

Results
  • ❌ Azure WireServer Unusual Process Connection (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer HTTP Request from Unexpected User Agent (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer OpenSSL Certificate Decrypt or LinuxTransport Generation (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure Storage Anonymous Blob Access to Unusual Resource (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@terrancedejesus
terrancedejesus marked this pull request as ready for review August 27, 2026 15:02
Copilot AI lite review requested due to automatic review settings August 27, 2026 15:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a set of new detection rules aimed at identifying Azure WireServer/HostGAPlugin abuse (GoalState/certificate/vmSettings scraping and follow-on anonymous blob access) and adds schema support for a new Azure field used by the rules.

Changes:

  • Add a Network Packet Capture rule to detect WireServer/HostGAPlugin HTTP requests with unexpected user agents.
  • Add Elastic Defend rules to detect unusual guest process connections to WireServer/HostGAPlugin and suspicious OpenSSL CMS decrypt / LinuxTransport certificate generation on Linux.
  • Add an Azure Platform Logs new-terms rule for first-seen anonymous Azure Storage blob read activity, plus schema support for azure.resource.id.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
rules/network/credential_access_azure_wireserver_http_request_unexpected_user_agent.toml New EQL rule for detecting WireServer/HostGAPlugin HTTP requests with non-guest-agent user agents.
rules/linux/credential_access_azure_wireserver_openssl_cms_decrypt.toml New Linux EQL rule for OpenSSL decrypt / LinuxTransport cert generation behaviors associated with WireServer abuse.
rules/integrations/azure/discovery_azure_storage_anonymous_blob_access_unusual_resource.toml New Azure Platform Logs new-terms rule for first-seen anonymous blob read activity on a resource.
rules/cross-platform/credential_access_azure_wireserver_unusual_process_connection.toml New cross-platform new-terms rule for unusual process-to-WireServer/HostGAPlugin connections in endpoint network telemetry.
detection_rules/etc/non-ecs-schema.json Adds azure.resource.id mapping needed by the new Azure new-terms rule.
Suppressed comments (1)

rules/cross-platform/credential_access_azure_wireserver_unusual_process_connection.toml:15

  • The rule description says “system python used by waagent” is excluded, but the query actually excludes /usr/bin/python3* broadly (and doesn’t otherwise match Linux python/python3 by name). Consider rewording the description so it reflects the actual exclusion behavior.
bun, or similar tools to enumerate versions, pull transport certificates, and read HostGAPlugin /vmSettings. Azure
guest-agent binaries and system python used by waagent are excluded. Descendants of the guest agent are not excluded:
Run Command payloads execute in that tree.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread rules/linux/credential_access_azure_wireserver_openssl_cms_decrypt.toml Outdated
@botelastic botelastic Bot added the OS: Linux label Aug 27, 2026
terrancedejesus and others added 3 commits August 27, 2026 14:34
Updated the 'updated_date' field to match the creation date.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@elastic-vault-github-plugin-prod

elastic-vault-github-plugin-prod Bot commented Aug 27, 2026

Copy link
Copy Markdown

⛔️ Test failed

Results
  • ❌ Azure WireServer Unusual Process Connection (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer HTTP Request from Unexpected User Agent (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer OpenSSL Certificate Decrypt or LinuxTransport Generation (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure Storage Anonymous Blob Access to Unusual Resource (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@elastic-vault-github-plugin-prod

elastic-vault-github-plugin-prod Bot commented Aug 27, 2026

Copy link
Copy Markdown

⛔️ Test failed

Results
  • ❌ Azure WireServer Unusual Process Connection (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer HTTP Request from Unexpected User Agent (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer OpenSSL Certificate Decrypt or LinuxTransport Generation (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure Storage Anonymous Blob Access to Unusual Resource (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@elastic-vault-github-plugin-prod

elastic-vault-github-plugin-prod Bot commented Aug 27, 2026

Copy link
Copy Markdown

⛔️ Test failed

Results
  • ❌ Azure WireServer Unusual Process Connection (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer HTTP Request from Unexpected User Agent (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer OpenSSL Certificate Decrypt or LinuxTransport Generation (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure Storage Anonymous Blob Access to Unusual Resource (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

@elastic-vault-github-plugin-prod

elastic-vault-github-plugin-prod Bot commented Aug 27, 2026

Copy link
Copy Markdown

⛔️ Test failed

Results
  • ❌ Azure WireServer Unusual Process Connection (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer HTTP Request from Unexpected User Agent (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure WireServer OpenSSL Certificate Decrypt or LinuxTransport Generation (eql)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta
  • ❌ Azure Storage Anonymous Blob Access to Unusual Resource (kuery)
    • coverage_issue: no_rta
    • stack_validation_failed: no_rta

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants