对中国全运会系统攻击的分析

引言

在2021年9月15日,中国全国运动会在中国的陕西市启动。这是一项与奥运会类似的活动,但仅限于中国的运动员参赛。在9月早些时候,我们的同事大卫阿尔瓦雷斯发现了一个可疑文件扩展名的恶意软件样本,针对一张图片进行了调查。后来,他还找到了一份来自全国运动会IT团队的报告,该报告在VirusTotal上显示攻击发生在运动会开始之前。报告附带了来自网络服务器和SQL数据库的访问日志。通过分析这些日志,我们收集到了关于攻击的初步信息。这些日志仅包含请求路径,遗憾的是没有显示POST请求中的内容,而这些内容正是理解攻击者如何向其Web Shell发送命令所必需的。即使仅凭这些有限的信息,我们仍能够勾勒出攻击的轮廓,并以中等的把握确定初始的入侵点。

黑洞加速器下载

在此帖子中,我们分享自己对这一事件的研究,分析攻击者使用的样本和漏洞,详细描述了在事件发生前,系统被成功攻破的情况。我们的研究基于关于该事件的公开信息进行。分析的样本在VirusTotal上已经存在。

根据来自报告的初步信息和我们自己的发现,似乎这次入侵在运动会开始之前就已经成功解决。我们无法详细说明攻击者可能对更广泛的网络采取了什么行动。我们也无法对攻击者做出任何明确的归因,但有理由相信他们可能是以中文为母语的人,或者在中文方面流利。

获取访问权限

证据表明,攻击者在2021年9月3日上午1000左右获得了初始代码执行权限,并安装了其第一个反向Shell,执行名为runscriptlua的脚本。我们怀疑这次入侵的方式是通过一个任意文件读取漏洞,针对的可能是routelua,根据从多个JavaScript文件中提取的API应用程序用户界面,这是一个包含从处理登录认证到文件操作等众多功能的LUA脚本,或者是indexlua与indexluaa=upload API的组合,这一API在网络日志中其他地方未被使用。值得注意的是,报告中并未提到runscriptlua,也未包含攻击者上传的文件。

在获得初步访问后,攻击者上传了其他几个反向Shell,如conflua、miss1php 或 admin2php见表2的源代码,以便在某个Shell被发现的情况下在网络中获得更持久的立足点。这些反向Shell通过POST请求获取命令,因此报告中附带的日志并不包含这些数据,因为它们只包含URL路径。

在截图中,我们可以看到攻击者从后门获取了大量返回的数据高亮部分。

此外,报告中的日志没有包含网络流量的完整信息,因此我们无法确定攻击者如何以及何时获得了他们的第一个Web Shell。我们通过查找他们上传和与第一个自定义Web Shell互动的时间点来推测我们的发现。

他们在那里做了什么

攻击者开始测试他们能够上传到服务器的内容。从2021年8月26日到2021年9月9日的期间,攻击者尝试提交不同文件类型和扩展名的文件。例如,他们提交了相同的合法图片7775b6a45da80c1a8a0f8e044c34be823693537a0635327b967cc8bff3cb349a,但使用了不同的文件扩展名:ico、lua、js、luac、txt、html和rar。

在掌握了被阻止和允许的文件类型后,他们尝试提交可执行代码。当然,他们首先提交的是一些PoC概念验证,而不是直接执行WebShell,因为提交PoC更加隐蔽,且也能了解恶意代码的可执行权限。例如,其中一个上传的文件是伪装成图片的Lua脚本20210903160250168571ab1c20jpg:

osexecute(touch/tmp/testmiss)

利用Lua的iopopen函数,它执行一个命令并返回进程输出,攻击者用类似于以下的命令伪装成图像来测试不同的WebShell:

iopopen(echo Base64EncodedWebshell base64 d gt /mod/remote/missphp)

他们测试了不同的中文WebShell例如Godzilla Webshell,但这些信息不足以将攻击确切归因于任何威胁行为者。

攻击者决定通过上传他们自己的wwwconf文件、伪装成PNG文件并包含默认配置来重新配置Web服务器,但允许lua扩展名的执行。我们怀疑服务器被配置为在一个线程池中执行新线程,但这对于他们想要执行的强大的中文WebShellRebeyond Behinder来说并不起作用。他们未能成功重新配置服务器以执行它。因此作为最终载荷,他们上传并运行了一个整套Tomcat服务器,并对其进行适当配置和武器化,使用了Rebeyond Behinder。

值得一提的是,攻击者能够上传一些工具如dnscryptproxy、fscan、mssqlcommandtool、behinder到服务器,并执行网络扫描器fscan及一个定制的一键利用框架,我们将在下文中详细讨论。

上述提到的中文扫描器和利用框架是用Go编程语言编写的,并以单个二进制文件形式分发,这允许通过简单地输入IP或IP范围可以作为程序参数或文本文件传递执行所有利用步骤,这使其成为在网络环境中迅速攻破计算机系统的优秀工具。

该工具结构清晰,拥有插件,能够执行所有必要步骤以自主攻击同一网络内的其他设备。

Plugins/Web/Finger 执行指纹识别以识别服务。目前,它支持以下指纹:IBM、Jboss、shiro、BIGIP、RuiJie、Tomcat、Weaver、jeecms、seeyon、shterm、tongda、zentao、Ueditor、ioffice、outlook、yongyou、Coremail、easysite、FCKeditor、Fortigate、FineReport、SangforEDR、Springboot、thinkphp1、thinkphp2、thinkphp3、thinkphp4、easyConnect和weblogicasync。Plugins/Service 攻击服务以获取访问权限。目前,它支持以下服务:ssh、smb、redis、mysql、mssql、ms17010EternalBlue SMB利用和ftp。Plugins/PwdTxt 列出了用户名和密码的短字典,以便在Plugins/Service上执行简要的暴力攻击。Plugins/Web/Poc 用于利用常见Web应用的模块。目前,它支持以下利用:JeecmsSSRF1、yongyource1、RuiJieRCE1、outlookews、thinkphpRCE1、thinkphpRCE2、thinkphpRCE3、thinkphpRCE4、thinkphpRCE5、thinkphpRCE6、RuiJieUpload1、WeaverUpload1、yongyouupload1、weblogicconsole、phpstudybackdoor、yongyoureadFile1、JbossunAuthConsole、JbossCVE201712149、weblogicCVE20192618。

一个插件的例子是plugins/Web/Poc/WeblogicCVE20192618。

对中国全运会系统攻击的分析

在下面的截图左侧,您可以看到在我们的实验室针对Python服务器右侧终端执行的扫描,带有标记的利用载荷请求。

有关载荷的更多信息,请参见IoCs,表2。

结论

攻击者入侵第14届全国运动会的过程并不新鲜。他们通过利用Web服务器中的一个漏洞获得了系统访问权限。这显示出需要更新软件、妥善配置,还应使用漏洞扫描器关注应用程序可能出现的新漏洞。

防御者最基本的安全对策是保持基础设施在打补丁方面处于最新状态,尤其是面对互联网的基础设施。

防范应该是内部和面向互联网的基础设施的首要任务。

WebShell是一种后期利用工具,可能非常难以检测。一些WebShell甚至不会触碰文件系统,仅存在于内存中;这使得它们更加难以被检测识别。植入后,WebShell通常通过异常的网络流量或异常网络流量指标被识别。

要防御这种攻击,非常重要的是部署更多的保护层例如SELinux、Endpoint Detection and Response解决方案等,以便在成功入侵发生时能够及时检测并采取行动。

在获得访问权限后,攻击者尝试通过在网络中使用利用和暴力破解服务的方式进行横向移动。由于攻击者很可能达到这个阶段,防守者必须做好准备。实时监控计算机系统和网络是应对这一问题的有效方法。

最后,攻击者使用用Go编程语言编写的利用框架在网络中进行横向移动。Go是一种越来越受欢迎的编程语言,可以针对多个操作系统和架构编译,并且所有依赖项都可以包含在一个自包含的二进制文件中。因此,我们预计未来的攻击,特别是在IoT攻击中,会出现使用这种语言编写的恶意软件和灰色工具,因为这涉及到各种不同处理器架构的设备。

IoCs

SHA 原始文件名 描述 0c6ae9de10bee6568ec3ad24918c829b7e5132cc0dd1665d4bbf1c3fe84451b6 2021090210421165903588486dzip 加密的ZIP文件 0d1504a9ae319bdc320f938d2cdf72cba18277b3f2b311abf0bacad2517dabc0 202109031636062806280a82f3txt Shell代码投放者 cac30cc2f4646979d0be8b4d5f3a1f87351b3bb77f22e5064bd034cec9e119bb 20210903170452952751b9106etxt 单行Shell代码 0aeb963b4566dc2224d34b4885336c666198db2ac64c810586ce3b17ef3da59f 202109031711419093890f6e83txt Rebeyond Shell代码投放者 dffa7e31797339f3ce7ec453161b60010eda3dd2e52aa9f147ab4389672c3536 20210903194355378055c6cb9ctxt Shell代码投放者 bdd4d0bb36d07ae6b97ffbcd386c54e1b15fefe65329ff0389dfd5739cd3cff2 202109041227327805555c07b2rar UPX压缩 Mssql工具包 3a8dc7e730a1f82f65f1731cb31e05e2f749a9e89ab8529168a082d24680d2dd 20210904153039541730a843fezip FScan for Linux ec8aef085d3cc57a4e92a613e128f2d9c7b5f03b8e017dd80d89bfeada228639 20210904160830117786b5cab7rar 20210904161031883832c50992rar 自定义利用框架 2cab3b0391bf3ace689fc697f522b3c86411e059ab8c1f4f5b7357b484b93035 20210904164301268472915428zip Rebeyond Behinder WebShell d033756a57d8a2758de40895849e2146d571b3b44f3089eb68c31483784586cd 20210904112719261644c9c5ebjpg UPX压缩的DNS Proxy for Linux

表1 证明概念 载荷 Yongyouupload1 请求 GET /aim/equipmap/acceptjsp ThinkPHPRCE4 请求 POST /indexphps=/Index/thinkapp/invokefunction 数据 function=calluserfuncarrayampvars[0]=base64encodeampvars[1][]=123456 ThinkPHPRCE5 请求 POST /indexphps=/Index/thinkapp/invokefunction 数据 function=calluserfuncarrayampvars[0]=base64encodeampvars[1][]=123456 ThinkPHPRCE6 请求 POST /public/s=captcha/MTIzNDU2 数据 method=constructampfilter[]=printrampmethod=GETamps=1 yongyource1 请求 GET /service/monitorservlet RuiJieUpload1 请求 GET /ddi/server/fileuploadphp WeaverUpload1 请求 GET /page/exportImport/uploadOperationjsp phpstudy backdoor 请求 GET / 头 UserAgent Mozilla/50 (Windows NT 61 Win64 x64) AppleWebKit/53736 (KHTML like Gecko) Chrome/550288375 Safari/53736 ThinkPHPRCE2 请求 GET /indexphps=index/thinkrequest/inputdata=123456ampfilter=base64encode yongyoureadFile1 请求 GET /NCFindWebservice=ampfilename= weblogicCVE20192618 请求 GET /beawlsdeploymentinternal/DeploymentService Outlook ews (接口轰击) 请求 GET /ews ThinkPHPRCE1 请求 GET /indexphps=index/thinkapp/invokefunctionampfunction=calluserfuncarrayampvars[0]=base64encodeampvars[1][]=123456 ThinkPHPRCE3 请求 GET /indexphps=index/thinkContainer/invokefunctionampfunction=calluserfuncarrayampvars[0]=base64encodeampvars[1][]=123456 CVE202014882 请求 GET /console/ Jboss JMXInvokerServlet (反序列化) 请求 GET /indexphps=index/thinkContainer/invokefunctionampfunction=calluserfuncarrayampvars[0]=base64encodeampvars[1][]=123456 Jboss (未经授权访问控制台) 请求 GET /jmxconsole/indexjsp Jboss JMXInvokerServlet (反序列化) 请求 GET /indexphps=index/thinkContainer/invokefunctionampfunction=calluserfuncarrayampvars[0]=base64encodeampvars[1][]=123456 jeecms SSRF以上传 请求 GET /ueditor/getRemoteImagejspxupfile=http//12700180/1png RuiJieRCE1 请求 GET /guestauth/guestIsUpphp

表2

文件

miss1phpconfluaadmin2php

IoC库

文件和IoC在我们的IoC库中。

标签:分析、后门、恶意软件、逆向

分享:X Facebook

发表评论

订阅我们的邮箱