AWS RDS DB Instance Made Public
Identifies the creation or modification of an AWS RDS DB instance to enable public access. DB instances may contain sensitive data that can be abused if shared with unauthorized accounts or made public. Adversaries may enable public access on a DB instance to maintain persistence or evade defenses by bypassing access controls.
Elastic rule (View on GitHub)
1[metadata]
2creation_date = "2024/06/29"
3integration = ["aws"]
4maturity = "production"
5updated_date = "2024/07/06"
6
7[rule]
8author = ["Elastic"]
9description = """
10Identifies the creation or modification of an AWS RDS DB instance to enable public access. DB instances may contain sensitive data that can be abused if shared with unauthorized accounts or made public. Adversaries may enable public access on a DB instance to maintain persistence or evade defenses by bypassing access controls.
11"""
12false_positives = [
13 """
14 Public access is a common configuration used to enable access from outside a private VPC. Ensure that the instance should not be modified in this way before taking action.
15 """,
16]
17from = "now-6m"
18index = ["filebeat-*", "logs-aws.cloudtrail-*"]
19language = "eql"
20license = "Elastic License v2"
21name = "AWS RDS DB Instance Made Public"
22note = """
23## Triage and Analysis
24
25### Investigating AWS RDS DB Instance Made Public
26
27This rule identifies when an RDS DB instance is created or modified to enable public access. While publicly accessible DB instances are a common practice, adversaries may exploit this feature to maintain persistence or evade defenses in a compromised environment.
28
29#### Possible Investigation Steps
30
31- **Identify the Actor**: Review the `aws.cloudtrail.user_identity.arn` and `aws.cloudtrail.user_identity.access_key_id` fields to identify who made the change. Verify if this actor typically performs such actions and if they have the necessary permissions.
32- **Review the Creation/Modification Event**: Identify the DB instance involved and review the event details. Look for `ModifyDBInstance`, `CreateDBInstance` or `CreateDBCluster` actions where the publiclyAccessible parameter was set to true.
33 - **Request and Response Parameters**: Check the `aws.cloudtrail.request_parameters` field in the CloudTrail event to identify the DB Instance Identifier and any other modifications made to the instance.
34- **Verify the Created/Modified Instance**: Check the DB instance that was created or modified and its contents to determine the sensitivity of the data stored within it.
35- **Contextualize with Recent Changes**: Compare this event against recent changes in RDS DB or Cluster configurations and deployments. Look for any other recent permissions changes or unusual administrative actions.
36- **Correlate with Other Activities**: Search for related CloudTrail events before and after this event to see if the same actor or IP address engaged in other potentially suspicious activities.
37- **Interview Relevant Personnel**: If the modification was initiated by a user, verify the intent and authorization for this action with the person or team responsible for managing DB instances.
38### False Positive Analysis
39
40- **Legitimate Instance Configuration**: Confirm if the DB instance creation or modification aligns with legitimate tasks.
41- **Consistency Check**: Compare the action against historical data of similar actions performed by the user or within the organization. If the action is consistent with past legitimate activities, it might indicate a false alarm.
42
43### Response and Remediation
44
45- **Immediate Review and Reversal**: If the change was unauthorized, update the instance attributes to remove public access and restore it to its previous state. Determine whether attached security groups have been modified to allow additional access and revert any unauthorized changes.
46- **Enhance Monitoring and Alerts**: Adjust monitoring systems to alert on similar actions, especially those involving sensitive data or permissions.
47- **Audit Instances and Policies**: Conduct a comprehensive audit of all instances and associated policies to ensure they adhere to the principle of least privilege.
48- **Policy Update**: Review and possibly update your organization’s policies on DB instance access to tighten control and prevent unauthorized access.
49- **Incident Response**: If malicious intent is confirmed, consider it a data breach incident and initiate the incident response protocol. This includes further investigation, containment, and recovery.
50
51### Additional Information:
52
53For further guidance on managing DB instances and securing AWS environments, refer to the [AWS RDS documentation](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_RDS_Managing.html) and AWS best practices for security. Additionally, consult the following resources for specific details on DB instance security:
54- [AWS RDS ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html)
55"""
56references = [
57 "https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html",
58 "https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html",
59 "https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-persistence/aws-rds-persistence#make-instance-publicly-accessible-rds-modifydbinstance",
60 "https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc#rds-createdbinstance",
61]
62risk_score = 47
63rule_id = "9efb3f79-b77b-466a-9fa0-3645d22d1e7f"
64severity = "medium"
65tags = [
66 "Domain: Cloud",
67 "Data Source: AWS",
68 "Data Source: Amazon Web Services",
69 "Data Source: AWS RDS",
70 "Resources: Investigation Guide",
71 "Use Case: Threat Detection",
72 "Tactic: Persistence",
73 "Tactic: Defense Evasion",
74]
75timestamp_override = "event.ingested"
76type = "eql"
77
78query = '''
79any where event.dataset == "aws.cloudtrail"
80 and event.provider == "rds.amazonaws.com"
81 and event.outcome == "success"
82 and (
83 (event.action == "ModifyDBInstance" and stringContains(aws.cloudtrail.request_parameters, "publiclyAccessible=true"))
84 or
85 (event.action in ("CreateDBInstance", "CreateDBCluster") and stringContains(aws.cloudtrail.request_parameters, "publiclyAccessible=true"))
86 )
87'''
88
89[[rule.threat]]
90framework = "MITRE ATT&CK"
91[[rule.threat.technique]]
92id = "T1556"
93name = "Modify Authentication Process"
94reference = "https://attack.mitre.org/techniques/T1556/"
95[[rule.threat.technique.subtechnique]]
96id = "T1556.009"
97name = "Conditional Access Policies"
98reference = "https://attack.mitre.org/techniques/T1556/009/"
99
100[rule.threat.tactic]
101id = "TA0003"
102name = "Persistence"
103reference = "https://attack.mitre.org/tactics/TA0003/"
104[[rule.threat]]
105framework = "MITRE ATT&CK"
106
107[rule.threat.tactic]
108id = "TA0005"
109name = "Defense Evasion"
110reference = "https://attack.mitre.org/tactics/TA0005/"
Triage and Analysis
Investigating AWS RDS DB Instance Made Public
This rule identifies when an RDS DB instance is created or modified to enable public access. While publicly accessible DB instances are a common practice, adversaries may exploit this feature to maintain persistence or evade defenses in a compromised environment.
Possible Investigation Steps
- Identify the Actor: Review the
aws.cloudtrail.user_identity.arn
andaws.cloudtrail.user_identity.access_key_id
fields to identify who made the change. Verify if this actor typically performs such actions and if they have the necessary permissions. - Review the Creation/Modification Event: Identify the DB instance involved and review the event details. Look for
ModifyDBInstance
,CreateDBInstance
orCreateDBCluster
actions where the publiclyAccessible parameter was set to true.- Request and Response Parameters: Check the
aws.cloudtrail.request_parameters
field in the CloudTrail event to identify the DB Instance Identifier and any other modifications made to the instance.
- Request and Response Parameters: Check the
- Verify the Created/Modified Instance: Check the DB instance that was created or modified and its contents to determine the sensitivity of the data stored within it.
- Contextualize with Recent Changes: Compare this event against recent changes in RDS DB or Cluster configurations and deployments. Look for any other recent permissions changes or unusual administrative actions.
- Correlate with Other Activities: Search for related CloudTrail events before and after this event to see if the same actor or IP address engaged in other potentially suspicious activities.
- Interview Relevant Personnel: If the modification was initiated by a user, verify the intent and authorization for this action with the person or team responsible for managing DB instances.
False Positive Analysis
- Legitimate Instance Configuration: Confirm if the DB instance creation or modification aligns with legitimate tasks.
- Consistency Check: Compare the action against historical data of similar actions performed by the user or within the organization. If the action is consistent with past legitimate activities, it might indicate a false alarm.
Response and Remediation
- Immediate Review and Reversal: If the change was unauthorized, update the instance attributes to remove public access and restore it to its previous state. Determine whether attached security groups have been modified to allow additional access and revert any unauthorized changes.
- Enhance Monitoring and Alerts: Adjust monitoring systems to alert on similar actions, especially those involving sensitive data or permissions.
- Audit Instances and Policies: Conduct a comprehensive audit of all instances and associated policies to ensure they adhere to the principle of least privilege.
- Policy Update: Review and possibly update your organization’s policies on DB instance access to tighten control and prevent unauthorized access.
- Incident Response: If malicious intent is confirmed, consider it a data breach incident and initiate the incident response protocol. This includes further investigation, containment, and recovery.
Additional Information:
For further guidance on managing DB instances and securing AWS environments, refer to the AWS RDS documentation and AWS best practices for security. Additionally, consult the following resources for specific details on DB instance security:
References
Related rules
- AWS RDS DB Instance or Cluster Password Modified
- AWS RDS DB Instance or Cluster Deletion Protection Disabled
- AWS RDS DB Snapshot Shared with Another Account
- AWS IAM User Created Access Keys For Another User
- AWS IAM AdministratorAccess Policy Attached to Group