Detection rules › YARA-L

YARA-L rules: 2t

AWS Application Load Balancer Insecure SSL Policy

#
Severity
low
Type
Alert
Author
Google Cloud Security
Source
github.com/chronicle/detection-rules

Detects when an insecure SSL policy is configured for an AWS Application Load Balancer.

MITRE ATT&CK Coverage

TacticTechniques
Defense Impairment

Telemetry Coverage

Rule Body

// Copyright 2024 Google LLC. Licensed under Apache-2.0.

rule aws_alb_insecure_ssl_policy {

  meta:
    author = "Google Cloud Security"
    description = "Detects when an insecure SSL policy is configured for an AWS Application Load Balancer."
    rule_id = "mr_8aace83b-f9f0-45b8-95c5-a4b0bb2cbb85"
    rule_name = "AWS Application Load Balancer Insecure SSL Policy"
    mitre_attack_tactic = "Defense Evasion"
    mitre_attack_technique = "Weaken Encryption: Reduce Key Space"
    mitre_attack_url = "https://attack.mitre.org/techniques/T1600/001/"
    mitre_attack_version = "v15.1"
    type = "Alert"
    data_source = "AWS CloudTrail"
    platform = "AWS"
    severity = "Low"
    priority = "Low"

  events:
    $cloudtrail.metadata.vendor_name = "AMAZON"
    $cloudtrail.metadata.product_name = "AWS CloudTrail"
    ($cloudtrail.metadata.product_event_type = "ModifyListener" or $cloudtrail.metadata.product_event_type = "CreateListener")
    $cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"] = "ELBSecurityPolicy-2016-08" or
    $cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"] = "ELBSecurityPolicy-TLS13-1-1-2021-06" or
    $cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"] = "ELBSecurityPolicy-TLS13-1-0-2021-06" or
    $cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"] = "ELBSecurityPolicy-TLS13-1-1-FIPS-2023-04" or
    $cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"] = "ELBSecurityPolicy-TLS13-1-0-FIPS-2023-04" or
    $cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"] = "ELBSecurityPolicy-TLS-1-1-2017-01" or
    $cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"] = "ELBSecurityPolicy-FS-2018-06" or
    $cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"] = "ELBSecurityPolicy-2015-05" or
    $cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"] = "ELBSecurityPolicy-TLS-1-0-2015-04" or
    $cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"] = "ELBSecurityPolicy-FS-1-1-2019-08"

  outcome:
    $risk_score = max(35)
    $mitre_attack_tactic = "Defense Evasion"
    $mitre_attack_technique = "Weaken Encryption: Reduce Key Space"
    $mitre_attack_technique_id = "T1600.001"
    $event_count = count_distinct($cloudtrail.metadata.id)
    $network_http_user_agent = array_distinct($cloudtrail.network.http.user_agent)
    $principal_ip = array_distinct($cloudtrail.principal.ip)
    $principal_ip_country = array_distinct($cloudtrail.principal.ip_geo_artifact.location.country_or_region)
    $principal_ip_state = array_distinct($cloudtrail.principal.ip_geo_artifact.location.state)
    $principal_user_display_name = array_distinct($cloudtrail.principal.user.user_display_name)
    $recipient_aws_account_id = array_distinct($cloudtrail.additional.fields["recipientAccountId"])
    $aws_region = array_distinct($cloudtrail.principal.location.name)
    $accessed_via_console = array_distinct($cloudtrail.target.resource.attribute.labels["sessionCredentialFromConsole"])
    $target_resource_name = array_distinct($cloudtrail.target.resource.name)
    $ssl_security_policy = array_distinct($cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"])

  condition:
    $cloudtrail
}

YARA-L Rule Structure

Condition

Fires when at least one $cloudtrail event.

Events

$cloudtrail

  • metadata.product_event_type = "ModifyListener" or "CreateListener"
  • target.resource.attribute.labels["requestParameters.sslPolicy"] is one of:
    • ELBSecurityPolicy-2016-08
    • ELBSecurityPolicy-TLS13-1-1-2021-06
    • ELBSecurityPolicy-TLS13-1-0-2021-06
    • ELBSecurityPolicy-TLS13-1-1-FIPS-2023-04
    • ELBSecurityPolicy-TLS13-1-0-FIPS-2023-04
    • ELBSecurityPolicy-TLS-1-1-2017-01
    • ELBSecurityPolicy-FS-2018-06
    • ELBSecurityPolicy-2015-05
    • ELBSecurityPolicy-TLS-1-0-2015-04
    • ELBSecurityPolicy-FS-1-1-2019-08

Outcome

Outcome variables add context to a detection. When the rule generates an alert, $risk_score is displayed with it.

FieldExpression
risk_scoremax(35)
event_countcount_distinct($cloudtrail.metadata.id)
network_http_user_agentarray_distinct($cloudtrail.network.http.user_agent)
principal_iparray_distinct($cloudtrail.principal.ip)
principal_ip_countryarray_distinct($cloudtrail.principal.ip_geo_artifact.location.country_or_region)
principal_ip_statearray_distinct($cloudtrail.principal.ip_geo_artifact.location.state)
principal_user_display_namearray_distinct($cloudtrail.principal.user.user_display_name)
recipient_aws_account_idarray_distinct($cloudtrail.additional.fields["recipientAccountId"])
aws_regionarray_distinct($cloudtrail.principal.location.name)
accessed_via_consolearray_distinct($cloudtrail.target.resource.attribute.labels["sessionCredentialFromConsole"])
target_resource_namearray_distinct($cloudtrail.target.resource.name)
ssl_security_policyarray_distinct($cloudtrail.target.resource.attribute.labels["requestParameters.sslPolicy"])

Entra ID conditional access policy modification

#
Severity
low
Type
alert
Time window
5m
Match by
user
Author
Google Cloud Security
Source
github.com/chronicle/detection-rules

Detects when an Entra ID conditional access policy has been modified

MITRE ATT&CK Coverage

TacticTechniques
Privilege Escalation

Telemetry Coverage

PlatformRecord / event type
Microsoft 365Update policy.

Rule Body

// Copyright 2025 Google LLC. Licensed under Apache-2.0.

rule entra_id_conditional_access_policy_modification {

  meta:
    author = "Google Cloud Security"
    description = "Detects when an Entra ID conditional access policy has been modified"
    rule_id = "mr_0c3f7309-a3e3-4c80-9b33-12ade9f499f8"
    rule_name = "Entra ID conditional access policy modification"
    tactic = "TA0004"
    technique = "T1484"
    type = "alert"
    platform = "azure"
    data_source = "o365"
    severity = "Low"
    priority = "Low"

  events:
    $cloud.metadata.event_type = "USER_RESOURCE_UPDATE_CONTENT"
    $cloud.metadata.product_event_type = "Update policy."
    $cloud.metadata.product_name = "Office 365"
    $cloud.metadata.vendor_name = "Microsoft"
    $cloud.target.application = "AzureActiveDirectory"
    $cloud.target.resource.attribute.labels.key = "extendedAuditEventCategory"
    $cloud.target.resource.attribute.labels.value = "Policy"
    $cloud.principal.user.userid = $user

  match:
    $user over 5m

  outcome:
    $risk_score = 35
    $event_count = count_distinct($cloud.metadata.id)
    $user_agent = array_distinct($cloud.network.http.user_agent)
    $policy_name = array_distinct($cloud.security_result.detection_fields["target_1"])
    $security_summary = array_distinct($cloud.security_result.summary)
    $target_application = array_distinct($cloud.target.application)
    //$principal_user_userid = array_distinct($group.principal.user.userid)

  condition:
    $cloud
}

YARA-L Rule Structure

Condition

Fires when at least one $cloud event in the 5m window.

Events

$cloud USER_RESOURCE_UPDATE_CONTENT

  • metadata.product_event_type = "Update policy."
  • target.application = "AzureActiveDirectory"
  • target.resource.attribute.labels.key = "extendedAuditEventCategory"
  • target.resource.attribute.labels.value = "Policy"

Match and Correlation

Match key
$user (principal.user.userid)
Within
5m

Outcome

Outcome variables add context to a detection. When the rule generates an alert, $risk_score is displayed with it.

FieldExpression
risk_score35
event_countcount_distinct($cloud.metadata.id)
user_agentarray_distinct($cloud.network.http.user_agent)
policy_namearray_distinct($cloud.security_result.detection_fields["target_1"])
security_summaryarray_distinct($cloud.security_result.summary)
target_applicationarray_distinct($cloud.target.application)

sap sensitive rfc function module execution

#
Severity
high
Time window
1h
Match by
function_module, user
Author
Google Cloud Security
Source
github.com/chronicle/detection-rules

Detects the execution of sensitive function modules via RFC (AUK). Targets Parameter 3 for the function module name.

MITRE ATT&CK Coverage

TacticTechniques
Execution

Rule Body

// Copyright 2026 Google LLC. Licensed under Apache-2.0.

rule sap_sensitive_rfc_function_module_execution {

  meta:
    author = "Google Cloud Security"
    description = "Detects the execution of sensitive function modules via RFC (AUK). Targets Parameter 3 for the function module name."
    severity = "High"
    tactic = "TA0002"
    technique = "T1129"

  events:
    $e.metadata.log_type = "SAP_SECURITY_AUDIT"

    $e.additional.fields["msg_1"] = "AUK"
    $e.additional.fields["param3_1"] in %sap_sensitive_function_modules.module

    $function_module = $e.additional.fields["param3_1"]
    $user = $e.principal.user.userid

    not $user in %sap_admin_users.user

  match:
    $user, $function_module over 1h

  outcome:
    $risk_score = 75
    $target_sid = array_distinct($e.target.application)
    $function_group = array_distinct($e.additional.fields["param1_1"])
    $description = array_distinct($e.metadata.description)
    $t_code = array_distinct($e.security_result.detection_fields["slgtc_1"])

  condition:
    $e
}

YARA-L Rule Structure

Condition

Fires when at least one $e event in the 1h window.

Events

$e

  • metadata.log_type = "SAP_SECURITY_AUDIT"
  • additional.fields["msg_1"] = "AUK"
  • additional.fields["param3_1"] in "%sap_sensitive_function_modules.module"
  • principal.user.userid in "%sap_admin_users.user"

Match and Correlation

Match key
$function_module, $user
Within
1h

Outcome

Outcome variables add context to a detection. When the rule generates an alert, $risk_score is displayed with it.

FieldExpression
risk_score75
target_sidarray_distinct($e.target.application)
function_grouparray_distinct($e.additional.fields["param1_1"])
descriptionarray_distinct($e.metadata.description)
t_codearray_distinct($e.security_result.detection_fields["slgtc_1"])

Back to all YARA-L rules