Detection rules › Panther
GCP K8s IOCActivity
This detection monitors for any kubernetes API Request originating from an Indicator of Compromise.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Command & Control | T1573.002 Encrypted Channel: Asymmetric Cryptography |
Rule body yaml
AnalysisType: rule
RuleID: "GCP.K8s.IOC.Activity"
DisplayName: "GCP K8s IOCActivity"
Enabled: false
Status: Deprecated
Filename: gcp_k8s_ioc_activity.py
LogTypes:
- GCP.AuditLog
Tags:
- Deprecated
- GCP
- Optional
- Encrypted Channel - Asymmetric Cryptography
- Command and Control
Severity: Medium
Description: This detection monitors for any kubernetes API Request originating from an Indicator of Compromise.
Reports:
MITRE ATT&CK:
- TA0011:T1573.002 # Encrypted Channel: Asymmetric Cryptography
Runbook: Add IP address the request is originated from to banned addresses.
Reference: https://medium.com/snowflake/from-logs-to-detection-using-snowflake-and-panther-to-detect-k8s-threats-d72f70a504d7
Tests:
- Name: triggers
ExpectedResult: true
Log:
{
"operation": { "producer": "k8s.io" },
"p_enrichment": { "tor_exit_nodes": ["1.1.1.1"] },
}
- Name: ignore
ExpectedResult: false
Log:
{
"operation": { "producer": "chrome" },
"p_enrichment": { "tor_exit_nodes": ["1.1.1.1"] },
}
Detection logic
Condition
operation.producer eq "k8s.io"
p_enrichment.tor_exit_nodes is_not_null
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 |
|---|---|---|
operation.producer | eq |
|
p_enrichment.tor_exit_nodes | is_not_null |
Output fields
Fields the rule emits when it matches. Chronicle authors list these in the outcome block; they appear on the detection and $risk_score drives alerting. Sentinel / Defender XDR rules build them up through project / summarize / extend stages. Sentinel maps these into alert fields via entityMappings and customDetails; Defender XDR custom detections surface them as alert fields directly.
| Field | Source |
|---|---|
project | resource.labels.project_id |
principal | protoPayload.authenticationInfo.principalEmail |
caller_ip | protoPayload.requestMetadata.callerIP |
methodName | protoPayload.methodName |
resourceName | protoPayload.resourceName |
serviceName | protoPayload.serviceName |