Windows网络安全现可通过osquery更轻松实现 - Trail of Bits博客
Artem Dinaburg
2016年9月27日
malware, osquery, press-release
今日,Facebook宣布我们工作的成功完成:Windows版osquery正式发布。
“今天我们激动地宣布推出Windows版osquery开发者工具包,安全团队可为其Windows网络构建定制化解决方案……此次移植使您能够统一端点防御,并参与活跃的开源社区以分享经验。”
——《Windows版osquery介绍》
Windows版osquery可与现有osquery舰队管理工具(如doorman)通信,完整支持TLS远程端点与证书验证功能,与Unix版本保持一致。下图为通过现有doorman实例查询Windows机器上所有运行进程的示例。
osquery移植Windows的技术挑战
本次移植面临多项技术挑战,主要包括:
明显的POSIX与Windows差异:
- 路径分隔符由’/‘改为’\’
- 无信号机制
- Unix域套接字被命名管道替代
- 缺少glob()函数,需模拟实现
- 进程模型根本性差异:Windows无fork(),通过抽象工作进程功能解决
- 用户标识由整数uid/gid改为SID、ACL和DACL
- 八进制文件权限模型需重新实现
深层挑战:
- 将osquery守护进程转换为Windows服务,需添加服务控制接口
- 父子进程关系监测:无getppid()等效方法,需监控父进程状态
- Clang/GCC代码在Visual Studio的兼容性问题
- constructor()等函数属性需重新实现
- 标准库函数行为差异(如fopen对目录的操作)
- 依赖库的Windows适配(如用linenoise-ng替代GNU readline)
构建系统复杂性:
- 需适配新操作系统、Windows库、路径结构、编译器选项和C运行时环境
核心功能与表结构实现
osquery表结构(从本地机器检索信息的代码)面临独特挑战。例如:
- 进程表重写:通过创建Windows管理规范(WMI)的通用抽象层,利用现有WMI功能获取运行进程列表
- 该实现为后续开发更多基于WMI系统检测数据的表结构奠定基础
交互式osquery shell(osqueryi)同样支持Windows,可查询运行进程列表和文件加密哈希值。
移植的价值与行业影响
osquery自2014年发布后彻底改变了Ubuntu/CentOS/Linux和Mac OS X环境的安全监控方式,但Windows用户此前只能依赖昂贵的商业解决方案或手工拼凑方案。现在:
- 跨平台特性支持全基础设施复杂操作系统状态监控
- 开源社区可替代专有商业安全监控系统
- 初创公司可直接使用现成数据采集代理(如Kolide.co)
- 预算有限的组织也能获得前所未有的系统安全能力
开始使用osquery
当前Windows版osquery仅通过源代码分发,需自行构建:
- 唯一前提:Windows 10操作系统
- 所有依赖项和构建工具将在配置过程中自动安装
- 已开放创建Chocolatey软件包的议题以便包管理式安装
需要定制化修改可联系技术团队。
后续技术分享
我们将持续分享应用程序移植Windows的技术细节,请通过Twitter或RSS订阅博客更新。
欢迎在Twitter、LinkedIn、GitHub、Mastodon和Hacker News分享本文
页面导航
如何移植osquery至Windows | 移植的价值 | 端点安全市场的变革? | 开始使用osquery | 了解更多应用程序移植技术
近期文章
非传统创新者奖学金 | 多代理系统劫持技术 | 构建MCP所需安全层 | 废弃硬件中的零日漏洞利用 | EthCC[8]智能合约审计指南
© 2025 Trail of Bits.
基于Hugo和Mainroad主题生成