Detection rules › YARA-L

YARA-L rules: 04

AWS GuardDuty Bruteforce Activity Detected

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

Amazon GuardDuty detects a brute force activity in an Amazon EC2 or Amazon RDS instance.

MITRE ATT&CK Coverage

TacticTechniques
Credential Access

Rule Body

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

rule aws_guardduty_brute_force_activity_detected {

  meta:
    author = "Google Cloud Security"
    description = "Amazon GuardDuty detects a brute force activity in an Amazon EC2 or Amazon RDS instance."
    rule_id = "mr_33197748-cb9d-451f-8135-4b61cc5e4ca5"
    rule_name = "AWS GuardDuty Bruteforce Activity Detected"
    mitre_attack_tactic = "Credential Access"
    mitre_attack_technique = "Brute Force"
    mitre_attack_url = "https://attack.mitre.org/techniques/T1110/"
    mitre_attack_version = "v13.1"
    type = "Alert"
    data_source = "AWS GuardDuty"
    platform = "AWS"
    severity = "High"
    priority = "High"

  events:
    $guardduty.metadata.vendor_name = "AMAZON"
    $guardduty.metadata.product_name = "AWS GuardDuty"
    $guardduty.metadata.product_event_type = /BruteForce/
    //Filter out sample findings
    $guardduty.security_result.about.labels["Sample"] != "true"

  outcome:
    $risk_score = max(35)
    $mitre_attack_tactic = "Credential Access"
    $mitre_attack_technique = "Brute Force"
    $mitre_attack_technique_id = "T1110"
    $event_count = count_distinct($guardduty.metadata.id)
    $principal_ip = array_distinct($guardduty.principal.ip)
    $principal_ip_country = array_distinct($guardduty.principal.ip_geo_artifact.location.country_or_region)
    $principal_ip_state = array_distinct($guardduty.principal.ip_geo_artifact.location.state)
    $principal_user_display_name = $guardduty.principal.user.user_display_name
    $aws_region = $guardduty.target.location.name
    $target_resource_name = $guardduty.target.resource.name
    $target_resource_product_object_id = $guardduty.target.resource.product_object_id
    $security_result_summary = array_distinct($guardduty.security_result.summary)
    $security_result_description = array_distinct($guardduty.security_result.description)
    $security_result_severity = array_distinct($guardduty.security_result.severity)
    $security_result_severity_details = array_distinct($guardduty.security_result.severity_details)
    $metadata_product_event_type = array_distinct($guardduty.metadata.product_event_type)

  condition:
    $guardduty
}

YARA-L Rule Structure

Condition

Fires when at least one $guardduty event.

Events

$guardduty

  • metadata.product_event_type matches "BruteForce"
  • security_result.about.labels["Sample"] != "true"

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($guardduty.metadata.id)
principal_iparray_distinct($guardduty.principal.ip)
principal_ip_countryarray_distinct($guardduty.principal.ip_geo_artifact.location.country_or_region)
principal_ip_statearray_distinct($guardduty.principal.ip_geo_artifact.location.state)
principal_user_display_name$guardduty.principal.user.user_display_name
aws_region$guardduty.target.location.name
target_resource_name$guardduty.target.resource.name
target_resource_product_object_id$guardduty.target.resource.product_object_id
security_result_summaryarray_distinct($guardduty.security_result.summary)
security_result_descriptionarray_distinct($guardduty.security_result.description)
security_result_severityarray_distinct($guardduty.security_result.severity)
security_result_severity_detailsarray_distinct($guardduty.security_result.severity_details)
metadata_product_event_typearray_distinct($guardduty.metadata.product_event_type)

Google Workspace User Ou Changed

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

Identifies when a Google Workspace user account is moved between Organizational Units.

MITRE ATT&CK Coverage

Telemetry Coverage

Rules Detecting the Same Action

These rules filter on the same operation.

Rule Body

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

rule google_workspace_user_ou_changed {

  meta:
    author = "Google Cloud Security"
    description = "Identifies when a Google Workspace user account is moved between Organizational Units."
    rule_id = "mr_e265b499-9a83-4e7d-acf8-ae7674e1c743"
    rule_name = "Google Workspace User Ou Changed"
    mitre_attack_tactic = "Persistence"
    mitre_attack_technique = "Account Manipulation: Additional Cloud Roles"
    mitre_attack_url = "https://attack.mitre.org/techniques/T1098/003/"
    mitre_attack_version = "v13.1"
    type = "Alert"
    data_source = "Workspace Activity"
    severity = "High"
    priority = "High"

  events:
    $ws.metadata.vendor_name = "Google Workspace"
    $ws.metadata.product_name = "admin"
    $ws.metadata.product_event_type = "MOVE_USER_TO_ORG_UNIT"
    $ws.security_result.category_details = "USER_SETTINGS"

  outcome:
    $risk_score = max(70)
    $mitre_attack_tactic = "Persistence"
    $mitre_attack_technique = "Account Manipulation: Additional Cloud Roles"
    $mitre_attack_technique_id = "T1098.003"
    $event_count = count_distinct($ws.metadata.id)
    $principal_ip = array_distinct($ws.principal.ip)
    $principal_country = array_distinct($ws.principal.ip_geo_artifact.location.country_or_region)
    $principal_state = array_distinct($ws.principal.ip_geo_artifact.location.state)
    $principal_user_emails = array_distinct($ws.principal.user.email_addresses)
    $target_user_emails = array_distinct($ws.target.user.email_addresses)
    $principal_user_id = $ws.principal.user.userid
    $old_org_unit_name = $ws.about.labels["org_unit_name"]
    $new_org_unit_name = $ws.target.user.attribute.labels["new_value"]

  condition:
    $ws
}

YARA-L Rule Structure

Condition

Fires when at least one $ws event.

Events

$ws

  • metadata.product_event_type = "MOVE_USER_TO_ORG_UNIT"
  • security_result.category_details = "USER_SETTINGS"

Outcome

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

FieldExpression
risk_scoremax(70)
event_countcount_distinct($ws.metadata.id)
principal_iparray_distinct($ws.principal.ip)
principal_countryarray_distinct($ws.principal.ip_geo_artifact.location.country_or_region)
principal_statearray_distinct($ws.principal.ip_geo_artifact.location.state)
principal_user_emailsarray_distinct($ws.principal.user.email_addresses)
target_user_emailsarray_distinct($ws.target.user.email_addresses)
principal_user_id$ws.principal.user.userid
old_org_unit_name$ws.about.labels["org_unit_name"]
new_org_unit_name$ws.target.user.attribute.labels["new_value"]

HackTool - Dumpert Process Dumper Execution

#
Severity
critical
Type
Detection
Time window
5m
Match by
hostname
Author
Florian Roth (Nextron Systems)
Source
github.com/chronicle/detection-rules

Detects the use of Dumpert process dumper, which dumps the lsass.exe process memory

Known False Positives

  • Very unlikely

MITRE ATT&CK Coverage

TacticTechniques
Credential Access

References

Telemetry Coverage

Rule Body

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

rule hacktool_dumpert_process_dumper_exec {
  meta:
    author = "Florian Roth (Nextron Systems)"
    description = "Detects the use of Dumpert process dumper, which dumps the lsass.exe process memory"
    reference = "https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_hktl_dumpert.yml"
    rule_name = "HackTool - Dumpert Process Dumper Execution"
    sigma_uuid = "2704ab9e-afe2-4854-a3b1-0c0706d03578"
    sigma_status = "test"
    rule_id = "mr_39c682b6-b50e-4d22-95de-c9d579c8fc44"
    tactic = "TA0006"
    technique = "T1003.001"
    type = "Detection"
    data_source = "Sysmon"
    platform = "Windows"
    severity = "Critical"
    priority = "Critical"
    false_positives = "Very unlikely"

  events:
    $process.metadata.event_type = "PROCESS_LAUNCH"
    (
        $process.target.process.file.file_metadata.pe.import_hash = "09D278F9DE118EF09163C6140255C690" nocase or
        $process.target.process.file.pe_file.imphash = "09D278F9DE118EF09163C6140255C690" nocase or
        strings.contains(strings.to_lower($process.target.process.command_line), "dumpert.dll")
    )
    $process.principal.hostname = $hostname

  match:
    $hostname over 5m

  outcome:
    //example usage of specifying test user and hostname to adjust risk score
    $risk_score = max(if($process.principal.user.userid = "user" and $process.principal.hostname = "hostname", 0, 15))
    $principal_process_pid = array_distinct($process.principal.process.pid)
    $principal_process_command_line = array_distinct($process.principal.process.command_line)
    $principal_process_file_sha256 = array_distinct($process.principal.process.file.sha256)
    $principal_process_file_full_path = array_distinct($process.principal.process.file.full_path)
    $principal_process_product_specfic_process_id = array_distinct($process.principal.process.product_specific_process_id)
    $principal_process_parent_process_product_specfic_process_id = array_distinct($process.principal.process.parent_process.product_specific_process_id)
    $target_process_pid = array_distinct($process.target.process.pid)
    $target_process_command_line = array_distinct($process.target.process.command_line)
    $target_process_file_sha256 = array_distinct($process.target.process.file.sha256)
    $target_process_file_full_path = array_distinct($process.target.process.file.full_path)
    $target_process_product_specfic_process_id = array_distinct($process.target.process.product_specific_process_id)
    $principal_user_userid = array_distinct($process.principal.user.userid)
    $log_type = array_distinct(strings.concat($process.metadata.log_type,"/",$process.metadata.product_event_type))

  condition:
    $process
}

YARA-L Rule Structure

Condition

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

Events

$process PROCESS_LAUNCH (1, 4688)

  • target.process.file.file_metadata.pe.import_hash = "09D278F9DE118EF09163C6140255C690"
  • target.process.file.pe_file.imphash = "09D278F9DE118EF09163C6140255C690"
  • target.process.command_line contains "dumpert.dll"

Match and Correlation

Match key
$hostname (principal.hostname)
Within
5m

Outcome

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

FieldExpression
risk_scoremax(if($process.principal.user.userid = "user" and $process.principal.hostname = "hostname", 0, 15))
principal_process_pidarray_distinct($process.principal.process.pid)
principal_process_command_linearray_distinct($process.principal.process.command_line)
principal_process_file_sha256array_distinct($process.principal.process.file.sha256)
principal_process_file_full_patharray_distinct($process.principal.process.file.full_path)
principal_process_product_specfic_process_idarray_distinct($process.principal.process.product_specific_process_id)
principal_process_parent_process_product_specfic_process_idarray_distinct($process.principal.process.parent_process.product_specific_process_id)
target_process_pidarray_distinct($process.target.process.pid)
target_process_command_linearray_distinct($process.target.process.command_line)
target_process_file_sha256array_distinct($process.target.process.file.sha256)
target_process_file_full_patharray_distinct($process.target.process.file.full_path)
target_process_product_specfic_process_idarray_distinct($process.target.process.product_specific_process_id)
principal_user_useridarray_distinct($process.principal.user.userid)
log_typearray_distinct(strings.concat($process.metadata.log_type,"/",$process.metadata.product_event_type))

IOC SHA256 Hash VT

#
Severity
medium
Type
alert
Time window
15m
Match by
hostname
Author
Google Cloud Security
Source
github.com/chronicle/detection-rules

Detect file/process events with watchlisted hashes from MISP that VT flagged as MS Office docx file types

Telemetry Coverage

Rule Body

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

rule ioc_sha256_hash_vt {

  meta:
    author = "Google Cloud Security"
    description = "Detect file/process events with watchlisted hashes from MISP that VT flagged as MS Office docx file types"
    rule_id = "mr_d36dec67-3af0-4d52-be78-1fe14c865006"
    rule_name = "IOC SHA256 Hash VT"
    type = "alert"
    tags = "threat indicators, vt enrichment"
    assumption = "Assumes MISP data has been ingested into entity graph; this rule can be modified to utilize other TI indicators"
    data_source = "microsoft sysmon"
    severity = "Medium"
    priority = "Medium"

  events:
    $process.metadata.event_type = "PROCESS_LAUNCH" or $process.metadata.event_type ="FILE_CREATION"
    $process.principal.hostname = $hostname
    $process.target.file.sha256 != ""
    $process.target.file.sha256 = $sha256
    // Enriched field from VirusTotal integration, can be commented out or modified if not using
    $process.target.file.file_type = "FILE_TYPE_DOCX"

    // Correlates with MISP data; can be modified based on your MISP parser or other TI
    $ioc.graph.metadata.product_name = "MISP"
    $ioc.graph.metadata.entity_type = "FILE"
    $ioc.graph.metadata.source_type = "ENTITY_CONTEXT"
    $ioc.graph.entity.file.sha256 = $sha256

  match:
    $hostname over 15m

  outcome:
    $risk_score = 65
    $event_count = count_distinct($process.metadata.id)
    // added to populate alert graph with additional context
    // Commented out principal.hostname because it is already represented in graph as match variable. If match changes, can uncomment to add to results
    //$principal_hostname = array_distinct($process.principal.hostname)
    $principal_process_pid = array_distinct($process.principal.process.pid)
    $principal_process_command_line = array_distinct($process.principal.process.command_line)
    $principal_process_file_sha256 = array_distinct($process.principal.process.file.sha256)
    $principal_process_file_full_path = array_distinct($process.principal.process.file.full_path)
    $principal_process_product_specific_process_id = array_distinct($process.principal.process.product_specific_process_id)
    $principal_process_parent_process_product_specific_process_id = array_distinct($process.principal.process.parent_process.product_specific_process_id)
    $target_process_pid = array_distinct($process.target.process.pid)
    $target_process_command_line = array_distinct($process.target.process.command_line)
    $target_process_file_sha256 = array_distinct($process.target.process.file.sha256)
    $target_process_file_full_path = array_distinct($process.target.process.file.full_path)
    $target_process_product_specific_process_id = array_distinct($process.target.process.product_specific_process_id)
    $principal_user_userid = array_distinct($process.principal.user.userid)
    $target_file_sha256 = array_distinct($process.target.file.sha256)
    $target_file_full_path = array_distinct($process.target.file.full_path)

  condition:
    $process and $ioc
}

YARA-L Rule Structure

Condition

Fires when at least one $process event in the 15m window and $ioc matches entity context.

Events

$ioc entity context (FILE)

  • graph.metadata.product_name = "MISP"
  • graph.metadata.entity_type = "FILE"
  • graph.metadata.source_type = "ENTITY_CONTEXT"

$process PROCESS_LAUNCH (1, 11, 4688)

  • target.file.sha256 is not null
  • target.file.file_type = "FILE_TYPE_DOCX"

Match and Correlation

Match key
$hostname (principal.hostname)
Within
15m

Outcome

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

FieldExpression
risk_score65
event_countcount_distinct($process.metadata.id)
principal_process_pidarray_distinct($process.principal.process.pid)
principal_process_command_linearray_distinct($process.principal.process.command_line)
principal_process_file_sha256array_distinct($process.principal.process.file.sha256)
principal_process_file_full_patharray_distinct($process.principal.process.file.full_path)
principal_process_product_specific_process_idarray_distinct($process.principal.process.product_specific_process_id)
principal_process_parent_process_product_specific_process_idarray_distinct($process.principal.process.parent_process.product_specific_process_id)
target_process_pidarray_distinct($process.target.process.pid)
target_process_command_linearray_distinct($process.target.process.command_line)
target_process_file_sha256array_distinct($process.target.process.file.sha256)
target_process_file_full_patharray_distinct($process.target.process.file.full_path)
target_process_product_specific_process_idarray_distinct($process.target.process.product_specific_process_id)
principal_user_useridarray_distinct($process.principal.user.userid)
target_file_sha256array_distinct($process.target.file.sha256)
target_file_full_patharray_distinct($process.target.file.full_path)

Okta Suspicious Use Of A Session Cookie

#

Uncommon or Suspicious RMM Tool Execution Detected

#
Type
alert
Time window
10m
Match by
hostname, image, rmm_company_info
Author
Georg Lauenstein - suresecure GmbH
Source
github.com/chronicle/detection-rules

This detection rule identifies uncommon or suspicious Remote Monitoring and Management (RMM) tools, leveraging intelligence from the LOL-RMM (Living Off the Land RMM) project. While RMM tools are widely used for IT administration, remote support, and network management, they are also frequently abused by attackers, initial access brokers (IABs), and ransomware operators to establish persistent remote access, execute malicious commands, or deploy additional payloads. This rule detects RMM software that is not commonly observed in the environment, indicating potential unauthorized access or lateral movement.

MITRE ATT&CK Coverage

TacticTechniques
Command & Control

References

Telemetry Coverage

Rule Body

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

rule win_pua_detection_of_uncommon_rmm {

  meta:
    author = "Georg Lauenstein - suresecure GmbH"
    description = "This detection rule identifies uncommon or suspicious Remote Monitoring and Management (RMM) tools, leveraging intelligence from the LOL-RMM (Living Off the Land RMM) project. While RMM tools are widely used for IT administration, remote support, and network management, they are also frequently abused by attackers, initial access brokers (IABs), and ransomware operators to establish persistent remote access, execute malicious commands, or deploy additional payloads. This rule detects RMM software that is not commonly observed in the environment, indicating potential unauthorized access or lateral movement."
    rule_id = "mr_f5681a0f-215f-4055-80c7-864ee39bcfb8"
    rule_name = "Uncommon or Suspicious RMM Tool Execution Detected"
    tactic = "TA0011"
    technique = "T1219"
    reference = "https://lolrmm.io/"
    type = "alert"
    platform = "Windows, EDR"
    data_source = "Microsoft Sysmon, Windows Event Logs"
    severity = "Medium"  // Adjust based on your risk assessment
    priority = "Medium"  // Adjust based on your incident response process

  events:
    $rmm_tool.metadata.event_type = "PROCESS_LAUNCH"

    (
      // 247ithelp.com (ConnectWise) RMM
      $rmm_tool.target.process.file.full_path = /\\Remote Workforce Client\.exe$/ nocase
    ) or

    (
      // Potential Acronic Cyber Protect (Remotix) RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\AcronisCyberProtectConnectAgent\.exe$/ nocase
    ) or

    (
      // Potential AeroAdmin RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\aeroadmin\.exe|\\AeroAdmin\.exe/ nocase
    ) or

    (
      // Potential Air Live Drive RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\AirLiveDrive\.exe$/ nocase
    ) or

    (
      // Potential AliWangWang-remote-control RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\alitask\.exe$/ nocase
    ) or

    (
      // Potential Alpemix RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\AlpemixService\.exe$/ nocase
    ) or

    (
      // Potential Any Support RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\ManualLauncher\.exe$/ nocase
    ) or

    (
      // Potential Anyplace Control RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\apc_host\.exe$/ nocase
    ) or

    (
      // Potential aria2 RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\aria2c\.exe$/ nocase
    ) or

    (
      // Potential Atera RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\AgentPackageNetworkDiscovery\.exe|\\AgentPackageTaskScheduler\.exe|\\AteraAgent\.exe|\\atera_agent\.exe|\\ateraagent\.exe/ nocase
    ) or

    (
      // Potential Auvik RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\auvik\.engine\.exe|\\auvik\.agent\.exe/ nocase
    ) or

    (
      // Potential Absolute (Computrace) RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\rpcnet\.exe|\\ctes\.exe|\\ctespersitence\.exe|\\cteshostsvc\.exe|\\rpcld\.exe/ nocase
    ) or

    (
      // Potential Bluetrait MSP Agent Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\Bluetrait MSP Agent\.exe|\\BluetraitUserAgent\.exe|\\Bluetrait Agent\\libraries\\paexec\.exe/ nocase
    ) or

    (
      // Potential BeamYourScreen RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\beamyourscreen\.exe|\\beamyourscreen-host\.exe/ nocase
    ) or

    (
      // Potential Connectwise Automate (LabTech) RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\ltsvc\.exe|\\ltsvcmon\.exe|\\lttray\.exe/ nocase
    ) or

    (
      // Potential Duplicati RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\Duplicati\.Server\.exe$/ nocase
    ) or

    (
      // Potential FixMe.it RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\FixMeit Unattended Access Setup\.exe|\\TiExpertStandalone\.exe|\\FixMeit Client\.exe|\\FixMeit Expert Setup\.exe|\\TiExpertCore\.exe|\\TiClientCore\.exe/ nocase
    ) or

    (
      // Potential FleetDeck.io RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\fleetdeck_agent_svc\.exe|\\fleetdeck_commander_svc\.exe|\\fleetdeck_installer\.exe|\\fleetdeck_commander_launcher\.exe|\\fleetdeck_agent\.exe/ nocase
    ) or

    (
      // Potential Level.io RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\level-windows-amd64\.exe|\\level\.exe|\\level-remote-control-ffmpeg\.exe/ nocase
    ) or

    (
      // Potential NetSupport Manager RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\pcictlui\.exe|\\client32\.exe|\\pcicfgui\.exe/ nocase
    ) or

    (
      // Potential NinjaRMM RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\ninjarmmagent\.exe|\\NinjaRMMAgent\.exe|\\NinjaRMMAgenPatcher\.exe|\\ninjarmm-cli\.exe/ nocase
    ) or

    (
      // Potential REMCOS RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\remcos/ nocase
    ) or

    (
      // Potential Rocket Remote Desktop RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\RocketRemoteDesktop_Setup\.exe$/ nocase
    ) or

    (
      // Potential Tactical RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\tacticalrmm\.exe$/ nocase
    ) or

    (
      // Potential TightVNC RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\tvnviewer\.exe|\\tvnserver\.exe/ nocase
    ) or

    (
      // Potential Zoho Assist RMM Tool Process Activity
      $rmm_tool.target.process.file.full_path = /\\zaservice\.exe|\\ZA_Access\.exe|\\ZohoMeeting\.exe|\\Zohours\.exe|\\zohotray\.exe|\\ZohoURSService\.exe|\\Zaservice\.exe|\\za_connect\.exe|\\ZMAgent\.exe/ nocase
    )

    $rmm_tool.principal.hostname = $hostname
    $rmm_tool.target.process.file.full_path = $image
    $rmm_tool.extracted.fields["Company"] = $rmm_company_info

    // Filter for known RMM Tools based on Customer Information
    // not $rmm_tool.target.process.file.full_path in %known_rmm_tools nocase

  match:
    $hostname, $image, $rmm_company_info over 10m

  outcome:
    $risk_score = max(65)
    $event_count = count_distinct($rmm_tool.metadata.id)
    $principal_process_pid = array_distinct($rmm_tool.principal.process.pid)
    $principal_process_command_line = array_distinct($rmm_tool.principal.process.command_line)
    $principal_process_file_sha256 = array_distinct($rmm_tool.principal.process.file.sha256)
    $principal_process_file_full_path = array_distinct($rmm_tool.principal.process.file.full_path)
    $principal_process_product_specific_process_id = array_distinct($rmm_tool.principal.process.product_specific_process_id)
    $principal_process_parent_process_product_specific_process_id = array_distinct($rmm_tool.principal.process.parent_process.product_specific_process_id)
    $target_process_pid = array_distinct($rmm_tool.target.process.pid)
    $target_process_command_line = array_distinct($rmm_tool.target.process.command_line)
    $target_process_file_sha256 = array_distinct($rmm_tool.target.process.file.sha256)
    $target_process_file_full_path = array_distinct($rmm_tool.target.process.file.full_path)
    $target_process_product_specific_process_id = array_distinct($rmm_tool.target.process.product_specific_process_id)
    $principal_user_userid = array_distinct($rmm_tool.principal.user.userid)

  condition:
    $rmm_tool
}

YARA-L Rule Structure

Condition

Fires when at least one $rmm_tool event in the 10m window.

Events

$rmm_tool PROCESS_LAUNCH (1, 4688)

  • target.process.file.full_path matches "\\Remote Workforce Client\.exe$"
  • target.process.file.full_path matches "\\AcronisCyberProtectConnectAgent\.exe$"
  • target.process.file.full_path matches "\\aeroadmin\.exe|\\AeroAdmin\.exe"
  • target.process.file.full_path matches "\\AirLiveDrive\.exe$"
  • target.process.file.full_path matches "\\alitask\.exe$"
  • target.process.file.full_path matches "\\AlpemixService\.exe$"
  • target.process.file.full_path matches "\\ManualLauncher\.exe$"
  • target.process.file.full_path matches "\\apc_host\.exe$"
  • target.process.file.full_path matches "\\aria2c\.exe$"
  • target.process.file.full_path matches "\\AgentPackageNetworkDiscovery\.exe|\\AgentPackageTaskScheduler\.exe|\\AteraAgent\.exe|\\atera_agent\.exe|\\ateraagent\.exe"
  • target.process.file.full_path matches "\\auvik\.engine\.exe|\\auvik\.agent\.exe"
  • target.process.file.full_path matches "\\rpcnet\.exe|\\ctes\.exe|\\ctespersitence\.exe|\\cteshostsvc\.exe|\\rpcld\.exe"
  • target.process.file.full_path matches "\\Bluetrait MSP Agent\.exe|\\BluetraitUserAgent\.exe|\\Bluetrait Agent\\libraries\\paexec\.exe"
  • target.process.file.full_path matches "\\beamyourscreen\.exe|\\beamyourscreen-host\.exe"
  • target.process.file.full_path matches "\\ltsvc\.exe|\\ltsvcmon\.exe|\\lttray\.exe"
  • target.process.file.full_path matches "\\Duplicati\.Server\.exe$"
  • target.process.file.full_path matches "\\FixMeit Unattended Access Setup\.exe|\\TiExpertStandalone\.exe|\\FixMeit Client\.exe|\\FixMeit Expert Setup\.exe|\\TiExpertCore\.exe|\\TiClientCore\.exe"
  • target.process.file.full_path matches "\\fleetdeck_agent_svc\.exe|\\fleetdeck_commander_svc\.exe|\\fleetdeck_installer\.exe|\\fleetdeck_commander_launcher\.exe|\\fleetdeck_agent\.exe"
  • target.process.file.full_path matches "\\level-windows-amd64\.exe|\\level\.exe|\\level-remote-control-ffmpeg\.exe"
  • target.process.file.full_path matches "\\pcictlui\.exe|\\client32\.exe|\\pcicfgui\.exe"
  • target.process.file.full_path matches "\\ninjarmmagent\.exe|\\NinjaRMMAgent\.exe|\\NinjaRMMAgenPatcher\.exe|\\ninjarmm-cli\.exe"
  • target.process.file.full_path matches "\\remcos"
  • target.process.file.full_path matches "\\RocketRemoteDesktop_Setup\.exe$"
  • target.process.file.full_path matches "\\tacticalrmm\.exe$"
  • target.process.file.full_path matches "\\tvnviewer\.exe|\\tvnserver\.exe"
  • target.process.file.full_path matches "\\zaservice\.exe|\\ZA_Access\.exe|\\ZohoMeeting\.exe|\\Zohours\.exe|\\zohotray\.exe|\\ZohoURSService\.exe|\\Zaservice\.exe|\\za_connect\.exe|\\ZMAgent\.exe"

Match and Correlation

Match key
$hostname (principal.hostname), $image (target.process.file.full_path), $rmm_company_info (extracted.fields["Company"])
Within
10m

Outcome

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

FieldExpression
risk_scoremax(65)
event_countcount_distinct($rmm_tool.metadata.id)
principal_process_pidarray_distinct($rmm_tool.principal.process.pid)
principal_process_command_linearray_distinct($rmm_tool.principal.process.command_line)
principal_process_file_sha256array_distinct($rmm_tool.principal.process.file.sha256)
principal_process_file_full_patharray_distinct($rmm_tool.principal.process.file.full_path)
principal_process_product_specific_process_idarray_distinct($rmm_tool.principal.process.product_specific_process_id)
principal_process_parent_process_product_specific_process_idarray_distinct($rmm_tool.principal.process.parent_process.product_specific_process_id)
target_process_pidarray_distinct($rmm_tool.target.process.pid)
target_process_command_linearray_distinct($rmm_tool.target.process.command_line)
target_process_file_sha256array_distinct($rmm_tool.target.process.file.sha256)
target_process_file_full_patharray_distinct($rmm_tool.target.process.file.full_path)
target_process_product_specific_process_idarray_distinct($rmm_tool.target.process.product_specific_process_id)
principal_user_useridarray_distinct($rmm_tool.principal.user.userid)

Back to all YARA-L rules