2022-09-23 14:36:11 +00:00
|
|
|
-- Scan removable volumes for sketchy files
|
2022-10-12 01:53:36 +00:00
|
|
|
--
|
2022-10-14 18:19:13 +00:00
|
|
|
-- false positives:
|
|
|
|
-- * Installer packages with hidden files
|
2022-10-12 01:53:36 +00:00
|
|
|
--
|
2022-10-14 18:19:13 +00:00
|
|
|
-- references:
|
2022-10-19 20:56:32 +00:00
|
|
|
-- * https://attack.mitre.org/techniques/T1566/001/ (Phishing: Spearphishing Attachment)
|
|
|
|
-- * https://attack.mitre.org/techniques/T1204/002/ (User Execution: Malicious File)
|
2022-10-14 18:19:13 +00:00
|
|
|
-- * https://www.crowdstrike.com/blog/how-crowdstrike-uncovered-a-new-macos-browser-hijacking-campaign/
|
|
|
|
--
|
|
|
|
-- tags: transient volume filesystem
|
2022-10-12 01:53:36 +00:00
|
|
|
-- platform: darwin
|
2022-09-24 15:12:23 +00:00
|
|
|
SELECT
|
2022-10-13 18:59:32 +00:00
|
|
|
RTRIM(file.path, '/') AS trimpath,
|
2022-09-24 15:12:23 +00:00
|
|
|
uid,
|
|
|
|
filename,
|
|
|
|
gid,
|
|
|
|
mode,
|
2022-10-13 18:59:32 +00:00
|
|
|
REGEX_MATCH (file.path, '(.*)/', 1) AS dirname,
|
|
|
|
REGEX_MATCH (RTRIM(file.path, '/'), '.*/(.*?)$', 1) AS basename,
|
|
|
|
REGEX_MATCH (RTRIM(file.path, '/'), '.*\.(.*?)$', 1) AS extension,
|
2022-09-24 15:12:23 +00:00
|
|
|
mtime,
|
|
|
|
ctime,
|
|
|
|
symlink,
|
|
|
|
type,
|
|
|
|
size,
|
|
|
|
hash.sha256,
|
|
|
|
magic.data,
|
|
|
|
signature.identifier,
|
|
|
|
signature.authority
|
|
|
|
FROM
|
|
|
|
file
|
|
|
|
LEFT JOIN hash on file.path = hash.path
|
|
|
|
LEFT JOIN magic ON file.path = magic.path
|
|
|
|
LEFT JOIN signature ON file.path = signature.path
|
|
|
|
WHERE
|
|
|
|
(
|
2022-10-13 18:59:32 +00:00
|
|
|
file.path LIKE '/Volumes/%/%'
|
|
|
|
OR file.path LIKE '/Volumes/%/.%'
|
2022-09-24 15:12:23 +00:00
|
|
|
)
|
2022-10-13 18:59:32 +00:00
|
|
|
AND file.path NOT LIKE '/Volumes/Macintosh HD%'
|
|
|
|
AND file.path NOT LIKE '/Volumes/%/.com.apple.timemachine%'
|
2022-09-24 15:12:23 +00:00
|
|
|
AND (
|
|
|
|
extension IN (
|
2022-10-13 18:59:32 +00:00
|
|
|
'command',
|
|
|
|
'lnk',
|
|
|
|
'mpkg',
|
2022-09-24 15:12:23 +00:00
|
|
|
-- Enable later once we know this query works well
|
2022-10-13 18:59:32 +00:00
|
|
|
-- 'pkg',
|
|
|
|
'scpt',
|
|
|
|
'dmg',
|
|
|
|
'iso',
|
|
|
|
'gz',
|
|
|
|
'sh',
|
|
|
|
'sql'
|
2022-09-23 14:36:11 +00:00
|
|
|
)
|
2022-09-24 15:12:23 +00:00
|
|
|
OR file.symlink != 0
|
2022-10-13 18:59:32 +00:00
|
|
|
OR basename LIKE '.%'
|
|
|
|
OR basename LIKE '%.sql%'
|
|
|
|
OR basename LIKE '%Chrome%'
|
|
|
|
OR basename LIKE '%Extension%'
|
|
|
|
OR basename LIKE '%enforce%'
|
|
|
|
OR basename LIKE '%hidden%'
|
|
|
|
OR basename LIKE '%Installer%'
|
|
|
|
OR basename LIKE '%mono%'
|
|
|
|
OR basename LIKE '%secret%'
|
|
|
|
OR basename LIKE '%sql%'
|
|
|
|
OR basename LIKE '%guard%'
|
|
|
|
OR basename LIKE 'cg%'
|
2022-09-24 15:12:23 +00:00
|
|
|
) -- exceptions go here
|
|
|
|
AND basename NOT IN (
|
2022-10-13 18:59:32 +00:00
|
|
|
'..',
|
|
|
|
'.',
|
|
|
|
'.background',
|
|
|
|
'.disk_label_2x',
|
|
|
|
'.disk_label',
|
|
|
|
'.DS_Store',
|
|
|
|
'.iotest',
|
|
|
|
'.file-revisions-by-id',
|
|
|
|
'.file',
|
|
|
|
'.metadata_never_index_unless_rootfs',
|
|
|
|
'.shortcut-targets-by-id',
|
|
|
|
'.TemporaryItems',
|
|
|
|
'.Trashes',
|
|
|
|
'._Id.txt',
|
|
|
|
'.vol',
|
|
|
|
'.apdisk',
|
|
|
|
'._.Trashes',
|
|
|
|
'._.TemporaryItems',
|
|
|
|
'._.apdisk',
|
|
|
|
'.VolumeIcon.icns'
|
2022-09-24 15:12:23 +00:00
|
|
|
)
|
|
|
|
AND authority NOT IN (
|
2022-10-13 18:59:32 +00:00
|
|
|
'Developer ID Application: Google LLC (EQHXZ8M8AV)'
|
2022-09-24 15:12:23 +00:00
|
|
|
) -- Unsigned programs here
|
|
|
|
AND trimpath NOT IN (
|
2022-10-13 18:59:32 +00:00
|
|
|
'/Volumes/Google Chrome/.keystone_install',
|
|
|
|
'/Volumes/Google Chrome Canary/.keystone_install',
|
|
|
|
'/Volumes/Jabra Direct Setup/JabraDirectSetup.pkg'
|
2022-09-24 15:12:23 +00:00
|
|
|
)
|