Web应用安全检测工具介绍


Web应用安全检测工具介绍

文章插图
 
关于 webshell由于 webshell 是通过 http 协议进行访问,被远程控制的服务器或者远程主机不易发现,非常隐蔽 。简单的说来,webshell 就是后端程序编写的木马后门,通常是一条后端编程语言语句或者一个文件,通常是通过一句话执行命令行进行上传下载文件、查看数据库、执行任意程序命令等 。
基于特征的检测方式该方式的优点是实现原理简单,容易实现,准确率高;缺点就是新型的 webshell 无法检测,需要不断地更新规则库进行完善 。由于 webshell 是通过 http 协议进行访问,检测 webshell 常见有两种工作方式:
· (WAF)通过 web 应用防火墙进行实时的特征及规则检测
· 通过特征及规则对目录下文件进行扫描检测
基于 AST 语法树的检测方式该方式主要使用抽象语法树进行解析,遇到危险操作进行统计分析告警 。优点在于动态解析,能发现具体代码如何工作, 准确性高,缺点是该方式的实现方式复杂,局限大,如果需要对不同的后端代码程序进行检测,需要实现不同的语言的语法树解析,难度呈现指数级 。
Yara 规则快速匹配工具Yara[fn:1]是一款旨在帮助恶意软件研究人员识别和分类恶意软件样本的开源工具(由 virustotal 的软件工程师 Victor M. Alvarezk 开发),使用 Yara 可以基于文本或二进制模式创建恶意软件家族描述信息,当然也可以是其他匹配信息 。
支持多平台,可以运行在 windows、linux、mac OS X,并通过命令行界面或扩展的 Python 脚本使用 。
Yara 使用使用 Yara 进行规则匹配时需要两样东西:规则文件和目标文件,目标文件可以是文件、文件夹或进程 。Yara-rules规则[fn:2],开源社区维护了一个很好的规则库 。该库包含恶意软件等规则,这里我们直接使用webshells_index.yar[fn:3]及 webshells 目录下的规则即可 。yara 参数如下:
YARA 3.11.0, the pattern matching swiss army knife.Usage: yara [OPTION]... [NAMESPACE:]RULES_FILE... FILE | DIR | PIDMandatory arguments to long options are mandatory for short options too.--atom-quality-table=FILEpath to a file with the atom quality table-C,--compiled-rulesload compiled rules-c,--countprint only number of matches-d,--define=VAR=VALUEdefine external variable--fail-on-warningsfail on warnings-f,--fast-scanfast matching mode-h,--helpshow this help and exit-i,--identifier=IDENTIFIERprint only rules named IDENTIFIER-l,--max-rules=NUMBERabort scanning after matching a NUMBER of rules--max-strings-per-rule=NUMBERset maximum number of strings per rule (default=10000)-x,--module-data=https://www.isolves.com/it/aq/rj/2020-05-20/MODULE=FILEpass FILE's content as extra data to MODULE-n,--negateprint only not satisfied rules (negate)-w,--no-warningsdisable warnings-m,--print-metaprint metadata-D,--print-module-dataprint module data-e,--print-namespaceprint rules' namespace-S,--print-statsprint rules' statistics-s,--print-stringsprint matching strings-L,--print-string-lengthprint length of matched strings-g,--print-tagsprint tags-r,--recursiverecursively search directories-k,--stack-size=SLOTSset maximum stack size (default=16384)-t,--tag=TAGprint only rules tagged as TAG-p,--threads=NUMBERuse the specified NUMBER of threads to scan a directory-a,--timeout=SECONDSabort scanning after the given number of SECONDS-v,--versionshow version information递归遍历检测
~# yara -r ./webshell_index.yar ~/
 

Web应用安全检测工具介绍

文章插图
检测webshell
统计样本数量统计查看有多少个样本 。例如:
find ~/webshell/ -type f | wc -l
 

Web应用安全检测工具介绍

文章插图
统计样本
统计检测到多少个样本,由于不同规则检测到重复的样本,通过 uniq 去重 。例如:
~# yara -r ~/rules/webshells_index.yar ~/webshell/ | awk -F' ' '{print $2}'|sort|uniq|wc -l902
 

Web应用安全检测工具介绍

文章插图
统计样本去重
webshell 样本webshell的样本在 github [fn:4]上找到的开源样本 。主要用来测试 yara 规则及与商业或开源的其他 webshell 检测工具做对比 。
 
Web应用安全检测工具介绍

文章插图
 
检测结果在 1613 个样本中,检测识别出 902 个样本 。
样本总数 检测结果 检测工具
1613 902 yara
随机抽样检测(该结果有一些问题,实际检测出来了,但由于命令行去重处理在 linux 下不能很好识别中文与空格的文件及文件夹名导致的,仅作参考) 。


推荐阅读