一、前言
在网络攻防的“猫鼠游戏”中,攻击者不断寻找新的方式来规避检测。传统木马和 C2(Command & Control)架构,往往因为 固定的 IP、显眼的进程行为而较容易被发现和封堵。于是,新一代攻击技术开始往两个方向演化:
寄生于合法应用—— 借助 Electron、NW.js 等跨平台框架,把恶意代码隐藏在看似正常的软件里,享受“合法外衣”的庇护。
无服务器化通信—— 不再依赖固定的 C2 服务器,而是滥用云服务(Azure、AWS、Google Cloud),把恶意流量伪装成正常业务流量。
Loki C2 就是这一思路的代表案例。它通过 Electron 劫持和 云存储滥用,实现了“无文件 + 无服务器”的隐蔽攻击,给传统防御机制带来巨大挑战。
为了更直观理解,我们先来看看 传统 C2 与新型无服务器 C2 的差别:
传统 C2
架构特点:
攻击者自建服务器(VPS、肉鸡),Beacon 与 C2 之间通过固定 IP/域名通信。优势:
部署简单,可快速上线。
攻击者完全掌控服务端,功能扩展灵活。
缺点:
固定基础设施容易被封堵(IP 黑名单、域名拦截)。
流量特征明显,容易被 IDS/IPS 识别。
横向传播时,命令和工具容易落地磁盘,被防病毒发现。
新型 C2(无服务器 + 寄生化)
架构特点:
利用合法框架(Electron、NW.js)“寄生”,嵌入正常软件,降低可疑度。
借助云服务(Azure Blob、AWS S3、Google Cloud Storage)中转流量,隐藏真实控制端。
优势:
隐蔽性强:流量混杂在合法云业务中,难以区分。
高存活率:没有固定服务器,单一节点下线不影响整体。
无文件化:大量操作在内存中完成,减少磁盘痕迹。
跨平台:依赖 Electron 等框架,可覆盖 Windows/macOS/Linux。
缺点:
对攻击者而言,开发成本和运维复杂度更高。
一旦企业对云流量做精细化审计,可能暴露异常访问模式。
总结来看,传统 C2 就像一个“秘密基地”,容易被发现和炸掉;
新型 C2 更像是“躲在人群中的间谍”,寄生在合法流量和合法应用里,想找出来就困难得多。
接下来,我们将从 原理、实操、防御和趋势四个方面,深入解析 Loki C2 及其代表的新型攻击方式,并顺带对比一些同类框架(如 Sliver、Mythic),帮助读者全面理解这一代 C2 技术的演进。
二、攻击原理剖析
1. Electron 框架的“寄生机制”
(1)ASAR 打包与劫持
ASAR 背景
Electron 应用通常会将代码(HTML/JS/CSS)打包进app.asar
文件,作为只读归档来减少体积和文件数量。设计缺陷
程序在加载时,如果app.asar
缺失或文件校验未启用,会自动回退到resources/app/
目录执行源码。攻击者只需在该目录中放置恶意package.json
,指定入口init.js
,即可控制启动流程。攻击效果
一旦劫持成功,用户每次启动应用都会先执行攻击者的恶意逻辑。由于 Electron 应用大多在企业环境中广泛使用,这种寄生方式隐蔽且影响面广。
(2)主进程的高权限
多进程架构
Electron 应用由 主进程(Node.js 环境)和 渲染进程(浏览器内核)组成。漏洞点
主进程拥有完整 Node.js API 权限,可以直接调用child_process.exec
、访问文件系统和网络。若攻击者劫持了主进程,等同于获得系统命令执行权限,绕过浏览器沙箱的限制。
(3)持久化与自修复
自修复机制
恶意init.js
可持续监控宿主进程状态,当发现文件被替换或修复后,自动重新写入后门文件。守护进程
攻击者通过child_process.spawn
启动独立进程(参数detached: true
),即使用户关闭宿主应用,后门仍然驻留内存,实现持久化存活。
2. 无服务器 C2 通道
(1)传统 C2 的问题
固定 IP/域名容易被威胁情报收录和封禁。
异常域名或流量特征(如长连接、特定 User-Agent)容易被流量检测发现。
(2)无服务器 C2 的设计
利用云存储
攻击者在 Azure Blob、AWS S3 或 Google Cloud Storage 上建立存储桶,每个被控主机分配一个目录。通信方式
操作员上传指令文件(如
i-<hostID>.txt
)。木马定期轮询下载,执行后将结果写入
o-<hostID>.txt
并回传云端。
(3)隐蔽性提升
流量伪装
所有流量均走合法云服务域名(如*.blob.core.windows.net
),在 SOC 监测中与 Office 365、SharePoint 等企业常见流量混杂。时间抖动
木马轮询间隔随机化,避免固定周期心跳被特征检测捕捉。可信证书
HTTPS 通道由云服务提供,免去攻击者自建证书的成本,同时加大检测难度。
3. 后期利用扩展
(1)内存执行技术
scexec.node
通过 Node.js 原生扩展模块直接分配内存并执行 Shellcode,避免落地文件,降低被杀软检测的风险。COFFLoader.node
用于加载 Cobalt Strike BOF(Beacon Object File),可快速实现凭证窃取(Mimikatz)、内网探测(NetView)等功能,且仅驻留内存。
(2)横向移动能力
SM
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
已在FreeBuf发表 0 篇文章
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)