Windows网络安全因osquery变得更简单
今日,Facebook宣布完成我们的工作成果:Windows版osquery正式发布。
“我们兴奋地宣布推出Windows版osquery开发者工具包,安全团队可借此为其Windows网络构建定制化解决方案…此次移植使您能够统一端点防御,并加入活跃的开源社区分享经验。”——引自《Windows版osquery介绍》
Windows版osquery可与现有osquery舰队管理工具(如doorman)通信,完整支持TLS远程端点与证书验证功能,与Unix版本保持一致。下图为通过现有doorman实例查询Windows机器上所有运行进程的示例。
如何将osquery移植到Windows
此次移植面临多项技术挑战,包括:
明显的POSIX与Windows差异:
- 路径分隔符由“/”改为“\”
- 无信号机制
- Unix域套接字变为命名管道
- 无glob()函数,需模拟功能
- 进程模型差异:Windows无fork(),通过抽象工作进程功能解决
- 权限系统改用SID、ACL和DACL替代整数uid/gid
- 重新实现八进制文件权限模型
深层挑战:
- osquery作为守护进程需适配Windows服务接口,通过服务控制管理器启动
- 添加服务功能并提供注册/移除脚本
- 父子进程关系监测:无getppid()等效方法,需监控父进程状态与关闭事件
意外难题:
- Clang/GCC代码无法直接在Visual Studio编译
- 重构__constructor__()等函数属性
- 标准库函数行为差异(如fopen在Windows无法读取目录)
- 确保所有依赖库兼容Windows,修复漏洞并替换组件(如用linenoise-ng替代GNU readline)
构建系统需适配新操作系统、Windows库、路径、编译器选项及C运行时环境。
核心功能与表实现
osquery表(用于从本地机器检索信息的代码)面临独特挑战。例如:
- 进程表需在Windows重写,通过抽象Windows管理规范(WMI)接口,利用现有WMI功能获取运行进程列表
- 该方法为未来基于WMI的系统检测数据表开发奠定基础
交互式osquery shell(osqueryi)同样支持Windows,可查询运行进程列表及文件加密哈希值。
移植的价值
自2014年Facebook发布osquery以来,这款开源端点安全工具允许组织将基础设施视为数据库,通过类SQL语句查询操作系统信息,为事件响应、系统诊断与安全基线检查提供核心价值。
此前Windows用户需手动拼凑解决方案或购买昂贵商业产品,面临供应商依赖、数据泄露风险与潜在代理漏洞。如今,跨平台osquery使开源社区可替代私有商业安全系统。
对端点安全市场的影响
由于osquery支持三大桌面/服务器平台,开源方案有望取代封闭商业监控系统。网络管理员可统一监控混合基础设施状态,初创公司(如Kolide.co)无需从头开发数据采集代理,预算有限的组织也能获得前所未有的安全能力。
开始使用osquery
Windows版osquery仅通过源代码分发,需自行构建。目前仅支持Windows 10系统,所有依赖项和构建工具将在配置过程中自动安装。社区正在推进Chocolatey包开发以简化安装。
如需定制化修改代码,可联系专业团队。
了解更多移植技术
我们将持续分享osquery移植至Windows的技术细节。通过Twitter或RSS订阅博客获取最新动态。
欢迎通过Twitter、LinkedIn、GitHub、Mastodon或Hacker News分享本文内容。