2022-10-14 18:19:13 +00:00
|
|
|
-- Find unexpected executables in temp directories, often used by malware droppers
|
|
|
|
--
|
|
|
|
-- false positives:
|
|
|
|
-- * developers building code out of /tmp
|
|
|
|
--
|
|
|
|
-- tags: persistent
|
|
|
|
-- platform: posix
|
2022-10-20 13:11:29 +00:00
|
|
|
SELECT
|
|
|
|
file.path,
|
2022-09-24 15:12:23 +00:00
|
|
|
uid,
|
|
|
|
gid,
|
|
|
|
mode,
|
2023-01-09 20:10:48 +00:00
|
|
|
REGEX_MATCH (RTRIM(file.path, '/'), '.*\.(.*?)$', 1) AS extension,
|
2023-01-18 14:49:56 +00:00
|
|
|
file.btime,
|
|
|
|
file.ctime,
|
2022-09-24 15:12:23 +00:00
|
|
|
file.mtime,
|
|
|
|
file.size,
|
|
|
|
hash.sha256,
|
|
|
|
magic.data
|
2022-10-20 13:11:29 +00:00
|
|
|
FROM
|
|
|
|
file
|
2022-09-24 15:12:23 +00:00
|
|
|
LEFT JOIN hash on file.path = hash.path
|
|
|
|
LEFT JOIN magic ON file.path = magic.path
|
2022-10-20 13:11:29 +00:00
|
|
|
WHERE
|
|
|
|
(
|
2022-09-30 17:47:10 +00:00
|
|
|
-- Recursive queries don't seem to work well with hidden directories :(
|
|
|
|
file.path LIKE '/tmp/%%'
|
|
|
|
OR file.path LIKE '/tmp/.%/%%'
|
|
|
|
OR file.path LIKE '/tmp/%/%%'
|
|
|
|
OR file.path LIKE '/tmp/%/%/.%'
|
|
|
|
OR file.path LIKE '/tmp/%/.%/%%'
|
2022-09-24 15:12:23 +00:00
|
|
|
)
|
2022-10-13 18:59:32 +00:00
|
|
|
AND file.type = 'regular'
|
|
|
|
AND file.path NOT LIKE '%/../%'
|
|
|
|
AND file.path NOT LIKE '%/./%'
|
2022-09-24 15:12:23 +00:00
|
|
|
AND (
|
2022-10-13 18:59:32 +00:00
|
|
|
file.mode LIKE '%7%'
|
|
|
|
or file.mode LIKE '%5%'
|
|
|
|
or file.mode LIKE '%1%'
|
2022-09-24 15:12:23 +00:00
|
|
|
)
|
|
|
|
AND NOT (
|
|
|
|
uid > 500
|
2022-09-22 23:35:24 +00:00
|
|
|
AND (
|
2022-10-13 18:59:32 +00:00
|
|
|
file.path LIKE '%/go-build%'
|
|
|
|
OR file.path LIKE '/tmp/checkout/%'
|
|
|
|
OR file.path LIKE '/tmp/com.apple.installer%'
|
|
|
|
OR file.path LIKE '/tmp/flow/%.npmzS_cacachezStmpzSgit-clone%'
|
2022-10-13 22:16:12 +00:00
|
|
|
OR file.path LIKE '/tmp/%/site-packages/markupsafe/_speedups.cpython-%'
|
2022-10-13 18:59:32 +00:00
|
|
|
OR file.path LIKE '/tmp/go.%.sum'
|
|
|
|
OR file.path LIKE '/tmp/guile-%/guile-%'
|
2022-12-15 21:51:58 +00:00
|
|
|
OR file.path LIKE '/tmp/src/%'
|
2022-10-13 18:59:32 +00:00
|
|
|
OR file.path LIKE '/tmp/terraformer/%'
|
|
|
|
OR file.path LIKE '/tmp/tmp.%'
|
|
|
|
OR file.path LIKE '%/bin/%-gen'
|
|
|
|
OR file.path LIKE '%/bin/%'
|
|
|
|
OR file.path LIKE '%/CCLBS/%'
|
2023-01-14 13:19:26 +00:00
|
|
|
OR file.path LIKE '/tmp/%/target/debug/build/%'
|
2022-10-13 18:59:32 +00:00
|
|
|
OR file.path LIKE '%/ko/%'
|
|
|
|
OR file.path LIKE '%/pdf-tools/%'
|
|
|
|
OR file.path LIKE '%/tmp/epdf%'
|
2022-10-20 12:19:56 +00:00
|
|
|
OR -- These regular expressions can be narrowed down
|
2022-09-24 15:12:23 +00:00
|
|
|
(
|
2023-01-06 21:01:35 +00:00
|
|
|
file.size < 50000
|
2023-01-06 22:11:24 +00:00
|
|
|
AND file.uid > 500
|
2023-01-13 19:10:43 +00:00
|
|
|
AND extension IN ('sh', 'py', 'pl', 'perl', 'json', 'js', 'txt', 'log')
|
2023-01-06 22:11:24 +00:00
|
|
|
)
|
2022-09-22 23:35:24 +00:00
|
|
|
)
|
2022-10-20 12:19:56 +00:00
|
|
|
) -- Nix
|
2022-09-24 15:12:23 +00:00
|
|
|
AND NOT (
|
2022-10-13 18:59:32 +00:00
|
|
|
file.directory LIKE '/tmp/tmp%'
|
2022-09-24 15:12:23 +00:00
|
|
|
AND gid = 0
|
|
|
|
AND uid > 300
|
|
|
|
AND uid < 350
|
2022-10-20 12:19:56 +00:00
|
|
|
) -- Babel
|
|
|
|
AND NOT (
|
|
|
|
file.directory LIKE '/tmp/babel-%/sh-script-%'
|
|
|
|
AND gid > 900
|
|
|
|
AND uid = 1000
|
|
|
|
AND size < 1024
|
|
|
|
) -- Random Testdata
|
|
|
|
AND NOT (
|
|
|
|
gid > 900
|
|
|
|
AND uid = 1000
|
|
|
|
AND (
|
|
|
|
file.directory LIKE '/tmp/%/test'
|
|
|
|
OR file.directory LIKE '/tmp/%/testdata'
|
|
|
|
)
|
|
|
|
) -- Don't alert if the file is only on disk for a moment
|
2022-09-24 15:12:23 +00:00
|
|
|
AND NOT (
|
2022-10-13 18:59:32 +00:00
|
|
|
file.directory LIKE '/tmp/%'
|
2022-10-20 12:19:56 +00:00
|
|
|
AND (strftime('%s', 'now') - ctime) < 30
|
|
|
|
) -- macOS updates
|
|
|
|
AND NOT file.directory LIKE '/tmp/msu-target-%' -- I don't know man. I don't work here.
|
2023-01-06 15:36:48 +00:00
|
|
|
AND NOT file.directory LIKE '/tmp/UpdateBrain-%/AssetData/com.apple.MobileSoftwareUpdate.UpdateBrainService.xpc/Contents/MacOS'
|
2022-11-16 21:52:39 +00:00
|
|
|
-- terraform
|
2022-10-12 01:53:36 +00:00
|
|
|
AND NOT (
|
2022-11-18 15:27:43 +00:00
|
|
|
uid > 500
|
|
|
|
AND file.path LIKE '/tmp/terraform_%/terraform'
|
2022-11-16 21:52:39 +00:00
|
|
|
)
|
|
|
|
AND NOT (
|
|
|
|
file.path LIKE '/tmp/%compressed'
|
2022-10-12 01:53:36 +00:00
|
|
|
AND size < 4000
|
|
|
|
AND uid > 500
|
2022-11-03 15:51:54 +00:00
|
|
|
)
|
|
|
|
-- Executables too small to even hold '#!/bin/sh\nuid'
|
2022-10-12 01:53:36 +00:00
|
|
|
AND NOT (
|
2022-10-13 18:59:32 +00:00
|
|
|
file.type = 'regular'
|
2022-10-12 01:53:36 +00:00
|
|
|
AND size < 10
|
2022-10-20 13:11:29 +00:00
|
|
|
)
|
2023-01-09 20:10:48 +00:00
|
|
|
-- Common shell scripts
|
|
|
|
AND NOT (
|
|
|
|
file.filename IN ("configure", "mkinstalldirs")
|
|
|
|
AND magic.data = "POSIX shell script, ASCII text executable"
|
|
|
|
)
|
2023-01-18 14:49:56 +00:00
|
|
|
AND NOT (
|
|
|
|
file.directory LIKE "%/lib"
|
|
|
|
AND file.filename LIKE "%.so.%"
|
|
|
|
AND magic.data LIKE "ELF 64-bit LSB shared object%"
|
|
|
|
)
|