逃出Chrome沙盒——反Hook技术

本文详细介绍了作者如何逐步研究并尝试跳出Chrome沙盒的历程,通过阅读源代码、试验不同技术,最终找到利用gdi32::escape API作为搬运工,实现用户空间与系统空间的通信,成功绕过Chrome的限制。尽管过程中发现了Chrome的安全弱点,但作者强调这仅是为了个人学习,不会对Chrome的安全性构成威胁。
摘要由CSDN通过智能技术生成

我下面所讲的沙盒是指在Windows上构造一个和外界绝缘的空间来禁止用户行为的一种技术手段。在沙盒中的进程不能通过标准的Windows APIs读写文件,也不能通过socket等通信方式于其他进程进行信息交流,导致沙盒外面的信息进入不了,沙盒内的信息出不去。

我既不从事软件安全,也不从事什么黑客技术的研究,所以我在很长一段时间里不知道何为Sandbox,更别提如何跳出它。直到两三周之前,我想从Chrome中fprintf一些信息,却发现没有任何结果,所以就我开始踏上跳出沙盒之旅。

跳出沙盒阶段1 —— 阅读Chrome source code

我在github上找到了Chrome的source code,看到它对Nt读写函数进行了Hook,除此之外没有发现其他限制行为了,我暗想Chrome的安全做的太差了吧(但后来证实我想错了,难道Chrome有未开源的代码?)。我没有细读Chrome Hook的代码,我想通过测试代码更快的知道它的工作原理。

跳出沙盒阶段2 —— 试验

1)如果Chrome的Hook只是修改了输入地址表,那么这种技术有一个无法克服的缺陷。因为该Hook只是替换了函数地址,而Hook程序段是在全局变量构造的时候被执行的,这在程序的生命周期看来已经是后面的事情了,我们可以在全局变量被执行之前植入DLL来记住被Hook的原始地址,也就是记住读写文件的NT函数的地址,下次用这些地址进行读写。但是我的测试代码并没有通过,Chrome显然没有使用这个技术。

2)如果它是修改了函数入口的指令,那么我可以载入一个新的ntdll_new.dll,利用这个DLL直接跳转到Kernel,这样就可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值