找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

DeePwn手术室:解剖防御系统——防守者的“血液透析机”

admin| 2018-1-9 21:45 阅读 565 评论 1

作为渣蛋轮胎科普系列的开头,还是打算从基本点给小白们科普,为了避免晦涩难懂并成功勾起大家的兴趣,之后的文章都会以攻击者视角来抒写,涉及潜在 知识量和固定测试环境的内容适合小团体深入讨论研究,却对社会读者以及初入坑者不友好,所以我们还是由浅入深慢慢道来,我会尽量用通俗的语言描述+优秀的 个人魅力来写这篇文章的!


WAF及IPS对文件和流量的识别,就好似医疗用途的血液透析机,是细胞还是无机物?从性状、大小、结构、成分等特征来看都有所不同,而这也是 WAF在识别和过滤上的共同点——“特征标记”与“行为分析”。目前WAF综合性强针对性弱,在各个方面的防御都有一定的不足,本篇重点将主要介绍WAF 对文件的静态分析,以及构造绕过特征检查的思路分析。


经常上FB的同学应该知道,我嘛有个毛病,本人话多巨懒,因此,本文只用开袋即食的百度云查杀 WebDir+ 以及网站大杀器 网站安全狗 来进行测试,点到为止嘛~


WAF(IPS)与EvilScript



WAF (Web Application Firewall) 顾名思义,是针对于网络应用的防火墙,其实现的功能在于,识别并处理大量请求流量中,服务器中的恶意文件和传入的非法流量,如果说WAF静态分析是看门 人,主动站岗,查证出入,那动态查杀型的IPS就是警卫员了。

IDS (Intrusion Detection System) 用于对已经发生的服务器入侵事件进行发觉,基于安全策略,对网络、系统的运行状况进行监视并及时响应入侵事件。

IPS (Intrusion Prevention System) 能服务器监视网络或网络设备的网络资料传输行为,出现重要文件传输和泄露时,能够即时的中断或隔离攻击性传输行为,是IDS的进阶产物。


EvilScript (WebShell & Evil Addons) 指以网页脚本文件形式存在的一种命令执行环境,也可以将其称做为一种Web形式的后门。在网站服务器被入侵后,通常会留存一个木马后门放在网站服务器 WEB目录下,用来维系权限实现更多高权限功能或者命令执行环境,以达到持续控制网站服务器的目的。根据个人习惯,通过功能具象化表现归纳为三种:

  1. 大马:功能齐全单个文件,可完成复杂行为和交互的Web端后门,通过Web交互即可成非常规权限操作。
  2. 小马:仅提供中转上等传简单功能的简易跳板,或提供其他功能实现的任意输入内容执行的恶意API接口。
  3. 脚本:以上均可称为执行脚本,但我这里划分出来所指的是无交互、固定行为的类似APT中高针对性的执行脚本。

WAF静态分析



简而言之,静态分析就好比人类社会看脸是一个意思,“面露险恶”、“福光满面”、“长相猥琐”、“帅气如我”什么的就是说的这意思,WAF防御视角来说,就是通过“侧写”来描述不同的脚本和流量中出现的特征。


说说大马:


通常因为体积庞大并且涵盖函数和变量众多,网上流通的WebShell又通常运用固定化的格式,这就是传说中的“大众脸”了。这种Webshll基本看背影就知道是后门,大多一拳就被打死。而后门包含var和str普遍有passwordShellPwdSysInfoSecInfogetSystem等关键字,function多出现base64_decodeset_magic_quotes_runtimedisplay_errors等,结构构成类似于


func(){
$var2=base64_decode($var1);
if(!func2($var2)){
    func3();die('blablabla');
    };
};

对于WAF来说,不管如何构造文件格局、更改名称和执行顺序,虽然关键字些许可以绕过,但是如果不对功能构架进行替换,WAF只需对各类 function进行还原并描绘执行蓝图,再拿去对比恶意样本模型,加上对参数传入点的分析、流量内容分析,95%准确率可以判定是否是恶意脚本。

当然,我们也得从攻击者角度来说,我们可以靠手工重铸出一个大马或者亲自动手修改一个后门脚本,通过等价替换function,规避掉原有var和str的样貌,来实现绕过特征定位。


比如PHP来说,分功能书写不同类型加解密unCrypto[n]=function($input){blablabla……}并进行固定封装,类似于js的直接封装写死,而内部调用时再按需根据不同传入$input解密,每个function实例化的时候使用$tmp=tmpfile()来创建单独的tmp文件,使用fputs($tmp, unCrypto[n](evilFunc_str))导 出,再跳转访问或者直接包含执行,此举在WAF眼里,文件只是执行了一个文件创建动作,或者顶多进行任意文件包含(多判定为文件漏洞而非恶意后门),到底 这个动作之后是否有恶意操作?WAF并不在意,或者说WAF的设定上并不会关心之后不相关文件造成的行为,在一次性调用而后随session回收一同释放 掉的tmp文件,实际上就是以附属从者形式参与到主文件的执行,除非服务器端其他类型的扫描器进行目录下文件的循环检查。(同理CTF的很多加密知识点也 是可以贯通使用的在实际环境中,不要以为CTF就是玩而已,没有哪场考试会偏离生活,只是偏于生活罢了。)


聊聊小马:


小马相对大马的变通性强不少,通常可使用文件分割、function分块引入来绕过特征,但是小马的典型短小精悍也让它主文件的变形产生了难度,毕 竟就算代码写出花儿来,万变不离其宗,最终实现的那个function行为必定是固定的,因此在小马的查杀上,WAF主要会判断最终执行的 function是否跟特征库里的样本类似。

最常见的小马类似如下,当然只是举个例子。


<?php eval($_POST['c']);?>
<?php assert(system($_POST['c']));?>
<?php
if ($_FILES["c"]["size"] > 0){
    move_uploaded_file($_FILES["c"]["tmp_name"], __FILE__);
    echo "<script>window.location.reload();</script>";
};
?>
  • admin 2018-1-9 23:18
    作为渣蛋轮胎科普系列的开头,还是打算从基本点给小白们科普...
文章点评