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比赛,切勿用于不法之地!