现在的 C2 隐藏已经有了各种方法,如常见的云函数 dns 转发 域前置等,其原理大体可以抽象如下:

  • 将被控端木马通信流量发送至入口点
  • 入口点将流量进行转发回源至 C2 服务器
  • 入口点可以是 anycast 的,有多个 ip,可以避免简单的封锁

这些基于传统云服务的隐藏方式可以看做是前台匿名 后台透明的,通过某些手段仍能获取到真实 ip 地址。现在也有一些对域前置等方法的检测技术 例如判断 sni==host 等

基于此 可以尝试通过区块链进行分发指令。 被控端通过区块链 rpc 访问链上智能合约信标,上报自身心跳包 并获取控制指令,执行后回传到智能合约的 mapping 中。控制端轮询合约状态,获取每个被控制机器的状态并将指令上传至合约状态中。通信全程泄漏的仅有木马钱包地址、控制端钱包地址和合约地址,在链上完全无法追查至链下。

理论上分析:木马流量为完全合法的 https/wss 流量,其目标主机为区块链的 RPC 入口点,调用合约的参数可以通过加密绕过审查。

在这个架构下 C2 不存在公网暴露面,也就不会有威胁情报的存在。合约地址、rpc、abi 这些参数都可以每次下发木马的时候动态调整,实现了高灵活性和可变性