主打隐蔽,:
内存中,无文件落地到磁盘;
- 内核级别操作 rootkit
- 在内存中生成文件
- 反射式DLL注入:这是一种技术,它允许恶意软件在不使用硬盘上的文件的情况下,将DLL注入到进程的内存中。
进程注入:攻击者可以将自己的恶意进程注入到合法进程的地址空间中
DLL注入:恶意软件可以注入恶意动态链接库(DLL)到其他进程的内存中
Webshell的内存马分类:
1.servlet-api型
通过命令执行等方式动态注册一个新的listener、filter或者servlet,从而实现命令执行等功能。特定框架、容器的内存马原理与此类似,如spring的controller内存马,tomcat的valve内存马
2.字节码增强型
通过java的instrumentation动态修改已有代码,进而实现命令执行等功能。
客户端—>Listener—>Filter—>Servlet
在 web.xml 注册了一个 Filter 来对某个 Servlet 程序进行拦截处理 ;
Filter.doFilter —> 调用 FilterChain.doFilter ( FilterChain Object)—> 激活目标 Servlet 的 service ;
filter链
当多个filter同时存在的时候,组成了filter链。web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter。当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法,通过判断FilterChain中是否还有filter决定后面是否还调用filter。