Long Base64 Command Execution via Interactive Shell
Description
Identifies attempts to execute commands with long base64 encoded command lines via an interactive shell. Adversaries may abuse this technique to execute malicious commands.
Query · eql
process where event.type == "start" and event.action == "exec" and
process.parent.interactive == true and process.interactive == true and
(
(
process.name like~ "python*" and
(
process.command_line like~ "*b64decode*" or
(
process.command_line like "*-c *" and
process.command_line like~ "*base64*"
)
)
) or
(
process.name like~ ("powershell*", "pwsh*") and
process.command_line like~ (
"* -e *", "* -en *", "* -enc *", "* -enco *", "* -encod *", "* -encode *", "* -encoded *",
"* -encodedcommand *", "*frombase64string*"
)
) or
(
process.name like~ ("node*", "deno*") and
(
process.command_line like~ ("*atob(*", "*eval(*") or
(
process.command_line like~ "*buffer.from*" and
process.command_line like~ "*base64*"
)
)
) or
(
process.name like~ "php*" and
process.command_line like~ ("*base64_decode(*", "*convert.base64-decode*")
) or
(
process.name like~ "perl*" and
process.command_line like~ ("*MIME::Base64*", "*decode_base64(*")
) or
(
process.name like~ "ruby*" and
process.command_line like~ ("*require*base64*", "*Base64.decode64(*")
) or
(
process.name like~ "java*" and
process.command_line like~ "*base64*decode(*"
) or
(
process.name like~ "lua*" and
process.command_line like~ ("*mime.decode(*base64*", "*mime.unb64(*")
) or
(
process.name like~ "openssl*" and
process.command_line like~ ("*base64 -d*", "*-base64*")
) or
(
process.name in ("base64", "basez", "base64plain", "base64url", "base64mime", "base64pem", "basenc", "base32", "base16") and
process.command_line like~ ("* -d*", "* --decode*")
) or
(
process.name in ("bash", "dash", "sh", "tcsh", "csh", "zsh", "ksh", "fish", "busybox") and
process.command_line like~ ("*base64 -d*", "*base64 --decode*")
)
) and length(process.command_line) >= 4000 and
not (
process.parent.executable like (
"/usr/bin/claude-bin", "/home/*/.local/share/claude/versions/*", "/opt/tm/gemini/node/bin/node",
"/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/*/bin/ruby",
"/usr/bin/sudo", "/usr/local/xars/standalone-tools/claude/*", "/usr/bin/su", "/mnt/fast/nobackup/users/*",
"/opt/local/share/claude/versions/*", "/home/*/.nvm/versions/node/*", "/usr/share/devin-desktop/devin-desktop",
"/opt/linuxbrew/.linuxbrew/Homebrew/*", "/usr/bin/bwrap", "/root/.local/share/claude/versions/*",
"/tmp/.mount_*/usr/share/cursor/cursor", "/home/*/.local/share/cursor-agent/versions/*/node",
"/usr/local/lib/claude-code/claude-bin", "/opt/local/*/dotfolders/.local/share/claude/versions/*",
"/scratch/user/*/.local/bin/claude-science", "/usr/bin/make", "/home/*/.cache/JetBrains/*/dist-package/node",
"/home/*/.aimee-code/bin/*", "/opt/*/.local/share/claude/versions/*"
) or
process.parent.name in ("claude", "claude.exe", "cursor") or
process.parent.args like (
"/root/.ansible/tmp/ansible-tmp-*/AnsiballZ_command.py", "source /home/*/.claude/shell-snapshots/snapshot-*", "claude",
"/home/*/.ansible/tmp/ansible-tmp-*/AnsiballZ_command.py", "/tmp/cmdickens/tmp/eb-*", "/tmp/thangha/tmp/eb-*"
) or
process.parent.command_line like "*mitogen:ansible*" or
(process.parent.executable == "/usr/bin/timeout" and process.working_directory == "/workspace") or
(
process.parent.executable like "/tools/eb/build/*/bazel-root/install/*/process-wrapper" and
process.executable like "/cvmfs/*/software/Python/*/bin/python3*"
) or
process.working_directory in ("/workspace/race/codex", "/workspace/race/claude")
)