Mris 和 TrickBot 站在巨人的肩膀上
这是一个关于拼凑资讯和研究,最终揭露我们最近所见的一个最大的僵尸网路即服务的网络犯罪行动的故事。这项研究显示,我们在2018年报导过的加密挖矿恶意软件活动Gluptebamalware,以及针对数家俄罗斯公司的重要DDoS攻击,包括Yandex,以及在纽西兰和美国的攻击,还有可能的TrickBot恶意软件,皆由同一个指挥和控制C2伺服器推送。 我坚信这台C2伺服器作为了一个僵尸网路即服务,控制著近230000台易受攻击的MikroTik路由器,可能就是QRator Labs在其博客中提及的Meris僵尸网路,该伺服器帮助执行上述的DDoS攻击。预设凭证、数个漏洞,尤其是CVE201814847漏洞,该漏洞在2018年曝光,并且MikroTik针对此发布了修补,让这些网络罪犯能够控制所有这些路由器,并可能将其租用作为服务。
2021年7月8日的晚上
作为一名MikroTik路由器的爱好者,我密切关注这些路由器的动态。我多年前就开始跟踪MikroTik路由器,并在2018年报导了一个利用这些路由器的加密挖矿活动。有关MikroTik路由器的混乱始于2018年,主要是由于CVE201814847漏洞,它让网络罪犯能够轻易绕过路由器的身份验证。不幸的是,许多MikroTik路由器都未打上补丁,让其预设凭证暴露在互联网上。
自然,来自我们合作伙伴的电子邮件在2021年7月8日到达了我的收件箱,他们告诉我们他们发现了几台似乎托管在IoT设备,尤其是MikroTik路由器上的新的C2伺服器,并发送了IP地址。这立刻引起了我的注意。
MikroTik路由器相当稳健,但运行在专有操作系统上,因此似乎不太可能这些路由器直接托管C2二进制文件。我唯一合理的推论是,这些伺服器正在利用被控制的MikroTik设备来代理流量到下一层的C2伺服器,从而将其隐藏于恶意软件猎人之外。
我瞬间产生了既视感,心想:“他们又在滥用这个漏洞” 。
打开充满黑暗魔法和邪恶的潘多拉盒
知道了这一切后,我决定进行实验,部署了一个蜜罐,更确切地说是一个面向互联网的易受攻击的MikroTik云路由器。我捕获了所有流量并记录了虚拟设备的所有信息。最初,我想让它运行一周,看看在野外发生了什么。
在过去,我们只是在已经遭到攻击的设备上处理,看著它们在攻击后的状态。我希望能够实时观察到初始的攻击过程。
梯子npv加速在部署蜜罐15分钟后,值得注意的是,我有意将admin用户名和密码更改为一组非常强的组合,在启动前,我看到有人使用上述的CVE登录路由器这之后透过PCAP分析得到确认。
我们经常看到来自各种隐藏于Cloudflare代理后面的域名的获取脚本,用于攻击被掳路由器。
但无论是出于错误还是故意,攻击者获得登录后的第一次获取竟然是发送到:
当时的bestonyclub并没有隐藏在Cloudflare之后,并直接解析为一个IP地址1162029314,这是一个由德国Hetzner托管的VPS。这次的第一次获取请求调用了用于获取其他域的附加脚本。
你或许会问这个脚本的目的是什么?如你所见,它试图覆盖和重命名所有名为U3、U4U7的现有排程脚本,并设置排程任务来重复导入从特定地址获取的脚本,将第一阶段的“bestonyinfo”替换为“globalmobyxyz”。在这种情况下,该域名已经隐藏在CloudFlare之后,以减少被发现真实IP地址的可能性。
从C2获取的脚本的第二阶段,则更具体且有意义:
它通过关闭所有管理接口,只留下SSH和WinBox初始攻击向量打开来强化路由器功能,并在5678端口启用SOCKS4代理伺服器。
有趣的是,所有URL都有相同的格式:
http//[domainname]/poll/[GUID]
合理的推测是,这些相同的系统正在为它们提供服务,如果bestonyclub指向一个真实的IP,而globalmobyxyz隐藏在代理后,Cloudflare很可能隐藏的是同一个IP。因此,我发起了一个简单的测试,透过以下请求:
这样成功了!注意到这里有两件事,必须添加useragent标头以模拟路由器,否则请求将不会成功。我发现GUID在首次请求时并不重要,路由器可能已在资料库中注册,适合GUID格式的任何内容都可以通过。第二个观察是,每个GUID仅能使用一次或有某种速率限制。测试该端点时,我还发现当URL的尾部不符合GUID格式时,出现了一个错误或“静默错误”,例如:
这也可以正常运行,而且是稳定的,不仅仅一次。看来在将URL插入资料库时,会引发错误/异常,但因为它被静默忽略,所以什么都没有写入资料库,但仍然返回了脚本这点相当有趣,这意味著这些脚本并不完全与受害者的ID相关联。
使用的域名列表
bestonyclub是第一阶段,它使我们获得第二阶段的脚本和Cloudflare隐藏域。你可以看到GUID在各个阶段中被重复使用。基于我们所有的学习,我试著查询:
这几次都成功,还产生了不同的域名。所以我通过创建一个简单的脚本,生成了一个活动域名的列表。
域名 IP ISP bestonyclub 1162029314 Hetzner DE massgamesspace 多个 Cloudflare widechangesbest 多个 Cloudflare weirdgamesinfo 多个 Cloudflare globalmobyxyz 多个 Cloudflare specialwordxyz 多个 Cloudflare portgamewebsite 多个 Cloudflare strtzsite 多个 Cloudflare
邪恶的展翅高飞
拥有了这些域名,我决定进一步检查所有在Cloudflare后面的隐藏域名是否实际上都是托管在同一伺服器上。我愈发倾向于认为中央CampC伺服器也被托管在那里。使用相同的技巧,通过host header直接查询IP,得出期望中的结论:
是的,所有域名都对该IP有效,此外,如果你试著特定使用host headers技术来查询一个GUID:
这样当使用完整的URL又不能成功。
这返回了一个错误,因为该GUID已被首次查询注册,这证明我们正访问同一伺服器和数据。
显然,我们找到的不仅仅是我们所要求的信息,但这并不是结束。
CVE201814847的简史
这一切最早可能始于2018年,更精确地说是在4月23日,拉脱维亚的硬体公司MikroTik公开宣布他们修复并发布了其非常著名且广泛使用的路由器的更新,修补了CVE201814847漏洞。这个漏洞允许任何人通过几个简单的封包,远程下载用户数据库,并轻易解码设备中的密码。这个门槛对于任何人来说都非常低,而没有任何力量能迫使用户更新韧体。因此,结果如预期:网络罪犯开始利用它。
根本原因
这一漏洞的许多文章和分析已经出现。最初的解释主要集中在WinBox协议的工作原理上,且可以在通信的preauth状态下请求路由器返回文件。可惜,在读取的代码路径中,还有一个路径遍历漏洞,允许攻击者访问任何文件,即使这些文件被视为敏感。这个漏洞得到了Tenable的详细解释。研究人员还发现,这个路径遍历漏洞在其他“API功能”处理程序中也存在,因此利用同样的技术也可以向路由器写入任意文件,这大大扩大了攻击面。
混乱的局面
从那时起,我们见证了许多不同的变种滥用这一漏洞。首个显著的变种是加密挖矿恶意软件,巧妙地设置路由器使用标准功能并利用内建的代理,将加密挖矿JavaScript注入由隐身路由器后的用户的每个HTTP请求,极大地放大了财务收益。更多内容可见我们在2018年的Avast博客。
此后,易受攻击的路由器就像一个战场,各种攻击者为设备而争斗,覆盖彼此的脚本。值得注意的是,Glupteba滥用了这些路由器,安装了排程脚本,不断向C2伺服器寻求命令,以在设备上建立SOCKS代理,从而实现对其他恶意流量的匿名。
现在,我们又看到另一个活跃的活动也在相同的伺服器上进行,那么是否有可能这些活动之间有某种联系呢?
完结之环
如前所述,所有的线索都通向了这一特定的IP地址目前已无法使用:
1162029314
这个IP显然是一个用于正在进行的活动的C2伺服器,那么让我们进一步了解一下,以确定是否可以找到任何关联或证据表明它与其他活动存在联系。
结果显示,这一特定IP已经被观察到并解析到各种域。使用RISKIQ服务,我们还发现了一个显著的域名tikanygetru。当我们顺著线索向下挖掘,试图找到访问特定主机的恶意样本时,我们碰上这一有趣的样本:
a0b07c09e5785098e6b660f93097f931a60b710e1cf16ac554f10476084bffcb
这个样本直接访问了以下URLhttp//tikanygetru/api/manager,从中下载了一个包含IP地址的JSON文件。这个样本是一个用Go编写的ARM32 SOCKS代理伺服器二进制档,与Glupteba恶意软件活动相关。VirusTotal上首次录得的提交日期是2020年11月,这正好符合Glupteba的爆发时间。
看起来Glupteba恶意软件活动正是使用了相同的伺服器。
当我请求http//tikanygetru时,却被重定向到了http//routersrip/site/login域同样被Cloudflare代理隐藏然而,我们得到了惊人的结果:
C2控制面板
这是一个用于管理被控制的MikroTik路由器的控制面板。如你所见,最上面的数字显示了相连的设备实际数量,接近230K的设备进入了僵尸网路。为了确认,我们仍然在尝试的这个主机上:
它也成功了。受此鼓舞,我也尝试了之前活动的几个其他IoCs:
来自2018年的加密挖矿活动:
到Glupteba样本:
所有这些都有效。这意味著这些活动要么是同一个,要么我们目睹的是一个僵尸网路即服务。依据我所见来看,第二种可能性更大。在浏览控制面板时,我发现了一个未设密码保护的部分,一个控制面板中的预设页面:
C2伺服器上的配置预设
这里的奇特之处在于,该页面自动切换到俄语,而其余部分保持英文故意的,还是错误?。我们在这里看到的是MikroTik设备的配置模版。其中一个特别的范本更紧密地连接了这些碎片,VPN配置范本
确认我们在路由器上所见的来自这里
这印证了我们的怀疑,因为这些配置确实可以在我们所有的蜜罐和受影响的路由器上找到:
拥有这些指标以及收集到的IoCs,我知道自己正在处理一份秘密和历史数据的宝藏,自MikroTik活动爆发以来的数据。我还对socks端口5678进行了深入的IPV4扫描,这在当时是一个强有力的活动指标,共扫描到近400K台设备该端口向外开放。当我的蜜罐被感染后,1Mbps的可用带宽瞬间被耗尽。此时,我意识到这可能是进行DDoS攻击所需的巨大力量,而两天后
Mris
在2021年9月7日,QRator Labs发布了一篇有关新僵尸网路Mris的文章。 Mris是一个规模可观的僵尸网路,滥用MikroTik设备对Yandex俄罗斯最大的搜索引擎进行了其中一个最重大的DDoS攻击,以及针对在俄罗斯、纽西兰和美国的公司发动的攻击。它拥有我在调查中描述的所有特征。
在该发布的次日,C2伺服器停止提供脚本,第二天则彻底消失。我不知道这是否是法律执法行动的一部分,或是因为公众注意到Mris后攻击者决定撤退的纯粹巧合。那天我的蜜罐关闭了SOCKS代理的配置。
TrickBot
由于文中开头提到的IP地址引发了我们的疯狂调查,我们需要为TrickBot留出一个部分。现在可能会出现的问题是:“TrickBot是否也是使用相同僵尸网路即服务的另一个活动?”我们不能确定。然而,我们可以分享我们在设备上发现的情况。TrickBot通常使用NAT功能代理流量的方式如下:
在TrickBot路由器上找到的典型规则,将受害者流量转发至隐藏的C2伺服器,隐藏的C2端口之间可能差异很大,而在Mikrotik端则通常是443、447和80,见IoC部分。
IoC指纹的一部分是同样的规则通常存在多次,因为感染脚本并不检查它是否已经存在。
感染的路由器示例,请注意,规则因感染脚本未检查先前是否存在而重复。你还可以看到伪装规则使得隐藏C2能够透过路由器访问互联网。
虽然在TrickBot的案例中,我们不完全确定这是否可以作为证据,但我发现一些共用的IoCs,例如:
通往域的传出PPTP/L2TP VPN通道: /interface l2tpclient add connectto=ltsxxeeongouscomsxxleappoachinfogt disabled=no name=lvpn password=ltpassXXXXXXXgt profile=default user=ltuserXXXXXXXgt
排程脚本 / 启用的SOCKS代理,如先前案例
在大多数TrickBot的MikroTik C2代理上设置的共用密码然而,尚不清楚这是否仅仅是巧合,以及路由器是否多次被感染,或是否使用了同一个C2。根据收集的NAT转换,我能够识别出几个TrickBot C2伺服器的下一层IP地址见IoCs部分。
TrickBot不仅使用MikroTik
在调查TrickBot案例时,我发现尤其是在Mris案件发布后出现了一些趋势的微小变化,指向其他IoT设备而非MikroTik。利用SSH端口指纹识别,我发现几个LigoWave设备的SSL证书。再次,操作模式似乎相同,初步感染向量似乎是预设凭证,然后利用设备的功能将流量从公共IP地址转发到TrickBot隐藏的C2 IP地址。
LigoWave AP产品上的典型登录画面
查找预设密码在Google上仅需035秒
Google搜索结果
相同的密码可用于以管理员身份登录设备,拥有完整的权限,接下来就是使用iptables设置与MikroTik案例相同的NAT转换。
LigoWave AP以预设凭证的Shell界面
他们知道设备
在我的研究中,令我惊讶的是罪犯对细节和微妙之处的关注。例如,我们在这个设备上发现了这样的配置:
据我所知,攻击者禁用了物理显示,这样循环显示所有接口的统计数据,故意隐藏了正在运行的恶意VPN的事实。
缓解措施
最主要且最重要的步骤是将你的路由器更新到最新版本,并将管理界面从公开的接入端移除,你可以遵循我们在2018年博客中的建议,这些建议至今仍然有效。至于TrickBot活动,你还可以做几件事:
检查路由器中的所有dstnat映射,从SSH或TELNET终端可以简单地输入:/ip firewall nat print查看可能怀疑的nat规则,尤其是如果dstaddress和toaddress都是公共IP地址。
检查使用者名称/user print,如果你看到任何不寻常的用户名或我们IoCs中的用户名称,请删除它们。
如果你无法在常用端口访问路由器,还可以检查我们IoCs中提到的其中一个替代端口,因为攻击者通常会变更这些端口以防止其他人夺回对设备的控制权。检查我们博客文章的最后一段,获取有关如何安全设置路由器的更多详细信息。结语
自2018年以来,易受攻击的MikroTik路由器已被多个活动滥用。我相信,根据一些IoCs和我的研究证明,自那时起就已经运行著一个作为服务的僵尸网路。
这同样显示出了某些已经明显很久的事情见我们的2021年第三季度报告,即物联网设施受到的攻击不仅是为了在上面运行恶意软件,考虑到所有不同的架构和操作系统版本,这很难编写和广泛传播,而是简单地利用它们合法和内建的功能,将其设置为代理。这样做的目的是要么为了掩盖攻击者的痕迹,要么作为DDoS增幅工具。我要说的是,这只是冰山一角,重要的是注意,正确又安全地设置设备,并保持其更新对于避免成为轻易的目标和帮助促进犯罪活动至关重要。
最近,新信息浮现显示REvil勒索软件集团正在利用MikroTik设备发动DDoS攻击。来自Imperva的研究者在其文章中提到,Mris僵尸网路可能正在被用来进行攻击,然而,据我们所知,Mris僵尸网络已被俄罗斯执法机构摧毁。这是一种新的重生,或者是又有熟悉的MikroTik路由器中的漏洞被重新利用。我无法立刻确定,但我能告诉你的是,补丁的采用以及IoT设备和路由器的安全性普遍不太好。重要的是要理解,更新设备不仅仅是路由器厂商的责任,而是我们所有人的责任。为了让这个世界更安全,我们需要齐心协力,共同确保路由器的安全,因此,请花几分钟的时间立即更新你的路由器,设置强密码,并将管理界面禁用于公网,帮助那些不太精通技术的人们做到这一点。
截至发表日期,开放8921WinBox的MikroTik设备数量不一定都是易受攻击,来源:shodanio
截止发表日期,全球MikroTik设备暴露于FTP、SSH、TELNET、WINBOX、PPTP、HTTP等常见服务上不一定都是易受攻击,来源:shodanio
IoC
主C2伺服器:1162029314Glupteba ARM32代理样本:sha256 a0b07c09e5785098e6b660f93097f931a60b710e1cf16ac554f10476084bffcb
C2域名:ciskotikcommotinkoncobestonyclubmassgamesspacewidechangesbestweirdgamesinfoglobalmobyxyzspecialwordxyzportgamewebsitestrtzsitemyfrancexyzroutersriptikanygetruVPN伺服器域名:s[xx]leappoachinfos[xx]eeongouscomVPN名称VPN接口名称:lvpn路由器上的替代SSH端口:2622022222255353570221002212067123551985422515221924332151922路由器上的替代TELNET端口:2303223232355100235000052323路由器上的替代WinBox端口:123700120514308091829282955000152798Trickbot“隐藏”C2伺服器:311440116458912525318510681631144020718524415026195123212173114401738811917024210314513311701305584451118315218521217025023106124763114401077724711057TrickBot端口在MikroTik上被重定向:
44944380TrickBot在隐藏伺服器上的端口:
4474438081098119810281298082800181338121标签为分析,僵尸网路,Glupteba,Mris,反恶意软件,TrickBot
分享XFacebook