浅析cobalStrick原生exe
CobalStrick生成原生exe,直接点击上线
- 这里会去访问我们C2服务器的一个地址,如下:
- 访问C2的地址查看内容,内容看不懂
- 利用OD,断API——HttpOpenRequestA
- 来到这个API
- 断住之后发现其信息如下:
- ip和端口直接可以看到,这个/B6sq 里面的内容应该就是让机器去反向链接这个ip和端口的,继续往下分析
- 断API,VirtualAlloc
- 这里发现把edi+edx 给al edx就是移动位数,然后把ebp+0x8给edi,然后有一次异或解密,ebx里面就是解密后的原文shellcode
- 这里看出来ebp+0x10是一张加密表,ebp+0x8就是异或混淆后的数据,那么在xor一次就异或回来了
- 然后在去VirtualProtect CreateThread
- 原生的这个很小的exe会去下载一个文件然后在加载这个文件,申请内存,xor解密,然后创建线程运行。
具体的一个流程:
- stage
申请内存(allocate memory)
复制Stager去这一块儿内存里
创建个线程,运行这个Stager
这个Stager会再次申请块儿内存 (allocate memory)
Stager去下载加密的payload,写入申请的内存中
Stager把执行流程转递给这个加密的payload
加密的payload自解密成Rellective DLL
然后把执行流程传递始Reflective DLL
efective DLL申请个块儿内存 (llocate memory)
然后初始化自己在新的内存里面
最后elecive DLL调用payload的入口点的函数
上线
- stageless
- 申请内存(allocate memory)
- 复制Stager到内存
- 创建线程,运行Stager
- Reflective DLL 申请内存
- 在内存中进行初始化
- 最后Reflective DLL调用payload的入口点函数