偷盗的艺术: Satori 变种正在通过替换钱包地址盗取 ETH 数字代币
<!--kg-card-begin: markdown--><p>在我们2017年12月5日发布的关于Satori的 <a href="__GHOST_URL__/warning-satori-a-new-mirai-variant-is-spreading-in-worm-style-on-port-37215-and-52869-en/">文章</a> 中，我们提到Satori僵尸网络正在以前所未有的速度快速传播。自从我们的文章发布以后，安全社区、ISP、供应链厂商共同协作，Satori 的控制端服务器被 sinkhole、ISP和供应链厂商采取了行动，Satori的蔓延趋势得到了暂时遏制，但是Satori的威胁依然存在。</p>
<p>从 2018-01-08 10:42:06 GMT+8 开始，我们检测到 Satori 的后继变种正在端口37215和52869上重新建立整个僵尸网络。值得注意的是，新变种开始渗透互联网上现存其他Claymore Miner挖矿设备，通过攻击其3333 管理端口，替换钱包地址，并最终攫取受害挖矿设备的算力和对应的 ETH 代币。我们将这个变种命名为 Satori.Coin.Robber。</p>
<p>这是我们第一次见到僵尸网络替换其他挖矿设备的钱包。这给对抗恶意代码带来了一个新问题：即使安全社区后续接管了 Satori.Coin.Robber 的上联控制服务器，那些已经被篡改了钱包地址的挖矿设备，仍将持续为其贡献算力和 ETH 代币。</p>
<p>到 2018-01-16 17:00 GMT+8 为止，<br>
矿池的 <a href="http://dwarfpool.com/eth/address?wallet=B15A5332eB7cD2DD7a4Ec7f96749E769A371572d&amp;allpayouts=1">付费记录</a> 显示：</p>
<ul>
<li>Satori.Coin.Robber 当前正在持续挖矿，最后一次更新大约在5分钟之前；</li>
<li>Satori.Coin.Robber 过去2天内平均算力大约是 1606 MH/s；账户在过去24小时累积收入 0.1733 个ETH代币；</li>
<li>Satori.Coin.Robber 已经在2017年1月11日14时拿到了矿池付出的第一个 ETH 代币，另有 0.76 个代币在账户上；</li>
</ul>
<p>另外值得一提的是，Satori.Coin.Robber 的作者通过下面这段话宣称自己当前的代码没有恶意，并且留下了一个电子邮箱地址：</p>
<pre><code>Satori dev here, dont be alarmed about this bot it does not currently have any malicious packeting purposes move along. I can be contacted at curtain@riseup.net
</code></pre>
<h4 id="claymoreminer">Claymore Miner远程管理接口上的系列安全问题</h4>
<p>Claymore Miner 是一个流行的的多种代币的挖矿程序，互联网上现存了较多设备正在基于Claymore Miner挖矿。Claymore Miner 提供了远程监控和管理的接口。</p>
<p>按照其 <a href="https://github.com/nanopool/Claymore-Dual-Miner">文档</a>  的描述，其 Windows 版本通过 Remote management 子目录下的 EthMan.exe 文件，在3333端口上，提供了远程监控和管理的特性。其早期版本允许远程读取挖矿进程的运行状态，同时也允许执行重启、上传文件等控制行为。</p>
<p>在缺省情况下就可以获得部分控制权，这显然是个脆弱性问题。作为应对，8.1 版本以后，Claymore Miner 缺省使用 -3333 （而不是 3333 ）端口作为启动参数，这意味着远程管理端口是只读的，不再能够执行控制命令。</p>
<p>但是这并不代表这一系列的远程管理接口问题就到此结束了。2017年11月，<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-16929">CVE-2017-16929</a> 被披露，允许远程读写任意文件。对应的 <a href="https://www.exploit-db.com/exploits/43231/">利用代码</a> 也已经批露。</p>
<p>我们这次观察到的漏洞利用代码跟上面列出的均有所不同。这次攻击主要是针对开放了3333端口管理、同时又没有设置远程登录密码的 Claymore Miner挖矿设备。为防止潜在的滥用，我们不会在文章中公布详细细节。</p>
<h4 id="satoricoinrobbereth">Satori.Coin.Robber 变种正在利用上述脆弱性问题攫取 ETH 代币算力</h4>
<p>在 2018-01-08至2018-01-12期间，我们观察到了以下样本：</p>
<pre><code>737af63598ea5f13e74fd2769e0e0405	http://77.73.67.156/mips.satori
141c574ca7dba34513785652077ab4e5	http://77.73.67.156/mips.satori
4e1ea23bfe4198dad0f544693e599f03	http://77.73.67.156/mips.satori
126f9da9582a431745fa222c0ce65e8c	http://77.73.67.156/mips.satori
74d78e8d671f6edb60fe61d5bd6b7529	http://77.73.67.156/mips.satori
59a53a199febe331a7ca78ece6d8f3a4	http://77.73.67.156/b
</code></pre>
<p>这组样本是Satori的后续变种，这个变种不仅会扫描早先的 37215 和 52869 端口，还会扫描 3333 端口，三个端口上的扫描载荷分别是：</p>
<ul>
<li>端口 37215 : 已有，针对漏洞 CVE-2017-17215，华为公司最近发布了相关的<a href="http://www.huawei.com/en/psirt/security-notices/huawei-sn-20171130-01-hg532-en">声明</a>，并在持续更新；</li>
<li>端口 52869 : 已有，针对漏洞 CVE-2014-8361，这是一个针对 Realtek SDK 的漏洞，网上自2015年就公开了<a href="https://www.exploit-db.com/exploits/37169/">漏洞利用代码</a></li>
<li>端口 3333 ： 新增，针对上述 Eth 挖矿进程远程管理接口的攻击。</li>
</ul>
<p><img src="__GHOST_URL__/content/images/2018/01/port-3333-scanning-payload.jpg" alt="" loading="lazy"><br>
上图是端口 3333 的扫描载荷。这个扫描中，Satori.Coin.Robber 会顺序发出三个包，分别是：</p>
<ul>
<li>第一个包：miner_getstat1，获取状态；</li>
<li>第二个包：miner_file，更新reboot.bat文件，替换其中的矿池和钱包地址；</li>
<li>第三个包：miner_reboot，重启生效。</li>
</ul>
<p>在这个上述 reboot_bat 的文件更新过程中：</p>
<ul>
<li>矿池地址替换为：eth-us2.dwarfpool.com:8008</li>
<li>钱包地址替换为：0xB15A5332eB7cD2DD7a4Ec7f96749E769A371572d</li>
</ul>
<p>通过这种方式，Satori.Coin.Robber 将其他设备上 ETH 挖矿进程的算力攫取为己用。</p>
<h4 id="satoricoinrobber">Satori.Coin.Robber 与之前版本的异同</h4>
<p>我们对比两个版本的 Satori.Coin.Robber，寻找其中的异同：</p>
<ul>
<li>737af63598ea5f13e74fd2769e0e0405  Satori.Coin.Robber</li>
<li>5915e165b2fdf1e4666a567b8a2d358b  satori.x86_64, 2017年10月版本，<a href="https://www.virustotal.com/zh-cn/en-US/file/2a41a98e3889c9a1054ecf652e7b036b51d452a89c74d030663c6e7c6efe5550/analysis/">VT报告地址</a></li>
</ul>
<p>相同点：</p>
<ul>
<li>代码：均使用了UPX加壳，并且使用了相同的幻数 0x4A444E53，脱壳后大量代码结构类似。</li>
<li>配置信息：配置信息均加密，加密方式相同，且大量配置字符串是一致的。例如 /bin/busybox SATORI，bigbotPein，81c4603681c46036，j57*&amp;jE，等等；</li>
<li>扫描载荷：两者均扫描 37215 和 52869 端口，并且使用了相同的扫描载荷</li>
</ul>
<p>我们认为这些证据够强，足以将这次的新变种与之前的 Satori 联系起来。</p>
<p>不同点：</p>
<ul>
<li>扫描载荷：Satori.Coin.Robber 新增了 3333 端口上针对 Claymore Miner的攻击</li>
<li>扫描过程：Satori.Coin.Robber 使用了异步网络连接(NIO)方式发起连接，这种方式会提高扫描效率</li>
<li>C2 协议：Satori.Coin.Robber 启用了一组新的C2 通信协议，会基于DNS协议与54.171.131.39通信。后面会有专门的一节来描述。</li>
</ul>
<p>下面是一些详细的截图证据展示：</p>
<p>两个版本的样本公用了相同的UPX加壳幻数：<br>
<img src="__GHOST_URL__/content/images/2018/01/satori_UPX_MAGIC_diff.png" alt="" loading="lazy"></p>
<p>Satori.Coin.Robber 在扫描过程中使用了异步网络连接方式：<br>
<img src="__GHOST_URL__/content/images/2018/01/port-3333-non-block-scanning.jpg" alt="" loading="lazy"></p>
<h4 id="satoricoinrobberc2">Satori.Coin.Robber 的新的C2 通信协议</h4>
<p>Satori.Coin.Robber 的 C2 ：</p>
<ul>
<li>硬编码的IP地址，54.171.131.39，位于爱尔兰都柏林。</li>
<li>通信协议是基于DNS修改的，可以使用 dig @54.171.131.39  $DNS-QNAME any +short 的方式做一个简单测试，每个$DNS-QNAME对应不同的功能。</li>
</ul>
<p>整体C2协议列表如下：<br>
<img src="__GHOST_URL__/content/images/2018/01/satori-variant-c2-protocol.png" alt="" loading="lazy"></p>
<p>协议释义如下：</p>
<ul>
<li>客户端请求 w.sunnyjuly.gq，服务器返回 0xB15A5332eB7cD2DD7a4Ec7f96749E769A371572d</li>
<li>客户端请求 p.sunnyjuly.gq，服务器返回 eth-us2.dwarfpool.com:8008</li>
<li>客户端请求 s.sunnyjuly.gq，服务器返回一段字符串 &quot;Satori dev here, dont be alarmed about this bot it does not currently have any malicious packeting purposes move along. I can be contacted at <a href="mailto:curtain@riseup.net">curtain@riseup.net</a>.&quot;</li>
<li>客户端请求 f.sunnyjuly.gq，服务器返回 213.74.54.240。这个请求并不是样本中出现的，是我们的研究人员尝试 fuzzing 后得到的。</li>
</ul>
<p>最前面两个请求的回应，恰好是 bot 篡改别的挖矿设备后使用的矿池和钱包地址。但是目前阶段，样本中的扫描载荷仍然是硬编码的，并没有使用这里的服务器返回值；<br>
服务器返回的那段英文，翻译成中文的大意是“我是Satori的作者，现在这个bot还没有什么恶意的代码，所以暂时放轻松。联系我的话，邮件写给curtain@riseup.net”</p>
<h4 id="satoricoinrobber">Satori.Coin.Robber 的感染趋势</h4>
<p>我们大体上可以使用三个扫描端口在 ScanMon 上的扫描趋势来度量 Satori.Coin.Robber 的感染范围和趋势。</p>
<p><a href="http://scan.netlab.360.com/#/dashboard?tsbeg=1513526400000&amp;tsend=1516118400000&amp;dstport=37215&amp;toplistname=srcas&amp;topn=10">37215</a>、<a href="http://scan.netlab.360.com/#/dashboard?tsbeg=1513526400000&amp;tsend=1516118400000&amp;dstport=52869&amp;toplistname=srcas&amp;topn=10">52869</a> 和 <a href="http://scan.netlab.360.com/#/dashboard?tsbeg=1513526400000&amp;tsend=1516118400000&amp;dstport=3333&amp;toplistname=srcas&amp;topn=10">3333</a> 端口上过去30 天的扫描趋势依次如下：</p>
<p><img src="__GHOST_URL__/content/images/2018/01/port-37215-scanning-last-30-days.png" alt="" loading="lazy"></p>
<p><img src="__GHOST_URL__/content/images/2018/01/port-52869-scanning-last-30-days.png" alt="" loading="lazy"></p>
<p><img src="__GHOST_URL__/content/images/2018/01/port-3333-scanning-last-30-days.png" alt="" loading="lazy"></p>
<p>总体来看，三个端口上均有扫描暴涨，与本次样本表现能够对应。</p>
<ul>
<li>初始出现时间都在 2018年1月8日附近；</li>
<li>高峰时间都在都在 2018年1月8日～2018年1月8日附近；</li>
<li>最近几天扫描量逐渐下降；</li>
<li>主要扫描来源在 AS4766 Korea Telecom ；</li>
<li>独立扫描源IP地址，约为 4.9k；</li>
</ul>
<p>噪音方面，37215与52869 端口上，依据1月8日以前的表现，可能有部分扫描来源不属于 Satori.Coin.Robber；但是 3333 端口比较干净，依据1月8日以前的表现来看，噪音较小。考虑到三个端口上的扫描表现趋于一致，我们认为上述数据可以表现当前 Satori.Coin.Robber 的感染趋势。</p>
<h4 id="">结语</h4>
<p>Satori 的最初版本虽然已经被安全社区抑制，但是新的继任者已经出现。</p>
<p>新的Satori.Coin.Robber，会扫描别的设备上的挖矿程序，并将钱包地址替换成自己的。这是我们在botnet领域第一次看到这种行为模式。</p>
<p>尽管作者宣称自己当前没有恶意，但是传播恶意代码、未经授权修改他人计算机上的信息、攫取他人计算机算力为自己挖取数字代币，这些行为都是恶意行为。</p>
<p>考虑到12月5日附近Satori在12小时内感染了超过26万IoT设备，当前 Satori.Coin.Robber的感染速度已经远远变低，暂时不用恐慌。</p>
<p>上述感染速度的降低，不应该归因为攻击者刻意降低了扫描的速度，特别是考虑到攻击者启用了NIO技术来加速扫描阶段的效率；而应该归因为安全公司、ISP、供应链设备厂商共同的协作和努力。</p>
<!--kg-card-end: markdown-->
在我们2017年12月5日发布的关于Satori的 文章 中，我们提到Satori僵尸网络正在以前所未有的速度快速传播。自从我们的文章发布以后，安全社区、ISP、供应链厂商共同协作，Satori 的控制端服务器被 sinkhole、ISP和供应链厂商采取了行动，Satori的蔓延趋势得到了暂时遏制，但是Satori的威胁依然存在。


从 2018-01-08 10:42:06 GMT+8 开始，我们检测到 Satori 的后继变种正在端口37215和52869上重新建立整个僵尸网络。值得注意的是，新变种开始渗透互联网上现存其他Claymore Miner挖矿设备，通过攻击其3333 管理端口，替换钱包地址，并最终攫取受害挖矿设备的算力和对应的 ETH 代币。我们将这个变种命名为 Satori.Coin.Robber。


这是我们第一次见到僵尸网络替换其他挖矿设备的钱包。这给对抗恶意代码带来了一个新问题：即使安全社区后续接管了 Satori.Coin.Robber 的上联控制服务器，那些已经被篡改了钱包地址的挖矿设备，仍将持续为其贡献算力和 ETH 代币。


到 2018-01-16 17:00 GMT+8 为止，

矿池的 付费记录 显示：


 * Satori.Coin.Robber 当前正在持续挖矿，最后一次更新大约在5分钟之前；
 * Satori.Coin.Robber 过去2天内平均算力大约是 1606 MH/s；账户在过去24小时累积收入 0.1733 个ETH代币；
 * Satori.Coin.Robber 已经在2017年1月11日14时拿到了矿池付出的第一个 ETH 代币，另有 0.76 个代币在账户上；


另外值得一提的是，Satori.Coin.Robber 的作者通过下面这段话宣称自己当前的代码没有恶意，并且留下了一个电子邮箱地址：


Satori dev here, dont be alarmed about this bot it does not currently have any malicious packeting purposes move along. I can be contacted at curtain@riseup.net



Claymore Miner远程管理接口上的系列安全问题


Claymore Miner 是一个流行的的多种代币的挖矿程序，互联网上现存了较多设备正在基于Claymore Miner挖矿。Claymore Miner 提供了远程监控和管理的接口。


按照其 文档 的描述，其 Windows 版本通过 Remote management 子目录下的 EthMan.exe 文件，在3333端口上，提供了远程监控和管理的特性。其早期版本允许远程读取挖矿进程的运行状态，同时也允许执行重启、上传文件等控制行为。


在缺省情况下就可以获得部分控制权，这显然是个脆弱性问题。作为应对，8.1 版本以后，Claymore Miner 缺省使用 -3333 （而不是 3333 ）端口作为启动参数，这意味着远程管理端口是只读的，不再能够执行控制命令。


但是这并不代表这一系列的远程管理接口问题就到此结束了。2017年11月，CVE-2017-16929 被披露，允许远程读写任意文件。对应的 利用代码 也已经批露。


我们这次观察到的漏洞利用代码跟上面列出的均有所不同。这次攻击主要是针对开放了3333端口管理、同时又没有设置远程登录密码的 Claymore Miner挖矿设备。为防止潜在的滥用，我们不会在文章中公布详细细节。


Satori.Coin.Robber 变种正在利用上述脆弱性问题攫取 ETH 代币算力


在 2018-01-08至2018-01-12期间，我们观察到了以下样本：


737af63598ea5f13e74fd2769e0e0405	http://77.73.67.156/mips.satori
141c574ca7dba34513785652077ab4e5	http://77.73.67.156/mips.satori
4e1ea23bfe4198dad0f544693e599f03	http://77.73.67.156/mips.satori
126f9da9582a431745fa222c0ce65e8c	http://77.73.67.156/mips.satori
74d78e8d671f6edb60fe61d5bd6b7529	http://77.73.67.156/mips.satori
59a53a199febe331a7ca78ece6d8f3a4	http://77.73.67.156/b



这组样本是Satori的后续变种，这个变种不仅会扫描早先的 37215 和 52869 端口，还会扫描 3333 端口，三个端口上的扫描载荷分别是：


 * 端口 37215 : 已有，针对漏洞 CVE-2017-17215，华为公司最近发布了相关的声明，并在持续更新；
 * 端口 52869 : 已有，针对漏洞 CVE-2014-8361，这是一个针对 Realtek SDK 的漏洞，网上自2015年就公开了漏洞利用代码
 * 端口 3333 ： 新增，针对上述 Eth 挖矿进程远程管理接口的攻击。




上图是端口 3333 的扫描载荷。这个扫描中，Satori.Coin.Robber 会顺序发出三个包，分别是：


 * 第一个包：miner_getstat1，获取状态；
 * 第二个包：miner_file，更新reboot.bat文件，替换其中的矿池和钱包地址；
 * 第三个包：miner_reboot，重启生效。


在这个上述 reboot_bat 的文件更新过程中：


 * 矿池地址替换为：eth-us2.dwarfpool.com:8008
 * 钱包地址替换为：0xB15A5332eB7cD2DD7a4Ec7f96749E769A371572d


通过这种方式，Satori.Coin.Robber 将其他设备上 ETH 挖矿进程的算力攫取为己用。


Satori.Coin.Robber 与之前版本的异同


我们对比两个版本的 Satori.Coin.Robber，寻找其中的异同：


 * 737af63598ea5f13e74fd2769e0e0405 Satori.Coin.Robber
 * 5915e165b2fdf1e4666a567b8a2d358b satori.x86_64, 2017年10月版本，VT报告地址


相同点：


 * 代码：均使用了UPX加壳，并且使用了相同的幻数 0x4A444E53，脱壳后大量代码结构类似。
 * 配置信息：配置信息均加密，加密方式相同，且大量配置字符串是一致的。例如 /bin/busybox SATORI，bigbotPein，81c4603681c46036，j57*&jE，等等；
 * 扫描载荷：两者均扫描 37215 和 52869 端口，并且使用了相同的扫描载荷


我们认为这些证据够强，足以将这次的新变种与之前的 Satori 联系起来。


不同点：


 * 扫描载荷：Satori.Coin.Robber 新增了 3333 端口上针对 Claymore Miner的攻击
 * 扫描过程：Satori.Coin.Robber 使用了异步网络连接(NIO)方式发起连接，这种方式会提高扫描效率
 * C2 协议：Satori.Coin.Robber 启用了一组新的C2 通信协议，会基于DNS协议与54.171.131.39通信。后面会有专门的一节来描述。


下面是一些详细的截图证据展示：


两个版本的样本公用了相同的UPX加壳幻数：




Satori.Coin.Robber 在扫描过程中使用了异步网络连接方式：




Satori.Coin.Robber 的新的C2 通信协议


Satori.Coin.Robber 的 C2 ：


 * 硬编码的IP地址，54.171.131.39，位于爱尔兰都柏林。
 * 通信协议是基于DNS修改的，可以使用 dig @54.171.131.39 $DNS-QNAME any +short 的方式做一个简单测试，每个$DNS-QNAME对应不同的功能。


整体C2协议列表如下：




协议释义如下：


 * 客户端请求 w.sunnyjuly.gq，服务器返回 0xB15A5332eB7cD2DD7a4Ec7f96749E769A371572d
 * 客户端请求 p.sunnyjuly.gq，服务器返回 eth-us2.dwarfpool.com:8008
 * 客户端请求 s.sunnyjuly.gq，服务器返回一段字符串 "Satori dev here, dont be alarmed about this bot it does not currently have any malicious packeting purposes move along. I can be contacted at curtain@riseup.net."
 * 客户端请求 f.sunnyjuly.gq，服务器返回 213.74.54.240。这个请求并不是样本中出现的，是我们的研究人员尝试 fuzzing 后得到的。


最前面两个请求的回应，恰好是 bot 篡改别的挖矿设备后使用的矿池和钱包地址。但是目前阶段，样本中的扫描载荷仍然是硬编码的，并没有使用这里的服务器返回值；

服务器返回的那段英文，翻译成中文的大意是“我是Satori的作者，现在这个bot还没有什么恶意的代码，所以暂时放轻松。联系我的话，邮件写给curtain@riseup.net”


Satori.Coin.Robber 的感染趋势


我们大体上可以使用三个扫描端口在 ScanMon 上的扫描趋势来度量 Satori.Coin.Robber 的感染范围和趋势。


37215、52869 和 3333 端口上过去30 天的扫描趋势依次如下：











总体来看，三个端口上均有扫描暴涨，与本次样本表现能够对应。


 * 初始出现时间都在 2018年1月8日附近；
 * 高峰时间都在都在 2018年1月8日～2018年1月8日附近；
 * 最近几天扫描量逐渐下降；
 * 主要扫描来源在 AS4766 Korea Telecom ；
 * 独立扫描源IP地址，约为 4.9k；


噪音方面，37215与52869 端口上，依据1月8日以前的表现，可能有部分扫描来源不属于 Satori.Coin.Robber；但是 3333 端口比较干净，依据1月8日以前的表现来看，噪音较小。考虑到三个端口上的扫描表现趋于一致，我们认为上述数据可以表现当前 Satori.Coin.Robber 的感染趋势。


结语


Satori 的最初版本虽然已经被安全社区抑制，但是新的继任者已经出现。


新的Satori.Coin.Robber，会扫描别的设备上的挖矿程序，并将钱包地址替换成自己的。这是我们在botnet领域第一次看到这种行为模式。


尽管作者宣称自己当前没有恶意，但是传播恶意代码、未经授权修改他人计算机上的信息、攫取他人计算机算力为自己挖取数字代币，这些行为都是恶意行为。


考虑到12月5日附近Satori在12小时内感染了超过26万IoT设备，当前 Satori.Coin.Robber的感染速度已经远远变低，暂时不用恐慌。


上述感染速度的降低，不应该归因为攻击者刻意降低了扫描的速度，特别是考虑到攻击者启用了NIO技术来加速扫描阶段的效率；而应该归因为安全公司、ISP、供应链设备厂商共同的协作和努力。

{"version":"0.3.1","markups":[],"atoms":[],"cards":[["markdown",{"cardName":"card-markdown","markdown":"在我们2017年12月5日发布的关于Satori的 [文章](__GHOST_URL__/warning-satori-a-new-mirai-variant-is-spreading-in-worm-style-on-port-37215-and-52869-en/) 中，我们提到Satori僵尸网络正在以前所未有的速度快速传播。自从我们的文章发布以后，安全社区、ISP、供应链厂商共同协作，Satori 的控制端服务器被 sinkhole、ISP和供应链厂商采取了行动，Satori的蔓延趋势得到了暂时遏制，但是Satori的威胁依然存在。\n\n从 2018-01-08 10:42:06 GMT+8 开始，我们检测到 Satori 的后继变种正在端口37215和52869上重新建立整个僵尸网络。值得注意的是，新变种开始渗透互联网上现存其他Claymore Miner挖矿设备，通过攻击其3333 管理端口，替换钱包地址，并最终攫取受害挖矿设备的算力和对应的 ETH 代币。我们将这个变种命名为 Satori.Coin.Robber。\n\n这是我们第一次见到僵尸网络替换其他挖矿设备的钱包。这给对抗恶意代码带来了一个新问题：即使安全社区后续接管了 Satori.Coin.Robber 的上联控制服务器，那些已经被篡改了钱包地址的挖矿设备，仍将持续为其贡献算力和 ETH 代币。\n\n到 2018-01-16 17:00 GMT+8 为止，\n矿池的 [付费记录](http://dwarfpool.com/eth/address?wallet=B15A5332eB7cD2DD7a4Ec7f96749E769A371572d&allpayouts=1) 显示：\n \n* Satori.Coin.Robber 当前正在持续挖矿，最后一次更新大约在5分钟之前；\n* Satori.Coin.Robber 过去2天内平均算力大约是 1606 MH/s；账户在过去24小时累积收入 0.1733 个ETH代币；\n* Satori.Coin.Robber 已经在2017年1月11日14时拿到了矿池付出的第一个 ETH 代币，另有 0.76 个代币在账户上；\n\n另外值得一提的是，Satori.Coin.Robber 的作者通过下面这段话宣称自己当前的代码没有恶意，并且留下了一个电子邮箱地址：\n\n```\nSatori dev here, dont be alarmed about this bot it does not currently have any malicious packeting purposes move along. I can be contacted at curtain@riseup.net\n```\n\n\n####Claymore Miner远程管理接口上的系列安全问题\nClaymore Miner 是一个流行的的多种代币的挖矿程序，互联网上现存了较多设备正在基于Claymore Miner挖矿。Claymore Miner 提供了远程监控和管理的接口。\n\n按照其 [文档](https://github.com/nanopool/Claymore-Dual-Miner)  的描述，其 Windows 版本通过 Remote management 子目录下的 EthMan.exe 文件，在3333端口上，提供了远程监控和管理的特性。其早期版本允许远程读取挖矿进程的运行状态，同时也允许执行重启、上传文件等控制行为。\n\n在缺省情况下就可以获得部分控制权，这显然是个脆弱性问题。作为应对，8.1 版本以后，Claymore Miner 缺省使用 -3333 （而不是 3333 ）端口作为启动参数，这意味着远程管理端口是只读的，不再能够执行控制命令。\n\n但是这并不代表这一系列的远程管理接口问题就到此结束了。2017年11月，[CVE-2017-16929](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-16929) 被披露，允许远程读写任意文件。对应的 [利用代码](https://www.exploit-db.com/exploits/43231/) 也已经批露。\n\n我们这次观察到的漏洞利用代码跟上面列出的均有所不同。这次攻击主要是针对开放了3333端口管理、同时又没有设置远程登录密码的 Claymore Miner挖矿设备。为防止潜在的滥用，我们不会在文章中公布详细细节。\n\n####Satori.Coin.Robber 变种正在利用上述脆弱性问题攫取 ETH 代币算力\n在 2018-01-08至2018-01-12期间，我们观察到了以下样本：\n```\n737af63598ea5f13e74fd2769e0e0405\thttp://77.73.67.156/mips.satori\n141c574ca7dba34513785652077ab4e5\thttp://77.73.67.156/mips.satori\n4e1ea23bfe4198dad0f544693e599f03\thttp://77.73.67.156/mips.satori\n126f9da9582a431745fa222c0ce65e8c\thttp://77.73.67.156/mips.satori\n74d78e8d671f6edb60fe61d5bd6b7529\thttp://77.73.67.156/mips.satori\n59a53a199febe331a7ca78ece6d8f3a4\thttp://77.73.67.156/b\n```\n\n这组样本是Satori的后续变种，这个变种不仅会扫描早先的 37215 和 52869 端口，还会扫描 3333 端口，三个端口上的扫描载荷分别是：\n\n*  端口 37215 : 已有，针对漏洞 CVE-2017-17215，华为公司最近发布了相关的[声明](http://www.huawei.com/en/psirt/security-notices/huawei-sn-20171130-01-hg532-en)，并在持续更新；\n*  端口 52869 : 已有，针对漏洞 CVE-2014-8361，这是一个针对 Realtek SDK 的漏洞，网上自2015年就公开了[漏洞利用代码](https://www.exploit-db.com/exploits/37169/)\n*  端口 3333 ： 新增，针对上述 Eth 挖矿进程远程管理接口的攻击。\n\n![](__GHOST_URL__/content/images/2018/01/port-3333-scanning-payload.jpg)\n上图是端口 3333 的扫描载荷。这个扫描中，Satori.Coin.Robber 会顺序发出三个包，分别是：\n\n * 第一个包：miner_getstat1，获取状态；\n * 第二个包：miner_file，更新reboot.bat文件，替换其中的矿池和钱包地址；\n * 第三个包：miner_reboot，重启生效。\n\n在这个上述 reboot_bat 的文件更新过程中：\n\n * 矿池地址替换为：eth-us2.dwarfpool.com:8008\n * 钱包地址替换为：0xB15A5332eB7cD2DD7a4Ec7f96749E769A371572d\n\n通过这种方式，Satori.Coin.Robber 将其他设备上 ETH 挖矿进程的算力攫取为己用。\n\n####Satori.Coin.Robber 与之前版本的异同\n\n我们对比两个版本的 Satori.Coin.Robber，寻找其中的异同：\n\n* 737af63598ea5f13e74fd2769e0e0405  Satori.Coin.Robber\n* 5915e165b2fdf1e4666a567b8a2d358b  satori.x86_64, 2017年10月版本，[VT报告地址](https://www.virustotal.com/zh-cn/en-US/file/2a41a98e3889c9a1054ecf652e7b036b51d452a89c74d030663c6e7c6efe5550/analysis/)\n\n相同点：\n\n * 代码：均使用了UPX加壳，并且使用了相同的幻数 0x4A444E53，脱壳后大量代码结构类似。\n * 配置信息：配置信息均加密，加密方式相同，且大量配置字符串是一致的。例如 /bin/busybox SATORI，bigbotPein，81c4603681c46036，j57*&jE，等等；\n * 扫描载荷：两者均扫描 37215 和 52869 端口，并且使用了相同的扫描载荷\n\n我们认为这些证据够强，足以将这次的新变种与之前的 Satori 联系起来。\n\n\n不同点：\n\n * 扫描载荷：Satori.Coin.Robber 新增了 3333 端口上针对 Claymore Miner的攻击\n * 扫描过程：Satori.Coin.Robber 使用了异步网络连接(NIO)方式发起连接，这种方式会提高扫描效率\n * C2 协议：Satori.Coin.Robber 启用了一组新的C2 通信协议，会基于DNS协议与54.171.131.39通信。后面会有专门的一节来描述。\n\n下面是一些详细的截图证据展示：\n\n两个版本的样本公用了相同的UPX加壳幻数：\n![](__GHOST_URL__/content/images/2018/01/satori_UPX_MAGIC_diff.png)\n\nSatori.Coin.Robber 在扫描过程中使用了异步网络连接方式：\n![](__GHOST_URL__/content/images/2018/01/port-3333-non-block-scanning.jpg)\n\n####Satori.Coin.Robber 的新的C2 通信协议\n\nSatori.Coin.Robber 的 C2 ：\n\n * 硬编码的IP地址，54.171.131.39，位于爱尔兰都柏林。\n * 通信协议是基于DNS修改的，可以使用 dig @54.171.131.39  $DNS-QNAME any +short 的方式做一个简单测试，每个$DNS-QNAME对应不同的功能。\n\n整体C2协议列表如下：\n![](__GHOST_URL__/content/images/2018/01/satori-variant-c2-protocol.png)\n\n协议释义如下：\n\n * 客户端请求 w.sunnyjuly.gq，服务器返回 0xB15A5332eB7cD2DD7a4Ec7f96749E769A371572d\n * 客户端请求 p.sunnyjuly.gq，服务器返回 eth-us2.dwarfpool.com:8008\n * 客户端请求 s.sunnyjuly.gq，服务器返回一段字符串 \"Satori dev here, dont be alarmed about this bot it does not currently have any malicious packeting purposes move along. I can be contacted at curtain@riseup.net.\"\n * 客户端请求 f.sunnyjuly.gq，服务器返回 213.74.54.240。这个请求并不是样本中出现的，是我们的研究人员尝试 fuzzing 后得到的。\n\n最前面两个请求的回应，恰好是 bot 篡改别的挖矿设备后使用的矿池和钱包地址。但是目前阶段，样本中的扫描载荷仍然是硬编码的，并没有使用这里的服务器返回值；\n服务器返回的那段英文，翻译成中文的大意是“我是Satori的作者，现在这个bot还没有什么恶意的代码，所以暂时放轻松。联系我的话，邮件写给curtain@riseup.net”\n\n\n####Satori.Coin.Robber 的感染趋势\n我们大体上可以使用三个扫描端口在 ScanMon 上的扫描趋势来度量 Satori.Coin.Robber 的感染范围和趋势。\n\n[37215](http://scan.netlab.360.com/#/dashboard?tsbeg=1513526400000&tsend=1516118400000&dstport=37215&toplistname=srcas&topn=10)、[52869](http://scan.netlab.360.com/#/dashboard?tsbeg=1513526400000&tsend=1516118400000&dstport=52869&toplistname=srcas&topn=10) 和 [3333](http://scan.netlab.360.com/#/dashboard?tsbeg=1513526400000&tsend=1516118400000&dstport=3333&toplistname=srcas&topn=10) 端口上过去30 天的扫描趋势依次如下：\n\n![](__GHOST_URL__/content/images/2018/01/port-37215-scanning-last-30-days.png)\n\n![](__GHOST_URL__/content/images/2018/01/port-52869-scanning-last-30-days.png)\n\n![](__GHOST_URL__/content/images/2018/01/port-3333-scanning-last-30-days.png)\n\n\n总体来看，三个端口上均有扫描暴涨，与本次样本表现能够对应。\n\n * 初始出现时间都在 2018年1月8日附近；\n * 高峰时间都在都在 2018年1月8日～2018年1月8日附近；\n * 最近几天扫描量逐渐下降；\n * 主要扫描来源在 AS4766 Korea Telecom ；\n * 独立扫描源IP地址，约为 4.9k；\n\n噪音方面，37215与52869 端口上，依据1月8日以前的表现，可能有部分扫描来源不属于 Satori.Coin.Robber；但是 3333 端口比较干净，依据1月8日以前的表现来看，噪音较小。考虑到三个端口上的扫描表现趋于一致，我们认为上述数据可以表现当前 Satori.Coin.Robber 的感染趋势。\n\n####结语\n\nSatori 的最初版本虽然已经被安全社区抑制，但是新的继任者已经出现。\n\n新的Satori.Coin.Robber，会扫描别的设备上的挖矿程序，并将钱包地址替换成自己的。这是我们在botnet领域第一次看到这种行为模式。\n\n尽管作者宣称自己当前没有恶意，但是传播恶意代码、未经授权修改他人计算机上的信息、攫取他人计算机算力为自己挖取数字代币，这些行为都是恶意行为。\n\n考虑到12月5日附近Satori在12小时内感染了超过26万IoT设备，当前 Satori.Coin.Robber的感染速度已经远远变低，暂时不用恐慌。\n\n上述感染速度的降低，不应该归因为攻击者刻意降低了扫描的速度，特别是考虑到攻击者启用了NIO技术来加速扫描阶段的效率；而应该归因为安全公司、ISP、供应链设备厂商共同的协作和努力。"}]],"sections":[[10,0]],"ghostVersion":"3.0"}