osquery-defense-kit/process_events/sketchy-fetcher-events.sql

74 lines
2.7 KiB
MySQL
Raw Normal View History

2022-09-14 14:51:56 +00:00
-- Events version of sketchy-fetchers
2022-09-21 14:30:17 +00:00
-- Designed for execution every minute (where the parent may still be around)
2022-09-14 14:51:56 +00:00
SELECT p.pid,
p.path,
2022-09-15 13:34:45 +00:00
p.cmdline,
REGEX_MATCH(p.cmdline, '/(\d+\.\d+\.\d+\.\d+)[:/]', 1) AS remote_address,
REGEX_MATCH(p.cmdline, '/(:\d+\/)/', 1) AS remote_port,
2022-09-14 14:51:56 +00:00
p.mode,
p.cwd,
p.euid,
p.parent,
p.syscall,
pp.path AS parent_path,
pp.name AS parent_name,
pp.cmdline AS parent_cmdline,
pp.euid AS parent_euid,
hash.sha256 AS parent_sha256
FROM process_events p
LEFT JOIN processes pp ON p.parent = pp.pid
LEFT JOIN hash ON pp.path = hash.path
2022-09-21 14:30:17 +00:00
WHERE p.time > (strftime('%s', 'now') -60)
-- NOTE: Sync remaining portion with sketchy-fetchers
2022-09-15 13:34:45 +00:00
AND (
INSTR(p.cmdline, 'wget ') > 0
OR INSTR(p.cmdline, 'curl ') > 0
) AND (
2022-09-22 17:18:16 +00:00
-- If it's an IP or port, it's suspicious
remote_address NOT IN ("", "127.0.0.1", "::1")
OR remote_port != ""
2022-09-22 17:18:16 +00:00
-- Or if it matches weird keywords we've seen
OR p.cmdline LIKE "%.onion%"
2022-09-14 14:51:56 +00:00
OR p.cmdline LIKE "%tor2web%"
OR p.cmdline LIKE "%aliyun%"
OR p.cmdline LIKE "%pastebin%"
2022-09-22 17:18:16 +00:00
OR p.cmdline LIKE "%curl.*—write-out%"
OR p.cmdline LIKE "%curl.*—write-out%"
2022-09-14 14:51:56 +00:00
OR p.cmdline LIKE "%curl %--user-agent%"
OR p.cmdline LIKE "%curl -k%"
2022-09-22 17:18:16 +00:00
OR p.cmdline LIKE "%curl%--output /dev/null%"
OR p.cmdline LIKE "%curl%--O /dev/null%"
2022-09-14 14:51:56 +00:00
OR p.cmdline LIKE "%curl%--insecure%"
OR p.cmdline LIKE "%wget %--user-agent%"
OR p.cmdline LIKE "%wget %--no-check-certificate%"
2022-09-22 17:18:16 +00:00
-- Or anything launched by a system user
2022-09-15 13:34:45 +00:00
OR (p.cmdline LIKE "%wget %" AND p.euid < 500)
OR (p.cmdline LIKE "%curl %" AND p.euid < 500)
2022-09-14 14:51:56 +00:00
)
2022-09-15 13:34:45 +00:00
-- Exceptions for all calls
AND pp.name NOT IN ('makepkg') -- Exceptions for non-privileged calls
AND NOT (
p.euid > 500
AND (
p.cmdline LIKE "%--dump-header%"
2022-09-15 15:28:50 +00:00
OR p.cmdline LIKE "%/api/v%"
OR p.cmdline LIKE "%curl -X %"
OR p.cmdline LIKE "%go mod %"
OR p.cmdline LIKE "%application/json%"
OR p.cmdline LIKE "%grpcurl%"
2022-09-15 13:34:45 +00:00
OR p.cmdline LIKE "%Homebrew%"
OR p.cmdline LIKE "%If-None-Match%"
OR p.cmdline LIKE "%ctlog%"
OR p.cmdline LIKE "%.well-known/openid-configuration%"
OR p.cmdline LIKE "%/openid/v1/jwks%"
2022-09-16 18:21:42 +00:00
OR p.cmdline LIKE "%--progress-bar%"
2022-09-15 13:34:45 +00:00
OR parent_cmdline LIKE "%brew.rb%"
OR parent_cmdline LIKE "%brew.sh%"
2022-09-16 15:22:50 +00:00
OR p.cmdline LIKE "git %"
OR p.cmdline LIKE "%LICENSES/vendor/%"
2022-09-16 18:21:42 +00:00
OR p.cmdline LIKE "%localhost:%"
OR p.cmdline LIKE "%127.0.0.1:%"
2022-09-15 13:34:45 +00:00
)
)