阿里云先知安全沙龙(上海站) ——红队武器开发之基于合法服务的隐蔽C2

简介: C2(命令与控制)是攻击者远程控制受感染主机的技术。通过合法服务平台(如Slack、Telegram等)的API,攻击者可以隐蔽地传输指令和数据,避免被传统检测机制发现。合法服务具备以下优势:1. **隐蔽性强**:流量隐藏在正常通信中,难以被检测。2. **开发成本低**:无需自行开发服务端,减少工作量。3. **抗封禁能力**:合法域名/IP不易被封禁,威胁情报不会标黑。4. **团队协作**:天然支持多成员协同作战。示例包括SaaiwC组织利用Telegram和APT29组织利用Zulip平台进行数据传输和控制。

为什么要利用合法服务

C2是攻击者在网络中控制受感染主机的技术,通过C2服务端(控制端)对感染了木马的设备进行远程控制,执行各种恶意操作。主流的C2框架包括Metasploit、CobaltStrike、SLiver和BRC4等。图中显示了攻击者自建服务器与合法消息服务平台之间的交互,以及它们如何控制受害主机。

image.png

常见的C2检测机制包括端点检测和流量检测。端点检测涉及内存特征(如shellcode、C2配置、外联特征等)、API函数调用特征以及联动威胁情报。流量检测则关注已知C2流量特征(如默认证书、指纹、请求头等)、C2固定通信格式(如请求体中包含特定加密字符串)以及异常流量模式(如周期性心跳包通信、DNS查询中有大量编码数据、非正常DNS查询频率等)。

image.png

主流C2框架开发工作量较少,但易被封禁和标黑,需要考虑隐藏真实C2与防封禁;流量隐蔽需对抗流量特征检测,端点检测进程和内存特征基本已被监控,难以绕过上线;功能定制与扩展方面,服务端多种配置可调整,插件化可扩展。

纯自研C2开发工作量较多,自行开发服务端与团队作战功能;易被封禁和标黑,需考虑隐藏真实C2与防封禁方法;需自行设计通信格式和加密方式;无已知特征,抗检测性较强;服务端可随时扩展开发新功能。

基于合法服务的C2开发工作量较少,无需自行开发服务端,天然的团队作战机制;合法域名/IP,威胁情报不会标黑,部分企业不会直接封禁服务;纯合法API交互,服务提供加密协议,隐蔽在正常流量中很难发现;纯合法API交互,上线初期不存在被检测和拦截的恶意特征;功能有限,尤其是服务端功能无法扩展。

image.png

SaaiwC组织和APT29组织分别利用Telegram和Zulip平台作为数据接收平台和payload下发平台。具体示例包括通过Telegram API进行数据传输,以及使用Zulip API接口进行数据交互。这些操作涉及复杂的代码实现,例如通过特定的API请求发送和接收数据,以实现隐蔽的数据传输和控制功能。

image.png

对slack服务的利用

image.png

image.png

  • C2服务端:Slack平台/服务(API的提供者),作为基础的服务平台。

  • C2控制台:Slack工作区及其中的频道,作为操作平台,用于管理和控制。

  • C2木马:待开发程序,通过使用API与服务交互,实现远程控制功能。

  • 攻击团队:工作区中的所有成员,负责执行具体的攻击任务和操作。

这种架构利用了Slack的合法服务,通过API进行隐蔽的数据传输和控制,从而实现对受害主机的远程操控。

image.png

木马功能设计与开发(C#实现)

  • 常规思路:循环读取频道中的最后一条消息记录,若为有效指令,则执行对应的动作并回传结果。

  • 缺点:无法做到像CS一样的任务队列,若心跳间隔较长,在频道中发送的多个指令只能执行最后一个。

例如通过conversations.history获取频道中的历史对话消息,以及通过chat.postMessage向频道中发送消息。

image.png

在初始动作中,获取上线消息的时间戳作为初始时间戳,并在主循环中每次拉取消息时,都获取时间戳之后的所有消息进行解析。有效指令被放入任务队列,同时刷新时间戳为最后一条消息的时间戳。任务处理函数从任务队列中拉取任务并提交给任务执行线程,执行完成后将结果回传。整个过程通过Slack频道进行消息交互,确保指令和结果的准确传递。

image.png

这张图展示了木马功能设计与开发中的任务请求与执行部分。代码示例使用了BlockingCollection集合,适用于生产者-消费者模型。当任务队列为空时,消费者线程(执行任务线程)会被阻塞,直到队列中有元素可用。

具体实现中,通过BlockingCollection创建任务队列,并在主循环中拉取所有新消息,将有效指令依次加入任务队列,同时更新时间戳为最后一条消息的时间戳。任务处理函数从任务队列中拉取任务并提交给任务执行线程,执行完成后将结果回传。

image.png

木马功能设计与开发中的基础命令执行部分具体包括使用conversations.history和chat.postMessage等API方法,以及通过cmdShell、psCommand、executeFile、ls、pwd、ifconfig、whoami等命令来执行各种操作。

示例中展示了如何通过Slack频道发送命令(如execute notepad.exe C:\cxm\test.txt)并将其加入任务队列,然后执行该命令并返回结果。

image.png

木马功能设计与开发中的文件上传下载部分具体包括使用files.getUploadURLExternal接口发送要上传的文件名和文件大小信息,以获取专属文件上传URL和唯一文件ID。通过返回的文件上传URL上传文件数据,可将文件上传到Slack文件存储服务器。之后,使用files.completeUploadExternal接口发送文件ID和频道ID,Slack将文件从文件存储服务发送到频道。

示例中展示了如何通过Slack频道发送截图命令,并将其加入任务队列。截图文件首先临时保存在本地,随后上传至Slack文件存储服务器,上传完毕后删除临时文件。

image.png

下图展示了木马功能设计与开发中的文件上传下载部分,特别是如何下发文件到目标机器。具体步骤包括:

  1. 使用files.info接口发送已存储在Slack服务上的文件ID,以获取文件的外部下载链接。

  2. 将要下发的文件上传到频道中,并发送下发文件的指令和文件ID。

  3. 木马程序调用files.info接口获取文件下载URL,然后下载文件。

示例中展示了通过Slack频道发送文件下发命令(如sendfile F0837GV70SE C:\cxm\zzz.exe),并将其加入任务队列。文件下发成功后,文件路径为C:\cxm\zzz.exe。此外,还提供了使用合法第三方文件托管平台接口的建议,以应对服务没有提供文件传输相关API的情况。

image.png

每个机器上线时生成一个唯一ID,后续每次下发指令都需要带上此ID,以标识指令生效的目标机器。木马客户端通过指令携带的ID决定是否解析和执行该指令。

具体流程包括:受害机器1上线后生成ID并发送上线消息到Slack频道,同时接收有效指令并执行任务。受害机器2同样上线并生成ID,但非有效指令不会被执行。这种机制确保了指令的准确性和针对性,避免了不必要的资源浪费。

image.png

服务支持通过API创建频道和邀请用户进入频道,木马程序每次运行时,调用API创建一个新的频道并将攻击者用户拉入频道,实现一频道一机器的操作。

具体流程包括:受害机器1上线后,通过API创建Slack频道1,并将攻击者用户拉入该频道。受害机器2同样上线后,通过API创建Slack频道2,并将攻击者用户拉入该频道。每个频道中包含成员信息、上线消息、指令消息和任务结果消息。受害机器通过发送和接收这些消息来执行相应的指令和任务。这种机制确保了每个受害机器都有独立的通信通道,提高了管理和控制的灵活性。

image.png

通过conversations.create接口创建公共或私人频道对话,以及通过conversations.invite接口邀请用户进入频道。

具体示例中,展示了一个名为#channel-c2c9d5498051477b的频道创建过程。频道创建后,管理员和用户陈小明被邀请加入该频道。频道信息包括上线消息、指令消息和任务结果消息等,确保每个受害机器都有独立的通信通道,提高了管理和控制的灵活性。

image.png

木马功能设计与开发中的辅助功能模块化设计部分具体包括将辅助功能开发为.NET程序集DLL,并通过频道下发执行。木马通过反射将程序集加载到一个AppDomain中,调用完程序集中的方法后卸载AppDomain。

示例代码中,通过LoadAndInvokeWithAppDomainAsync方法解析程序集文件ID、类名、方法名和方法参数等信息,获取文件下载URL,并在新的AppDomain中加载和执行相关方法。这种方法提高了模块的灵活性和可维护性,确保了每个功能模块的独立性和安全性。

image.png

木马功能设计与开发中的辅助功能模块化设计部分,具体包括将辅助功能开发为.NET程序集DLL,并通过频道下发执行。示例代码中,通过sendLsassDumpAsync方法发送授权信息和频道信息,获取Lsass dump文件并等待上传。

此外,还展示了具体的交互过程,包括通过Slack频道发送命令(如loadassembly -f F083VH22CUV -c getCredentials.LsassDump)并将其加入任务队列,然后执行该命令并返回结果。整个过程涉及API Token和当前频道ID的使用,确保了命令的安全性和准确性。

image.png

木马加载与使用

木马程序可以直接编译为EXE文件进行包装和使用,其中包含C2配置信息,如API Token、Attack UserID、SleepTime和UserAgent等。

具体实现中,木马生成后需要通过合法的数据托管平台(如Pastebin)存储C2配置信息,并在运行时从这些平台下载加密的配置内容并解密。示例代码中展示了如何下载加密的C2配置并解密,然后解析解密后的配置信息。整个过程确保了配置信息的安全性和灵活性,同时通过字符串混淆和深度代码混淆保护了C2配置。

image.png

这张图展示了木马加载与使用的另一种方法,即作为程序集动态加载并支持外部传参。具体包括:

  • 利用反射技术在运行时动态加载程序集,创建类的实例并调用其中的方法,支持给方法传参。示例代码中展示了如何通过Assembly.Load方法加载程序集,并使用Activator.CreateInstance和InvokeMember方法创建类实例并调用方法。

  • 使用PowerShell和Msbuild等工具进行动态加载。

  • DotnettoJS技术,可以从JavaScript和VbScript脚本中加载并执行.NET二进制文件。

  • CLR Hosting(donut)技术,提供更灵活的加载和执行方式。

整个过程确保了木马程序的灵活性和隐蔽性,通过动态加载和外部传参实现了更复杂的操作和控制。

image.png

木马加载与使用中减少开发量的利用思路,具体包括两种:

  • 作为冲锋马,仅开发基础的命令执行、文件传输等功能,并通过获取权限(如诱导高权限执行或BypassUAC)、削弱杀软(上传工具关闭/致盲安全设备)和上传新木马(上传功能完备的主流C2木马后渗透)等步骤实现目标。

  • 作为窃密木马,仅开发窃密和文件传输功能,服务平台作为敏感数据外发平台,类似于SaaiwC攻击组织的做法。具体步骤包括获取数据(如敏感文档、浏览器存储凭据、运维工具存储凭据等),并通过内网代理(上传内网穿透工具,将目标机器作为内网代理据点)和内网渗透(利用获取的数据在外部对内网进行渗透)等手段进一步扩展控制范围。

整个过程通过简化功能模块和利用现有工具,提高了木马的隐蔽性和灵活性,确保了攻击的有效性和持续性。

image.png

合法服务的利用条件通常包括提供文字内容读取与发送功能的API接口(适用于群组、频道、看板等),支持文件存储和通过API上传下载文件,以及具备团队协同能力并通过API进行群组、频道、看板等管理。示例中展示了如何在Trello中上传文件,并通过飞书、微信、QQ等平台进行简单的指令下发和数据接收,同时提及了Slack、Telegram、Trello和Dropbox等平台的团队作战C2操作。

image.png

相关文章
|
7天前
|
调度 云计算 芯片
云超算技术跃进,阿里云牵头制定我国首个云超算国家标准
近日,由阿里云联合中国电子技术标准化研究院主导制定的首个云超算国家标准已完成报批,不久后将正式批准发布。标准规定了云超算服务涉及的云计算基础资源、资源管理、运行和调度等方面的技术要求,为云超算服务产品的设计、实现、应用和选型提供指导,为云超算在HPC应用和用户的大范围采用奠定了基础。
179585 20
|
14天前
|
存储 运维 安全
云上金融量化策略回测方案与最佳实践
2024年11月29日,阿里云在上海举办金融量化策略回测Workshop,汇聚多位行业专家,围绕量化投资的最佳实践、数据隐私安全、量化策略回测方案等议题进行深入探讨。活动特别设计了动手实践环节,帮助参会者亲身体验阿里云产品功能,涵盖EHPC量化回测和Argo Workflows量化回测两大主题,旨在提升量化投研效率与安全性。
云上金融量化策略回测方案与最佳实践
|
16天前
|
人工智能 自然语言处理 前端开发
从0开始打造一款APP:前端+搭建本机服务,定制暖冬卫衣先到先得
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。
9375 23
|
20天前
|
Cloud Native Apache 流计算
资料合集|Flink Forward Asia 2024 上海站
Apache Flink 年度技术盛会聚焦“回顾过去,展望未来”,涵盖流式湖仓、流批一体、Data+AI 等八大核心议题,近百家厂商参与,深入探讨前沿技术发展。小松鼠为大家整理了 FFA 2024 演讲 PPT ,可在线阅读和下载。
5051 15
资料合集|Flink Forward Asia 2024 上海站
|
20天前
|
自然语言处理 数据可视化 API
Qwen系列模型+GraphRAG/LightRAG/Kotaemon从0开始构建中医方剂大模型知识图谱问答
本文详细记录了作者在短时间内尝试构建中医药知识图谱的过程,涵盖了GraphRAG、LightRAG和Kotaemon三种图RAG架构的对比与应用。通过实际操作,作者不仅展示了如何利用这些工具构建知识图谱,还指出了每种工具的优势和局限性。尽管初步构建的知识图谱在数据处理、实体识别和关系抽取等方面存在不足,但为后续的优化和改进提供了宝贵的经验和方向。此外,文章强调了知识图谱构建不仅仅是技术问题,还需要深入整合领域知识和满足用户需求,体现了跨学科合作的重要性。
|
28天前
|
人工智能 自动驾驶 大数据
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。
|
16天前
|
人工智能 容器
三句话开发一个刮刮乐小游戏!暖ta一整个冬天!
本文介绍了如何利用千问开发一款情侣刮刮乐小游戏,通过三步简单指令实现从单个功能到整体框架,再到多端优化的过程,旨在为生活增添乐趣,促进情感交流。在线体验地址已提供,鼓励读者动手尝试,探索编程与AI结合的无限可能。
三句话开发一个刮刮乐小游戏!暖ta一整个冬天!
|
15天前
|
消息中间件 人工智能 运维
12月更文特别场——寻找用云高手,分享云&AI实践
我们寻找你,用云高手,欢迎分享你的真知灼见!
1189 72

热门文章

最新文章