免杀对抗-C2远控篇&C&C++&DLL注入&过内存核晶&镂空新增&白加黑链&签名程序劫持

Ethan医生1天前系统安全8


#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)系统目录

316位系统目录

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)

image.png

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文件夹中


标签: C2远控

相关文章

免杀对抗-C2远控篇&C&C++&APC注入&进程镂空&傀儡进程&伪装欺骗&指纹特征消除

➢ C2远控-红队技能-进程镂空&傀儡进程➢ C2远控-红队技能-APC注入&进程欺骗#C2远控-ShellCode-认知&环境1.创建工程时关闭SDL检查...

C2远控篇&C&C++&ShellCode混淆加密&干扰识别&抗沙盒&防调试&组合加载

#C2远控-ShellCode-认知&环境1.创建工程时关闭SDL检查2.属性->C/C++->代码生成->运行库->多线程 (/MT)如果是debug则设置成MTD3...

免杀对抗-C2远控篇&C&C++&抗沙箱虚拟机&抗逆向调试&动态密钥抗分析&对抗VT云感知

对抗杀毒和感知云沙箱常见沙盒沙箱检测技术常见调试分析检测技术https://github.com/a0rtega/pafish/https://github.com/Arvanaghi/CheckPl...

免杀对抗-C2远控篇&PowerShell&有无文件落地&C#参数调用&绕AMSI&ETW&去混淆特征

#C2远控-ShellCode-认知&环境1.创建工程时关闭SDL检查2.属性->C/C++->代码生成->运行库->多线程 (/MT)如果是debug则设置成MTD3...

免杀对抗-C2远控篇&C&C++&InlineHook挂钩&动态API调用&突破内存加密&导入表检测

➢ C2远控-Loader加载器-动态API➢ C2远控-Loader加载器-InlineHook➢ C2远控-DF-动态调用&InlineHook&混淆...

C2远控篇&C&C++&ShellCode定性分析&生成提取&Loader加载模式&编译执行

➢ C2远控-ShellCode-认知&环境➢ C2远控-ShellCode-分析&提取➢ C2远控-ShellCode-Loader加载#常见杀软特点总...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。