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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 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

相关文章
|
14天前
|
安全 JavaScript 前端开发
阿里云先知安全沙龙(西安站) ——浅谈XSS漏洞挖掘与构造思路
本文介绍了DOM-XSS构造、运算符的威力和模板字符串妙用三个主题。通过多个实例图解,详细展示了如何利用DOM特性构造XSS攻击、JavaScript运算符在代码中的巧妙应用,以及模板字符串在开发中的灵活运用。这些内容对提升Web安全意识和编程技巧具有重要参考价值。
|
15天前
|
机器学习/深度学习 人工智能 安全
阿里云先知安全沙龙(武汉站) ——AI赋能软件漏洞检测,机遇, 挑战与展望
本文介绍了漏洞检测的发展历程、现状及未来展望。2023年全球披露的漏洞数量达26447个,同比增长5.2%,其中超过7000个具有利用代码,115个已被广泛利用,涉及多个知名软件和系统。文章探讨了从人工审计到AI技术的应用,强调了数据集质量对模型性能的重要性,并展示了不同检测模型的工作原理与实现方法。此外,还讨论了对抗攻击对模型的影响及提高模型可解释性的多种方法,展望了未来通过任务大模型实现自动化漏洞检测与修复的趋势。
|
15天前
|
运维 供应链 安全
阿里云先知安全沙龙(武汉站) - 网络空间安全中的红蓝对抗实践
网络空间安全中的红蓝对抗场景通过模拟真实的攻防演练,帮助国家关键基础设施单位提升安全水平。具体案例包括快递单位、航空公司、一线城市及智能汽车品牌等,在演练中发现潜在攻击路径,有效识别和防范风险,确保系统稳定运行。演练涵盖情报收集、无差别攻击、针对性打击、稳固据点、横向渗透和控制目标等关键步骤,全面提升防护能力。
|
17天前
|
开发框架 安全 网络安全
阿里云先知安全沙龙(杭州站) ——实网攻防中信息收集的艺术
渗透测试的核心在于信息收集,涵盖人和系统的多维度数据。实网攻防流程包括资产收集、漏洞利用、稳固据点、内网横向和控制靶标五个阶段。外网信息收集旨在全面了解目标单位的公开信息,寻找突破口;内网信息收集则聚焦网络连通性和密码凭证,确保攻击行动的有效性和针对性。整个过程强调逐步深入的信息分析,为后续攻击提供支持。
|
20天前
|
机器学习/深度学习 分布式计算 供应链
阿里云先知安全沙龙(上海站) ——大模型基础设施安全攻防
大模型基础设施的安全攻防体系涵盖恶意输入防御和基础设施安全,包括框架、三方库、插件、平台、模型和系统安全。关键漏洞如CVE-2023-6019(Ray框架命令注入)、CVE-2024-5480(PyTorch分布式RPC)及llama.cpp中的多个漏洞,强调了代码安全性的重要性。模型文件安全方面,需防范pickle反序列化等风险,建议使用Safetensors格式。相关实践包括构建供应链漏洞库、智能化漏洞分析和深度检测,确保全方位防护。
|
18天前
|
存储 缓存 运维
阿里云先知安全沙龙(上海站)——后渗透阶段主机关键信息自动化狩猎的实现与应用
本文介绍了在后渗透测试中使用LSTAR工具和PowerShell脚本进行RDP状态查询、端口获取及凭据收集的过程,强调了高强度实战场景下的OPSEC需求。通过MITRE ATT&CK框架的应用,详细阐述了凭证访问、发现和收集等关键技术,确保攻击者能够隐蔽、持续且高效地渗透目标系统,最终获取核心数据或控制权。文中还展示了SharpHunter等工具的自动化实现,进一步提升了操作的安全性和效率。
|
17天前
|
传感器 安全 物联网
阿里云先知安全沙龙(北京站) ——车联网安全渗透测试思路分享
本文介绍了智能汽车的整车架构、协议栈结构、攻击点分析、渗透思路及案例分享。整车架构涵盖应用层、协议层和物理层,详细解析各层次功能模块和通信机制。攻击点包括Wi-Fi、USB、NFC等,展示车辆通信接口和系统组件的安全风险。渗透思路从信息收集到系统内部探索,利用固件漏洞控制车辆功能。案例展示了网段隔离不足导致的SSH访问和OTA日志审计漏洞,揭示了潜在的安全威胁。
|
17天前
|
缓存 安全 搜索推荐
阿里云先知安全沙龙(北京站) ——浅谈Web快速打点
信息收集是网络安全中的重要环节,常用工具如Hunter、Fofa和扫描工具可帮助全面了解目标系统的网络结构与潜在漏洞。遇到默认Nginx或Tomcat 404页面时,可通过扫路径、域名模糊测试、搜索引擎缓存等手段获取更多信息。AllIN工具(GitHub: P1-Team/AllIN)能高效扫描网站路径,发现敏感信息。漏洞利用则需充分准备,以应对突发情况,确保快速拿下目标站点。 简介:信息收集与漏洞利用是网络安全的两大关键步骤。通过多种工具和技术手段,安全人员可以全面了解目标系统,发现潜在漏洞,并制定有效的防御和攻击策略。
|
18天前
|
人工智能 运维 安全
阿里云先知安全沙龙(上海站) ——终端安全对抗及防护
终端安全现状面临多重挑战,包括传统签名技术失效、新型无文件攻击频发、专业人才匮乏、分支机构安全管理不足等。企业终端覆盖不全、日志缺失、策略更新依赖厂商,导致运营排查困难。钓鱼攻击手法愈发精细,静态和动态对抗加剧,攻击者利用正常权限入侵,窃取凭据。Web3技术发展使加密货币成为新目标,职业黑客盯上个人钱包和交易公司。防护升级需涵盖预防、检测、响应和运营四个阶段,借助AI和威胁情报降低告警量,提升整体安全水平。