Detection rules › Sigma

Exchange ProxyShell Pattern

Status
test
Severity
high
Log source
category webserver
Author
Florian Roth (Nextron Systems), Rich Warren
Source
github.com/SigmaHQ/sigma

Detects URL patterns that could be found in ProxyShell exploitation attempts against Exchange servers (failed and successful)

MITRE ATT&CK coverage

TacticTechniques
Initial AccessT1190 Exploit Public-Facing Application

Rule body yaml

title: Exchange ProxyShell Pattern
id: 23eee45e-933b-49f9-ae1b-df706d2d52ef
status: test
description: Detects URL patterns that could be found in ProxyShell exploitation attempts against Exchange servers (failed and successful)
references:
    - https://youtu.be/5mqid-7zp8k?t=2231
    - https://blog.orange.tw/2021/08/proxylogon-a-new-attack-surface-on-ms-exchange-part-1.html
    - https://peterjson.medium.com/reproducing-the-proxyshell-pwn2own-exploit-49743a4ea9a1
author: Florian Roth (Nextron Systems), Rich Warren
date: 2021-08-07
modified: 2023-01-02
tags:
    - attack.initial-access
    - attack.t1190
    - detection.emerging-threats
logsource:
    category: webserver
detection:
    selection_1:
        sc-status: 401
    selection_1_auto:
        cs-uri-query|contains: '/autodiscover.json'
    selection_1_uri:
        cs-uri-query|contains:
            - '/powershell'
            - '/mapi/nspi'
            - '/EWS'
            - 'X-Rps-CAT'
    selection_poc:
        sc-status: 401
        cs-uri-query|contains:
            # since we don't know how it will appear in the log files, we'll just use all versions
            - 'autodiscover.json?@'
            - 'autodiscover.json%3f@'
            - '%3f@foo.com'
            - 'Email=autodiscover/autodiscover.json'
            - 'json?@foo.com'
    condition: all of selection_1* or selection_poc
falsepositives:
    - Unknown
level: high

Stages and Predicates

Stage 0: condition

all of selection_1* or selection_poc

Stage 1: selection_1

selection_1:
    sc-status: 401

Stage 2: selection_1_auto

selection_1_auto:
    cs-uri-query|contains: '/autodiscover.json'

Stage 3: selection_1_uri

selection_1_uri:
    cs-uri-query|contains:
        - '/powershell'
        - '/mapi/nspi'
        - '/EWS'
        - 'X-Rps-CAT'

Stage 4: selection_poc

selection_poc:
    sc-status: 401
    cs-uri-query|contains:
        - 'autodiscover.json?@'
        - 'autodiscover.json%3f@'
        - '%3f@foo.com'
        - 'Email=autodiscover/autodiscover.json'
        - 'json?@foo.com'

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
cs-uri-querymatch
  • %3f@foo.com
  • /EWS
  • /autodiscover.json
  • /mapi/nspi
  • /powershell
  • Email=autodiscover/autodiscover.json
  • X-Rps-CAT
  • autodiscover.json%3f@
  • autodiscover.json?@
  • json?@foo.com
sc-statuseq
  • 401