Detection rules › Elastic
Potential Coin Miner Execution via Shell
This rule detects the execution of a coin miner via a shell command through potential mining commandline arguments. Adversaries may leverage the resources of compromised systems to mine cryptocurrency, to generate revenue. This activity may impact system performance and availability.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Execution | |
| Impact |
Rule body
[rule]
description = """
This rule detects the execution of a coin miner via a shell command through potential mining commandline arguments.
Adversaries may leverage the resources of compromised systems to mine cryptocurrency, to generate revenue. This activity
may impact system performance and availability.
"""
id = "e5149069-189b-4b1a-ad24-9fed16f5a15b"
license = "Elastic License v2"
name = "Potential Coin Miner Execution via Shell"
os_list = ["linux"]
reference = ["https://xmrig.com/docs/algorithms"]
version = "1.0.11"
query = '''
process where event.type == "start" and event.action == "exec" and process.parent.executable != null and
process.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and process.args == "-c" and (
(
process.command_line like ("*-a*", "*--algo*", "*--coin*") and process.command_line like (
"*monero*", "*arqma*", "* dero *", "*rx/graft*", "*cn/upx2*", "*cn/1*", "*cn-lite/1*", "*cn-lite/0*", "*cn/0*",
"*argon2/chukwav2*", "*cn/ccx*", "*kawpow*", "*rx/keva*", "*cn-pico/tlo*", "*rx/sfx*", "*rx/arq*", "*rx/0*",
"*argon2/chukwa*", "*argon2/ninja*", "*rx/wow*", "*cn/fast*", "*cn/rwz*", "*cn/zls*", "*cn/double*", "*cn/r*",
"*cn-pico*", "*cn/half*", "*cn/2*", "*cn/xao*", "*cn/rto*", "*cn-heavy/tube*", "*cn-heavy/xhv*", "*cn-heavy/0*"
)
) or process.command_line like ("*stratum+tcp://*", "*stratum2+tcp://*", "*--nicehash*")
) and not (
process.parent.name like (
"find", "python3", "httpd", "sshd", "php*", "sudo", "ruby", "nvim", "vim", "make", "schroot", "vimdiff", "sbuild", "ninja"
) or
process.parent.executable in (
"/opt/cron/registry-sync/ru/syncRegistryByReport.pl", "/usr/bin/gvimdiff", "/usr/bin/ninja-reference",
"/usr/bin/sw-engine", "/usr/local/bin/teleport", "/usr/share/dotnet/dotnet", "/usr/libexec/openssh/sshd-session"
) or
process.parent.executable like ("/tmp/baum/easybuild/*", "/home/*/.vscode-server/extensions/*/resources/native-binary/claude") or
process.command_line like ("*openssl*", "*--display-charset*", "sh -c aws s3 cp*") or
process.parent.args in ("/usr/bin/crun", "/usr/local/bin/claude")
)
'''
min_endpoint_version = "7.15.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0
[[actions]]
action = "kill_process"
field = "process.parent.entity_id"
state = 0
[[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.004"
name = "Unix Shell"
reference = "https://attack.mitre.org/techniques/T1059/004/"
[threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1496"
name = "Resource Hijacking"
reference = "https://attack.mitre.org/techniques/T1496/"
[threat.tactic]
id = "TA0040"
name = "Impact"
reference = "https://attack.mitre.org/tactics/TA0040/"
[internal]
min_endpoint_version = "7.15.0"
Stages and Predicates
Stage 1: process
process where event.type == "start" and event.action == "exec" and process.parent.executable != null and
process.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish") and process.args == "-c" and (
(
process.command_line like ("*-a*", "*--algo*", "*--coin*") and process.command_line like (
"*monero*", "*arqma*", "* dero *", "*rx/graft*", "*cn/upx2*", "*cn/1*", "*cn-lite/1*", "*cn-lite/0*", "*cn/0*",
"*argon2/chukwav2*", "*cn/ccx*", "*kawpow*", "*rx/keva*", "*cn-pico/tlo*", "*rx/sfx*", "*rx/arq*", "*rx/0*",
"*argon2/chukwa*", "*argon2/ninja*", "*rx/wow*", "*cn/fast*", "*cn/rwz*", "*cn/zls*", "*cn/double*", "*cn/r*",
"*cn-pico*", "*cn/half*", "*cn/2*", "*cn/xao*", "*cn/rto*", "*cn-heavy/tube*", "*cn-heavy/xhv*", "*cn-heavy/0*"
)
) or process.command_line like ("*stratum+tcp://*", "*stratum2+tcp://*", "*--nicehash*")
) and not (
process.parent.name like (
"find", "python3", "httpd", "sshd", "php*", "sudo", "ruby", "nvim", "vim", "make", "schroot", "vimdiff", "sbuild", "ninja"
) or
process.parent.executable in (
"/opt/cron/registry-sync/ru/syncRegistryByReport.pl", "/usr/bin/gvimdiff", "/usr/bin/ninja-reference",
"/usr/bin/sw-engine", "/usr/local/bin/teleport", "/usr/share/dotnet/dotnet", "/usr/libexec/openssh/sshd-session"
) or
process.parent.executable like ("/tmp/baum/easybuild/*", "/home/*/.vscode-server/extensions/*/resources/native-binary/claude") or
process.command_line like ("*openssl*", "*--display-charset*", "sh -c aws s3 cp*") or
process.parent.args in ("/usr/bin/crun", "/usr/local/bin/claude")
)
Exclusions
The rule actively suppresses these predicates.
| Field | Kind | Excluded values | Search |
|---|---|---|---|
process.command_line | wildcard | *openssl*, *--display-charset*, sh -c aws s3 cp* | excludes:process.command_line field:"process.command_line" value:"*openssl*" field:"process.command_line" value:"*--display-charset*" field:"process.command_line" value:"sh -c aws s3 cp*" |
process.parent.args | in | /usr/bin/crun, /usr/local/bin/claude | excludes:process.parent.args field:"process.parent.args" value:"/usr/bin/crun" field:"process.parent.args" value:"/usr/local/bin/claude" |
process.parent.executable | in | /opt/cron/registry-sync/ru/syncRegistryByReport.pl, /usr/bin/gvimdiff, /usr/bin/ninja-reference, /usr/bin/sw-engine, /usr/libexec/openssh/sshd-session, /usr/local/bin/teleport, /usr/share/dotnet/dotnet | excludes:process.parent.executable |
process.parent.executable | wildcard | /tmp/baum/easybuild/*, /home/*/.vscode-server/extensions/*/resources/native-binary/claude | excludes:process.parent.executable field:"process.parent.executable" value:"/tmp/baum/easybuild/*" field:"process.parent.executable" value:"/home/*/.vscode-server/extensions/*/resources/native-binary/claude" |
process.parent.name | wildcard | find, python3, httpd, sshd, php*, sudo, ruby, nvim, vim, make, schroot, vimdiff, sbuild, ninja | excludes:process.parent.name |
Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
event.action | eq |
| field:"EventType" kind:eq value:"exec" |
event.type | eq |
| field:"event.type" kind:eq value:"start" |
process.args | eq |
| field:"process.args" kind:eq value:"-c" |
process.command_line | wildcard |
| field:"CommandLine" kind:wildcard |
process.name | in |
| field:"process_name" kind:in |
process.parent.executable | is_not_null | field:"ParentImage" kind:is_not_null |