Awesome
机器学习检测Webshell
简介
提取PHP执行中的opcode,采用 opcode词袋 + tf-idf 进行关键信息提取
采用朴素贝叶斯算法进行训练。
进行 PHP WebShell 的检测。
部署
step 1. Python环境部署
pip install -r requirements.txt
step 2. PHP opcode 部署
开启opcode模式
windows环境
1. 下载 vld.dll 插件并存放在php ext 目录下
2. 配置 php.ini 激活vld.dll 文件
第一次进行训练
将白名单的文件放入到 white-list 文件夹中
将黑名单文件放入到 black-list 文件夹中
进行第一次训练
python train.py
Note:
避免每次生成opcode 的时间过长,每次训练完成后,会生成两个文件,black_opcodes.txt & white_opcodes.txt。
如果有新的白名单文件或者黑名单文件加入,先删除掉black_opcodes.txt 和 white_opcodes.txt 文件,然后再次进行训练。
训练完成后,会在save文件夹内,生成一个gnb.pkl文件,这个是训练好的缓存文件。
检测
检测单个文件
python check.py [filename]
重复训练
- 提供训练集 在人工得到结果后,可以在white-list & black-list 文件夹中,添加已知的结果,再按照第一次训练的方法,进行再次训练。得到的结果便会更加准确。
数据集(参考)
白名单
- https://github.com/WordPress/WordPress
- https://github.com/typecho/typecho
- https://github.com/phpmyadmin/phpmyadmin
- https://github.com/laravel/laravel
- https://github.com/top-think/framework
- https://github.com/symfony/symfony
- https://github.com/bcit-ci/CodeIgniter
- https://github.com/yiisoft/yii2
黑名单