Skip to content

Commit a62ddcc

Browse files
committed
add drilldowns to production analytics
1 parent a91c2aa commit a62ddcc

20 files changed

+280
-0
lines changed

detections/cloud/abnormally_high_number_of_cloud_infrastructure_api_calls.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,20 @@ how_to_implement: You must be ingesting your cloud infrastructure logs. You also
3131
create the probability density function.
3232
known_false_positives: None.
3333
references: []
34+
drilldown_searches:
35+
- name: View the detection results for - "$dest$"
36+
search: '%original_detection_search% | search dest = "$dest$"'
37+
earliest_offset: $info_min_time$
38+
latest_offset: $info_max_time$
39+
- name: View risk events for the last 7 days for - "$dest$"
40+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
41+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
42+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
43+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
44+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
45+
| `security_content_ctime(lastTime)`'
46+
earliest_offset: $info_min_time$
47+
latest_offset: $info_max_time$
3448
rba:
3549
message: user $user$ has made $api_calls$ api calls, violating the dynamic threshold
3650
of $expected_upper_threshold$ with the following command $command$.

detections/cloud/abnormally_high_number_of_cloud_security_group_api_calls.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,20 @@ how_to_implement: You must be ingesting your cloud infrastructure logs. You also
3131
create the probability density function model.
3232
known_false_positives: None.
3333
references: []
34+
drilldown_searches:
35+
- name: View the detection results for - "$dest$"
36+
search: '%original_detection_search% | search dest = "$dest$"'
37+
earliest_offset: $info_min_time$
38+
latest_offset: $info_max_time$
39+
- name: View risk events for the last 7 days for - "$dest$"
40+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
41+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
42+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
43+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
44+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
45+
| `security_content_ctime(lastTime)`'
46+
earliest_offset: $info_min_time$
47+
latest_offset: $info_max_time$
3448
rba:
3549
message: user $user$ has made $api_calls$ api calls related to security groups,
3650
violating the dynamic threshold of $expected_upper_threshold$ with the following

detections/cloud/asl_aws_new_mfa_method_registered_for_user.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,20 @@ references:
2828
- https://attack.mitre.org/techniques/T1556/
2929
- https://attack.mitre.org/techniques/T1556/006/
3030
- https://twitter.com/jhencinski/status/1618660062352007174
31+
drilldown_searches:
32+
- name: View the detection results for - "$dest$"
33+
search: '%original_detection_search% | search dest = "$dest$"'
34+
earliest_offset: $info_min_time$
35+
latest_offset: $info_max_time$
36+
- name: View risk events for the last 7 days for - "$dest$"
37+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
38+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
39+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
40+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
41+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
42+
| `security_content_ctime(lastTime)`'
43+
earliest_offset: $info_min_time$
44+
latest_offset: $info_max_time$
3145
rba:
3246
message: A new virtual device is added to user $user$
3347
risk_objects:

detections/cloud/circle_ci_disable_security_step.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,20 @@ search: '`circleci` | rename workflows.job_id AS job_id | join job_id [ | search
2626
how_to_implement: You must index CircleCI logs.
2727
known_false_positives: unknown
2828
references: []
29+
drilldown_searches:
30+
- name: View the detection results for - "$dest$"
31+
search: '%original_detection_search% | search dest = "$dest$"'
32+
earliest_offset: $info_min_time$
33+
latest_offset: $info_max_time$
34+
- name: View risk events for the last 7 days for - "$dest$"
35+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
36+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
37+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
38+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
39+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
40+
| `security_content_ctime(lastTime)`'
41+
earliest_offset: $info_min_time$
42+
latest_offset: $info_max_time$
2943
rba:
3044
message: Disable security step $mandatory_step$ in job $job_name$ from user $user$
3145
risk_objects:

detections/cloud/cloud_api_calls_from_previously_unseen_user_roles.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,20 @@ how_to_implement: You must be ingesting your cloud infrastructure logs from your
3434
the `cloud_api_calls_from_previously_unseen_user_roles_filter`
3535
known_false_positives: None.
3636
references: []
37+
drilldown_searches:
38+
- name: View the detection results for - "$dest$"
39+
search: '%original_detection_search% | search dest = "$dest$"'
40+
earliest_offset: $info_min_time$
41+
latest_offset: $info_max_time$
42+
- name: View risk events for the last 7 days for - "$dest$"
43+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
44+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
45+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
46+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
47+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
48+
| `security_content_ctime(lastTime)`'
49+
earliest_offset: $info_min_time$
50+
latest_offset: $info_max_time$
3751
rba:
3852
message: User $user$ of type AssumedRole attempting to execute new API calls $command$
3953
that have not been seen before

detections/cloud/cloud_compute_instance_created_by_previously_unseen_user.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,20 @@ known_false_positives: It's possible that a user will start to create compute in
3030
for the first time, for any number of reasons. Verify with the user launching instances
3131
that this is the intended behavior.
3232
references: []
33+
drilldown_searches:
34+
- name: View the detection results for - "$dest$"
35+
search: '%original_detection_search% | search dest = "$dest$"'
36+
earliest_offset: $info_min_time$
37+
latest_offset: $info_max_time$
38+
- name: View risk events for the last 7 days for - "$dest$"
39+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
40+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
41+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
42+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
43+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
44+
| `security_content_ctime(lastTime)`'
45+
earliest_offset: $info_min_time$
46+
latest_offset: $info_max_time$
3347
rba:
3448
message: User $user$ is creating a new instance $dest$ for the first time
3549
risk_objects:

detections/cloud/cloud_compute_instance_created_in_previously_unused_region.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,20 @@ how_to_implement: You must be ingesting your cloud infrastructure logs from your
3333
known_false_positives: It's possible that a user has unknowingly started an instance
3434
in a new region. Please verify that this activity is legitimate.
3535
references: []
36+
drilldown_searches:
37+
- name: View the detection results for - "$dest$"
38+
search: '%original_detection_search% | search dest = "$dest$"'
39+
earliest_offset: $info_min_time$
40+
latest_offset: $info_max_time$
41+
- name: View risk events for the last 7 days for - "$dest$"
42+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
43+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
44+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
45+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
46+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
47+
| `security_content_ctime(lastTime)`'
48+
earliest_offset: $info_min_time$
49+
latest_offset: $info_max_time$
3650
rba:
3751
message: User $user$ is creating an instance $dest$ in a new region for the first
3852
time

detections/cloud/cloud_compute_instance_created_with_previously_unseen_image.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,20 @@ known_false_positives: After a new image is created, the first systems created w
3434
that image will cause this alert to fire. Verify that the image being used was
3535
created by a legitimate user.
3636
references: []
37+
drilldown_searches:
38+
- name: View the detection results for - "$dest$"
39+
search: '%original_detection_search% | search dest = "$dest$"'
40+
earliest_offset: $info_min_time$
41+
latest_offset: $info_max_time$
42+
- name: View risk events for the last 7 days for - "$dest$"
43+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
44+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
45+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
46+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
47+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
48+
| `security_content_ctime(lastTime)`'
49+
earliest_offset: $info_min_time$
50+
latest_offset: $info_max_time$
3751
rba:
3852
message: User $user$ is creating an instance $dest$ with an image that has not been
3953
previously seen.

detections/cloud/cloud_compute_instance_created_with_previously_unseen_instance_type.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@ known_false_positives: It is possible that an admin will create a new system usi
3535
a new instance type that has never been used before. Verify with the creator that
3636
they intended to create the system with the new instance type.
3737
references: []
38+
drilldown_searches:
39+
- name: View the detection results for - "$dest$"
40+
search: '%original_detection_search% | search dest = "$dest$"'
41+
earliest_offset: $info_min_time$
42+
latest_offset: $info_max_time$
43+
- name: View risk events for the last 7 days for - "$dest$"
44+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
45+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
46+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
47+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
48+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
49+
| `security_content_ctime(lastTime)`'
50+
earliest_offset: $info_min_time$
51+
latest_offset: $info_max_time$
3852
rba:
3953
message: User $user$ is creating an instance $dest$ with an instance type $instance_type$
4054
that has not been previously seen.

detections/cloud/cloud_instance_modified_by_previously_unseen_user.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,20 @@ known_false_positives: It's possible that a new user will start to modify EC2 in
3131
when they haven't before for any number of reasons. Verify with the user that is
3232
modifying instances that this is the intended behavior.
3333
references: []
34+
drilldown_searches:
35+
- name: View the detection results for - "$dest$"
36+
search: '%original_detection_search% | search dest = "$dest$"'
37+
earliest_offset: $info_min_time$
38+
latest_offset: $info_max_time$
39+
- name: View risk events for the last 7 days for - "$dest$"
40+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$")
41+
starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime
42+
values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories)
43+
as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic)
44+
as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)`
45+
| `security_content_ctime(lastTime)`'
46+
earliest_offset: $info_min_time$
47+
latest_offset: $info_max_time$
3448
rba:
3549
message: User $user$ is modifying an instance $object_id$ for the first time.
3650
risk_objects:

0 commit comments

Comments
 (0)