+

内存马
内存马是一种在受感染的主机内存中运行的恶意软件。一般来说,内存马可以分为以下几种类型:
注入型内存马:通过利用漏洞将恶意代码注入到正常进程中,从而在内存中运行。
自执行型内存马:将恶意代码写入自启动项,启动后自动运行。
进程注入型内存马:利用进程注入技术,在受感染进程的内存中运行恶意代码。
Hook型内存马:利用Windows API的Hook机制,修改进程中的关键函数,从而运行恶意代码。

排查思路

先查看检查服务器web日志,查看是否有可疑的web访问日志,比如说filter或者listener类型的内存马,会有大量url请求路径相同参数不同的,或者页面不存在但是返回200的请求。
如在web日志中并未发现异常,可以排查是否为中间件漏洞导致代码执行注入内存马,排查中间件的error.log日志查看是否有可疑的报错,根据注入时间和方法根据业务使用的组件排查是否可能存在java代码执行漏洞以及是否存在过webshell,排查框架漏洞,反序列化漏洞。
查看是否有类似哥斯拉、冰蝎特征的url请求,哥斯拉和冰蝎的内存马注入流量特征与普通webshell的流量特征基本吻合。
通过查找200返回的url路径对比web目录下是否真实存在文件,如不存在大概率为内存马。
更具不同类型进行排查
注入型内存马:修复漏洞、升级软件,加强网络安全防护等方法来预防类似攻击;对已经感染的主机,可以通过杀掉受感染进程或卸载恶意程序等方式来清除内存马。 针对不同类型的内存马,处理方法也有所不同。 自执行型内存马:可以通过清理自启动项、卸载恶意程序等方式来清除内存马。 进程注入型内存马:可以通过杀掉受感染进程或卸载恶意程序等方式来清除内存马。 Hook型内存马:可以通过还原Hook、修复关键函数、杀掉受感染进程或卸载恶意程序等方式来清除内存马。

怎么排查java内存马

要检测内存马,可以使用内存马检测工具,GitHub上有很多相关的检测脚本可供使用。如果要手动检测,可以通过以下几个方法:
1.
分析Web日志:查找那些路径相同但参数不同的URL请求,或者页面不存在但返回状态码200的请求,这些可能是内存马的迹象。
2.
检查Web配置文件:内存马的Filter通常是动态注册的,不会出现在web.xml​配置文件中,所以如果发现某个Filter不在配置文件里,但实际存在,可能就是内存马。
3.
排查中间件漏洞:内存马可能通过中间件漏洞加载,可以查看中间件的错误日志,找出可疑的加载行为。
4.
分析ClassLoader:攻击者喜欢通过TemplatesImpl​和bcel​加载内存马,因为这些不会在本地生成class文件。可以检测Filter对应的ClassLoader目录,看是否存在class文件。此外,还可以将内存中所有的Filter的class文件dump出来,用工具分析是否有恶意代码。