0x00 前言
很久没更新公众号了,于是从星球里摘了一篇比较通俗易懂的文章,适合新手小伙伴。原文如下:
周末写一个在线工具(后面会发布的),看见C2profile中magic_mz_*配置项,于是搜了搜,发现没有人写关于这个。打算这周写个文档发星球。哪知道周一看twitter,发现有同学抢先一步发了,卷啊,太卷了!不过我还是要写。他文章中有一些笔误:https://www.redteam.cafe/red-team/shellcode-injection/magic_mz_x86-and-magic_mz_x64
-
这个功能是4.2以后加入的,不是 2.4.3
-
dec abp应该是dec ebp
都是笔误,无伤大雅,可能一些新手同学会出问题,所以我在这儿先指出来。回归正题,这2个配置有什么用?
magic MZ,是PE结构的前2个字节,标志着这是一个PE文件,和图片文件头、压缩文件头一个意思。这个值是固定的4D 5A。我们使用cobaltstrike的时候,看过我前面文章关于cs payload加载的同学应该知道,植入体最后都是使用的beacon.dll,这是一个反射dll,默认是以4d 5a 52 45开头的。beacon.dll一般是不落地的,在内存中,杀毒软件会通过这个头在内存中定位我们的样本,因此我们修改这个头,可以达到一定的逃逸作用。
首先我们看看官方解释:
-
覆盖我们Beacon反射dll的4D 5A 52 45
-
需要根据架构不同编写指令
-
不能是随便的数据去覆盖,必须是有效的指令,但是这个指令也不能瞎操作
前2条应该好懂,最后一条是指令,还不能瞎操作,这个怎么弄?举个例子:
a+1-1 = a,我们进行了一次加法操作和一次减法操作,但是结果不变。懂了吧。
0x02 实操
这涉及到汇编指令了,我详细写操作,让新手同学,学几条指令也能使用cs这个配置,而不必担心不会汇编。
我们先下载编译工具nasm,地址:https://www.nasm.us/
然后编写如下代码,这个是官方给的默认值MZRE:
bits 32 ;指定32位程序,也就是x86架构
section .text ;声明代码段
global _start ;指定入口函数
_start: ;
dec ebp ;减1
pop edx ;出栈
push edx ;入栈
inc ebp ;加1
使用notepad++打开x86文件:
然后我们把这个值填入magic_mz_x86配置中:
set magic_mz_x86 "MZRE";
明白了原理,我们实际操作起来。我列出了一些两两一组的指令,记住操作过去,再操作回来就行了。自己也可以去翻翻指令学习下,自己想一个方法。或者google花指令。
bits 32 ;指定32位程序,也就是x86架构
section .text ;声明代码段
global _start ;指定入口函数
_start: ;
dec ebp ;减1
inc ebp ;加1
inc eax
dec eax
not ebx ;取反
not ebx
push edx ;入栈
pop edx ;出栈
XCHG eax,ebx ;交换
XCHG eax,ebx
;各位自己随机组合
bits 64
section .text
global _start
_start:
pop r9
push r9
inc r8
dec r8
not r10
not r10
XCHG eax,ebx
XCHG eax,ebx
0x03 测试
我们分别编译上面x86和x64的汇编,编译结果如下(使用notepad++的hexeditor插件查看):
上面是结果,很多字符是不可见字符,这个没关系,CS配置文件支持16进制。
最后我们生成stageless的raw格式的代码看看:
但是上线发现x64的不能上线,最后查看报错,是DOS头太长了,我们使用c2lint检测(PS:使用c2profile前一定要使用c2lint检测)。
最后验证出:
-
x86最大长度是27个字节
-
x64最大长度是12个字节
最后减少点x64的指令,就能上线成功。
0x04 总结
CS有很多细节需要探究,研究越多,你越发觉CS的强大。除了这2个配置,网上很少人提起,还有其他配置,虽然CS现在被各种杀软针对的厉害,在默认配置或者一定的自定义配置下都很难逃逸防御,需要高度的二次开发和定制。但是CS整体生态实在是强大,与其自写C2,不如研究CS,然后二次开发它。
【公鸡队之家】知识星球的核心主题主要分为以下种类:
-
前沿技术分析,主要以红队技术为主。
-
星主专项,星主会不定期的制定技术专项,由浅入深的编写技术内容。
-
《bypass AMSI的前世今生系列》
-
《我的CS笔记之- In-memory Evasion系列》
-
《针对域证书服务的攻击系列》
-
大咖分享,星球会邀请技术大咖,做专题分享。
-
《实操系列》-17bdw
-
《mimiktz那些不为人知的功能系列》-haya
-
《不修改注册表获取windows明文密码若干姿势系列》-李雷
-
星球作业,星球每月会发布一份作业邀请,由鸡友们完成作业,并获得相应奖励。
-
《我的CS笔记之xxxx》
-
《我的bypass笔记之xxxx》
-
鸡友故事会,不定期邀请鸡友分享故事,有技术成长之路、有真实生活经历、亦或是自己的非技术爱好,这就是人生。
-
《我的四分之一人生》
-
每日打卡,星球打卡是星球的八卦区,在这里,不违法就是对的。
除此还有星球靶场、星球仓库、星球群......
原文始发于微信公众号(我需要的是坚持):C2profile中的magic_mz_x86和magic_mz_x64
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论