选择使用加密货币区块链作为传输僵尸网络元素命令的媒介

我想提出“跟随金钱:RTM小组如何开始将C&C服务器的地址隐藏在加密钱包中”一文中提到的想法,该想法将它们打包为针对特定加密地址上的两次交易列出的Satoshi数量。 该恶意软件从区块链浏览器请求将数据传输到这样的地址,并通过简单的操作分配了新C&C服务器的IP。

我们将省略并谴责该组织的犯罪意图,并精确地将命令传送到僵尸网络(EBS)的原理和过程进行详细讨论。

恕我直言,这种方法有某些缺点-这种方法的带宽(就每次传输的信息量而言)很小,任何知道这种加密地址的人都可以向其发送一定数量的数据,并使其与僵尸网络同步,从而迫使其与“受信任的”网络联系。 »对于他们到服务器。

但是,隐藏的EBS命令不能发送到单独的地址A,而是从单独的地址A发送给它的先验信任。 在这种情况下,没有人(拥有私钥的人除外)可以执行这种操作。

可以通过将金额发送到僵尸网络管理员生成的地址来扩展命令集,并在其名称中对必要的控制信息进行编码/加密。

在这种情况下,最多可将20个字节(字母,数字,特殊字符)的命令转换为十六进制,然后再转换为有效的加密地址B(文本转换为十六进制)。在这种情况下,可以对命令本身进行编码/加密。

让我给你一个幻想的例子。 为了清楚起见(PoC),我使用了许多可用的在线服务。

1.从受信任的地址A,一定量转移到生成的有效地址B。

地址B生成的示例:必须将有关服务器82.192.95.175的信息发送到EBS,从中可以从模块服务器#68接收更新命令,模块的激活/停用时间以及加密密钥(或其他区块链浏览器的地址,执行命令)在不晚于发送日期的情况下,提供了新的受信任的加密地址,密钥等(密钥可以缝入用户代理并仅在有必要进行更改时进行转让,从而节省了7个字节的命令字段)。

可以用一百种方式将IP转换为每个数字(例如082.192.095.175> 08.21.92.09.51.75 + 32)(避免不可读的ASCII字符)。

总40.53.124.41.83.107 =(5 |)Sk ASCII(6字节)表示;
队伍68 = D;

模块激活时间为601234 =在Unix时间中 ,最高有效数字1是冗余的,我们将不传输它(默认情况下,因为更改为2仅在2033年进行),因此较低的三位数字也是默认000,因为。 没关系,大约是15分钟。

激活时间-1601234000 = 2019年9月27日格林尼治标准时间13.13.20

接下来,输入四位数字,直到模块应运行的时间-激活时间后的0365(天)。

即6012340365 = 01665D088Dh = ASCII格式的AAHpKn。 还要假设上一个键是Key0001。

使用RC4和Key0001的总数(5 |)SkDAAHpKnKey0002以十六进制表示:DD F6 B8 16 2A B6 71 97 0F 9F A2 68 79 11 8C B6 31 DA FE 43。

我们将这个hashtoaddress转换为旧的btc地址(可以转换为其他加密货币的破折号,ltc,dogecoin等的地址,没关系,生成加密地址的算法是开放的,转让将更便宜,更快)。

我们得到地址B(旧版)-1MEdtjmGtqaGPaoYAQn43dkZxiSrSD8gmD。
(我提醒您,在其前面添加一个“ 1”-一个字节符号 ,最后控制4个字节)。

资源使您可以直接查看逐步转换过程(在第3行上插入DDF6 ...(RIPEMD-160哈希值为2))。



但是,为了不从已经标准的隔离见证格式的地址集中脱颖而出,让我们将行表示为(请参见此处 )。



地址B(隔离见证)-bc1qmhmts932kecewrul5f58jyvvkcca4ljrrgmpcd

2.我们从受信任的A发送数百/千聪的转账到该地址。 转移金额还可以携带信息(例如,在同意的基础上进行附加验证,无条件破坏僵尸网络/暂时关闭僵尸网络的命令符号,而无需读取在地址中发送的命令等)。
我将特别注意以下事实:在发送时,必须考虑到发送地址必须与发送地址相同,或者将发送电子邮件地址记录为新的受信任地址。
平均每隔几分钟确认一次交易(视网络负载而定,需要支付足够的浮动佣金)。

转移一千聪的成本将是7卢布。 (加上2-3卢布的佣金)。 我再说一遍,对于其他加密货币,它可以更快,更便宜数十倍/数百倍。

3.在EBS方面,从可用列表(浏览器以各种各样的形式出现)中定期调查了有关从A转移的区块链浏览器(通过API)。
当发现发送带有A的新交易(并确认)的事实时,包含接收到的密钥的信息将被接收的密钥解密(解码)并接受执行,该接收者地址中进行了转移的信息。

假设可信地址是bc1qsj0gm0r2c3hzq9yzfewl34yk2r760hy5za4x3q(隔离见证格式)。
在此地址处,最后一个传出的事务 (大约不是最后一个事务 ,而是 事务 )传递到两个地址-bc1qmhmts932kecewrul5f58jyvvkcca4ljrrgmpcd,并且更改与发送地址相同。
传输量-666 Satoshi-我们认为这是执行解码的条件命令。



我们的地址解码回DDF6 ....
转换为(5 |)SkD34形式,+!Key0002并使用Key0001解密(密钥更改为Key0002)。

从服务器下载模块(可以使用相同的密钥来访问服务器),并等待模块的启动日期。

我注意到至少有必要使用多个浏览器(它们可能会断开或限制来自某些国家/地区的请求,例如bitflyer.jp ,仅限俄罗斯和日本IP)。


接收到的信息至少可以检查一到两个。 浏览器的选择很棒,仅在Electrum类型列表中有十几种-blockchair.com,smartbit.com.au,bitupper.com,chain.so等。 其他



请注意,并非所有浏览器都支持隔离见证格式。 因此,您需要选择一个中间立场,使用旧格式或新格式的受信任地址。

从旧格式186A8D7vdAHpFWdSAFHzZGfi44pPcwtZNc的受信任地址发送到原始生成的旧地址的示例



隔离见证地址



各种区块链浏览器的使用强调了它们的多样性。
我记得在交易中某个地址中的一条隐藏消息将被伪造,以便根据定义无法确认。

算法优势


  1. 没有C2服务器,呼叫转到区块链浏览器。
  2. EBS的命令是无条件信任的。
  3. 发送命令的媒介是区块链,它不允许阻止命令的发送/发送。
  4. 区块链是一个非常稳定的系统(不适用于加密货币的波动性)。
  5. 提供工作的成本低。
  6. 简单的算法实现(开源数据和代码)。
  7. 无需生成交易或下载区块链。

算法特点


  1. 单工通信。
  2. 依赖于浏览器的稳定性。
  3. 某些(尽管最低)财务成本。

我相信这里给出的一些观点对于信息安全专家来说是有用的。

除观察者外,增加僵尸网络的稳定性以吸引完整节点或流行钱包(例如,electrum)的节点的功能,以及通过在电子银行系统侧生成必要的交易来组织双向通信,将是很有意思的。 对于这个问题的想法,以及合理的批评和建议,我将不胜感激。

Source: https://habr.com/ru/post/zh-CN466609/


All Articles