最近,看到网上有安全研究人员发布了一篇文章,描述了一款在 tomcat
的全新内存马,地址为:https://www.iculture.cc/forum-post/19128.html
,该内存马基于
websocket 协议,有别于目前已知的见的filter
型内存马、servle
t
型内存马,该类型的网马从形式上还有功能上都是非常新颖的,且根据该作者描述,目前常规的内存马扫描工具(如memshell scanner
)无法检测出该类型的内存马。为此,笔者对该内存马的原理进行了分析,并在此提出了一种检测该内存马的思路,可以帮助安全人员检测出此种类型内存马,从而降低业务系统安全隐患。
websocket 内存马原理
Tomcat 服务器在启动时会通过WsSci
中的 WsServerContainer 将 classpath
注解下带有@ServerEndpoint
的类加入到 websocket 服务中。如:
通过调试可以看到添加位置如下:
对该段代码进行分析,注册 websocket 服务步骤如下,
首先要初始化一个WsServerContainer
,
通过扫描 classpath 下的带注解的类并加入一个 iterator 之中,
然后遍历该列表,