来自已知的Crypto Mining Botnet Campaign的最近一块恶意软件已经开始利用比特币区块Chinchain事务来隐藏其备份C2 IP地址。它&#39是一个简单但有效的方式,以击败灭亡的尝试。
最近对Akamai Sirt' S定制蜜罐揭开了混淆命令和控制(C2)基础设施信息的有趣手段。长期运行的加密挖掘机运动员的运营商开始在比特币区块链上创造性地伪造他们的备份C2 IP地址。在这篇文章中,我们研究了他们的广告系列如何使用这些数据来帮助分发他们的恶意软件,以确保持久性,并且可能是防止降息努力的不可思索的辩护,以及对这些发现的含义。
感染从远程执行代码执行(RCE)漏洞开始的开发。交付的有效载荷会导致易受攻击的机器下载并执行恶意壳牌脚本。 Akamai Sirt通过我们的蜜罐捕获的各种这些脚本,返回到Hadoop Yarn,Elasticsearch(CVE-2015-1427)和Thinkphp(CVE-2019-9082)的少数已知的公开披露的RCE漏洞。
我们估计这项活动的运营商在过去三年中,在Monero到公共池中的蒙大轿车超过30,000美元。在那段时间内,已经识别了多种变化,运营商使用不同的技术和工具,因为活动已经成熟。在较旧的广告系列中,Shell脚本本身处理了感染的关键功能。独立脚本禁用安全功能,丧失竞争感染,既定持久性,在某些情况下,在众所周知的文件中发现的网络持续的感染尝试。
Shell脚本的较新实例是较少的代码行编写,以及移动到二进制有效载荷,用于处理更多的系统交互,如杀死竞争,禁用安全功能,修改SSH键,下载和启动矿工。如果读者更深入潜入这种感染的潜在能力和组成部分,趋势科技介绍了对该主题的巨大技术写作。
戒发的运动几乎是不可避免的,这是一个嘈杂和长时间的竞选活动。运行该活动的运营商理解这一点并相应地计划。
此广告系列使用Cron作业和rootkits进行持久性和更新分发,确保受感染的计算机定期办理登机手续,并重新感染最新版本的恶意软件。这些方法依赖于写入CRONTABS和配置的域和静态IP地址。可预见的是,这些域和IP地址被识别,烧毁和/或扣押。此广告系列的运营商预期,包括备份基础设施,其中感染可能会失败并下载更新的感染,反过来会更新受感染的机器以使用新的域和基础架构。
虽然这种技术有效,但是,一个协调的努力,目标域和故障转移IP地址/基础设施一直可以有效地将运营商摆脱,以保持其立足于受感染的系统。
在2020年12月下旬,我们检测到这种恶意软件的较新变种的比特币钱包地址,是钱包检查API的URL,以及嵌套BASH单衬里的隐蔽系列。在进一步检查这些添加时,可以清除从API获取的钱包数据用于计算IP地址。然后将该IP用于持久性和额外的感染操作。
这是一种非常聪明和战略的技术。它使运营商能够将混淆的配置数据存入区块链中。通过将少量BTC推入钱包,它们可以恢复已被孤儿的受感染系统。它们基本上已经设计了一种在有效地不可化的介质中分配配置信息的方法。使用这种方法,该活动的运营商从严重的中断,从严重的中断转向潜在的冒犯行动,以便可以快速轻松地恢复。
在我们研究了这项运动的最新演变期间,中国工业和信息技术部积极抓住了我们正在研究的域名(* .powreofwish.com)。
要将比特币事务转换为IP地址,脚本首先需要了解钱包已发送和接收的交易。操作员通过对给定的钱包地址的最后两个事务执行Simple Supplorer API(API.BlockCher.com)来实现这一目标,然后将这些事务的Satoshi值转换为备份C2 IP地址。
本质上,感染是使用钱包地址作为DNS类似记录的DNS,以及作为记录的类型的交易值。在图2中,变量AA包含比特币钱包地址,变量BB包含API端点,返回用于生成IP地址的最新两笔事务,并且在转换过程完成后,变量CC包含最终的C2 IP地址。为了实现这种转换,将四个嵌套的Bash单衬里(每个八位字节)连接在一起。虽然卷曲,seds,张某和管道的混乱难以发表意义,但它是一个相当简单的技术。为了使过程更易于阅读并帮助防御者更好地了解此类操作,这里是在Python中实现的相同过程。
SATOSHIS到C2 IP转换过程从API请求开始,以获取钱包上的两个最新事务。在本写入时,API查询结果如图4所示。4。
单个事务值用于表示IP地址的两个八位字节,这意味着事务1(最近)包含第3和第4个八位字节,事务2(最近+ 1)包含最终C2 IP的第1和第2个八位字节地址。
知道这一点,让&#39看看这些事务的值并将它们转换为IP地址八位字节。最近的事务具有6,957个Satoshis的值,将此整数值转换为其十六进制表示导致值0x1b2d。拍摄第一个字节(0x1b)并将其转换为数字45中的整数结果 - 这将是我们最终IP地址的第三个八位字节。拍摄第二个字节(0x2D)并将其转换为INTEGER中的INTEN 27,这将成为我们最终IP地址中的第4个八位字节。
使用第二个交易完成相同的处理,以获得C2 IP地址的第一和第二八位字节。在这种情况下,第二次交易的值是36,305卫星。将其转换为十六进制表示的值导致0x8DD1的十六进制值。然后将第一个字节(0x8D)和第二字节(0xD1)转换为整数。这导致分别是C2 IP地址的第二和第一八位字节的十进制数141和209。将四个生成的八位字节放在各自的订单中,导致最终的C2 IP地址为209.141.45.27。
最近几个月,由此产生的IP地址作为整个活动的备份基础设施。最初,生成IP地址,但仅在感染过程中使用200或405时超时或响应主服务器时或响应任何HTTP状态代码。在这些情况下,依赖于CRONTAB的RENFETECT过程每半小时依赖CRONTAB执行/etc/newdat.sh脚本,从而测试主要,而在发生故障时,备份C2获取最新恶意软件构建。这意味着恢复可以在大约30分钟内实现。
在最近的竞选活动中,RCE'曾被击落开采,杀灭竞争对手,甚至妥协机器本身。 RECE已被修改为创建Redis扫描和妥协BOT。使用相同的钱包和技术,但它们'重新用于制作一系列针对具有弱密码的Redis服务器启动的命令。反过来,这也将redis服务器转换为矿工和扫描仪。
Redis扫描和感染广告系列首先通过构建名为.dat的文件,脚本填充了一系列redis命令。然后,修改redis命令文件,使用sed -i&#34使用sed -i&#34替换与c2的IP地址的所有出现localhost。s / localhost / $ cc / g" .DAT,其中$ CC是包含使用比特币钱包事务生成的C2 IP地址的变量。
一旦设置了.DAT文件并准备分发,就会指示机器使用PNSCAN和MassCan进行TCP / 6379(Redis)开始扫描网络。这些扫描还针对LAN IP地址范围,并横向移动到可能不是可访问Internet的本地网络中的Redis服务器。当脚本标识其认为正在运行Redis的主机时,它会尝试使用具有弱密码的Redis-CLI工具的一系列连接。如果它成功验证,它会导致redis将配置文件写入磁盘/ var / spool / cron / root和/ var / spool / cron / crontabs,最终将由遥控器上的本地Cron守护进程拾取并运行机器,从而建立其立足点。
它可能的运营商在这里使用了一个公共钱包,这些钱包似乎是唱高/翻滚服务(洗钱/改进的匿名)的一部分,从而从多个其他钱包中看到非常大的活动(其中一些包含超过100万美元在资金)。这很可能是通过设计,遏制各个钱包的交易和身份/所有权,并融入噪音。
这种技术开辟了中断运动的潜力。因为它们'重新使用钱包中看到的两个最新交易,任何人都可以将资金发送到(可能是因为它们不控制钱包),向钱包发送值会导致其系统开始生成无效的IP地址。
如果将单个SATOSHI发送到钱包的单个事务,则处理单个SATOSHI并导致45.27..1的MANGLED IP地址。此播放IP地址将被识别为尝试解决(无效)域名并杀死尝试成功获取感染有效载荷。
通过简单地向钱包发送两笔交易,可以通过操作员从运营商恢复这种类型的中断。但是,它的重要性我们意识到所涉及的成本。在没有核算交易费用的情况下,中断的原始成本是1个Satoshi,约0.0004美元。这意味着1美元约2,500美元的中断交易可以放在钱包里。在当前IP地址的情况下,运营商必须将必须发送到钱包的Satoshi值,以恢复控制总数43,262 Satoshis,或约16.50美元。当前BTC市场价格的快速数学表明,每花费1美元的时间,运营商需要花费超过41,000美元(16.50 * 2,500美元)来恢复其运营,并将孤立感染系统恢复到其(当前)的IP地址。这些金额将与比特币和需要编码的IP地址一起波动,但它将始终支持运营商对破坏者。
了解我们所知道的,它可以弄清楚需要向钱包发送哪些值,以便导致新的感染来计算我们控制的新的C2 IP地址。
使用由Akamai Sirt(Encoder.py)编写的脚本,示例图9说明了防御者如何在其控制下将感染指向IP地址。在这个例子中,我们'重新使用172.27.166.86。
该脚本将任何IP地址编码为正确的BTC值,然后可以使用两个事务将其发送到钱包,以便踩到僵尸网络。将这些值发送到钱包将导致新的感染来计算我们提供的IP地址并将其用作新的C2 IP地址。
在上面的示例中,编码IP地址172.27.166.86导致两个BTC值,0.00007084和0.00022182。如果将这些值发送到钱包,则新(RE)受感染的机器将将其C2 IP地址解码为172.27.166.86而不是操作员的原始C2 IP地址。
对于verif y this,我们将尝试解码我们从编码IP地址的两个BTC值,并将最终按预期的172.27.166.86。 DecodeR.py脚本如下所示。它需要两个BTC事务值作为参数,对它们进行解码,并输出C2 IP地址。
图。11 Decoder.py在Satoshi中的第2个事务值作为第一个参数和satoshi中的第1个事务值作为第二个参数。然后它将这些值解码为C2 IP地址,该IP地址将由恶意软件计算
图12,Satoshi值已成功解码回我们提供给Encode.py脚本的原始IP地址
Decoder.py脚本能够将BTC值解码为我们控制的IP地址,指示僵尸网络的成功陷阱是什么。这项行动的总体成本将售后服务员29,266萨托斯在市场价格上达到了大约11.15美元的款式。该价格再次基于所用的IP地址波动;例如,指向IP地址到255.255.255.255将花费大约(65535 * 2 Satoshis)50美元。
如前所述,备份C2 IP地址仅在主C2无法建立连接或接收到200或405之前的连接或接收HTTP状态代码时利用。如果污水孔运营商成功占据这些感染的主要基础设施,他们只需要回应所有传入请求的200个状态代码,以防止现有的感染无法使用BTC备份IP地址。
此广告系列使用以前看不见的手段,可以在比特币区块链中有效地隐藏其基础设施配置细节。从分散的和基本上未能的数据源获取实时数据以产生C2 IP地址的技术使得感染难以取下并且使C2 IP地址简单快速地枢转。
该发现和技术对研究人员,基础设施运营商和执法部门进行跟踪,防御和击败僵尸网络具有严重影响。抓住域名,接管服务器,并陷入污水活性感染可能是非常困难的。
技术是完美的。可以进行改进,我们'除了从此写字中排除,以避免向僵尸网络开发人员提供指针和反馈。采用这种技术可能是非常有问题的,并且可能在不久的将来会受欢迎。
为确保您的系统尚未受到此类广告系列的损害,请参阅下面的IOC部分,并检查您提供的IOC的基础架构。
*注意:由于C2基础架构的连接问题,与此广告系列相关的几个部分获取的shell脚本最终包含在蜜罐中。我们已将这些部分脚本包含在IOC Hasish列表中,因为它们可能导致部分妥协,即使他们赢得了与全部感染有效载荷相匹配。这些哈希还包括旧版本的非BTC变体。