Windows Exchange PowerShell Module Usage
Description
The following analytic identifies the usage of Exchange PowerShell modules that were recently used for a proof of concept related to ProxyShell. Currently, there is no active data shared or data we could re-produce relate to this part of the ProxyShell chain of exploits. Inherently, the usage of the modules is not malicious, but reviewing parallel processes, and user, of the session will assist with determining the intent. Module - New-MailboxExportRequest will begin the process of exporting contents of a primary mailbox or archive to a .pst file. Module - New-managementroleassignment can assign a management role to a management role group, management role assignment policy, user, or universal security group (USG). Module - New-MailboxSearch cmdlet to create a mailbox search and either get an estimate of search results, place search results on In-Place Hold or copy them to a Discovery mailbox. You can also place all contents in a mailbox on hold by not specifying a search query, which accomplishes similar results as Litigation Hold. \ Module - Get-Recipient cmdlet to view existing recipient objects in your organization. This cmdlet returns all mail-enabled objects (for example, mailboxes, mail users, mail contacts, and distribution groups).
- Type: TTP
-
Product: Splunk Behavioral Analytics
- Last Updated: 2022-10-12
- Author: Michael Haag, Splunk
- ID: 1118bc65-b0c7-4589-bc2f-ad6802fd0909
Annotations
ATT&CK
Kill Chain Phase
- Installation
NIST
- DE.CM
CIS20
- CIS 10
CVE
Search
1
2
3
4
5
6
7
8
9
10
11
$main = from source
| eval timestamp = time
| eval metadata_uid = metadata.uid
| eval device_hostname = device.hostname
| eval process_file = process.file
| eval process_file_path = process_file.path
| eval process_uid = process.uid
| eval process_cmd_line = process.cmd_line
| eval actor_user = actor.user
| eval actor_user_uid = actor_user.uid
| where match(process_cmd_line, /(?i)get-recipient/)=true OR match(process_cmd_line, /(?i)new-mailboxsearch/)=true OR match(process_cmd_line, /(?i)new-managementroleassignment/)=true OR match(process_cmd_line, /(?i)new-mailboxexportrequest/)=true --finding_report--
Macros
The SPL above uses the following Macros:
windows_exchange_powershell_module_usage_filter is a empty macro by default. It allows the user to filter out any results (false positives) without editing the SPL.
Required fields
List of fields required to use this analytic.
- device.hostname
- process.file.path
- process.uid
- process.cmd_line
- actor.user.uid
How To Implement
To successfully implement this analytic, you will need to enable PowerShell Script Block Logging on some or all endpoints. Additional setup here https://docs.splunk.com/Documentation/UBA/5.0.4.1/GetDataIn/AddPowerShell#Configure_module_logging_for_PowerShell. This will only work with Multiline event logs, not XML.
Known False Positives
Administrators or power users may use this PowerShell commandlet
Associated Analytic Story
RBA
Risk Score | Impact | Confidence | Message |
---|---|---|---|
32.0 | 40 | 80 | Exchange enumeration using PowerShell on $dest_device_id$. |
The Risk Score is calculated by the following formula: Risk Score = (Impact * Confidence/100). Initial Confidence and Impact is set by the analytic author.
Reference
- https://docs.microsoft.com/en-us/powershell/module/exchange/new-mailboxexportrequest?view=exchange-ps
- https://docs.microsoft.com/en-us/powershell/module/exchange/new-managementroleassignment?view=exchange-ps
- https://blog.orange.tw/2021/08/proxyshell-a-new-attack-surface-on-ms-exchange-part-3.html
- https://www.zerodayinitiative.com/blog/2021/8/17/from-pwn2own-2021-a-new-attack-surface-on-microsoft-exchange-proxyshell
- https://thedfirreport.com/2021/11/15/exchange-exploit-leads-to-domain-wide-ransomware/
- https://www.cisa.gov/uscert/ncas/alerts/aa22-264a
- https://learn.microsoft.com/en-us/powershell/module/exchange/new-mailboxsearch?view=exchange-ps
- https://learn.microsoft.com/en-us/powershell/module/exchange/get-recipient?view=exchange-ps
- https://thedfirreport.com/2022/03/21/apt35-automates-initial-access-using-proxyshell/
Test Dataset
Replay any dataset to Splunk Enterprise by using our replay.py
tool or the UI.
Alternatively you can replay a dataset into a Splunk Attack Range
source | version: 4