cdxy.me
Footprints on Cyber Security and Python

传统webshell查杀思路

  • 规则系统
  • 旁路执行
  • 沙箱

基于机器学习/深度学习的webshell查杀引擎,通过专家知识提取特征训练分类器,其结果受样本、特征、结构等多种因素影响。

特征维度:

  1. 文本语义(n-gram/TF-IDF/word2vec/CNN/RNN)
  2. 统计特征(信息熵/重合指数/最长词/可压缩比)
  3. 历史数据特征(计算单个文件的落盘时间/文件创建进程/文件类型/代码风格/权限和同目录下其他文件的"距离")
  4. OP指令层特征(指令/调用链/参数文本特征)
  5. 动态特征(文件读写/网络连接,可依靠沙箱或旁路执行能力解决编码混淆类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 file=@shell.php
{"status": "ok", "result": [["danger", "MALICIOUS", "webshell detected. Go on, bro!"]]}

在此抛砖引玉,如成功绕过可在评论区留言或邮件我,绕过姿势的案例分析和对改进方向的思考会再次分享。

ref