Cobalt Strike Beacon 初探

这篇具有很好参考价值的文章主要介绍了Cobalt Strike Beacon 初探。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

RTO I 的课程结束了,Cobalt Strike 算是会用了。然后继上一篇文章之后,我还没有机会用 Cobalt Strike Beacon 做一下 Windows Defender Bypass。之后会写。

另外,我也想问一下我自己,Cobalt Strike 里面最基本的 payload - beacon,你了解清楚了吗?

所以今天,我就花点时间给自己解惑,同时也提出更多问题往后深入。

接下来先对 Beacon 做下逆向,看一下 HTTP Beacon 大致上都做了什么。

Beacon

创建一个基于 HTTP Listener 的 64位 beacon。

Cobalt Strike Beacon 初探

看一下文件格式,64位 PE 文件。

Cobalt Strike Beacon 初探

看到 PE 头。

xxd beacon.exe | less -S

Cobalt Strike Beacon 初探

这一段 bOb 很有意思,可以用作 Signature Detection 吗?

Cobalt Strike Beacon 初探

strings 一下看到了使用了哪些方法。

Cobalt Strike Beacon 初探

使用了哪些 dll。

Cobalt Strike Beacon 初探

在 IDA 里具体看一下。

创建命名管道

拖到 IDA。
Cobalt Strike Beacon 初探

从进度条长度来看,HTTP beacon 的复杂度并不高(也有可能是我什么都不懂,错的离谱)。
Cobalt Strike Beacon 初探

逆向的能力不是很强,所以先随便看看。

我的思路是能不能找到相关 API,如 VirtualAlloc,CreateThread 之类的字符串,或者是参数的字符串也行。所以我就一个一个点开看了一下。

运气比较好的是,在第四个 entry 就找到了。

如图,StartupInfoCreateProcessA API 的参数。

CreateProcessA 方法原型。

BOOL CreateProcessA(
  LPCSTR                lpApplicationName,
  LPSTR                 lpCommandLine,
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL                  bInheritHandles,
  DWORD                 dwCreationFlags,
  LPVOID                lpEnvironment,
  LPCSTR                lpCurrentDirectory,
  LPSTARTUPINFOA        lpStartupInfo,
  LPPROCESS_INFORMATION lpProcessInformation
);

找到了 StartupInfo,就意味着找到了 CreateProcess

Cobalt Strike Beacon 初探

接着往下看,不一会儿看到了 GetProcAddress API。

Cobalt Strike Beacon 初探

调用之后检查 eax 返回值,如果是 0 表示成功,跳到 loc_4012A1

接着一个一个翻看左边的方法名列表。

sub_401795 找到了 CreateThread 方法。看到了默认的 pipe name

拼接完成之后,应该是 \\.\pipe\MSSE-XX-server

Cobalt Strike Beacon 初探
其中 xx 是一个数字跟 ecx 中的数值 (0x26AA -> 9898)做除法运算(实际是取模),最后取了 EDX 中的余数作为 xx 的值。

Cobalt Strike Beacon 初探
Cobalt Strike Beacon 初探

这里创建了一个线程并执行。看一下到底启动了一个什么样的线程。跟进 sub_401685,那里是执行代码的起始地址。

Cobalt Strike Beacon 初探

再跟进 sub_4015D0

Cobalt Strike Beacon 初探
所以,上面的 CreateThread 方法,是创建一个命名管道,用来写入和读取数据,命令执行的结果应该就是通过管道来获取的。第一步完成,HTTP Beacon 首先创建了一个命名管道,管道名称就是上面看到的

\\.\pipe\MSSE-XX-server

继续跟进代码,看下一步做了什么操作。

连接命名管道

创建完了命名管道(如果创建成功),紧接着就是执行 ConnectNamedPipe 连接该命名管道。
Cobalt Strike Beacon 初探

这里开始网管道里面写数据。

Cobalt Strike Beacon 初探

写数据有了,读取在哪里呢?

继续往下找,可以看到这里调用了 CreateFileA API。

Cobalt Strike Beacon 初探

这里 dwCreateionDisposition 设置为 0x3

查看官方文档,这个设置是会打开一个已经存在的文件或者设备。

Cobalt Strike Beacon 初探

猜想这里是用 CreateFileA 打开了已经创建好的管道。

然后通过 ReadFile API 读取数据。

Cobalt Strike Beacon 初探

唯一可以说明这里打开的文件就是之前创建的管道的指标,就是这个 Buffer (lpFileName) 参数。

Cobalt Strike Beacon 初探
双击点进去,可以看到他指向了 sub_4015D0

Cobalt Strike Beacon 初探
sub_4015D0 正是创建命名管道的方法。

Cobalt Strike Beacon 初探

进一步可以判定,这个 Buffer 就是管道名,ReadFile 就是读取了该管道的数据。

Beacon HTTP 请求?

接下来,我想找到诸如 IP 地址,端口,从而找到 HTTP 请求的代码。

结果通过 IP 地址找不到。

Cobalt Strike Beacon 初探

返回去看 strings 命令的输出,确实没有看到跟 HTTP 或者 Socket 连接相关的方法或者是 DLL。
Cobalt Strike Beacon 初探

Cobalt Strike Beacon 初探

而如果看一下 msfvenom 生成的 payload。

msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=127.0.0.1 LPORT=443 -f exe -o msf.exe

strings msf.exe

可以很清楚看到诸如 WSADuplicateSocketAWinHTTPConnect 等方法,也看到了 WS2_32.dll

Cobalt Strike Beacon 初探

有点疑惑。

拖到 windows 机器上用 WinDBG 看一下。

Cobalt Strike Beacon 初探

看来 strings 不能列出运行期间会加载的 dll。

在 WindDBG 里面看到了 winhttp.dllWS2_32.dll

Cobalt Strike Beacon 初探

选择 WS2_32.dllrecv API 上打个断点试一下。

bp ws2_32!recv

Cobalt Strike Beacon 初探

发送一条命令看一下能不能触发断点。

Cobalt Strike Beacon 初探

断点触发了。其实每隔5秒就会触发断点,因为 beacon 会 checkin,就算没有命令可以执行,C2 Server 也会发送相应的 response。

Cobalt Strike Beacon 初探

sleep 没有输出。再执行一个 whoami 看一下怎么发送命令结果的。

Cobalt Strike Beacon 初探

再次触发断点。单步执行。

今天告一段落,找时间继续。还要验证一下上面所说的读取数据的 CreateFileA 方法。

总结

这篇文章对 Beacon 做了一些比较简单的分析。开个头先,之后还会不断深入。

KEEP CALM AND HACK AWAY!文章来源地址https://www.toymoban.com/news/detail-440497.html

参考链接

  • https://www.ired.team/miscellaneous-reversing-forensics/windows-kernel-internals/windows-x64-calling-convention-stack-frame
  • https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea
  • https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa
  • https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createthread
  • https://learn.microsoft.com/en-us/windows/win32/api/winhttp/nf-winhttp-winhttpconnect
  • https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaduplicatesocketa
  • https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect
  • https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsastringtoaddressw
  • https://decoded.avast.io/threatintel/decoding-cobalt-strike-understanding-payloads/
  • https://docs.oracle.com/cd/E19455-01/806-3773/6jct9o0am/index.html#:~:text=div%20executes%20unsigned%20division.,AH%2C%20Dx%2C%20or%20EDX.

到了这里,关于Cobalt Strike Beacon 初探的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Cobalt Strike(cs)下载及使用

    1、启动服务 2、客户端连接服务,可以是linuxwindows 3.新建监听器 4、生成反弹shell 5、在目标机器上执行生成的exe文件,靶机可以ping同攻击机,关掉靶机杀毒

    2024年02月13日
    浏览(23)
  • Cobalt Strike工具安装与基础使用

      Cobalt Strike是一款超级好用的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket代理,office攻击,文件捆绑,钓鱼等多种功能。同时,Cobalt Strike还可以调用Mimikatz等其他知名工具,因此广受技术大佬的喜爱。   同时Cobalt Strike集成了端

    2024年02月15日
    浏览(32)
  • Cobalt Strike第五篇导入插件

    CobaltStrike有两种加载插件的方法,一种是在客户端加载,一种是在服务端加载。在客户端加载,当客户端没连接上服务端后,该插件即不会被加载。所以有时候需要在服务端加载某些插件。 一、插件下载 二、客户端加载 点击 CobaltStrike– Script Manager 点击 Load 加载插件,加载

    2024年02月16日
    浏览(36)
  • Cobalt Strike 连接启动教程,制作图片?(2)

    安装工具:      

    2024年02月06日
    浏览(31)
  • 【渗透测试】利用Cobalt Strike渗透Windows

    在kali中使用Cobalt Strike对Windows进行渗透 kali(服务端):192.168.175.129 win11(攻击机):192.168.175.128 win11(靶机):192.168.175.137 将压缩包解压 进入解压后的Server文件夹,赋予文件执行权限 192.168.175.129为Kali机器的IP, 1234 为团队接入的口令,后面需要用到 在Win11攻击机中将Coba

    2024年02月16日
    浏览(26)
  • 保姆级教学!小白也会的cobalt strike搭建

    目录 简介 环境及工具 搭建部署 1.端口配置 2.远程连接服务器 3.JAVA环境安装 4.上传cs工具压缩包 5.服务器上解压cs工具压缩包 6.启动CS服务端 7.客户端连接 cobalt strike(简称CS)是一款团队作战渗透测试神器,分为客户端及服务端,一个服务端可以对应多个客户端,一个客户端

    2023年04月18日
    浏览(32)
  • 【渗透测试】Cobalt Strike制作钓鱼邮件渗透Windows

    在kali中使用Cobalt Strike制作钓鱼邮件,对Windows进行渗透 kali(服务端):192.168.175.129 win11(攻击机):192.168.175.128 win11(靶机):192.168.175.137 将压缩包解压 若要解压到指定路径,先新建文件夹,使用以下命令 进入解压后的Server文件夹,赋予文件执行权限 192.168.175.129为Kali机器

    2024年02月16日
    浏览(33)
  • 内网安全:横向传递攻击( RDP || Cobalt Strike )

    横向移动就是在拿下对方一台主机后,以拿下的那台主机作为跳板,对内网的其他主机再进行后面渗透,利用既有的资源尝试获取更多的凭据、更高的权限,一步一步拿下更多的主机,进而达到控制整个内网、获取到最高权限、发动高级持续性威胁攻击的目的.( 传递攻击主

    2024年02月10日
    浏览(32)
  • 红队专题-Cobalt strike4.5二次开发

    一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 File-【Settings】 *.md; *.txt; *.rst; .adoc; .java 先定义一下 以后修改过的地方全会标记上 //aming_change 采用全局搜索 “cobaltstrike.auth” 硬编码修改 byetes变量是密钥 对sleeve修改有帮助 暗桩导致进不去GUI界面 跟

    2024年02月07日
    浏览(27)
  • Kali下Cobalt Strike4.4的安装

    目录 (一)Clbalt Strike特点 1、认识CS 2、生成PayLoad 3、部署模块 (二)Clbalt Strike4.4安装与环境配置(kali) 环境准备: 2.1 其他linux系统安装jdk 1 升级APT 2 使用APT安装OpenJDK 11: 3 将OpenJDK 11设置为默认 Java程序 2.2 开始安装 1、点击这个选择解压路径 2、点击解压按钮  3、创建新的解压

    2024年02月01日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包