黑客秘籍:基于WAF日志的扫描器检测实践

Web扫描器通过构造特殊请求的方式 , 对Web系统可能存在的安全漏洞进行扫描 , 是渗透工作的必备工具 。 本文尝试从扫描器检测方向出发 , 根据扫描器的功能和所产生的请求内容对其进行分类 , 结合苏宁Web应用防火墙(WAF)日志数据 , 分别展示了规则模型、统计特征模型和基于n-gram的的MLP模型在Web扫描器识别上的简单实践效果 , 供大家参考 。
一.扫描器概览
黑客秘籍:基于WAF日志的扫描器检测实践
文章图片
图1-扫描器分类
1敏感内容扫描
俗话说知己知彼方能百战不殆 , 当黑客或渗透测试人员面对一个未知站点时 , 这个站点对他们来说就是一个黑盒 。 这时候不妨拿敏感内容扫描器先给它来个一把嗦摸摸底 , 指不定就能扫到有价值信息 , 找到撬动安全防护缺口的第一把钥匙 。
敏感内容扫描器通常具备一系列敏感路径及敏感文件的字典 , 扫描器利用这些敏感内容字典对站点进行盲扫来判断是否存在这些敏感内容;进一步地 , 通过响应数据包对站点目录结构及其他信息进行判断 , 为下一步针对性单点突破作准备 。
这里提到了一个字典的概念 , 字典这玩意很重要 , 可以说字典的质量、广度和深度决定了这个扫描器的上限 。 相对于IP代理、UA伪造、随机化访问时间间隔这些伪装手段来说 , 敏感内容是固定的 , 翻来覆去就这么多东西 , 同时因为请求资源不存在大多数会返回404状态码(有些会触发WAF拦截策略返回403 , 还有些因为服务器设置了默认跳转状态码为301或302) 。 攻方选手通常不会构造毫无意义的字典内容来浪费有限的资源和精力 , 这些字典通常包含如下内容信息(忽略大小写):
?敏感目录信息:如/admin/,/phpadmin/,/mysqladmin/,/usr/local/,/etc/passwd/,...
?敏感配置文件:如.bashrc,.bash_history,conf.icn,config.inc,...
?版本文件信息:如/.git/config,/.svn/entries,/.bzr/xxx,...
?备份文件信息:如bak,index.php.bak,database.wsp,backup.zip,...
?密钥文件信息:如/.ssh/idrsa,/.ssh/knownhosts,idrsa.pub,authorizedkeys,...
?日志文件信息:如/logs/error.log,/logs/auth.log,/var/log/mysql/mysql.log,...
?其他敏感文件:如php,system.inc,mysql.inc,shell.php,...
2Web漏洞扫描
漏洞扫描器通常会与爬虫相结合 。 首先利用爬虫获取到页面可能存在注入点的接口 , 然后针对该接口来一个SQl注入、XSS注入、命令注入一把嗦 , 对于一些安全防护意识低的站点往往能取到最直接的效果 。 针对这类扫描请求 , WAF都能够做到单点正则过滤 , 理论上会拦截返回大量403状态码 , 但是扫描器常针对一些新域名或偏僻的域名进行扫描 , 这些域名往往没有启用WAF攻击防护 , 因此实际上是有很多是未被拦截的非403状态码 。 同上述敏感内容扫描 , 这类请求往往也具备明显的文本特征 , 下面分别以SQL注入、文件包含和XSS跨站扫描举例 。
2.1sql注入漏洞扫描
SQL注入攻击是一种注入攻击 , 它将SQL命令注入到数据层输入 , 从而影响执行预定义的SQL命令;通过控制部分SQL语句 , 攻击者可以查询数据库中任何自己需要的数据 , 利用数据库的一些特性 , 可以直接获取数据库服务器的系统权限 。
首先 , 判断接口是否存在注入点 , 如:
?若参数ID为数字 , 加减运算判断是否存在数字型注入;
?参数后加单双引号 , 判断返回结果是否报错;
?添加注释符判断前后是否有报错:如id=1"--+或id=1""--+或id=1"#或id=1""--+;
?有些参数可能在括号里面 , 所以也可以在参数后面加单双引号和括号 , 如id=1")--+或id=1"")--+或id=1")#或id=1"")--+;
?参数后面跟or或者and , 判断返回结果是否有变化 , 如1"or"a"="a或者and"a"="a或者1"or"a"="b或者1"or"1"="2;
?也可以考虑时间延迟的方法判断是否存在注入 , 如1’andsleep(5) 。
然后对存在注入漏洞的点利用联合查询一步步获取信息 , 如:
?查询数据库名:id=0"unionselectNULL,database(),NULL--+;
?爆库名:id=0"unionselectnull,groupconcat(schemaname),nullfrominformation_schema.schemata--+;
?报表名:id=0"unionselectnull,groupconcat(tablename),nullfrominformationtableswheretableschema="security"--+;
?爆字段名:id=0"unionselectnull,groupconcat(columnname),nullfrominformationcolumnswheretableschema="security"andtable_name="users"--+;
或者通过报错回显查询结果 , 如:
?回显数据库名:andextractvalue(1,concat(0x7e,(selectdatabase())));
?回显表名:andextractvalue(1,concat(0x7e,(selectgroupconcat(tablename)frominformationtableswheretableschema="security")));
?回显列名:andextractvalue(1,concat(0x7e,(selectgroupconcat(columnname)frominformationcolumnswheretableschema="security"andtable_name="users"))) 。
2.2文件包含漏洞扫描
服务器通过PHP的特性(函数)去包含任意文件时 , 由于要包含的这个文件来源过滤不严 , 从而可以去包含一个恶意文件 , 非法用户可以构造这个恶意文件来达到恶意的目的 , 如读取目标主机上的其他文件 , 远程文件包含可运行的PHP木马 , 包含一个创建文件的PHP文件 , 本地文件包含等 。
?Include:包含并运行指定文件 , 当包含外部文件发生错误时 , 系统给出警告 , 但整个php文件继续执行;
?Require:跟include唯一不同的是 , 当产生错误时候 , include下面继续运行而require停止运行了;
?Include_once:这个函数跟include函数作用几乎相同 , 只是他在导入函数之前先检测下该文件是否被导入 , 如果已经执行一遍那么就不重复执行了;
?Requireonce:这个函数跟require的区别跟上面所讲的include和includeonce一样 。
2.3XSS跨站漏洞
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码 , 当用户浏览该网页时 , 嵌入网页中的Script代码会被执行 , 从而达到恶意攻击用户的目的 。 与正常请求相比 , XSS请求也具备明显的文本特征 , 如alert(0),等 。
二.规则模型
扫描器检测与Web攻击检测不同之处在于 , 扫描是一种持续的行为 , 我们通过对扫描器持续一段时间的请求进行聚合分析 , 而Web攻击检测则是把每条请求作为一次独立的事件来判断是否为Web攻击 。 扫描器在请求不存在的资源时往往会返回状态码404 , 但实际生产环境中并非如此 。 尤其是作为电商企业 , 希望被正面的搜索引擎抓取 , 返回404的这种方式会对SEO搜索引擎优化产生不利影响 , 因此多数域名针对这种请求会做3XX的跳转 。 总体来说 , 大量返回404的请求往往都是盲扫请求 , 但仍有大量盲扫请求返回状态码并非404 。 这里依赖Web请求日志 , 在一定时间被仅对请求url文本特征进行分析 , 来识别扫描器 。
1正则提取
敏感内容扫描器往往会请求敏感路径、敏感文件等信息 , 因此首先收集这些信息 , 然后用正则去匹配这些内容 。 这里分别按照敏感信息的类型进行分类:
黑客秘籍:基于WAF日志的扫描器检测实践
文章图片
2正则优化
正则顺序优化:按照Sensitive类的定义 , 当url匹配到关键内容后即返回匹配内容 , 跳出正则过滤的循环 。 因此 , 为了进一步降低性能的消耗 , 将生产环境中命中频率最高的正则放在最前面 , 命中率低的正则放在靠后位置 。
单条正则调优:由于正则匹配搜索的优先级为由左向右 , 因此将生产环境中命中频率最高的放在左边 , 最低的放在最右边 。
3准确率和召回率评估
评估方式:模型部署在准实时分布式计算平台 , 按每分钟进行聚合 , 并将检测到的扫描器数据作为Log日志打印 。 根据Yarn日志输出的扫描器IP和检测到的请求时间在云迹进行抽样验证 。
黑客秘籍:基于WAF日志的扫描器检测实践
文章图片
三.统计特征ML模型
扫描器请求和正常请求之间除了文本特征以外 , 在状态码、url长度、所携带ua的混乱度及访问域名的混乱度等也存在一定差异性 。 因此提取命中关键词次数及上述特征 , 结合WAF正常日志和规则检测到的扫描器日志形成黑白样本 , 进一步训练ML模型 。
【黑客秘籍:基于WAF日志的扫描器检测实践】1特征提取


    推荐阅读