WebShell(2)| 内存马(不死马)
什么是内存马
内存马是无文件攻击的一种常用手段,随着攻防演练热度越来越高:攻防双方的博弈,流量分析、EDR等专业安全设备被蓝方广泛使用,传统的文件上传的webShell或以文件形式驻留的后门越来越容易被检测到,内存马使用越来越多。
webShell内存马,是在内存中写入恶意后门和木马并执行,达到远程控制Web服务器的一类内存马,其瞄准了企业的对外窗口:网站、应用。
但传统的webShell都是基于文件类型的,攻击者可以利用上传工具或网站漏洞植入木马。
而其中的区别在于webShell内存马是无文件马,利用中间件的进程执行某些恶意代码,不会有文件落地,给检测带来巨大难度。
Java内存马可参考文章——一文看懂内存马
PHP内存马
PHP内存马,也叫做PHP不死马、不死僵尸,在线下AWD比赛中是常用手段之一,用于权限维持。
在蚁剑中也有专门的插件可以一键注入内存马。原理也很简单,相对于Java可以直接把整个shell写入内存,php内存马的实现则是将一个木马反复写入,达到无法删除的目的。
不死马原型如下:
1 |
|
上传之后,访问该页面,就会不断生成shell.php,我们就直接可以利用shell.php
但是原型有一个缺点:while里面只是判断了这个文件是否存在, 那么只要把文件中的shell注释掉就可以绕过你的内存木马了。
木马改进
在原型的基础上,我们可以进行改进一下
-
在文件前面加个点
.在Linux系统中变成隐藏文件,用来隐蔽自己 -
为了
防止被其他人利用,可以对恶意代码进行修改,用md5加密验证,或者其他利用方法验证,只要不让其他人搭顺风车都可以1
2
3
4
5
if(md5($_GET["pwd"]) == "9003d1df22eb4d3820015070385194c8"){
@eval($_REQUEST[cmd]);
}密码为pwd,只有参数
pwd正确时,才可使用cmd参数 -
对
恶意代码进行一个base编码,绕过简单查杀 -
修改if语句内的判断,改为
md5加密的内容匹配 -
赋予木马文件
最高权限777 -
设置修改木马文件的
修改时间
改进后示例:
1 |
|
以上都是一些思路,若还有其他补充的还请大佬赐教,可用于Awd比赛,切勿用于不法之地!









