首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

原创|免杀webshell的一些研究

本文原作者ID:DarkLess

前言

webshell免杀已经是⼀个⽼⽣⻓谈的话题了,现在的各种waf都已经可以识别常⻅webshell及其各种变形,也出现了基于沙箱技术和机器学习的waf。webshell的免杀⼀直在⼀个对抗的过沉中,今天新出的⼀个免杀webshell,可能明天就加⼊了waf的规则库中,所以我们需要尽可能多的掌握webshell免杀技巧并且⾃⼰写⼀些webshell。能够免杀的webshell尽可能的⼩范围使⽤,⼤量使⽤必然会被waf识别并加⼊查杀规则库。

前期准备

本次测试过程中使⽤了常⻅的两个免费waf:安全狗和D盾。综合测试的结果是D盾的免杀能⼒更强,所以能过D盾webshell基本都可以过安全狗。webshell即使可以逃过D盾的查杀,也⽆法进⾏系统的命令执⾏,因为D盾还有⼀层防⽕墙。如何绕过D盾防⽕墙和360等杀毒软件还需继续学习。

webshell原理

根据功能的差别可以将webshell分为⼀句话⽊⻢,⼩⻢和⼤⻢。对于这些⻢的查杀原理基本是⼀样的,只不过代码越多暴露的特性就会越多,⾃然就越容易被查杀。本次研究⼀句话⽊⻢的免杀,重点介绍⼀句话⽊⻢的原理。⼀句话⽊⻢是最简单的webshell,它的实现也相当容易,最简单的⼀句话⽊⻢如下:

或者:

assert可以换成system等可以执⾏系统命令的PHP函数。

毫⽆疑问,这中简单原始的webshell肯定会被免杀:

eval和assert

关于eval函数

eval是⼀个语⾔构造器⽽不是⼀个函数,不能被可变函数 调⽤可变函数:通过⼀个变量,获取其对应的变量值,然后通过给该值增加⼀个括号(),让系统认为该值是⼀个函数,从⽽当做函数来执⾏

通俗的说⽐如你<?php$a=eval;$a()?>这样是不⾏的.也造就了⽤eval的话达不到assert的灵活,但是在php7.1以上assert已经不能使用了。

关于assert函数

assert()回调函数在构建⾃动测试套件的时候尤其有⽤,因为它们允许你简易地捕获传⼊断⾔的代码,并包含断⾔的位置信息。当信息能够被其他⽅法捕获,使⽤断⾔可以让它更快更⽅便!

免杀方法

函数替换

例如将$_POST替换为$_REQUEST

虽然D盾还是检测出来为后⻔,但是级别已经降低了为4级,可⻅D盾对POST更为敏感,这⾥显然不能免杀,但是可以作为⼀种思路来配合后续的其它⽅法免杀。

字符串变形

php造作字符串的函数有:

通过字符串函数对关键字assert和$_POST进⾏变形,如:

D盾检测出为1级,其实1级D盾就不会拦截,可以达到免杀效果:

经过测试,D盾只要遇到这种疑似变量就会报危险,如下图,即使这个变量是⼀个⽆害的字符串,所以在这个问题上⽆需深究。

自定义函数绕过

利用数组免杀

还可以给数组加点料:

除此外还可以使⽤多维数组:

利用回调函数免杀

常⽤的php回调函数有:

注意常⽤的回调函数⼤部分都已经加⼊了免杀套餐,所以我们需要尽可能的去寻找⽐较⽣僻的回调函数。

例如:

回调函数配合方法或类

例如回调函数配合⽅法:

使用特殊字符

特殊字符有:\n,\r,\t等。

经测试特殊字符的免杀性不强,勉强可以使⽤。

利用POST包获取关键字

也可以使⽤⾃定义的加密⽅式,post包传⼊参数再由webshell解密,此种⽅式现有的waf查杀能⼒基本为0。

无字符特征马

利⽤异或或者编码等⽅式构造⽆字符的webshell,例如:

异或绕过

github上有个项⽬可以使⽤python⽣成异或免杀的webshell,不过其特征已被捕获,现在已经⽆法过D盾了。github地址https://github.com/yzddmr6/webshell-venom。不过可以使⽤下⾯这篇⽂章的思路来进⾏修改重新免杀:随机异或⽆限免杀D盾之再免杀

举个例⼦:

或者:

PHP7.1之后免杀困境

php7.1之后我们已经不能使⽤强⼤的assert函数了,waf只要把函数封死就可以有效的阻⽌webshell免杀,⽽eval并没有assert那么灵活。后期⼤家可能更加倾向使⽤⼤⻢。

好看的人才能点

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20211005A03I2K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券