Deploys and configures osquery for SQL-based endpoint monitoring of processes, open ports, installed software, and system configs on Windows, macOS, Linux. For fleet visibility, threat hunting, and compliance.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
在以下情况下使用本技能:
Deploys and configures osquery across Linux, Windows, macOS for SQL-based endpoint monitoring of processes, ports, software, and config. For threat hunting, fleet visibility, compliance checks.
Deploys and configures osquery across Linux, Windows, macOS for SQL-based endpoint monitoring of processes, ports, software, and system config. For threat hunting, fleet visibility, compliance.
Deploys osquery scheduled queries for endpoint monitoring of processes, network connections, file integrity, and persistence mechanisms. Generates osquery.conf, configures logging, analyzes results for suspicious processes, unauthorized ports, and file changes.
Share bugs, ideas, or general feedback.
在以下情况下使用本技能:
不适用于实时告警(osquery 是周期性/按需查询;实时检测请使用 EDR)。
# Ubuntu/Debian
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $OSQUERY_KEY
add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
apt-get update && apt-get install osquery -y
# Windows(MSI)
# 从 https://osquery.io/downloads/official 下载
msiexec /i osquery-5.12.1.msi /quiet
# macOS
brew install osquery
// /etc/osquery/osquery.conf(Linux/macOS)或 C:\ProgramData\osquery\osquery.conf
{
"options": {
"config_plugin": "filesystem",
"logger_plugin": "filesystem",
"logger_path": "/var/log/osquery",
"disable_logging": "false",
"schedule_splay_percent": "10",
"events_expiry": "3600",
"verbose": "false",
"worker_threads": "2",
"enable_monitor": "true",
"disable_events": "false",
"disable_audit": "false",
"audit_allow_config": "true",
"host_identifier": "hostname",
"enable_syslog": "true"
},
"schedule": {
"process_monitor": {
"query": "SELECT pid, name, path, cmdline, uid, parent FROM processes WHERE on_disk = 0;",
"interval": 300,
"description": "检测无磁盘二进制文件运行的进程(无文件恶意软件)"
},
"listening_ports": {
"query": "SELECT DISTINCT p.name, p.path, lp.port, lp.protocol, lp.address FROM listening_ports lp JOIN processes p ON lp.pid = p.pid WHERE lp.port != 0;",
"interval": 600,
"description": "监控监听的网络端口"
},
"persistence_check": {
"query": "SELECT name, path, source FROM startup_items;",
"interval": 3600,
"description": "监控持久化机制"
},
"installed_packages": {
"query": "SELECT name, version, source FROM deb_packages;",
"interval": 86400,
"description": "每日软件清单"
},
"users_and_groups": {
"query": "SELECT u.username, u.uid, u.gid, u.shell, u.directory FROM users u WHERE u.uid >= 1000;",
"interval": 3600
},
"crontab_monitor": {
"query": "SELECT * FROM crontab;",
"interval": 3600,
"description": "监控计划任务"
},
"suid_binaries": {
"query": "SELECT path, username, permissions FROM suid_bin;",
"interval": 86400,
"description": "检测 SUID 二进制文件"
}
},
"packs": {
"incident-response": "/usr/share/osquery/packs/incident-response.conf",
"ossec-rootkit": "/usr/share/osquery/packs/ossec-rootkit.conf",
"vuln-management": "/usr/share/osquery/packs/vuln-management.conf"
}
}
-- 检测无磁盘二进制文件运行的进程(潜在的无文件恶意软件)
SELECT pid, name, path, cmdline FROM processes WHERE on_disk = 0;
-- 查找与已知服务无关的监听端口
SELECT lp.port, lp.protocol, p.name, p.path
FROM listening_ports lp JOIN processes p ON lp.pid = p.pid
WHERE lp.port NOT IN (22, 80, 443, 3306, 5432);
-- 检测未经授权的 SSH 密钥
SELECT * FROM authorized_keys WHERE NOT key LIKE '%admin-team%';
-- 查找最近修改的系统二进制文件
SELECT path, mtime, size FROM file
WHERE path LIKE '/usr/bin/%' AND mtime > (strftime('%s', 'now') - 86400);
-- 检测连接到外部 IP 的进程
SELECT DISTINCT p.name, p.path, pn.remote_address, pn.remote_port
FROM process_open_sockets pn JOIN processes p ON pn.pid = p.pid
WHERE pn.remote_address NOT LIKE '10.%'
AND pn.remote_address NOT LIKE '172.16.%'
AND pn.remote_address NOT LIKE '192.168.%'
AND pn.remote_address != '127.0.0.1'
AND pn.remote_address != '0.0.0.0';
-- Windows:检测运行中的未签名可执行文件
SELECT p.name, p.path, a.result AS signature_status
FROM processes p JOIN authenticode a ON p.path = a.path
WHERE a.result != 'trusted';
# FleetDM 提供集中化的 osquery 管理
# 部署 FleetDM 服务器,配置代理向其上报
# 代理使用 TLS 注册并从 Fleet 获取配置
# 代理连接 Fleet 的配置:
# --tls_hostname=fleet.corp.com
# --tls_server_certs=/etc/osquery/fleet.pem
# --enroll_secret_path=/etc/osquery/enroll_secret
| 术语 | 定义 |
|---|---|
| osquery | 开源端点代理,将操作系统状态暴露为可查询的 SQL 数据表 |
| Schedule(计划) | 按定义间隔运行并记录结果的周期性查询 |
| Pack(包) | 为特定使用场景(IR、合规)分组的相关查询集合 |
| FleetDM | 开源 osquery 部署管理平台 |
| 差异结果 | osquery 只记录查询执行之间的变更,减少数据量 |
EXPLAIN 测试查询开销。--disable_events=false 启用。