Unexpected Rsa Keys Mdfind

osquery
Indicative of stored RSA keys just sitting around unencrypted
Author

Chainguard

Published

January 29, 2025

Description

ODK (osquery-defense-kit) is unique in that the queries are designed to be used as part of a production detection & response pipeline. The detection queries are formulated to return zero rows during normal expected behavior, so that they may be configured to generate alerts when rows are returned.

Query

-- Indicative of stored RSA keys just sitting around unencrypted
--
-- tags: persistent state filesystem
-- platform: darwin
SELECT
  file.path,
  file.size,
  datetime(file.btime, 'unixepoch') AS file_created,
  magic.data,
  hash.sha256,
  ea.value AS url
FROM
  mdfind
  JOIN file ON mdfind.path = file.path
  JOIN users u ON file.uid = u.uid
  LEFT JOIN hash ON mdfind.path = hash.path
  LEFT JOIN extended_attributes ea ON mdfind.path = ea.path
  AND ea.key = 'where_from'
  LEFT JOIN magic ON mdfind.path = magic.path
  LEFT JOIN signature ON mdfind.path = signature.path
WHERE
  mdfind.query = "kMDItemFSName == '*.rsa'"
  AND file.filename NOT IN ('local-melange.rsa', 'melange.rsa')
  AND size BETWEEN 128 AND 8192
  -- Don't alert on tokens that begin with the username-, as they may be personal
  AND NOT INSTR(filename, CONCAT (u.username, "-")) == 1
  -- Don't alert on tokens that begin with the users full name and a dash
  AND NOT INSTR(
    filename,
    REPLACE(LOWER(TRIM(description)), " ", "-")
  ) == 1
  -- Common filenames that are non-controversial
  AND NOT file.filename LIKE '%example.com%'
  AND NOT file.filename LIKE 'local-%.rsa'
  AND NOT file.filename LIKE 'test-%.rsa'
  AND NOT file.filename LIKE 'demo-%.rsa'
  AND NOT file.path LIKE "%/testdata/%"
GROUP BY
  file.path

tags: SStagSS

Reference

https://github.com/chainguard-dev/osquery-defense-kit