免杀对抗-C2远控篇&C&C++&DLL注入&过内存核晶&镂空新增&白加黑链&签名程序劫持
#C2远控-ShellCode-认知&环境
1.创建工程时关闭SDL检查
2.属性->C/C++->代码生成->运行库->多线程 (/MT)如果是debug则设置成MTD
3.属性->C/C++->代码生成->禁用安全检查GS
4.关闭生成清单 属性->链接器->清单文件->生成清单 选择否
#C2远控-ShellCode-分析&提取
ShellCode的本质其实就是一段可以自主运行的代码。
它没有任何文件结构,它不依赖任何编译环境,无法像exe一样双击运行,
因此需要通过控制程序流程跳转到shellcode地址加载上去执行shellcode。
目的:杀毒和感知平台如何定性
分析:OD&xdb&ida
提取:010Editor
加载:各种Loader方法执行
流程:ShellCode->Loader->EXE
思路:
1、Shellcode自写打乱-让杀毒不认识
2、Shellcode加密混淆-让杀毒不知道
3、Shellcode分离隐藏-让杀毒找不到
4、Shellcode注入回调-让杀毒绕圈圈
内存免杀是将shellcode直接加载进内存,由于没有文件落地,因此可以绕过文件扫描策略的查杀。为了使内存免杀的效果更好,在申请内存时一般采用渐进式申请一块可读写内存,在运行时改为可执行,在执行的时候遵循分离免杀的思想。分离免杀包含对特征和行为的分离两个维度,把shellcode从放在程序转移到加载进内存,把整块的ShellCode通过分块传输的方法上传然后再拼接,这些体现了基本的"分离"思想。
补充:
编辑器设置 VS
https://mp.weixin.qq.com/s/UJlVvagNjmy9E-B-XjBHyw
编译器差异 G++ GCC
https://blog.csdn.net/weixin_41012767/article/details/129365597
突破内存扫描
项目参考:https://github.com/wangfly-me/LoaderFly
360开启核晶(Vmware)
https://blog.csdn.net/fishfishfishman/article/details/134156418
第一种:用系统白名单rundll32-执行DLL加载
第二种:用白名单程序加载的DLL-再加DLL文件
第三种:用白名单程序加载的DLL-更改DLL加载
第四种:用白名单进程加载的DLL-镂空DLL加载
Windows XP SP2的系统以上DLL文件加载的搜索顺序如下:
(1)可执行程序加载的目录
(2)系统目录
(3)16位系统目录
(4)Windows目录
(5)运行某文件的所在目录
(6)路径环境变量中列出的目录
➢C2远控-DLL注入-白加黑-调用执行&新增镂空
#调用执行
rundll32 xxx.dll xxxx
#新增镂空
模块镂空(dll hollowing)也是一种shellcode注入技术,原理和思路与process hollowing类似,通过合法的模块信息来伪装恶意代码,虽然我们可以用远程dll注入来完整注入整个恶意dll,但此类注入往往比较容易检测,我们需要往受害者主机上传入一个恶意dll,这样杀毒软件可以通过监控入windows/temp/等目录实现对远程dll注入的拦截,而模块镂空就不会存在这样的风险,因为我们镂空的往往是一个带有微软签名的dll,为了防止进程出错,我们并不能直接镂空一个进程空间中已存在的dll,需要先对目标进程远程注入一个系统合法dll,然后再镂空它,这样我们就获得了一个和windows模块相关联的shellcode环境
➢C2远控-DLL劫持-白加黑-再加DLL&更改DLL
#再加DLL:
1、筛选程序加载DLL(ProcessMonitor)
2、编译生成恶意DLL
2、Study_PE类工具添加导入
#更改DLL:(第一步筛选程序加载DLL)
1、筛选程序加载DLL(ProcessMonitor)
Process Name is <xxx.exe> ——
这就是我们自定义的白文件了,要看哪个文件就换成哪个就可以
Results contains "SUCCESS" ——
这是我们容易进行dll劫持的关键,"SUCCESS"是存在dll加载成功的情况表明exe确实去加载了这个dll,所以我们凭借此来做黑dll让它加载;
Path contains "dll" ——
就是说我们的目标是dll,其他乱七八糟的后缀我们不需要,就过滤掉;
2、获取目标DLL的主导函数及位数(VS自带dumpbin) ---大的公司无法直接新增加载DLL
https://zhuanlan.zhihu.com/p/640045731
获取执行函数:dumpbin /exports "D:\Program Files (x86)\Tencent\QQ\Bin\TaskTray.dll"
获取执行位数:dumpbin /headers "D:\Program Files (x86)\Tencent\QQ\Bin\TaskTray.dll"
3、利用分离项目生成图片Shellcode
https://github.com/Mr-Un1k0d3r/DKMC
python2 dkmc.py
gen
set shellcode xxxx
run
4、拓展如何找到白名单的DLL劫持
白程序DLL劫持的挖掘
一键挖掘磁盘下可dll劫持的白程序
https://github.com/dragoneeg/bDLL
用的时候把tools加入环境变量就ok
该脚本会遍历文件夹下所有的EXE,所收集的微软DLL进行对比,
如果包含非微软DLL,就将EXE信息和Payload生成到Payload文件夹中