Detection rules › Elastic

Potential Payload Download via Finger LOLBin

Source
github.com/elastic/protections-artifacts

Detects abuse of the Windows finger.exe LOLBin to download and execute remote payloads, a technique observed in ClickFix campaigns. Adversaries copy finger.exe from System32 to a user Temp directory under a benign-looking name such as ct.exe, then invoke it with a confirm@ remote host argument and pipe the response into cmd for execution.

MITRE ATT&CK coverage

Rule body

[rule]
description = """
Detects abuse of the Windows finger.exe LOLBin to download and execute remote payloads, a technique observed in ClickFix
campaigns. Adversaries copy finger.exe from System32 to a user Temp directory under a benign-looking name such as
ct.exe, then invoke it with a confirm@ remote host argument and pipe the response into cmd for execution.
"""
id = "3260bb0d-7b35-4c7a-b59a-35ca8dbd3856"
license = "Elastic License v2"
name = "Potential Payload Download via Finger LOLBin"
os_list = ["windows"]
reference = [
    "https://lolbas-project.github.io/lolbas/Binaries/Finger/",
    "https://www.microsoft.com/en-us/security/blog/2025/08/21/think-before-you-clickfix-analyzing-the-clickfix-social-engineering-technique/",
    "https://mrd0x.com/filefix-clickfix-alternative/",
]
version = "1.0.1"

query = '''
process where event.action == "start" and
     (process.pe.original_file_name == "finger.exe" or process.name : "finger.exe") and
      process.command_line like "*@*" and not process.command_line like "*@localhost*" and 
      process.parent.name : ("cmd.exe", "powershell.exe", "WindowsTerminal.exe", "wt.exe", "explorer.exe")
'''

min_endpoint_version = "8.10.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
tree = true

[[actions]]
action = "kill_process"
field = "process.parent.entity_id"
state = 0
tree = true

[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1566"
name = "Phishing"
reference = "https://attack.mitre.org/techniques/T1566/"
[[threat.technique.subtechnique]]
id = "T1566.002"
name = "Spearphishing Link"
reference = "https://attack.mitre.org/techniques/T1566/002/"



[threat.tactic]
id = "TA0001"
name = "Initial Access"
reference = "https://attack.mitre.org/tactics/TA0001/"
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1059"
name = "Command and Scripting Interpreter"
reference = "https://attack.mitre.org/techniques/T1059/"
[[threat.technique.subtechnique]]
id = "T1059.003"
name = "Windows Command Shell"
reference = "https://attack.mitre.org/techniques/T1059/003/"


[[threat.technique]]
id = "T1204"
name = "User Execution"
reference = "https://attack.mitre.org/techniques/T1204/"
[[threat.technique.subtechnique]]
id = "T1204.001"
name = "Malicious Link"
reference = "https://attack.mitre.org/techniques/T1204/001/"



[threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1218"
name = "System Binary Proxy Execution"
reference = "https://attack.mitre.org/techniques/T1218/"


[threat.tactic]
id = "TA0005"
name = "Defense Evasion"
reference = "https://attack.mitre.org/tactics/TA0005/"
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1105"
name = "Ingress Tool Transfer"
reference = "https://attack.mitre.org/techniques/T1105/"


[threat.tactic]
id = "TA0011"
name = "Command and Control"
reference = "https://attack.mitre.org/tactics/TA0011/"

[internal]
min_endpoint_version = "8.10.0"

Stages and Predicates

Stage 1: process

process where event.action == "start" and
     (process.pe.original_file_name == "finger.exe" or process.name : "finger.exe") and
      process.command_line like "*@*" and not process.command_line like "*@localhost*" and 
      process.parent.name : ("cmd.exe", "powershell.exe", "WindowsTerminal.exe", "wt.exe", "explorer.exe")

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
event.actioneq
  • start corpus 392 (elastic 392)
field:"EventType" kind:eq value:"start"
process.command_linewildcard
  • *@* corpus 4 (elastic 2, splunk 1, kusto 1)
field:"CommandLine" kind:wildcard value:"*@*"
process.namewildcard
  • finger.exe corpus 2 (elastic 2)
field:"process_name" kind:wildcard value:"finger.exe"
process.parent.namewildcard
  • WindowsTerminal.exe
  • cmd.exe corpus 37 (elastic 32, splunk 4, kusto 1)
  • explorer.exe corpus 52 (elastic 51, splunk 1)
  • powershell.exe corpus 40 (elastic 37, kusto 2, splunk 1)
  • wt.exe
field:"parent_process_name" kind:wildcard
process.pe.original_file_nameeq
  • finger.exe corpus 3 (sigma 2, elastic 1)
field:"OriginalFileName" kind:eq value:"finger.exe"

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
process.command_linematch@localhostexcludes:process.command_line field:"process.command_line" value:"@localhost"