背景
在网络安全威胁日益复杂的背景下,入侵溯源需要高效获取系统底层数据并进行关联分析。osquery作为一款跨平台(支持 Linux/macOS/Windows)的轻量级系统监控工具,通过模拟 SQL 数据库的查询语法,将操作系统的进程、文件、网络、注册表等元数据抽象为可查询的表格(如processes表对应进程信息、file表对应文件属性),允许安全人员以标准化方式快速提取关键证据,成为入侵事件响应中 “数据采集 - 特征匹配 - 痕迹定位” 的核心工具。
其核心优势在于:
- 细粒度数据访问:直接查询内核级信息(如内存映射、文件 inode、网络连接状态),无需依赖日志解析;
- 实时性与灵活性:支持交互式查询(osqueryi命令行)和定时任务(osquery.conf配置),满足应急响应的即时分析与持续监控需求;
- 跨平台一致性:通过统一的 SQL 语法覆盖不同操作系统的检测逻辑,降低多环境溯源的技术成本,不用担心脚本无法在不同的系统上执行。
实战
在入侵场景中,osquery作为一款基于SQL的系统监控工具,可通过查询操作系统元数据实现高效溯源。以下是典型场景及对应命令:
一、进程异常行为检测
非特权用户运行高风险程序
场景解释:普通用户(UID≠0)直接调用sudo/su等权限提升工具,或执行/bin/bash/python等高危程序,可能是攻击者尝试提权或运行恶意脚本。
检测目标:通过进程名称和命令行路径,识别非特权用户的异常操作。
SQL逻辑:筛选UID非0的进程,匹配危险程序名称(如sudo)或包含/bin和/sbin的命令行(系统关键目录)。
SELECT pid, uid, username, name, cmdline
FROM processes
WHERE uid != 0
AND (name IN ('sudo', 'su', 'bash', 'sh', 'python', 'perl')
OR cmdline LIKE '%/bin/%'
OR cmdline LIKE '%/sbin/%');
近期新建的异常进程(过去5分钟)
场景解释:短时间内大量新建进程可能是恶意软件(如挖矿程序、木马)启动的特征。
检测目标:捕获最新启动的进程,结合cmdline分析是否为合法程序。
SQL逻辑:通过start_time时间戳筛选5分钟内创建的进程,获取进程路径和启动参数。
SELECT pid, name, cmdline, cwd, start_time
FROM processes
WHERE start_time > strftime('%s', 'now', '-5 minutes');
二、网络连接与端口监控
外部IP连接(排除内网段)
场景解释:恶意外联(如C2通信)通常连接公网IP,排除内网段(10.、192.168.等)可聚焦可疑外部连接。
检测目标:发现未经授权的对外网络连接,定位与攻击者控制服务器的通信。
SQL逻辑:使用正则表达式排除本地回环(127.)和私有IP段,筛选process_open_sockets 表中的远程地址。
SELECT pid