基于PHP扩展webshell检测研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于PHP扩展webshell检测研究

基于PHP扩展webshell检测研究   摘 要 webshell通常是以网页文件形式存在的一种命令执行环境,也可以将其称为网页后门。本文主要介绍从php内核基础利用hook技术实现一种基于php扩展的webshell防御机制。使用该方法可以有效防御变形webshell,弥补传统防御检测机制的不足。   关键词 webshell,api hook,zend engine   中图分类号 TP3 文献标识码 A 文章编号 1674-6708(2015)148-0123-02   随着全球信息技术的快速发展,尤其是因特网的出现,互联网成为人们快速获取、发布和传递信息的重要渠道[1]。随着互联网的普及使得web应用得到了迅速的普及,从大型的新闻网站到企业门户,从电子商务平台到各种服务型的网站。由于开发人员的技术参差不齐,系统在设计开发过程中对于安全的考虑不完善导致漏洞的产生,例如:SQL注入、跨站脚本攻击、任意文件上传漏洞。黑客在得到web系统漏洞后一般会通过上传webshell得到服务器的低级权限。   1)webshell概述。   webshell是以网页文件形式存在的一种命令执行环境,也可以成为网页后门,黑客在入侵一个网站后通常会将后门文件与正常的网页文件放在一起。并通过篡改文件时间并通过服务器漏洞进行隐藏。由于webshell基于http通信,并不会在系统日志中留下痕迹,只会在中间件日志留下访问记录,使得管理很难在第一时间发现入侵痕迹。   2)检测方案。   传统的webshell检测方案基于特征码查杀。对于特征码较为明显的webshell检测效果较于明显[2]。但是由于查杀方式过于粗暴,使得误报率大大提高。另一种是基于语法分析的检测方案。根据语言扫描编译实现的方式,对代码进行剥离,注释,分析变量、函数、字符串、语言结构。通过这种方式可以完美解决漏报的情况。以上两种方式都是在被黑以后进行的检测,无法再被黑过程中触发规则并拦截攻击,较为被动。本文将通过php底层引擎的api hook技术实现webshell的主动防御检测。   3)基于api hook的主动防御原理。   基于api hook的主动防御最早出现在国内微点杀毒软件上。该程序通过hook api调用,当恶意程序调用危险api时触发主动防御。通过此原理,我们可以通过zend engine提供的接口轻松实现webshell主动防御检测。   1 技术架构   1.1 PHP内核与扩展   1)php内核执行流程。   php代码执行过程中分为四个阶段,分别是将php代码通过Zend/zend_language_scanner.c将Zend/zend_language_scanner.l中的规则进行词法分析后转换为语言片段(tokens),然后将语言片段(tokens)转换为表达式,接着将表达式编译成opcode(opcode是php脚本编译后的中间语言,类似java的ByteCode)。最后顺序执行opcode,从而实现php脚本的功能。   2)php扩展。   防御方案使用了php扩展来完成,php由纯c语言实现,所以内核支持使用c进行扩展功能的开发,并在源码包中提供了扩展生成扩展ext_skel生成扩展demo便于简化开发。php扩展位于内核zend引擎和php代码层之间。那么利用扩展就可以实现监控代码层执行细节,同时可以调用底层的api接口。   通过ext_skel生成扩展开发框架以后,可以发现扩展开发需要声明并实现PHP_MINIT_FUNCTION(加载模块调用函数),PHP_MSHUTDOWN_FUNCTION(卸载模块调用函数),PHP_RINIT_FUNCTION(请求调用函数),PHP_RSHUTDOWN_FUNCTION(请求结束调用的函数),PHP_MINFO_FUNCTION(模块信息函数),以及PHP_FUNCTION(导出函数)。   1.2 具体实现   php是解释型语言,代码被翻译为opcode由ZEND引擎解析执行,每个opcode对应zend底层一个处理函数。通过hook opcode对应的处理函数即可实现拦截webshell执行。通过taint扩展的源码分析发现zend引擎提供了zend_set_user_opcode_handler接口(int zend_set_user_opcode_handler ( zend_uchar opcode, opcode_handler_t handler ))第一个参数为需要操作的opcode。第二个为hook后的处理函数。通过zend_set_user_opcode_handler接口即可轻易实现hook opcode方案。通过对源码的搜

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档