C2远控篇&Python&ShellCode分离&File提取&Http协议&Argv参数&Sock管道
#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
➢C2远控-ShellCode分离-Python从文本中提取
目录2个文件:xxxx.exe xxx.bin
可升级:混淆加密xxx.bin,读取后进行解密执行
➢C2远控-ShellCode分离-Python从参数中提取
执行:xxxx.exe shellcode
可升级:xxxx.exe shellcode password
➢C2远控-ShellCode分离-Python从网站中提取
url:http://xx.xx.xx.xx/sc.txt
可升级:可以在绿标白名单的网站上找一个存储路径充当
➢C2远控-ShellCode分离-Python从管道中提取
socket,pipe等技术
利用建立网络通讯管道,在发送ShellCode接受执行
可升级:可以在发送过程中进行混淆加密,接受后进行解密执行
0、调用
参考:https://www.zhihu.com/question/51088465/answer/2419955833
1、分离
File Argv Http Socket
2、Py打包器
py2exe
pyinstall
cx_Freeze
3、杀毒特性
DF 卡巴
4、突破内存扫描
项目参考:https://github.com/wangfly-me/LoaderFly
一种规避杀软检测的技术就是内存加密技术。由于杀软并不是一直扫描内存,而是间隙性的扫描敏感内存,因此可以在cs的shellcode调用sleep休眠将可执行内存区域加密,在休眠结束时再将内存解密来规避杀软内存扫描达到免杀的目的。基于以上原理,结合想法进行了实现,成功实现动态免杀火绒、360、defender、卡巴等