Detection rules › Panther
Azure Storage File Share Created or Modified
Detects when an Azure Storage file share is created or modified. File shares can be mounted as network drives using SMB or NFS protocols, providing persistent access to storage. Adversaries may create or modify file shares to establish data exfiltration channels or mount shares to local systems for easier data transfer. While file share operations are common in legitimate scenarios, monitoring these activities helps establish baselines and identify unusual patterns that may indicate data exfiltration.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Collection | T1530 Data from Cloud Storage |
| Exfiltration | T1048 Exfiltration Over Alternative Protocol |
Rule body yaml
AnalysisType: rule
Filename: azure_storage_fileshare_modified.py
RuleID: "Azure.MonitorActivity.Storage.FileShareModified"
DisplayName: "Azure Storage File Share Created or Modified"
Enabled: true
LogTypes:
- Azure.MonitorActivity
Severity: Info
Description: >
Detects when an Azure Storage file share is created or modified. File shares can be mounted as
network drives using SMB or NFS protocols, providing persistent access to storage. Adversaries may
create or modify file shares to establish data exfiltration channels or mount shares to local systems
for easier data transfer. While file share operations are common in legitimate scenarios, monitoring
these activities helps establish baselines and identify unusual patterns that may indicate data exfiltration.
Reports:
MITRE ATT&CK:
- TA0010:T1048 # Exfiltration: Exfiltration Over Alternative Protocol
- TA0009:T1530 # Collection: Data from Cloud Storage
Tags:
- Exfiltration
- Exfiltration Over Alternative Protocol
- Collection
- Data from Cloud Storage
- AZT702
- AZT702.1
- File Share Mounting
- Storage Account File Share NFS/SMB Mount
Runbook: |
1. Find all storage account operations by the callerIpAddress in the 6 hours before and after this alert to identify if this is part of a data staging or exfiltration pattern
2. Query for the storage account configuration to determine if the file share has public access or is restricted to specific networks
3. Check if the callerIpAddress has created or modified file shares in the past 30 days to determine if this is normal administrative behavior
Reference: https://microsoft.github.io/Azure-Threat-Research-Matrix/Impact/AZT702/AZT702-1
SummaryAttributes:
- resourceId
- callerIpAddress
- correlationId
Tests:
- Name: File Share Created
ExpectedResult: true
Log:
{
"time": "2025-12-23T10:30:00.0000000Z",
"resourceId": "/subscriptions/12345678-1234-1234-1234-123456789abc/resourceGroups/storage-rg/providers/Microsoft.Storage/storageAccounts/mystorageaccount/fileServices/default/shares/data-share",
"operationName": "Microsoft.Storage/storageAccounts/fileServices/shares/write",
"operationVersion": "2021-09-01",
"category": "Administrative",
"resultType": "Success",
"resultSignature": "201",
"callerIpAddress": "1.1.1.1",
"correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"level": "Informational",
"location": "eastus",
"tenantId": "87654321-4321-4321-4321-111111111111"
}
- Name: File Share Modified
ExpectedResult: true
Log:
{
"time": "2025-12-23T11:00:00.0000000Z",
"resourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/prod-rg/providers/Microsoft.Storage/storageAccounts/prodstorage/fileServices/default/shares/backup-share",
"operationName": "Microsoft.Storage/storageAccounts/fileServices/shares/write",
"category": "Administrative",
"resultType": "Succeeded",
"callerIpAddress": "2.2.2.2",
"correlationId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"level": "Information",
"location": "westeurope",
"tenantId": "22222222-2222-2222-2222-222222222222"
}
- Name: Case Insensitive Match
ExpectedResult: true
Log:
{
"time": "2025-12-23T12:00:00.0000000Z",
"resourceId": "/subscriptions/33333333-3333-3333-3333-333333333333/resourceGroups/app-rg/providers/Microsoft.Storage/storageAccounts/appstorage/fileServices/default/shares/app-data",
"operationName": "microsoft.storage/storageaccounts/fileservices/shares/write",
"category": "Administrative",
"resultType": "Success",
"callerIpAddress": "3.3.3.3",
"correlationId": "c3d4e5f6-a7b8-9012-cdef-333333333333",
"level": "Informational",
"location": "centralus",
"tenantId": "33333333-3333-3333-3333-333333333333"
}
- Name: Different Operation
ExpectedResult: false
Log:
{
"time": "2025-12-23T16:00:00.0000000Z",
"resourceId": "/subscriptions/77777777-7777-7777-7777-777777777777/resourceGroups/storage-rg/providers/Microsoft.Storage/storageAccounts/storage/fileServices/default/shares/share",
"operationName": "Microsoft.Storage/storageAccounts/fileServices/shares/read",
"category": "Administrative",
"resultType": "Success",
"callerIpAddress": "7.7.7.7",
"correlationId": "a7b8c9d0-e1f2-3456-0123-777777777777",
"tenantId": "77777777-7777-7777-7777-777777777777"
}
Detection logic
Condition
operationName in "MICROSOFT.STORAGE/STORAGEACCOUNTS/FILESERVICES/SHARES/WRITE"
resultType in ["Success", "Succeeded"]
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.
| Field | Kind | Values |
|---|---|---|
operationName | in |
|
resultType | in |
|