如何利用污点分析提升未知Webshell攻击检出率?

admin 2022年3月21日02:25:06评论141 views字数 2289阅读7分37秒阅读模式
如何利用污点分析提升未知Webshell攻击检出率?

毕磊
腾讯安全反病毒实验室高级安全专家
王铮 赵中彬
腾讯安全反病毒实验室高级研究员


背景


随着越来越多的政企机构将其业务上云,产业互联网快速发展,黑产活动的舞台也越来越大了。而Webshell就是其中门槛最低,但也最难防范的问题之一。


Webshell本质上是一种可以在服务器上直接运行脚本,并且可以直接通过url从服务器外部进行访问,通常用php、jsp、asp语言实现。Webshell的功能十分强大,借助这些语言的api,可以轻松执行任意系统命令、上传下载文件、修改网站内容、查看数据库等高危行为。


Webshell不像二进制病毒需要编译,可以直接以脚本形式运行,因此具有体积小、易变形的特点。黑客如果发现自己的Webshell被查杀了,可以通过不断修改来避免被检测。


传统Webshell检测方案


传统Webshell检测主要依靠字符串的正则特征,在面对已知样本时检测效果较好。通过不断积累样本并提取特征,可以满足日常的安全需求。但前文提到过Webshell无需编译、易变型,所以在高强度攻防对抗中,面对黑客精心编写的全新样本,传统特征的效果欠佳,需要更全面的手段来和黑客抗衡。


如何利用污点分析提升未知Webshell攻击检出率?

(特征可以检测)

如何利用污点分析提升未知Webshell攻击检出率?

(变形1)

如何利用污点分析提升未知Webshell攻击检出率?

(变形2)

如何利用污点分析提升未知Webshell攻击检出率?

(变形3)


启发式的检测方案


Webshell的特性决定了传统特征对0day样本的检测效果不佳,应该使用一种启发式的检测方法,让引擎主动去理解脚本,发现脚本中的恶意行为,而不是被动添加人工特征。鉴于Webshell最根本的恶意行为是任意执行外部命令,我们只需要牢牢抓住这个原则,就可以轻松识别Webshell。


既然Webshell要执行外部命令,那不可避免要获取外部的数据,以php为例,常用$_GET,$_POST等变量接收http请求;而执行命令则依赖eval,system等函数;这两步之间可能还存在字符串处理、条件分支等各种操作。


因此我们如果发现脚本中的外界变量通过不断传递,最终进入了危险函数,就可以认为此脚本是Webshell。我们可以用污点分析来检测这类变量传递行为,将外界变量视为污点源,危险函数视为污点汇聚点,跟踪污点传播过程,判断污点变量是否被洗白,最终是否进入污点汇聚点。这也是TAV引擎检测Webshell的基本原理。


如何利用污点分析提升未知Webshell攻击检出率?


TAV Webshell检测引擎


腾讯安全TAV的Webshell检测引擎不仅包含传统特征,还结合了静态分析、动态分析、深度还原技术,多管齐下,全方位无死角地检测各类Webshell,保证腾讯云上的主机安全。


1、静态分析


TAV的静态分析引擎支持检测PHP、JSP等各类主流脚本的Webshell。引擎首先会将各种脚本语言进行词法语法分析,将其转换成一种统一的中间表示。


得到中间表示后,TAV引擎会构建控制流图和数据流图,并在图上跟踪外界污点变量的传递。使用外界变量是WebShell非常重要的特征,如果发现外界变量最终进入了命令执行函数,就可以判断为Webshell。


如何利用污点分析提升未知Webshell攻击检出率?


TAV的静态分析引擎为支持php灵活的语法,专门强化了分析能力,不仅支持传统的条件、循环、函数、对象的静态分析,还支持动态变量名、箭头函数、反射、回调等动态特性。


依靠静态分析引擎,我们对开源社区的热门php项目进行了自动化代码审计,发现了数十个风险,人工确认后,向CNVD提交了3个漏洞,并获得漏洞证书。(CNVD-2021-10320,CNVD-2021-08442,CNVD-2021-51345)


2、动态分析


与静态分析不同,动态分析关注攻击行为的发生。TAV引擎在内部实现了一个安全精巧的PHP执行器,可以将PHP WebShell在安全、稳定的前提下执行,触发恶意行为,同时利用动态污点跟踪技术,对恶意行为进行检测。


TAV的动态分析引擎,会监控PHP样本中读取外界变量的行为,并将这些变量标记。TAV会监控php执行中的各种函数调用和赋值操作,保证这些污点变量如何传递都能被跟踪。最后对eval,system等高危函数进行拦截,分析其是否使用了污点变量,从而实现WebShell检测。


如何利用污点分析提升未知Webshell攻击检出率?


3、深度还原


在实际的攻防中,高级黑客会把Webshell加密来绕过检测,而云上也有很多客户为了自己的隐私,会将项目代码加密。如果不进行解密还原,根本无法区分加密后的黑白样本。

加密样本举例:


如何利用污点分析提升未知Webshell攻击检出率?
如何利用污点分析提升未知Webshell攻击检出率?


为了解决这一难点,TAV实现了各种解密能力。一方面基于传统脱壳技术,对已知的加密混淆方案进行专项处理,可以对市面上的大部分PHP加密混淆进行“脱壳”。另一方面利用动态分析php执行器进行虚拟执行,将混淆加密的代码进行动态还原,实现“解密”。针对多次加密的样本还会进行多次解密,深度还原。解密后的明文继续用于特征和动静分析,大大提高了报毒率,同时降低了加密白样本的误报率。


如何利用污点分析提升未知Webshell攻击检出率?


检测效果


在腾讯云的线上环境里,TAV引擎在Webshell检测领域,贡献率能达到99%以上,误报率接近0%。相比于传统的特征检测方案,TAV WebShell检测引擎不仅有着超高的检测率,同时也有超低的误报率,在攻防场景中,也具备较高的独报能力。


TAV WebShell引擎能力既可以应用于腾讯安全软件的本地检测引擎,也可以应用在云端服务。目前腾讯主机安全(云镜)已全面接入TAV WebShell检测能力,使腾讯云主机查杀防御WebShell攻击的能力得以大幅提升。后续还将陆续接入腾讯安全其他产品,比如腾讯高级威胁检测系统(御界)、Web应用防火墙、云防火墙、零信任iOA等等产品,将全面增强在终端侧、主机侧、流量侧的安全能力。


如何利用污点分析提升未知Webshell攻击检出率?
如何利用污点分析提升未知Webshell攻击检出率?
如何利用污点分析提升未知Webshell攻击检出率?
如何利用污点分析提升未知Webshell攻击检出率?
如何利用污点分析提升未知Webshell攻击检出率?
如何利用污点分析提升未知Webshell攻击检出率?

原文始发于微信公众号(腾讯安全联合实验室):如何利用污点分析提升未知Webshell攻击检出率?

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月21日02:25:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何利用污点分析提升未知Webshell攻击检出率?https://cn-sec.com/archives/834185.html

发表评论

匿名网友 填写信息