C/C++ 实现切片免杀的思路
今天突然想到了一个好玩的免杀思路,原理就是想办法切断磁盘特征与内存特征,关于沙盒免杀我寻思着,这样可以将不同的的DLL映射到内存,在内存中他们的特征也是被切断的,在注入器上做判断如果是沙盒则不加载,不是则分别注入三个甚至是更多的DLL,将我们的ShellCode切片力度更细,分配到几百个甚至上千个DLL上面,做成一个链,应该可以,没尝试过,抽空可以试试。
如果我们把粒度变得细致,捕捉特征也会变得异常的麻烦,如果被杀也仅仅只是某一个DLL被杀,我们只需要远程更新一下被杀的DLL即可继续使用,方便的很,一锅端的概率应该极低。
编译这些DLL时,要是能采用不同的编译器编译则会更好一些,例如VC6编译2个,VC7编译一个,VC8编译3个。
1.编写一个脚本,准备好更多的编译器,然后在脚本中取随机数,并随即使用不同版本的编译器进行编译。 2.编写一个脚本,只需要将头部第一个dll名字固定,其他的DLL文件名称全部随机取值,或者是以系统dll随机命名。 3.我们在这几百个DLL中内嵌一些系统DLL的头部信息,或者加入不同的花指令,写的绕一点,足够让分析者通宵了。
上面只是一个思路,完全可以实现,只不过所有的DLL都是在一个进程中的。
我在想,如果能将不同进程之间的DLL进行互通应该效果会更好!
顺着这个思路想了一下,能不能自己写一个进程,然后让自己写的这个程序作为一个桥梁使用,架起一座桥,使不同进程之间的DLL可以互相调用,这样一来,我们的反弹ShellCode就会变得更有趣,跳来跳去很赞,例如UserA.exe中存在一处ShellCode片段,UserB.exe中存在另一处,UserC.exe中也存在,最后都是通过我们的桥连接起来,让所有的分散的DLL链接起来。
单看独立进程中的独立DLL没有任何含义,只有将其链接起来才是一个完整的程序。
这个只是我的一个思路,没有实现,如果有能力就去实现一下,我认为可以实现
社区
活动
资源
关于
腾讯云开发者
扫码关注腾讯云开发者
领取腾讯云代金券
热门产品
热门推荐
更多推荐
Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2024 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有