-
目前Webshell的检测方法,有基于hook、统计、正则、模糊哈希、Simhash、机器学习甚至是深度学习,对了,还有AST。其中各个方法都有自己的优势,有兴趣可以查阅下相关研究。其中基于正则和Simhash的方法依赖比较少,也更方便实现的。该二者的特点是,正则检测深度大,但容易出现误报的情况,而且针对Webshell的变形是很难处理的,需要人工进行较多的干预;Simhash等特征匹配算法,特征给的准,精度要高,与基于算法类的检测方法类似,都需要较多样本。
-
代码倾向于给出一个框架,其检测准确度取决于特征定义与样本数量,收集样本 & 写规则吧
-
着重声明下:本人不做web安全这块,只是有需求才做了简单的研究。代码留着也是没用所以共享出来,留给需要的同志。本人光整理样本就花了不少时间,一个人整理,一个人去重(当然还是有重复,也有许多分类错的地方)。但有一点,对样本进行分类是很有意义的,所以凭借这点,拿样本的伙计可以star下。
-
敬告 样本不是本人写的,本人甚至看不懂这些代码是在干嘛~本人也没有恶意传播,只做学术研究。所以万一用这些代码搞出了事,跟本人没有任何关系。我不要你们觉得,我要我觉得。
项目采用Python3编写,用于Webshell检测的研究,各目录结构的相关介绍如下:
- Config: 主要用于配置文件,其中yar文件为定义特征的yara文件,用以yara规则匹配;json文件用以Simhash算法匹配
- Samples: 一方面用于测试,完善yara规则; 另一方面,用于Simhash算法匹配,样本越大Simhash效果会越来越好。
- Source: 源码部分
- WebshellInspector.py 采用Simhash检测,暴露有接口,而且很简单,开袋即食;
- WebshellKiller.py 采用yara规则匹配,检测速度较快,通过完善yara规则,查杀广度大,但容易误报。暴露有接口,也简单,开袋即食;
- WebshellMonitor.py 基于WatchDog的文件监控,提供实时的Webshell监控(检测基于a/b)
- WebshellObserver.py 研究了NeoPI代码和文章,由于NeoPI是Python2实现的,而且复用性比较低,改写了下;暴露有接口,也简单,开袋即食;
- WebshellDetector.py基于Inspector和Killer,针对多种格式的Webshell进行检测,同时统一了调用接口。
- Test: 可以将文件拷贝至Test目录,用于测试Monitor实时监控的功能
WebshellInspector
依赖Simhash
模块,安装使用命令 pip install Simhash 即可WebshellKiller
依赖Python Yara
模块,安装使用命令 pip install yara-python 即可WebshellMonitor
依赖WatchDog
模块,安装使用命令 pip install watchdog 即可WebshellDetector
简化了WebshellInspector
和WebshellKiller
的使用,尤其是无差别检测(jsp, aspx, php)
没有时间写界面,而且其中yara,json有些规则写得还很挫,也待完善。代码提供的是通用接口,扩展能力还行,识别能力依赖规则。转载或自用最好请标注来源,这是对开发者起码的尊重。