网站公告:
Binance Casino永久网址【363050.com】
363050.com全国服务热线:
Binance Casino Binance Casino
Binance Casino - 领先的数字货币娱乐场,安全稳定,极速存取币安智能合约正在被Smargaft僵尸网络滥用
添加时间:2025-04-22 16:31:18

  Binance Casino,USDT娱乐,数字货币游戏,区块链游戏,BTC娱乐场,USDT投注,数字资产平台,体育娱乐,电子游艺,快速提现在XLab的日常工作中,我们的僵尸网络监控系统每天都能检测到大量基于Mirai, Gafgyt代码魔改而来的变体的僵尸网络。这些变体已经司空见惯,无法引起我们的兴趣。然而,今天的主角是一个异类,虽然它复用了一些Gafgyt的攻击向量,但很明显程序的逻辑结构是重新设计的。除此之外其作者还有一些让人眼前一亮的创新,比如利用币安智能链(Binance Smart Chain)的合约托管命令和控制中心(C2),比如通过病毒式感染Shell脚本实现持久化等。我们在进行逆向分析时,发现一些杀毒软件将这个僵尸网络的ARM样本标记为Mirai,这是不准确的。基于这个僵尸网络使用智能合约以及Gafgyt的攻击向量,我们将它命名为Smargaft,它的主要功能是DDoS攻击,执行系统命令,提供socks5代理服务等。

  Smargaft最大的亮点是使用智能合约托管C2,这种技术于2023年10月被首次披露,业内称之为EtherHiding,它充分利用区块链的公开性和不可篡改性,链上”的C2无法被移除,是一种相当高级且少见的Bullet-Proof Hosting技法。这是我们在僵尸网络领域首次见到此类技术的应用。智能合约这种云端配置C2的另一个好处就是灵活性,病毒作者甚至可以通过精心设计监控代码和智能合约进行互动,实现满足特定条件时自动更新 C2 ,或者根据环境变化自动调整攻击策略。鉴于合约一旦被滥用即可能迅速成为网络犯罪的有力工具,从而大幅增加了监测和管理的难度,我们决定撰写本文与社区分享我们的最新发现,希望能够帮助大家更有效地识别和预防这类新型网络威胁。

  BSC(Binance Smart Chain),即币安智能链,是由币安(Binance)开发和维护的一个区块链平台。它于2020年推出,旨在为去中心化应用程序(DApps)和智能合约提供支持,类似于以太坊(Ethereum)。

  智能合约是一种在区块链上执行的自动化协议或程序。它们是预先编写好的代码,旨在根据特定的条件自动执行操作或合同条款。智能合约允许在没有中介的情况下进行可信的交易和交互。当特定条件得到满足时,智能合约可以触发各种操作,例如转移数字资产、分配奖励、创建令牌等。

  智能合约就像一个特殊的盒子,放在区块链上。这个盒子可以保存数据,做一些计算,并且允许人们查看和使用这些数据。

  区块链的一个特点是信息永远不会被删除,所以这个盒子会一直存在;区块链的另一个特点是所有交易都是有记录的,所以利用这个盒子做的操作,都是有迹可循,无法篡改。

  在“Smargaft利用智能合约进行C2管理”的场景中,实际上意味着Smargaft的开发者通过智能合约来配置和管理C2,而C2的相关信息最终被存储在区块链上。一旦C2配置完成,Smargaft的恶意软件(Bot样本)便通过JSON RPC与区块链网络通信来获取C2信息。

  具体来说,Bot样本会向一个RPC服务器发送请求,这个请求包含了Smargaft智能合约的地址和要调用的合约函数。RPC服务器接收到这个请求后,会将它转发给区块链网络。随后,区块链节点接收到请求,并利用EVM(以太坊虚拟机)来加载和执行智能合约中指定的函数。执行完毕后,结果会沿着原路返回给Bot样本。

  综合考虑区块链查询数据的方法,以及区块链本身的的特点,“智能合约托管C2”这一技术的优势主要体现在三个方面的“不可阻断”上:

  :由于RPC节点的多样性,包括官方节点、公共节点以及私人搭建的节点,很难通过黑名单覆盖所有可能的访问路径。以Smargaft为例,即使币安官方节点在中国被封锁,仍有多个公共节点可供使用。Smargaft的Bot样本内置了14个不同的RPC服务器地址,确保至少有一部分节点可用。

  :在区块链上部署的恶意智能合约难以被直接封禁或删除。以Smargaft为例,其智能合约地址(如0xdf2208d4902aa1ec9a0957132ca86a4e1d40455b)不会受到币安或其他区块链运营方的直接监管或阻断。

  :C2信息一旦通过智能合约存储在区块链上,就无法被删除或篡改。在Smargaft案例中,C2信息作为一个记录被永久保存在币安智能链的特定区块(如34731229号区块)上,确保了其持久性和不可篡改性。

  对于智能合约,可以使用币安提供的平台BscScan进行浏览和分析。Smargaft样本中使用的合约地址为0xdf2208d4902aa1ec9a0957132ca86a4e1d40455b,我们整理出了时间线,可以看出Smargaft的作者大概率是俄罗斯人,于2023.09.15开始尝试智能合约托管C2这种技术,9月20日基本完成了测试,12月27日正式投入使用。

  虽然无法直接看到Smargaft合约的源代码,但可以通过点击Decompile Bytecode进行反编译。

  这是一个简单的合约应用,使用storage储存变量stor0,stor1,adminAddress。方法0x61695f0a的功能是把输入_param1逐字节保存到stor1中,0xd7ec3ad7则是读取stor1中的数据并以string形式返回;方法0xebe759f5,0xbaaeedb7的功能类似,只不过它们操作的是变量stor0。有编程经验的读者应该一眼就明白这是一对种类似set/get的方法,通过这种set/get的方式与合约互动,可以在链上写入或更新数据。

  细心的读者肯定在SET C2的图中发现有一个Transaction Fee,即调用0x61695f0a这个方法是用花钱的,事实上智能合约的函数调用基本都是要花钱的。这在Set C2的场景是没有问题,毕竟使用的次数少;但到了Get C2的场景,就有一个问题:如果Bot的数量极大,那岂不是每一次获取C2,都得花一大笔线?”,这显然是不可接受的。幸好Binance的SDK中提供了一个方法eth_call,它允许用户读取智能合约的数据而不需要产生任何区块链交易,不会改变区块链的状态,自然也就不需要花钱了。

  eth_call最初设计用于模拟合约执行以读取数据或测试,而不会产生任何实际影响,它甚至不会被记录在区块链上。所以,你可以免费、不留痕迹且稳健地获取你的数据(恶意负载),而不会留下任何痕迹。

  从被攻击的目标地理位置看,Smargaft僵尸网络的攻击目标遍布全球,并没有针对性,攻击目标主要分布在中国、波兰、美国、德国、法国等地区。具体统计如下图所示:

  一个有意思的现象是,Smargaft的攻击目标同时会被几个不同的僵尸网络攻击,我们推测有一个DDoS平台汇聚了诸多不同的僵尸网络。

  从我们的数据看,Smargaft使用已知漏洞传播Downloader到目标设备,Downloader植入成功后再下载Bot样本的方式传播,Smargaft利用的漏洞如下:

  我们以mips架构的的Downloader为主要分析对象,它的基本信息如下,样本使用标准的UPX壳。

  Downloader的核心功能较为直接,主要包括两个方面:首先,它用于下载并执行下一阶段的Bot样本;其次,它旨在消除竞争对手。

  下载器(Downloader)通过82端口与下载服务器(Downloader Server)建立连接,并发送一个请求,包含想要下载的Bot样本的CPU架构信息。服务器接收到这个请求后,首先回复一个10字节的字符串,用于指示Bot样本的文件大小;之后就开始发送Bot样本。

  实际交互产生的流量如下图所示,可以看出Downloader请求下载mips样本,样本大小为915732字节。

  Downloader通过/proc文件系统监控系统的进程,强制结束特定的进程以求达到独占设备的目的。

  通过以下代码用于判断系统进程的真伪,依据两个关键指标:一是判断进程对应的可执行文件是否可以被正常访问;二是检查该文件的最后修改时间。这样,可以有效识别并区分真正的系统进程与可能的竞争对手(或假冒)进程。

  我们捕获了ARM, MIPS ,X86 3个不同CPU架构的Smargaft bot样本,隶属于2个不同的版本。它们的主要区别在于是否支持蠕虫式传播,本文以老版本的X64样本为主要分析对象,它的基本信息如下,样本使用标准的UPX加壳。

  Smargaft的功能相对简单。在设备被侵入后运行时,首先它会检查当前用户,如果是root,则会额外的开启扫描传播任务。随后,它通过绑定本地端口来确保单一实例运行,并操纵watchdog以防止设备重启。接着,它初始化五个任务,任务包括通过智能合约获取C2,DDoS攻击,持久化等。最终,Smargaft 会在一个无限循环中运行,根据预设的时间间隔轮询这些任务。下文将围绕这些任务,剖析Smargaft的功能实现。

  Smargaft通过以下代码进行感染的任务,代码逻辑比较简单:通过port_probe函数构造syn报文,对10.0.0.0/8这个网段IP的目标端口进行嗅探,样本中一共硬编编码了22个端口。变量v4记录了嗅探IP的次数,当v4=100时,对开放了目标端口的ip,尝试使用CVE_2021_41653进行感染传播;当v4=500时,随机产生公网IP进行嗅探。

  细心的读者肯定会发现,上图中的这段代码是有bug的,v4的值在v4==100的代码块中,被重置为0,如此一来v4==500的代码块永远不会执行,这导致Smargaft散失了公网蠕虫式扫描传播的能力。我们在Smargaft的新版本中V1中,并没有看到作者对此进行修复,只是简单粗暴的删除了这个功能。

  Smarfagt在构造syn报文时,使用的源端口为55555,以下为实际的嗅探流量,可以明显看出1 IP: 22 Port这个模式,和上文的分析能对应上。

  经过分析,我们确定了Task的结构,它包含了任务方法,上次任务开始时间,任务间隔,任务类型,下一个任务等信息。

  这个JSON对象是一个用于币安智能区块链的RPC(远程过程调用)请求,其各个字段含义如下:

  jsonrpc: 表示使用的JSON RPC协议版本,这里是2.0。JSON RPC是一种轻量级的远程过程调用协议,允许发送包含特定命令的请求到以太坊节点。

  method: 指定调用的方法,这里是eth_call。eth_call方法用于执行智能合约的函数调用,但不会产生任何区块链上的状态变化。

  id: 请求的唯一标识符,这里是1。这个ID用于区分不同的请求和响应,通常为一个数字或字符串。

  “latest”总是取区块中最新的状态,这个语法糖给自动更新了C2提供了可能性。假设一个场景,C2在IOC库中,都被阻断了。此时作者只需要使用合约更新C2,而Bot无需任何更新,依托latest的性质,重新发送RPC请求,就能拿到新的C2。

  生成JSON后,Smargaft会在14个硬编码的RPC节点中随机选择一个,发起请求并解析返回的JSON对象中的result值。

  以为例,将上文脚本中的URL替换为,运行后就能直接得到以下result值。

  接着从result中读出C2,处理逻辑为从result的第122字节开始读,直到第一个非0的数字;然后以hexstring的方式解释非0位置之后的数据,第一个字节为C2长度,随后的数据为C2列表,以;分隔。

  最后Bot和C2的81端口建立连接,发送6个字节的上线,并通过回包长度是否大于等于0验证C2存活状态,首个存活的C2将被用于下一步的DDoS任务。

  ready,接收C2下发的指令,支持执行系统命令,DDoS攻击,socks5代理等功能。

  Infect_sh函数实现病毒式感染指定目录中的后缀为sh的文件,感染方式是在该类文件的尾部加上\n\n\n bot abslute path &\n,如此一来每次该类脚本运行时,bot也会得到启动的机会。该函数的第一个参数为目录,第二个参数为感染的最大层数。

  Smargaft使用的智能合约托管技术,EtherHiding,相比传统托管方法,展现出了明显的优势。它充分利用了区块链的核心特性,包括去中心化、透明性和不可篡改性。在这种模式下,托管过程中无法在区块链层面实施任何干预或阻断,使其成为了一种更高级别的“防弹”托管技术。智能合约技术本身的学习门槛并不高,相信未来更多恶意软件开发者会将这一技术做为常规武器。Stay Vigilant, Stay Safe.