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没有任何含义,只有将其链接起来才是一个完整的程序。


这个只是我的一个思路,没有实现,如果有能力就去实现一下,我认为可以实现

posted @   lyshark  阅读(1707)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

8951897 | 6896846
博客园 - 开发者的网上家园

点击右上角即可分享
微信分享提示