浅析cobaltstricke原生exe

举报
亿人安全 发表于 2023/05/31 13:21:22 2023/05/31
【摘要】 1.Cobaltstricke生成原生exe,直接点击上线这里会去访问我们C2服务器的一个地址,如下:访问C2的地址查看内容,内容看不懂利用OD,断API——HttpOpenRequestA为什么要断这个api呢?来看看这个api的功能,官方解释用于发送一个HTTP服务器的请求,断在这里我们就可以查看我们需要查找的ip。下面来到这个API断住之后发现其信息如下:ip和端口直接可以看到,这个/...

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

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

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

图片

  • 利用OD,断API——HttpOpenRequestA

图片

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

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

  • 下面来到这个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的基本流程就分析完了。如果分析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的一个大概流程也和这个步骤大致是相似的。内容比较简单,大佬勿喷。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。