ADB.Miner 安卓蠕虫的更多信息
<!--kg-card-begin: markdown--><p>本篇技术分析，由360手机卫士，360威胁情报中心，360烽火实验室，360-CERT，360网络安全研究院联合发布。</p>
<h2 id="">综述</h2>
<p>大约48小时之前，我们发布 <a href="__GHOST_URL__/early-warning-adb-miner-a-mining-botnet-utilizing-android-adb-is-now-rapidly-spreading/">文章</a> 报告了ADB.Miner，一种新型的安卓蠕虫。该蠕虫可以借助安卓设备上已经打开的 adb 调试接口传播，且初期传播的增速很快，约每12小时翻一番。</p>
<p>在过去的48小时内，我们对 ADB.Miner 做更进一步的分析，目前的结论如下，供安全社区参考：</p>
<ol>
<li><strong>当前感染量已经稳定</strong>：日活感染量在增长到7千(2018-02-05 15:00 GMT+8)后不再快速增长。这个数字已经保持稳定了超过 20 小时，可以认为蠕虫已经经过了爆发期，进入稳定期。</li>
<li><strong>确认电视盒子被感染</strong>：确认被感染的都是安卓设备。进一步分析能够确认部分设备是电视盒子，其他设备不能认定是何种设备，也不能确认是安卓手机</li>
<li>对样本的分析，<strong>排除了样本从远程开启 adb 调试接口</strong>的可能。在被感染以前，这些设备的 5555 端口就已经开启。至于 5555 接口是如何打开的，目前无从得知。</li>
</ol>
<p>受感染的设备地理分布如下图所示，主要的受害者分布在中国（39%，含中国香港和中国台湾）和韩国（39%）：</p>
<p><img src="__GHOST_URL__/content/images/2018/02/infected_device_distribute.png" alt="" loading="lazy"></p>
<h2 id="">样本分析</h2>
<p>在本次事件中，共捕获样本9个。系列样本的核心功能是蠕虫 + 挖矿。</p>
<ul>
<li><strong>蠕虫式传染</strong>：被感染设备会对外发起 TCP 5555 adb 调试端口扫描，并尝试执行 adb 命令把自身拷贝到新的感染机器</li>
<li><strong>挖矿</strong>：被感染后的核心功能就是利用窃取到的计算资源挖XMR代币</li>
<li>此外，该样本的蠕虫的端口探测部分<strong>借鉴了MIRAI的SYN扫描模块</strong>以提高端口探测效率。</li>
</ul>
<p>该蠕虫没有上联控制服务器，仅通过单一钱包地址获取收益。这种代码布局更加紧凑。</p>
<p>各样本概要信息如下表所示，后续各小节逐一展开分析：</p>
<p><img src="__GHOST_URL__/content/images/2018/02/IOC_cn-1.jpg" alt="" loading="lazy"></p>
<h4 id="sss">sss - 代码主体</h4>
<p>sss为上载到目标设备的恶意代码主体。在droidbot将其上传到目标设备后，执行nohup /data/local/tmp/sss启动该执行程序时，其会读取bot.dat，并释放droidbot，invoke.sh，ddexe，debuggerd和install-recovery.sh到当前目录下。随后其会调用nohup执行释放的droidbot。</p>
<p><img src="__GHOST_URL__/content/images/2018/02/sss_main_run.jpg" alt="" loading="lazy"></p>
<h4 id="invokesh">invoke.sh - 持久化</h4>
<p>invoke.sh通过替换系统程序来实现持久化，替换后的程序除了原有功能外，还会额外运行droidbot。三个被替换的文件如下：</p>
<ul>
<li>如果/system/bin/ddexe存在，则替换其为释放的ddexe脚本；</li>
<li>如果/system/bin/debuggerd存在，则替换为释放的debuggerd脚本；</li>
<li>如果/system/etc/install-recovery.sh存在，则替换为释放的install-recovery.sh脚本。</li>
</ul>
<p><img src="__GHOST_URL__/content/images/2018/02/invoke_sh_code.jpg" alt="" loading="lazy"></p>
<h4 id="droidbot">droidbot样本 - 蠕虫传播</h4>
<p>样本的<strong>蠕虫式传播是通过 droidbot 实现</strong>的。当样本扫描发现开启5555端口的设备后，将通过依次发送adb connect /adb push/adb shell 等指令的方式，将所有相关样本从本地上传至受害者并执行，相关截图如下所示：</p>
<p><img src="__GHOST_URL__/content/images/2018/02/adbminer_adbshell_1.jpg" alt="adb命令前缀" loading="lazy"></p>
<p><img src="__GHOST_URL__/content/images/2018/02/adbminer_adbshell_2.jpg" alt="adb命令参数" loading="lazy"></p>
<p>该传播模块<strong>借鉴了MIRAI的源码</strong>：</p>
<ol>
<li>样本中<strong>内置了MIRAI的SYN扫描模块</strong>，以提高对5555 端口开放情况的探测能力。下图高亮处代码在试图构造一个随机IP，且目标端口为5555。如果对MIRAI的代码结构比较熟悉可从左下角缩略图看到这个缩略图同MIRAI的代码结构具有高度相似性。</li>
<li>样本中还<strong>遗留了MIRAI代码中table的结构字符</strong>，如下下图所示。通过MIRAI的默认密钥0xdeadbeef 对上面的字符内容解密后，可以确认均为弱口令字符。并且我们确认这些弱口令均未被使用。</li>
</ol>
<p><img src="__GHOST_URL__/content/images/2018/02/mirai_code_1.jpg" alt="" loading="lazy"></p>
<p><img src="__GHOST_URL__/content/images/2018/02/mirai_code_2.jpg" alt="" loading="lazy"></p>
<h4 id="xmrig32xmrig64configjson">xmrig32/xmrig64/config.json - 挖矿样本和配置</h4>
<p>两个xmrig样本为挖矿样本。</p>
<p>挖矿的配置由 config.json 文件提供，如下：</p>
<p><img src="__GHOST_URL__/content/images/2018/02/config_json_screen.jpg" alt="" loading="lazy"></p>
<p>其中矿池分别为：</p>
<ul>
<li>pool.minexmr.com:7777</li>
<li>pool.monero.hashvault.pro:5555</li>
</ul>
<p>用户名，即钱包地址为:</p>
<ul>
<li>44XT4KvmobTQfeWa6PCQF5RDosr2MLWm43AsaE3o5iNRXXTfDbYk2VPHTVedTQHZyfXNzMn8YYF2466d3FSDT7gJS8gdHAr</li>
</ul>
<h4 id="droidbotapkcoinhive">droidbot.apk - 另一个基于CoinHive的挖矿样本</h4>
<p>该样本是一个运行于Android环境的apk文件。其核心功能就是通过webview加载一个本地html网页文件挖矿。相关代码如下图所示：</p>
<p><img src="__GHOST_URL__/content/images/2018/02/adbminer_webview_1.jpg" alt="利用webview组建加载本地html页面" loading="lazy"></p>
<p><img src="__GHOST_URL__/content/images/2018/02/adbminer_webview_2.jpg" alt="被加载网页会调用coinhive脚本挖矿" loading="lazy"></p>
<p>上述两图展示了恶意代码先后利用webview组建加载本地html页面，并通过被加载网页调用 coinhive 脚本挖矿。</p>
<h2 id="ioc">IoC</h2>
<pre><code>bc84e86f8090f935e0f1fc04b04455c6	bot.dat
cd37d59f2aac9101715b28f2b28b7417	botsuinit_1_1.txt
27c3e74b6ddf175c3827900fe06d63b3	config.json
412874e10fe6d7295ad7eb210da352a1	droidbot
914082a04d6db5084a963e9f70fb4276	droidbot.apk
9a10ba1d64a02ee308cd6479959d2db2	nohup
6a22c94d6e2a18acf2377c994d0186af	sss
ac344c3accbbc4ee14db0e18f81c2c0d	xmrig32
cc7775f1682d12ba4edb161824e5a0e4	xmrig64
</code></pre>
<!--kg-card-end: markdown-->
本篇技术分析，由360手机卫士，360威胁情报中心，360烽火实验室，360-CERT，360网络安全研究院联合发布。



综述


大约48小时之前，我们发布 文章 报告了ADB.Miner，一种新型的安卓蠕虫。该蠕虫可以借助安卓设备上已经打开的 adb 调试接口传播，且初期传播的增速很快，约每12小时翻一番。


在过去的48小时内，我们对 ADB.Miner 做更进一步的分析，目前的结论如下，供安全社区参考：


 1. 当前感染量已经稳定：日活感染量在增长到7千(2018-02-05 15:00 GMT+8)后不再快速增长。这个数字已经保持稳定了超过 20 小时，可以认为蠕虫已经经过了爆发期，进入稳定期。
 2. 确认电视盒子被感染：确认被感染的都是安卓设备。进一步分析能够确认部分设备是电视盒子，其他设备不能认定是何种设备，也不能确认是安卓手机
 3. 对样本的分析，排除了样本从远程开启 adb 调试接口的可能。在被感染以前，这些设备的 5555 端口就已经开启。至于 5555 接口是如何打开的，目前无从得知。


受感染的设备地理分布如下图所示，主要的受害者分布在中国（39%，含中国香港和中国台湾）和韩国（39%）：






样本分析


在本次事件中，共捕获样本9个。系列样本的核心功能是蠕虫 + 挖矿。


 * 蠕虫式传染：被感染设备会对外发起 TCP 5555 adb 调试端口扫描，并尝试执行 adb 命令把自身拷贝到新的感染机器
 * 挖矿：被感染后的核心功能就是利用窃取到的计算资源挖XMR代币
 * 此外，该样本的蠕虫的端口探测部分借鉴了MIRAI的SYN扫描模块以提高端口探测效率。


该蠕虫没有上联控制服务器，仅通过单一钱包地址获取收益。这种代码布局更加紧凑。


各样本概要信息如下表所示，后续各小节逐一展开分析：





sss - 代码主体


sss为上载到目标设备的恶意代码主体。在droidbot将其上传到目标设备后，执行nohup /data/local/tmp/sss启动该执行程序时，其会读取bot.dat，并释放droidbot，invoke.sh，ddexe，debuggerd和install-recovery.sh到当前目录下。随后其会调用nohup执行释放的droidbot。





invoke.sh - 持久化


invoke.sh通过替换系统程序来实现持久化，替换后的程序除了原有功能外，还会额外运行droidbot。三个被替换的文件如下：


 * 如果/system/bin/ddexe存在，则替换其为释放的ddexe脚本；
 * 如果/system/bin/debuggerd存在，则替换为释放的debuggerd脚本；
 * 如果/system/etc/install-recovery.sh存在，则替换为释放的install-recovery.sh脚本。





droidbot样本 - 蠕虫传播


样本的蠕虫式传播是通过 droidbot 实现的。当样本扫描发现开启5555端口的设备后，将通过依次发送adb connect /adb push/adb shell 等指令的方式，将所有相关样本从本地上传至受害者并执行，相关截图如下所示：








该传播模块借鉴了MIRAI的源码：


 1. 样本中内置了MIRAI的SYN扫描模块，以提高对5555 端口开放情况的探测能力。下图高亮处代码在试图构造一个随机IP，且目标端口为5555。如果对MIRAI的代码结构比较熟悉可从左下角缩略图看到这个缩略图同MIRAI的代码结构具有高度相似性。
 2. 样本中还遗留了MIRAI代码中table的结构字符，如下下图所示。通过MIRAI的默认密钥0xdeadbeef 对上面的字符内容解密后，可以确认均为弱口令字符。并且我们确认这些弱口令均未被使用。








xmrig32/xmrig64/config.json - 挖矿样本和配置


两个xmrig样本为挖矿样本。


挖矿的配置由 config.json 文件提供，如下：





其中矿池分别为：


 * pool.minexmr.com:7777
 * pool.monero.hashvault.pro:5555


用户名，即钱包地址为:


 * 44XT4KvmobTQfeWa6PCQF5RDosr2MLWm43AsaE3o5iNRXXTfDbYk2VPHTVedTQHZyfXNzMn8YYF2466d3FSDT7gJS8gdHAr


droidbot.apk - 另一个基于CoinHive的挖矿样本


该样本是一个运行于Android环境的apk文件。其核心功能就是通过webview加载一个本地html网页文件挖矿。相关代码如下图所示：








上述两图展示了恶意代码先后利用webview组建加载本地html页面，并通过被加载网页调用 coinhive 脚本挖矿。



IoC


bc84e86f8090f935e0f1fc04b04455c6	bot.dat
cd37d59f2aac9101715b28f2b28b7417	botsuinit_1_1.txt
27c3e74b6ddf175c3827900fe06d63b3	config.json
412874e10fe6d7295ad7eb210da352a1	droidbot
914082a04d6db5084a963e9f70fb4276	droidbot.apk
9a10ba1d64a02ee308cd6479959d2db2	nohup
6a22c94d6e2a18acf2377c994d0186af	sss
ac344c3accbbc4ee14db0e18f81c2c0d	xmrig32
cc7775f1682d12ba4edb161824e5a0e4	xmrig64


{"version":"0.3.1","markups":[],"atoms":[],"cards":[["markdown",{"cardName":"card-markdown","markdown":"本篇技术分析，由360手机卫士，360威胁情报中心，360烽火实验室，360-CERT，360网络安全研究院联合发布。\n\n## 综述\n\n大约48小时之前，我们发布 [文章](__GHOST_URL__/early-warning-adb-miner-a-mining-botnet-utilizing-android-adb-is-now-rapidly-spreading/) 报告了ADB.Miner，一种新型的安卓蠕虫。该蠕虫可以借助安卓设备上已经打开的 adb 调试接口传播，且初期传播的增速很快，约每12小时翻一番。\n\n在过去的48小时内，我们对 ADB.Miner 做更进一步的分析，目前的结论如下，供安全社区参考：\n\n 1. **当前感染量已经稳定**：日活感染量在增长到7千(2018-02-05 15:00 GMT+8)后不再快速增长。这个数字已经保持稳定了超过 20 小时，可以认为蠕虫已经经过了爆发期，进入稳定期。\n 2. **确认电视盒子被感染**：确认被感染的都是安卓设备。进一步分析能够确认部分设备是电视盒子，其他设备不能认定是何种设备，也不能确认是安卓手机\n 3. 对样本的分析，**排除了样本从远程开启 adb 调试接口**的可能。在被感染以前，这些设备的 5555 端口就已经开启。至于 5555 接口是如何打开的，目前无从得知。\n\n受感染的设备地理分布如下图所示，主要的受害者分布在中国（39%，含中国香港和中国台湾）和韩国（39%）：\n\n![](__GHOST_URL__/content/images/2018/02/infected_device_distribute.png)\n\n## 样本分析\n\n在本次事件中，共捕获样本9个。系列样本的核心功能是蠕虫 + 挖矿。\n\n - **蠕虫式传染**：被感染设备会对外发起 TCP 5555 adb 调试端口扫描，并尝试执行 adb 命令把自身拷贝到新的感染机器\n - **挖矿**：被感染后的核心功能就是利用窃取到的计算资源挖XMR代币\n - 此外，该样本的蠕虫的端口探测部分**借鉴了MIRAI的SYN扫描模块**以提高端口探测效率。\n\n该蠕虫没有上联控制服务器，仅通过单一钱包地址获取收益。这种代码布局更加紧凑。\n\n各样本概要信息如下表所示，后续各小节逐一展开分析：\n\n![](__GHOST_URL__/content/images/2018/02/IOC_cn-1.jpg)\n\n\n#### sss - 代码主体\n\nsss为上载到目标设备的恶意代码主体。在droidbot将其上传到目标设备后，执行nohup /data/local/tmp/sss启动该执行程序时，其会读取bot.dat，并释放droidbot，invoke.sh，ddexe，debuggerd和install-recovery.sh到当前目录下。随后其会调用nohup执行释放的droidbot。\n\n![](__GHOST_URL__/content/images/2018/02/sss_main_run.jpg)\n\n#### invoke.sh - 持久化\n\ninvoke.sh通过替换系统程序来实现持久化，替换后的程序除了原有功能外，还会额外运行droidbot。三个被替换的文件如下：\n\n* 如果/system/bin/ddexe存在，则替换其为释放的ddexe脚本；\n* 如果/system/bin/debuggerd存在，则替换为释放的debuggerd脚本；\n* 如果/system/etc/install-recovery.sh存在，则替换为释放的install-recovery.sh脚本。\n\n![](__GHOST_URL__/content/images/2018/02/invoke_sh_code.jpg)\n\n#### droidbot样本 - 蠕虫传播\n\n样本的**蠕虫式传播是通过 droidbot 实现**的。当样本扫描发现开启5555端口的设备后，将通过依次发送adb connect /adb push/adb shell 等指令的方式，将所有相关样本从本地上传至受害者并执行，相关截图如下所示：\n \n![adb命令前缀](__GHOST_URL__/content/images/2018/02/adbminer_adbshell_1.jpg)\n\n \n![adb命令参数](__GHOST_URL__/content/images/2018/02/adbminer_adbshell_2.jpg)\n\n\n该传播模块**借鉴了MIRAI的源码**：\n\n1. 样本中**内置了MIRAI的SYN扫描模块**，以提高对5555 端口开放情况的探测能力。下图高亮处代码在试图构造一个随机IP，且目标端口为5555。如果对MIRAI的代码结构比较熟悉可从左下角缩略图看到这个缩略图同MIRAI的代码结构具有高度相似性。\n2. 样本中还**遗留了MIRAI代码中table的结构字符**，如下下图所示。通过MIRAI的默认密钥0xdeadbeef 对上面的字符内容解密后，可以确认均为弱口令字符。并且我们确认这些弱口令均未被使用。\n\n![](__GHOST_URL__/content/images/2018/02/mirai_code_1.jpg)\n\n![](__GHOST_URL__/content/images/2018/02/mirai_code_2.jpg)\n \n#### xmrig32/xmrig64/config.json - 挖矿样本和配置\n两个xmrig样本为挖矿样本。\n\n挖矿的配置由 config.json 文件提供，如下：\n\n![](__GHOST_URL__/content/images/2018/02/config_json_screen.jpg)\n\n其中矿池分别为：  \n\n* pool.minexmr.com:7777  \n* pool.monero.hashvault.pro:5555\n\n用户名，即钱包地址为:\n\n* 44XT4KvmobTQfeWa6PCQF5RDosr2MLWm43AsaE3o5iNRXXTfDbYk2VPHTVedTQHZyfXNzMn8YYF2466d3FSDT7gJS8gdHAr\n\n#### droidbot.apk - 另一个基于CoinHive的挖矿样本\n该样本是一个运行于Android环境的apk文件。其核心功能就是通过webview加载一个本地html网页文件挖矿。相关代码如下图所示：\n\n![利用webview组建加载本地html页面](__GHOST_URL__/content/images/2018/02/adbminer_webview_1.jpg)\n\n\n![被加载网页会调用coinhive脚本挖矿](__GHOST_URL__/content/images/2018/02/adbminer_webview_2.jpg)\n\n\n上述两图展示了恶意代码先后利用webview组建加载本地html页面，并通过被加载网页调用 coinhive 脚本挖矿。\n\n\n\n## IoC\n```\nbc84e86f8090f935e0f1fc04b04455c6\tbot.dat\ncd37d59f2aac9101715b28f2b28b7417\tbotsuinit_1_1.txt\n27c3e74b6ddf175c3827900fe06d63b3\tconfig.json\n412874e10fe6d7295ad7eb210da352a1\tdroidbot\n914082a04d6db5084a963e9f70fb4276\tdroidbot.apk\n9a10ba1d64a02ee308cd6479959d2db2\tnohup\n6a22c94d6e2a18acf2377c994d0186af\tsss\nac344c3accbbc4ee14db0e18f81c2c0d\txmrig32\ncc7775f1682d12ba4edb161824e5a0e4\txmrig64\n```"}]],"sections":[[10,0]],"ghostVersion":"3.0"}