深度学习PHP webshell查杀引擎demo
[Machine Learning]
传统webshell查杀思路
- 规则系统
- 旁路执行
- 沙箱
基于机器学习/深度学习的webshell查杀引擎,通过专家知识提取特征训练分类器,其结果受样本、特征、结构等多种因素影响。
特征维度:
- 文本语义(n-gram/TF-IDF/word2vec/CNN/RNN)
- 统计特征(信息熵/重合指数/最长词/可压缩比)
- 历史数据特征(计算单个文件的落盘时间/文件创建进程/文件类型/代码风格/权限和同目录下其他文件的"距离")
- OP指令层特征(指令/调用链/参数文本特征)
- 动态特征(文件读写/网络连接,可依靠沙箱或旁路执行能力解决编码混淆类case)
我尝试在兜哥《Web安全之机器学习入门》提出的opcode模型基础上,加入文本语义与参数语义特征,构建深度学习模型。模型首先识别php文件,然后提取特征进行计算。
用Github爬取的1w非同源样本测试效果,精确99.1%召回98.6%。结果显示深度学习的静态分析模型召回率优于规则系统,精确率优于沙箱。
demo
提供WEB测试页面和批量打标接口
➜ ~ echo "<?php eval(\$_GET[1]);?>" > shell.php
➜ ~ curl http://webshell.cdxy.me/api -F [email protected]
{"status": "ok", "result": [["danger", "MALICIOUS", "webshell detected. Go on, bro!"]]}
在此抛砖引玉,如成功绕过可在评论区留言或邮件我,绕过姿势的案例分析和对改进方向的思考会再次分享。