导语:MikroTik在过去几个月中处理了许多影响其产品操作系统的漏洞。2018年4月,研究人员发现RouterOS的一个关键漏洞,然后攻击就开始了,而新发现的CVE-2018-14847​漏洞利用使这种情况变得更加严重。

MikroTik是拉脱维亚一家从事路由器和无线ISP系统开发的企业,在过去几个月中处理了许多影响其产品操作系统的漏洞。2018年4月,研究人员发现RouterOS的一个关键漏洞,然后攻击就开始了,而新发现的CVE-2018-14847漏洞利用使这种情况变得更加严重。

另一个问题是虽然厂商提供了安全补丁,但仍有大量的MikroTik路由器没有进行安全更新,易受到自动化攻击的威胁。网络犯罪分子正利用POC代码来入侵成千上万的设备。去年研究人员发现最大的恶意Coinhive活动就是通过被入侵的MikroTik设备实现的。

在最新的攻击活动中,攻击者利用虚假的浏览器更新页面来入侵路由器。当运行恶意更新时,研究人员会解包代码到计算机中,计算机可以扫描网络中其他有漏洞的路由器并尝试利用。

恶意浏览器更新

安全研究人员@VriesHd首先发现一个尝试用社会工程技术来入侵有漏洞的路由器的活动。运行受影响的MikroTik路由器的网络提供商会将关于浏览器的老版本更新重定向给终端用户。

根据Censys的数据,一共有11000个被入侵的MikroTik设备提供该虚假下载页面:

该浏览器根系是从一个FTP服务器下载的,如下图所示:

有趣的是IP地址是一个免费、开放的web代码列表中。攻击者常用代理来绕过特定国家的限制,或作为严重隐藏原始IP地址的方式:

Payload分析

行为分析

Payload会伪装成一个名为upd_browser的安装器。

当应用时,会有一个错误弹窗:

但如果抓取网络流量,可以看出有很多不同的IP地址尝试连接8291端口(8291是通过winbox应用管理MicroTik路由器的默认端口):

Unpack

释放的payload是一个比较大的可执行文件(7.25MB)。该小节的header和可视化如下:

通过查看section名,可以看出其打包了一个简单的packer:UPX。重复部分说明提取出的内容太多了。在进行下一步检查后,研究人员发现其将一个python DLL和其他相关文件解包到%TEMP%文件夹,然后加载这些文件。很容易猜测出exe文件其实是一个python脚本。

脚本中的entry point名为upd_browser。反编译脚本发现恶意软件的核心是两个python脚本:upd_browser.pyups.py

脚本

模块的主函数非常简单,如下图所示:

从中可以看出,错误弹窗是硬编码的。并不是真实的错误代码,而是作为诱饵。

之后,恶意软件会用合法服务IP Logger来查询追踪器的硬编码地址来记录受害者的IP地址。追踪器的1×1像素的图片:

之后,该地址会在定义的时间间隔内定时查询。

函数中最重要的功能名为scan,许多的并行线程都应用了该功能。函数scan会生成伪随机的IP地址并尝试通过8291端口连接。如果连接成功,会尝试通过56778到56887之间的一个随机端口连接。如果失败,就继续漏洞利用:

函数poc是指通过已知的漏洞来感染路由器。开始时尝试利用路径遍历漏洞CVE-2018-14847来获取凭证:

user.dat文件的格式为M2,所以脚本是与内置的语义分析器一起的:

如果成功从user.dat文件中提取出密码,就解码凭证并用来创建后门:一个随机生成密码的账户。还会为路由器设定一个定时任务。

设置定时任务的脚本是用硬编码的模板生成的。其角色是操作路由器的设置,并设置一个加载CoinHive挖矿机的错误页面。错误页面会释放在 webproxy/error.htmlflash/webproxy/error.html

当用户尝试查看被拒绝访问的URL时间,该页面会展示给用户。但路由器中配置的恶意脚本是基于HTTP请求错误。伪造的错误页面是wile欺骗原始流量,以iframe方式展示请求的页面。所以当用户浏览大多数web时并不会注意到这一变化。比如:

从中可以看到嵌入的CoinHive挖矿机,用户机器会被用于恶意挖矿。

缓解措施

MikroTik用户应及时对路由器打补丁升级。MikroTik下载页面中解释了如何对RouterOS进行升级。很多用户没并没有意识到漏洞的存在以及漏洞非常容易利用。在最新的社会工程方案中,研究人员发现犯罪分子尝试感染普通用户,并通过受害者的用户来扫描网络中有漏洞的路由器。这些技术手段非常高明,因为这种方式需要的时间和资源都很少,而攻击效率非常高。

源链接

Hacking more

...