首页
论坛
课程
招聘
[原创]沙箱Sandboxie v3.40 逆向完整源码
2013-8-14 17:30 99313

[原创]沙箱Sandboxie v3.40 逆向完整源码

2013-8-14 17:30
99313
【前序】
Sandboxie 是土耳其人2006年开发的一个轻量级小型沙箱,至今仍有很多人使用,作者也一直在维护更新。当时国内做沙箱的还没有几家,大概有Comodo、卡巴斯基等大的安全厂商做过内置沙箱,不过功能性偏重不同,用户体验跟sandboxie有很大差距。

我在09年的时候使用过Sandboxie一段时间,感觉做的不错,对其实现非常感兴趣,于是当时花了大量的业余时间进行逆向重写,整个过程耗时1年多。后来由于工作繁忙,此工程不再关注,代码就这样被搁置了三年多。

今天翻翻代码,觉得里面有些东西可拿出来分享,遂发此贴,旨在抛砖引玉。

【正题】
这个沙箱的名字叫:ProteinBox,完全基于Sandboxie v3.40版本调试逆向后重写的工程,完成度90%,可在XP SP3干净环境下运行,被沙箱化的程序的一切行为都限定在沙箱中。


以下是对Sandboxie原理、整体构架的一段总结:


做沙箱不容易,因为要接管的地方太多,文件、注册表重定向只是最基本的,还有窗口、类名、消息、服务、rpc、Token、COM、etc。
在实现过程中需要逆向sandboxie的全部文件:sys、dll、exe,动态调试每个过滤函数的细节。逆向的目的不是抄袭,是为了了解其中的构架,而后再按照自己的思路优化改进重写。以前粗略的总结了sandboxie的原理:

start.exe中有些内容较为有趣.其中解析命令行的部分可以不必看,但有些命令的实现还是值得参考,其中的降权&和驱动通信部分有点儿意思.

EXE中复杂的地方是SbieSvc.exe的通信部分. 绝大都是RPC,这是沙箱模拟系统通信机制,在自己的小沙盘内部实现了进程间的通信.

剩下几个exe诸如SandboxieDcomLaunch.exe / SandboxieRpcSs.exe 内容大同小异.不是关键部分.

至于sbieDll.dll 的文件/注册表/窗口/消息等重定向没什么难度,关键在于细节. 稍微可以借鉴之处在于其对COM部分的处理.

sbiddrv.sys完全可以自己重写. 
object hook + shadow ssdt hook + image/process notify
object hook 主要处理文件/管道等操作 
shadow ssdt hook处理窗口/消息隔离 
image notify 负责sbieDll.dll注入 
process notify负责建立总节点.填充各种信息.
驱动中的Inline hook 引擎很有趣,解析配置文件*.ini部分可以不看.


其实最关键的部分全部在sbieDll.dll中,它几乎接管了被沙箱化程序的所有调用,将需要关注的R3层面的各种函数基本都Hook了,进行各种重定向。

sbieDll.dll 注入到被沙箱化的进程,用到的方式是驱动sbiedrv.sys监控进程创建,在内存中动态感染IAT表的方式实现的,x86,x64通用。此时sbieDll.dll是除了ntdll.dll、kernel32.dll(kernelbase.dll)之后第三个被加载的模块,此时它便开始接管当前进程的各种调用(这部分注入DLL的代码参考工程中ProteinBoxDrv代码)

服务端进程SbieSvc.exe用来模拟rpc通信,这个稍微有些复杂,需要对系统进行RPC交互的各种消息有较为深刻的理解。

驱动sbiddrv.sys干的事情不多,主要用于控制权限、读取配置文件、限制窗口消息等。

这份代码里面将Sandboxie的exe/dll/sys全部逆向重写了一遍,并包含用IDA 5.0逆向后添加过注释的IDB文件,还有零零散散的调试细节和各种测试工程,风格类似于:



最主要的几个工程如下:

Sandboxie_Reserved_sudami.7z 沙箱_Proteibox_1.0.0.1001_sudami.7z
其他技术实现细节请自行围观代码
解压密码:sudami

镜像下载

【公告】【iPhone 13、ipad、iWatch】11月15日中午12:00,看雪·众安 2021 KCTF秋季赛 正式开赛【攻击篇】!!!文末有惊喜~

上传的附件:
收藏
点赞4
打赏
分享
最新回复 (155)
雪    币: 1820
活跃值: 活跃值 (46)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
疯子 活跃值 4 2013-8-14 17:31
2
0
今天是个好日子
雪    币: 177
活跃值: 活跃值 (286)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
viphack 活跃值 4 2013-8-14 17:33
3
0
各大厂商 轮流爆~
雪    币: 4022
活跃值: 活跃值 (680)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
yimingqpa 活跃值 1 2013-8-14 17:36
4
0
这个逆了多长时间?
雪    币: 34
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
蓝色妖女 活跃值 2013-8-14 17:37
5
0
今天的附件肯定是下载不下来的,看雪带宽已经满了
雪    币: 48
活跃值: 活跃值 (393)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Yecate 活跃值 2013-8-14 18:28
6
0
这两天好多有码的
雪    币: 234
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tntaiyu 活跃值 2013-8-14 19:00
7
0
mark , thanks
雪    币: 961
活跃值: 活跃值 (7163)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 活跃值 8 2013-8-14 19:04
8
0
稍等,过会将做个镜像出来。

等有时间,将论坛附件剥离到另一服务器上去。
雪    币: 5513
活跃值: 活跃值 (231)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Protected 活跃值 2013-8-14 19:08
9
0
一个七夕过得怎么让大家都如此的愿意放血呢?
雪    币: 41
活跃值: 活跃值 (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
markro 活跃值 2013-8-14 19:20
10
0
七夕是个好日子。
雪    币: 441
活跃值: 活跃值 (57)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
Sysnap 活跃值 14 2013-8-14 19:23
11
0
感谢分享
雪    币: 81
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Membered 活跃值 2013-8-14 19:26
12
0
大米  ,应该已经没有对于代码的欲望了吧.... 过了当年的激情,想着估计是风轻云淡,想如何好好生活,体会生活....顶顶
雪    币: 819
活跃值: 活跃值 (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zyicai 活跃值 2013-8-14 19:54
13
0
mark , thanks
雪    币: 153
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
努力学习 活跃值 2013-8-14 20:09
14
0
看雪爆发了,真过瘾。
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
化学魔人 活跃值 2013-8-14 20:16
15
0
我之前也写过一个沙箱,因为技术问题好多程序运行不尽如人意,现在有源码参考太好了。
雪    币: 242
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
司中 活跃值 2013-8-14 20:25
16
0
粗略的看了看,这是一份重量级代码,呕心沥血之作,钦佩之至。

这已经等于重新写个新的产品了,楼主的功力不同凡响。
雪    币: 38467
活跃值: 活跃值 (156742)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 活跃值 2013-8-14 20:35
17
0
+1
雪    币: 216
活跃值: 活跃值 (18)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
Naylon 活跃值 2 2013-8-14 20:49
18
0
感谢分享。
雪    币: 92
活跃值: 活跃值 (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
冰壶菩提 活跃值 2013-8-14 21:00
19
0
狂顶大牛,前排留名
雪    币: 766
活跃值: 活跃值 (501)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
莫灰灰 活跃值 9 2013-8-14 21:07
20
0
我靠,今天各路大神集体放血啊。
雪    币: 12
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
少年好学 活跃值 2013-8-14 21:29
21
0
今天是个爆源码的日子
雪    币: 67
活跃值: 活跃值 (11)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
coltor 活跃值 2 2013-8-14 21:35
22
0
mark thanks
雪    币: 253
活跃值: 活跃值 (49)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
AioliaSky 活跃值 1 2013-8-14 21:36
23
0
来学习一下,谢谢了
雪    币: 34
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
蓝色妖女 活跃值 2013-8-14 21:45
24
0
佩服啊.sudami眼中,IDA在手.一切已有码
雪    币: 141
活跃值: 活跃值 (16)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
gotmilk 活跃值 2 2013-8-14 21:56
25
0
大牛今天都爆发了 对我们这些菜鸟来说真是太有价值了 多谢大牛、。
游客
登录 | 注册 方可回帖
返回