浅析cobaltstricke原生exe

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 浅析cobaltstricke原生exe

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

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

10036d2d5b7d5a7e9c65b503b537610a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

78150d649338e56aa9c5ec3d1e1b80c1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 利用OD,断API——HttpOpenRequestA

27b99e377cc145a0e8e12668be99c959_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

809596af6178059c34cdda135150d461_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

c1f198a71c74e5d03f4ab0366589e0a4_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

1ad9ed6bf8ab6c100a2e4d8aa218afe9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

e839e023982f6ba8d132ceb5d8304814_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • ip和端口直接可以看到,这个/B6sq 里面的内容应该就是让机器去反向链接这个ip和端口的,继续往下分析
  • 断API,VirtualAlloc(这里是申请内存的地方)

a7af4975179819832bfa4f07a6afa913_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

b5f4072e75f75937549eb9facf7aad9d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  • 这里看出来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的一个大概流程也和这个步骤大致是相似的。
相关文章
|
存储 XML jenkins
iOS 底层原理38:自动化打包(一)Xcode + Shell脚本
iOS 底层原理38:自动化打包(一)Xcode + Shell脚本
2893 1
iOS 底层原理38:自动化打包(一)Xcode + Shell脚本
|
Go 开发工具 C语言
flutter项目打包.exe文件发布windows版
目录 发布windows版 1.为现有的 Flutter 应用程序添加桌面支持 2..创建main_desktop.dart文件 3.hover安装和环境配置 4.初始化,并打包 坑1
1478 0
flutter项目打包.exe文件发布windows版
|
8月前
|
小程序 Linux 区块链
Python PyInstaller 打包成 Win、Mac 应用程序(app / exe)
Python PyInstaller 打包成 Win、Mac 应用程序(app / exe)
444 0
|
7月前
|
Python Windows
在 Windows 平台下打包 Python 多进程代码为 exe 文件的问题及解决方案
在使用 Python 进行多进程编程时,在 Windows 平台下可能会出现将代码打包为 exe 文件后无法正常运行的问题。这个问题主要是由于在 Windows 下创建新的进程需要复制父进程的内存空间,而 Python 多进程机制需要先完成父进程的初始化阶段后才能启动子进程,所以在这个过程中可能会出现错误。此外,由于没有显式导入 Python 解释器,也会导致 Python 解释器无法正常工作。为了解决这个问题,我们可以使用函数。
178 5
|
iOS开发 芯片 MacOS
macOS Big Sur 正式发布并已开放下载,支持原生运行 iOS 和 iPadOS App
macOS Big Sur 正式发布并已开放下载,支持原生运行 iOS 和 iPadOS App
228 0
|
Windows
Windows配置Lua环境
Windows配置Lua环境
181 0
Windows配置Lua环境
|
Windows
Lua在Windows下的配置、安装、运行
Windows下安装、运行Lua! 本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) 1↓ 进入Lua官网:http://www.
1705 0
|
Python
python + uiautomator2编译平板语言工具并切换打包exe可执行文件1.1.4版本--终版(上)
python + uiautomator2编译平板语言工具并切换打包exe可执行文件1.1.4版本--终版(上)
265 0
python + uiautomator2编译平板语言工具并切换打包exe可执行文件1.1.4版本--终版(上)
|
Python
python + uiautomator2编译平板语言工具并切换打包exe可执行文件1.1.4版本--终版(下)
python + uiautomator2编译平板语言工具并切换打包exe可执行文件1.1.4版本--终版(下)
214 0
python + uiautomator2编译平板语言工具并切换打包exe可执行文件1.1.4版本--终版(下)
|
Linux Android开发 iOS开发
Flutter支持Windows\MacOS\Web等
当我们在Android Studio中创建新的Flutter项目时,发现在platforms中只能选择Android、iOS和Web(flutter版本是2.10.4),而Linux、Windows、MacOS则是灰色的无法选择。 但是Flutter已经几个版本前就支持这些平台了,只是需要我们手动来启动一下。
440 0