浅析cobaltstricke原生exe

admin 2022年6月1日09:53:37评论33 views字数 1095阅读3分39秒阅读模式

1.Cobaltstricke生成原生exe,直接点击上线

  • 这里会去访问我们C2服务器的一个地址,如下:

浅析cobaltstricke原生exe

  • 访问C2的地址查看内容,内容看不懂

浅析cobaltstricke原生exe

  • 利用OD,断API——HttpOpenRequestA

浅析cobaltstricke原生exe

为什么要断这个api呢?来看看这个api的功能,官方解释

浅析cobaltstricke原生exe

  • 用于发送一个HTTP服务器的请求,断在这里我们就可以查看我们需要查找的ip。

  • 下面来到这个API

浅析cobaltstricke原生exe

  • 断住之后发现其信息如下:

浅析cobaltstricke原生exe

浅析cobaltstricke原生exe

  • ip和端口直接可以看到,这个/B6sq 里面的内容应该就是让机器去反向链接这个ip和端口的,继续往下分析

  • 断API,VirtualAlloc(这里是申请内存的地方)

浅析cobaltstricke原生exe

  • 这里发现把edi+edx 给al edx就是移动位数,然后把ebp+0x8给edi,然后有一次异或解密,ebx里面就是解密后的原文shellcode

浅析cobaltstricke原生exe

  • 这里看出来ebp+0x10是一张加密表,ebp+0x8就是异或混淆后的数据,那么在xor一次就异或回来了

  • 然后在去VirtualProtect CreateThread

  • 原生的这个很小的exe会去下载一个文件然后在加载这个文件,申请内存,xor解密,然后创建线程运行。

  • 到此为止,stage的基本流程就分析完了。如果分析stageless就自己可以去分析,方式方法也差不多。下面是具体的一个流程介绍。

具体流程分析:

  • stage

  1. 申请内存(allocate memory)

  2. 复制Stager去这一块儿内存里

  3. 创建个线程,运行这个Stager

  4. 这个Stager会再次申请块儿内存 (allocate memory)

  5. Stager去下载加密的payload,写入申请的内存中

  6. Stager把执行流程转递给这个加密的payload

  7. 加密的payload自解密成Rellective DLL

  8. 然后把执行流程传递始Reflective DLL

  9. efective DLL申请个块儿内存 (llocate memory)

  10. 然后初始化自己在新的内存里面

  11. 最后elecive DLL调用payload的入口点的函数

  12. 上线

  • stageless

  1. 申请内存(allocate memory)

  2. 复制Stager到内存

  3. 创建线程,运行Stager

  4. Reflective DLL 申请内存

  5. 在内存中进行初始化

  6. 最后Reflective DLL调用payload的入口点函数

    总结

    分析cobaltstricke原生的exe,通过查看其winapi发现cobaltstricke生成远控木马的原理和方式。方便研究员去魔改我们的C2去修改我们的生成方式,并且绕过杀软的检测。
    我们去分析一个远控exe的一个大概流程也和这个步骤大致是相似的。内容比较简单,大佬勿喷。


原文始发于微信公众号(亿人安全):浅析cobaltstricke原生exe

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月1日09:53:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   浅析cobaltstricke原生exehttps://cn-sec.com/archives/1073835.html

发表评论

匿名网友 填写信息