0x00 概述
findWebshell是一款基于python开发的webshell检查工具,可以检查任意类型的webshell后门。
该工具具有一定的扩展能力,能够通过字典添加以及插件开发两种方式,对findwebshell进行扩展。
0x01 安装
本工具的安装方法比较简单,因为是基于python开发的小工具,只要有python运行环境就可以了。
PS:源码有些地方存在错误,需要修改。
于
plugins/php_packshell-plugin.py
的第12行,多一个分号
于plugins/php_include_file-plugin.py
的第29行,少一个r
0x02 测试环境
测试环境:
- 运行环境:Ubuntu Server 12.04 LTS
- web服务器:apache2
- web应用:dvwa
- webshell:一句话木马+中国菜刀
这样的测试环境里,我们藏进去一个一句话木马webshell(自留)以及一个文件包含webshell(dvwa自带)。
0x03 使用方法
命令行参数
- -h 帮助
- -p PATH, --path=PATH 待扫描的web应用目录路径PATH
- -o OUTPUT, --output=OUTPUT 创建文件格式为html的,文件名为OUTPUT的webshell扫描报告,默认为report.html
- -e php|asp|aspx|jsp|all, --ext=php|asp|aspx|jsp|all 定义待扫描的文件格式
示例
python main.py -e php -p /path/to/web/applcation -o output
测试环境扫描
python main.py -e php -p /home/crazydog/workspace/src/DVWA-1.9/ -o output
扫描结果如下:
0x04 开发扩展
findWebshell具有扩展能力,该能力可以通过字典添加和插件开发的方式来实现。
字典添加
后门敏感关键字
在directory/
目录下的文件sensitiveWord.py
定义的是后门中的敏感关键字,可以手动添加,格式通常为{"关键字":"类型"}
。
其原理是某些后门文件中包含有指明后门相关信息的特有敏感字符,接着我们将这些敏感字符添加到字典之中,其中敏感词分为php,jsp,asp,aspx四种字典。
文件如下:
#/usr/bin/env python
#coding=utf8
"""
后门中包含的特有敏感字符
自行手动添加各个类型后门到字典中,格式{"关键字":"类型"}
"""
#php敏感字符列表
php_sensitive_words = {
"www.phpdp.org":"PHP神盾加密后门",
"www.phpjm.net":"PHP加密后门"
}
#asp敏感字符列表
asp_sensitive_words = {
}
#aspx敏感字符列表
apsx_sensitive_words = {
}
#jsp敏感字符列表
jsp_sensitive_words = [
]
webshell列表
在在directory/
目录下的文件webshell.py
定义了webshell列表。
其原理是定义了一个列表,列表中的文件名可能是潜在的已知webshell名以及明显的木马名字列表,需要关注。其中webshell类型分为php,jsp,asp,aspx四种。
文件如下:(我们可以在列表中添加可疑的文件名)
#!/usr/bin/env python
#coding=utf8
"""
文件名包含明显的木马名字和已知webshell名列表
"""
#php的
php_webshell = [
"phpspy.php",
"yijuhua.php",
"houmeng.php",
"backdoor.php",
"后门.php",
"xxoo.php",
"一句话.php"
]
#asp的
asp_webshell = [
]
#aspx的
aspx_webshell = [
]
#jsp的
jsp_webshell = [
]
插件开发
命名规范
命名格式:网页程序类型_后门类型-plugin.py
如php_eval_assert-plugin.py
php_preg_replace-plugin.py
asp_execute-plugin.py
函数规范以及返回值
函数名: def judgeBackdoor(fileCtent):
存在后门则应返回后门类型,不存在则返回None。
我们扩展的插件基本上是基于一个原理,即通过正则表达式在读入的文件内容筛选出可疑的字段,从而判断是否存在特定类型的webshell,这样的方式一般需要较为强大的webshell特征代码储备,但是其本身还是对文件内容的扫描,并没有基于行为等。
0x04 优缺点
优点
- 开源
- 文件小,扫描速度快
- 容易扩展,存在字典方式和插件方式,这两种方式。
缺点
- 字典方式和插件方式都是静态的,是基于对webshell文件名、敏感文件内容文本或者webshell内容中的特征代码的识别。其实现方式还是比较简单粗暴的。