CobaltStrike生成原生EXE,一键上线
CobaltStrike生成的原生EXE直接点击即可上线。在这个过程中,会访问C2服务器上的一个地址,但内容却难以理解。
利用OD(逆向工程软件),拦截API——HttpOpenRequestA。
为什么拦截这个API呢?通过官方解释可知,它用于向HTTP服务器发送请求,拦截后我们可以查看需要查找的IP地址。
进入API后,我们发现以下信息:
IP地址和端口直接可见,其中”/B6sq”的内容应该是让机器去反向链接该IP地址和端口的指令。继续分析下去,我们拦截API,如VirtualAlloc(内存分配),在这里发现一次异或解密。
通过分析,我们发现ebp+0x10是加密表,ebp+0x8是异或混淆后的数据,进行一次异或即可解密。接着进行VirtualProtect和CreateThread。
这个小型的原生EXE会下载一个文件,加载到内存中,进行内存申请、异或解密,然后创建线程运行。
到此,stage的基本流程分析完毕。如果要分析stageless,可以自行进行,方法类似。
具体流程分析如下:
Stage流程:
- 申请内存
- 复制Stager到内存中
- 创建线程,运行Stager
- Stager再次申请内存
- 下载加密的payload,写入申请的内存中
- 执行加密的payload,自解密成Reflective DLL
- 执行Reflective DLL,调用payload的入口函数
Stageless流程:
- 申请内存
- 复制Stager到内存中
- 创建线程,运行Stager
- Reflective DLL申请内存
- 在内存中初始化
- 调用payload的入口函数
总结:
通过分析CobaltStrike生成的原生EXE,我们可以发现其生成远控木马的原理和方式。这为研究员提供了修改C2生成方式、绕过杀软检测的便利。对于分析其他远控EXE的大致流程也是有帮助的。文章内容简洁明了,方便理解。
暂无评论内容