【僵尸申请复活】【已通过】一次源码免杀 - 重在思路

2022-03-06 17:15:19 19 13873 6

现在的shellcode分离免杀,远程内存加载已经很流行也比较实用了,基本被杀了改改又可以过,吹个水强行融入一下,我并不会,本篇分享下最近的一次免杀的思路,主要是思路,遇到一个点如何去对下一步进行处理。


-----------------------------------------------------------------------------------------------------------------------------
用到的工具:
1. VC6.0++
2. 一款源码控
3. 辅助工具包
正文:

很久没发文章 可能排版有点问题 包容包容。
一个老款的控,先看下界面和简单的目录结构


update目录下文件


主要对dat和dll文件进行处理,载入Resource看了下资源信息,又看了看dat主程序代码,不是资源释放的dll,而是通过dll加载到dat完成的生成小马流程。
不用分开单独做,一个一个杀软去做就行了

火绒

server.dat:
爆后门病毒,myccl特征码定位
[特征] 0002E070_00000002
载入C32发现定位到没用的日志处

对源码进行区段合并预处理,vc编译模式简单设置一下并取消产生日志编译模式
#pragma comment(linker, "/defaultlib:msvcrt.lib /opt:nowin98 /IGNORE:4078  /MERGE:.rdata=.text /MERGE:.data=.text /section:.text,ERW")


组建编译,检测还是爆后门病毒,觉得不应该,重新myccl定位了一遍,这才定位到点上了
[特征] 00020D6E_00000002        GetModuleHandleA        wsprintfA
[特征] 00020DC4_00000004        无法确认定位的内容

函数在vc6中搜索挨个动态调用

00020DC4此处无法修改,通过对第一处定位的函数动态调用 组建后重新载入C32中,得到真正的特征函数VirtualAlloc、VirtualProtect
动态调用即可过掉火绒。

server.dll:
隐藏字符串就过了
[特征] 0001B0BB_00000002                HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0
[特征] 0001B355_00000002                %s%s*.*



-------------------------------------------------------------------------------------------------------------



360 QVM + 鲲鹏
server.dat:
鲲鹏不杀,QVM报07
经测试PETools填空
.rsrc资源段免杀
将资源信息删几个,对主程序文件MainFunc主函数代码块加入异常处理语句
try
{
    if(1+1==2)throw 19;
}
catch (...)
{
    代码块
}


组建 还是爆QVM07,Petools再次填充
.rsrc区段,免杀,直接给资源文件Loader.rc删了
有些远控这么大动作会上不了线,注意测试上线

过掉本地QVM



server.dll:
鲲鹏先暴了恶意软件病毒
[特征] 0001C60F_00000002      
C32跟进,定位在最下方空白处,填充空白可以免杀但有时也不行,怀疑是资源信息干扰了特征码的判断

删掉资源文件Script1.rc,组建出错了不能删,还原了下代码
对主程序文件预编译合并区段,不杀了,但是程序报错无法正常上线,鼓捣了一会编译模式再次定位,还是在空白处。
对dll文件主函数DllMain内所有函数进行动态调用,被杀—定位—还在空白处,尝试添加资源,加了一堆 程序直接无法生成

删掉一些资源只留了icon和versions,组建,报QVM27,什么羁绊,全给资源信息删掉,免杀了
值得一提的是,测免杀不要一直在一个目录测,名称也不要一直是一样的。

鲲鹏不杀后QVM也没动静了


生成小马测试上线,被杀了

对小马定位
[特征] 0002141D_00000024        kernel32.dll                dll主程序开头延时加载
生成小马还是被杀,Petools填充小马的.rsrc区段免杀了,上线也没问题。。
但是在源码里将DLL工程中的Script1.rc文件删掉就出错了,很头大,重新载入myccl定位,进入死循环,鼓捣了一小会,最后换了个版本定位,使用d3填充,可以正常定位了
[特征] 000215E4_00000002        strcmp
[特征] 000215EA_00000004        strcmp
[特征] 000215F6_00000005        MSVCRT.dll
延时加载MSVCRT.dll ,对strcmp动态调用,小马还是被杀
(后面才知道杀软查杀了数据流,也就是上线配置的信息,需要对dll进行加密加载到dat中解密,这个挺麻烦的不会 有师傅会的吗教教)

--------------------------------------------------------------------------------------------------------------


云引擎
server.dat:
针对云引擎的特征码定位听着像是扯淡,其实也是看一点RP,像这里云引擎对dat爆QVM07,定位的时候只处理07的文件就好了
定位出的内存地址:00421B09

载入OD,上下移位没发现什么可以利用的字符,省事了直接做脚本免杀
00421B0E  |.  895D FC       mov [local.1],ebx
00421B11  |.  6A 02         push 0x2

对当前位置代码前两行上下位置互换,复制到可执行文件测试,云引擎暴QVM19,07处理完成,测试正常上线


虚拟机被感染的感觉不继续弄了,QVM19剩下的可以加壳改个壳,pe头处理,加减资源改md5等等很好弄了。

技术谈不上,感觉过程中的细节挺好的 发出来现个丑,望转正

关于作者

xiaochen8篇文章151篇回复

清华学院

评论19次

要评论?请先  登录  或  注册