文章源自【字节脉搏社区】-字节脉搏实验室
作者-lation
扫描下方二维码进入社区:
WebShell 的检测和查杀是 Web 安全里热门且永恒的话题之一了,在网络安全世界里,攻击者总是先拔头筹,出其不意,防守方常常处于比较被动的局面,扮演者受害者的角色。
因为 PHP 类的 WebShell 变形技巧多,复杂且难以检测,下面将以 PHP 的 WebShell 举例讲解,其他语言类似推理。
1、特征值匹配
Webshell 的实现需要两步:数据的传递、执行所传递的数据。
此种方法检测的有效性取决于正则写的是否足够优秀,高危代码块的特征库是否足够丰富。
对于执行数据部分,我们可以收集关键词,匹配脚本文件中的关键词找出可疑函数,当执行数据部分匹配到可疑函数时再进行判断其数据传递部分是否为用户可控,譬如 $_POST、$_GET、$_REQUEST、$_FILES、$_COOKIE、$_SERVER 等等。
下面是一些常见高危函数:
数据传递
$_GET、$_POST、$_COOKIE、$_SERVER
命令执行
exec、passthru、shell_exec、system、eval
文件操作与远程 URL
file、file_get_contents、fopen、curl、fsockopen
回调函数
call_user_func、call_user_func_array、array_maparry_filter
其他高危函数
phpinfo、preg_replace、create_function、unserialize
2、哈希校验
哈希校验的主要工作原理是基于 WebShell 样本库,样本库的丰富度决定了检测的有效性。
模糊哈希(fuzzy hash)算法确定文件分块位置并记录分块,对每个分块计算哈希值然后进行结果比较最后计算整个文件的相似度
3、文件完整性检测
文件的创建时间(新增文件、新增WebShell),修改时 间(原有文件注入WebShell)),文件权限,所有者
当文件的以上特性发生变化时候,可以立刻针对该文件下发 WebShell 检测任务
4、动态行为检测
通过监控运行 PHP 的进程在系统上执行了哪些系统调用或命令,这是通过动态 行为特征抓取 WebShell 的一种有效方式。
一些检测工具
D 盾
官网:http://www.d99net.net
河马
官网:http://www.shellpub.com
WEBDIR+
官网:https://scanner.baidu.com
CloudWalker(牧云)
项目地址:https://github.com/chaitin/cloudwalker
web shell detector
官方网站:http://www.shelldetector.com/
findwebshell
项目地址:https://github.com/he1m4n6a/findWebshell
通知!
公众号招募文章投稿小伙伴啦!只要你有技术有想法要分享给更多的朋友,就可以参与到我们的投稿计划当中哦~感兴趣的朋友公众号首页菜单栏点击【商务合作-我要投稿】即可。期待大家的参与~
记得扫码
关注我们
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论