Cobalt Strike4.0远控木马分析

  • A+
所属分类:安全文章
Cobalt Strike4.0远控木马分析

本文为看雪论坛优秀文章

看雪论坛作者ID:快乐鸡哥



Cobalt Strike4.0远控木马分析

一、概述

Cobalt Strike4.0远控木马分析


Cobalt Strike是渗透测试神器,其功能简介就不用多说了,4.0版本更新已有一段时间了,这里分析一下,若有错误的地方望大伙指出,谢谢。


Cobalt Strike4.0远控木马分析

二、样本信息

Cobalt Strike4.0远控木马分析


样本名:artifact4.exe

样本大小:14,336 字节

MD5:9ff9170e001f5619a0be11516051f538

SHA1:b824ed85d7dbe14f193f70d328d061e90c760736



Cobalt Strike4.0远控木马分析

三、实验环境

Cobalt Strike4.0远控木马分析


服务端:kali 2020 ip:192.168.202.131

客户端:windows 7 ip:192.168.202.139

受控端:windows 7 ip:192.168.202.132


Cobalt Strike4.0远控木马分析

四、简单查壳

Cobalt Strike4.0远控木马分析


Cobalt Strike4.0远控木马分析


Cobalt Strike4.0远控木马分析

五、具体分析

Cobalt Strike4.0远控木马分析


5.1 后门主体部分

进入主函数,主要看sub_401840里面的主要功能:

Cobalt Strike4.0远控木马分析

进入sub_401840函数,先获取系统时间戳,然后拼接字符串和创建线程通过管道读取shellcode,最后执行shellcode。

Cobalt Strike4.0远控木马分析

拼接的管道名.pipeMSSE-5296-server:

Cobalt Strike4.0远控木马分析

跟进创建线程执行的函数:

Cobalt Strike4.0远控木马分析继续跟进函数WriteShellcodeInPipe_401648,其主逻辑首先创建命名管道,再把加密过的大小为0x320hshellcode写入管道:

Cobalt Strike4.0远控木马分析

其shellcode内容如下:

Cobalt Strike4.0远控木马分析

写入shellcode:

Cobalt Strike4.0远控木马分析

跟进接收shellcode函数RevShellcode_4017e2:其主体逻辑是先申请内存存放读取出来的shellcode,然后解密并执行。

Cobalt Strike4.0远控木马分析

从管道读取shellcode到内存中:

Cobalt Strike4.0远控木马分析
Cobalt Strike4.0远控木马分析

将读取出来的Shellcode在DecyptAndrRunShellcode_40158E函数执行解密,该函数的主体逻辑,申请内存存放解密后shellcode,然后修改内存属性并跳转执行:

Cobalt Strike4.0远控木马分析

其解密算法如下,解密算法比价简单,首先遍历shellcode,遍历次数与4求模,得到的值作为403008数组的下标得到一字节,用该字节与shellcode对应遍历时的字节异或,最终得到解密后的字节:

Cobalt Strike4.0远控木马分析

解密所需的数组:

Cobalt Strike4.0远控木马分析

解密后的数据:

Cobalt Strike4.0远控木马分析

紧接着跳转到shellcode并执行:

Cobalt Strike4.0远控木马分析

5.2 Shellcode部分

先加载wininet.dll:

Cobalt Strike4.0远控木马分析

再调用函数InternetOpen函数创建一个HINTERNET根句柄:
Cobalt Strike4.0远控木马分析

连接控制端192.168.202.131:8081

Cobalt Strike4.0远控木马分析

创建请求句柄,并把数据发送到服务器。
Cobalt Strike4.0远控木马分析

Cobalt Strike4.0远控木马分析

申请0x400000大小的内存:

Cobalt Strike4.0远控木马分析

Cobalt Strike4.0远控木马分析

不断调用InternetReadFile读0x2000大小的数据到申请的内存中:

Cobalt Strike4.0远控木马分析

读入数据后:

Cobalt Strike4.0远控木马分析

然后跳转执行到所申请的0x400000大小的内存:

Cobalt Strike4.0远控木马分析

在内存0x026a0037处解密出一个Dll,具体的解密算法如下:
Cobalt Strike4.0远控木马分析

解密后的数据如下,并将其dump出:

Cobalt Strike4.0远控木马分析

5.3 反射注入DLL

这个Dll比较有意思,先查看解密出来的DLL,0x026A0030 jmp ebp 跳转到0x026A003F,也就是DLL的Dos头部分,这个Dos是被修改过的,0x026A003F dec ebp0x026A00A0 pop edx 没特殊含义,接下来call 026A0046 和pop ebx 主要用作保存当前eip到ebx,然后ebx加上0x7cb2,也就是导出函数ReflectiveLoader函数的偏移量 :

Cobalt Strike4.0远控木马分析

ReflectiveLoader中会调用virtualalloc()函数,申请大小为0x3D000的内存,用于存放DLL:

Cobalt Strike4.0远控木马分析

在内存中反射注入dll,存放在0x0690000处:

Cobalt Strike4.0远控木马分析

然后压入3个参数执行dll的dllmain函数:

Cobalt Strike4.0远控木马分析

dump出的Beacon.dll

Cobalt Strike4.0远控木马分析

Cobalt Strike4.0远控木马分析



Cobalt Strike4.0远控木马分析

- End -


Cobalt Strike4.0远控木马分析


看雪ID:快乐鸡哥

https://bbs.pediy.com/user-home-264470.htm

  *本文由看雪论坛 快乐鸡哥 原创,转载请注明来自看雪社区。




# 往期推荐





Cobalt Strike4.0远控木马分析
公众号ID:ikanxue
官方微博:看雪安全
商务合作:[email protected]



Cobalt Strike4.0远控木马分析

球分享

Cobalt Strike4.0远控木马分析

球点赞

Cobalt Strike4.0远控木马分析

球在看



Cobalt Strike4.0远控木马分析

点击“阅读原文”,了解更多!

本文始发于微信公众号(看雪学院):Cobalt Strike4.0远控木马分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: