从进程隔离到系统虚拟化:Sandboxie技术原理与场景适配深度分析
【免费下载链接】Sandboxie Sandboxie Plus & Classic 项目地址: https://gitcode.com/gh_mirrors/sa/Sandboxie
引言
在当今数字化时代,随着互联网的快速发展,恶意软件和网络威胁日益增多,保护计算机系统安全变得尤为重要。Sandboxie作为一款基于沙箱的隔离软件,为Windows NT操作系统提供了安全的运行环境,使得应用程序可以在不永久修改本地和映射驱动器或Windows注册表的情况下运行或安装。本文将深入探讨Sandboxie的技术原理、架构组成以及在不同场景下的适配应用。
Sandboxie概述
Sandboxie是一款用于Windows NT系列操作系统的沙箱隔离软件,它创建了一个安全的操作环境,允许在其中运行或安装应用程序,而不会永久修改本地和映射的驱动器或Windows注册表。隔离的虚拟环境允许对不受信任的程序和网页浏览进行受控测试。
Sandboxie允许创建几乎无限的沙箱,并单独或同时运行它们,以将程序与主机和彼此隔离,同时还允许在单个沙箱中同时运行任意数量的程序。
Sandboxie有两个版本可供选择,Plus和Classic。它们共享相同的核心组件,这意味着它们具有相同级别的安全性和兼容性。不同之处在于用户界面中功能的可用性。
Sandboxie Plus特性
Sandboxie Plus具有现代的基于Qt的UI,支持自项目开源以来添加的所有新功能:
- 快照管理器 - 复制任何沙箱,以便在需要时恢复
- 维护菜单 - 允许在需要时卸载/安装/启动/停止Sandboxie驱动程序和服务
- 便携模式 - 可以运行安装程序并选择将所有文件提取到目录
- 其他UI选项,用于阻止对打印机后台处理程序和剪贴板等Windows组件的访问
- 更多自定义选项,用于启动/运行和网络访问限制
- 隐私模式沙箱,保护用户数据免受非法访问
- 安全增强型沙箱,限制系统调用和端点的可用性
- 全局热键,用于暂停或终止所有沙箱进程
- 每个沙箱的网络访问控制,支持Windows过滤平台(WFP)
- 可以使用快捷键Ctrl+F搜索沙箱列表
- 全局设置和沙箱选项的搜索功能
- 能够将沙箱导入/导出到7z文件和从7z文件导出
- 将沙箱集成到Windows开始菜单
- 浏览器兼容性向导,为不受支持的浏览器创建模板
- 复古视图模式,重现Sandboxie Control的图形外观
- 故障排除向导,帮助用户解决问题
- 附加组件管理器,通过其他组件扩展或添加功能
- 保护沙箱免受主机攻击,包括防止截图
- 触发器系统,当沙箱经历不同阶段(如初始化、沙箱启动、终止或文件恢复)时执行操作
- 使进程不被沙箱化,但其子进程被沙箱化
- 沙箱作为控制单元,强制程序自动使用SOCKS5代理
- 具有沙箱控制粒度的DNS解析控制
- 限制沙箱中的进程数量和它们可以占用的总内存空间,并且可以限制每个沙箱的沙箱进程总数
- 与Sandboxie的开源前版本完全不同的令牌创建机制使沙箱在系统中更加独立
- 加密沙箱 - 基于AES的可靠数据存储解决方案
- 防止沙箱程序以正常方式生成不必要的唯一标识符
Sandboxie Classic特性
Sandboxie Classic具有旧的不再开发的基于MFC的UI,因此它缺乏对Plus功能的原生界面支持。尽管某些缺少的功能可以在Sandboxie.ini配置文件中手动配置,甚至可以用自定义脚本替换,但不建议想要探索最新安全选项的用户使用Classic版本。
Sandboxie技术原理
整体架构
Sandboxie的核心架构由驱动程序(SbieDrv)、服务(SbieSvc)和注入DLL(SbieDll)组成。
- 驱动程序(SbieDrv):负责核心的系统级隔离和资源重定向。
- 服务(SbieSvc):作为用户态和内核态之间的桥梁,协调沙箱的创建和管理。
- 注入DLL(SbieDll):注入到每个沙箱进程中,拦截系统调用并实现沙箱隔离逻辑。
核心技术原理
进程隔离
Sandboxie通过创建隔离的进程环境来实现应用程序的隔离运行。当一个程序在Sandboxie中启动时,它会被分配一个独立的沙箱空间,该空间包含了程序运行所需的虚拟文件系统、注册表和其他系统资源。
文件系统重定向
Sandboxie使用文件系统重定向技术,将程序对系统文件和注册表的访问重定向到沙箱内部的虚拟存储区域。这样,程序的所有修改操作都局限于沙箱内部,不会影响真实的系统环境。
相关源码:core/drv/file.c
注册表虚拟化
除了文件系统重定向外,Sandboxie还实现了注册表虚拟化。当程序尝试修改注册表时,Sandboxie会拦截这些操作,并将修改内容存储在沙箱内部的虚拟注册表中,从而保护真实的系统注册表。
相关源码:core/drv/key.c
系统调用拦截
Sandboxie通过拦截进程的系统调用来实现对程序行为的监控和控制。它可以阻止恶意程序执行危险的系统调用,从而提高系统的安全性。
相关源码:core/drv/syscall.c
Sandboxie架构组成
核心组件
Sandboxie的核心组件包括驱动程序(SbieDrv)、服务(SbieSvc)和注入DLL(SbieDll)。
- SbieDrv:Sandboxie驱动程序,负责在内核级别实现进程隔离和资源重定向。
- SbieSvc:Sandboxie服务,管理沙箱的创建、销毁和配置。
- SbieDll:注入到沙箱进程中的动态链接库,实现API拦截和沙箱逻辑。
辅助工具
- KmdUtil:install/kmdutil。它构建KmdUtil.exe,用于安装过程中,例如启动/停止Sbie驱动程序(SbieDrv.sys)。
- LowLevel:core/low。它创建LowLevel.dll,用于代码注入。LowLevel.dll作为资源嵌入到SbieSvc.exe中(有关更多信息,请参见core\svc\lowlevel.rc)。
- Parse:msgs。它创建Sbie消息文件。
- SbieIni:apps/ini。它创建SbieIni.exe,一个用于查询和更新sandboxie.ini配置文件的实用程序。
用户界面
- SandMan:SandboxiePlus/SandMan。Sandboxie Plus的主要用户界面,提供沙箱管理、配置和监控功能。
场景适配分析
安全浏览
Sandboxie为网页浏览提供了安全的环境。通过在沙箱中运行浏览器,即使访问了恶意网站,恶意软件也被限制在沙箱内,无法感染真实的系统环境。用户可以放心地浏览各种网站,而不必担心系统受到威胁。
软件测试
开发人员和测试人员可以使用Sandboxie在隔离的环境中测试新软件。这样可以避免测试过程中对系统造成的意外修改和损坏,同时也可以快速清理测试环境,提高测试效率。
恶意软件分析
安全研究人员可以利用Sandboxie来分析恶意软件的行为。在沙箱中运行恶意软件,可以安全地观察其行为特征,如文件操作、网络通信和系统调用等,从而深入了解恶意软件的工作原理和攻击方式。
隐私保护
Sandboxie的隐私模式沙箱可以保护用户数据免受非法访问。在隐私模式下,沙箱中的程序无法访问用户的真实个人数据,从而保护用户的隐私安全。
Sandboxie构建与安装
构建环境准备
Sandboxie Plus在Visual Studio 2019下构建,因为它提供了最广泛的兼容性范围,允许构建适用于Windows 7至Windows 11的驱动程序。
构建Sandboxie需要以下工具和组件:
- Visual Studio 2019(带有Desktop development with C++组件)
- Windows Driver Kit (WDK) for Windows 10, version 2004 (10.0.19041)
- Qt Framework(5.15.15或6.3.x,根据目标平台选择)
- Visual Studio Qt扩展
构建步骤
- 安装Visual Studio 2019及所需组件,包括Windows 10 SDK 10.0.19041和MFC组件。
- 安装Windows Driver Kit (WDK) for Windows 10, version 2004。
- 安装Qt Framework及相应的Visual Studio扩展。
- 打开Sandbox.sln,构建Sandboxie Classic核心组件。
- 打开Sandboxie-Plus.sln,构建Sandboxie Plus的SandMan UI。
- 组合构建结果,完成Sandboxie Plus的构建。
测试与运行
由于大多数开发人员可能由于缺乏EV代码签名证书而无法对驱动程序进行签名,因此可以通过在提升的命令提示符中输入"bcdedit /set testsigning on"并重启,将Windows设置为测试模式运行。重启后,可以启动SandMan UI,并使用维护菜单一键安装所有组件、启动并连接它们。
总结与展望
Sandboxie作为一款优秀的沙箱隔离软件,通过进程隔离、文件系统重定向、注册表虚拟化和系统调用拦截等核心技术,为Windows用户提供了安全可靠的应用程序运行环境。其独特的架构设计和丰富的功能使其在安全浏览、软件测试、恶意软件分析等场景中发挥着重要作用。
随着技术的不断发展,Sandboxie也在不断演进。未来,我们可以期待Sandboxie在性能优化、兼容性提升和新功能添加等方面取得更大的进步,为用户提供更加安全、便捷的使用体验。
参考资料
【免费下载链接】Sandboxie Sandboxie Plus & Classic 项目地址: https://gitcode.com/gh_mirrors/sa/Sandboxie
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




