内存马原理及查杀

php内存马原理:

php内存马也就是php不死马是将不死马启动后删除本身,在内存中执行死循环,使管理员无法删除木马文件。

检测思路:

  1. 检查所有php进程处理请求的持续时间
  2. 检测执行文件是否在文件系统真实存在

代码:

set_time_limit(0);

ignore_user_abort(1);

unlink(FILE);

while (1) {

$content = ‘’;

file_put_contents("22.php", $content);

usleep(10000);

}

?>

函数说明:

  1. ignore_user_abort()函数:函数设置与客户机断开是否会终止脚本的执行,如果设置为 true,则忽略与用户的断开。
  2. set_time_limit()函数:设置允许脚本运行的时间,单位为秒。如果设置为0(零),没有时间方面的限制。
  3. unlink(__FILE__)函数:删除文件。
  4. file_put_contents函数:将一个字符串写入文件。
  5. usleep函数:延迟执行当前脚本若干微秒(一微秒等于一百万分之一秒)。

Python内存马原理:

    Python内存马利用flask框架中ssti注入来实现,flask框架中在web应用模板渲染的过程中用到render_template_string()进行渲染但未对用户传输的代码进行过滤导致用户可以通过注入恶意代码来实现python内存马的注入。

JAVA内存马

Filter Servlet Listener

  • Servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容
  • Filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter无法产生一个请求或者响应,它只能针对某一资源的请求或者响应进行修改。
  • Listener:通过listener可以监听web服务器中某一个执行动作,并根据其要求作出相应的响应。

 原理

其原理是先由客户端发起一个web请求,中间件的各个独立的组件如Listener、Filter、Servlet等组件会在请求过程中做监听、判断、过滤等操作,内存马利用请求过程在内存中修改已有的组件或者动态注册一个新的组件,插入恶意的shellcode达到持久化的控制服务器。

排查思路:

先判断是通过什么方法注入的内存马,如果是jsp注入,日志中排查可疑jsp的访问请求,如果是servlet或者spring的controller类型,根据上报的webshell的url查找日志(可能被关闭,不一定有),根据url最早访问时间确定被注入时间,如果是filter或者listener类型,可能会有较多的404但是带有参数的请求,或者到大量请求不同url但带有相同的参数,或者页面不存在但返回值为200,查看是否有类似哥斯拉、冰蝎相同的url请求,哥斯拉和冰蝎的内存马注入流量特征与普通 Webshell的流量特征基本吻合。

通过查找返回200的URL路径对比Web目录下是否真实存在文件,如不存在大概率为内存马。如在Web日志中并未发现异常,可以排查是否为中间件漏洞导致代码执行注入内存马,排查中间件的error.log日志查看是否有可疑的报错,根据注入时间和方法根据业务使 用的组件排查是否可能存在Java代码执行漏洞以及是否存在过Webshell,排查框架漏洞,反序列化漏洞。

tomcat-memshell-scanner.jsp工具使用·

https://github.com/LandGrey/copagent/raw/release/cop.jar dump内存下载,遇到禁止注入到jvm就g

java -jar cop.jar

shell-analyzer使用 遇到禁止注入到jvm就gg

4ra1n/shell-analyzer: Java内存马查杀GUI工具,实时动态分析,支持本地和远程查杀 (github.com)

java -verbose 查看安装路径

启动java -cp remote-0.1.jar:/usr/lib/jvm/java-8-openjdk-i386/lib/tools.jar com.n1ar4.RemoteLoader 31488 admin123

jps

jpsid值 密码客户端:java -jar gui-0.1.jar

java -verbose

 

arthas-boot.jar 工具的使用 【高级】可以配合手工查杀出来,遇到禁止注入到jvm就gg

java -jar arthas-boot.jar

重启:重启之后,内存马就会掉,但是会一些技术,可以复活马,也就是重启之后,内存马依然会上线

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值