整理总结各类web扫描器的特征
摘要:Web扫描程序通过构造特殊请求来扫描Web系统中可能存在的安全漏洞。它是渗透的必要工具。本文尝试从扫描的检测方向入手,根据扫描的功能和所生成的请求内容对其进行分类。
Web扫描程序通过构造特殊请求来扫描Web系统中可能存在的安全漏洞。它是渗透的必要工具。本文尝试从扫描的检测方向入手,根据扫描的功能和所生成的请求内容对其进行分类,并结合苏宁Web应用程序防火墙(WAF)日志数据,分别显示规则模型,统计特征模型和基于n-gram的MLP模型在Web扫描仪识别中的简单实际效果。
敏感内容扫描
当黑客或渗透测试人员面对未知站点时,该站点对他们来说是一个黑匣子。此时最好还是使用敏感的内容扫描器来了解它。可以扫描有价值的信息,并找到第一个打开安全防护缺口的密钥。
敏感内容扫描器通常具有一系列有关敏感路径和敏感文件的字典。扫描程序使用这些敏感内容词典对站点进行盲扫,以确定是否存在这些敏感内容。此外,通过响应数据分组来分析站点目录结构和其他信息。做出判断并为下一个目标单点突破做准备。
这里提到字典的概念。字典很重要。可以说字典的质量,广度和深度决定了该扫描器的上限。与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/id_rsa, /.ssh/known_hosts, id_rsa.pub, authorized_keys, ...
日志文件信息:如/logs/error.log, /logs/auth.log, /var/log/mysql/mysql.log, ...
其他敏感文件:如php, system.inc, mysql.inc, shell.php, ...
Web漏洞扫描
漏洞扫描器通常与爬虫结合使用。首先,使用搜寻器获取页面上可能具有注入点的界面,然后对该界面使用SQl注入,XSS注入和命令注入。对于某些缺乏安全保护意识的站点,通常可以获得最直接的效果。对于这种类型的扫描请求,WAF可以实现单点常规过滤。理论上,它将拦截并返回大量403状态代码。 但是,扫描器通常会扫描新域,不会启用WAF攻击防护。因此,实际上有许多未被拦截的非403状态代码。与上述敏感内容扫描类似,此类请求通常具有明显的文本特征。以下是SQL注入,文件包含和XSS跨站点扫描的示例。
SQL注入漏洞扫描
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’ and sleep(5)。
然后使用联合查询逐步获取具有注入漏洞的点的信息,例如:
查询数据库名:id=0' union select NULL,database(),NULL --+ ;
爆库名:id=0' union select null,groupconcat(schemaname),null from information_schema.schemata --+;
爆表名:id=0' union select null,groupconcat(tablename),null from informationtables where tableschema='security' --+;
爆字段名:id=0' union select null,groupconcat(columnname),null from informationcolumns where tableschema='security' and table_name='users' --+;
或通过报告错误来返回查询结果,例如:
回显数据库名:and extractvalue(1,concat(0x7e,(select database())));
回显表名:<br>and extractvalue(1,concat(0x7e,(select groupconcat(tablename) from informationtables where tableschema='security' ))) ;
回显列名:<br>and extractvalue(1,concat(0x7e,(select groupconcat(columnname) from informationcolumns where tableschema='security' and table_name='users')))。
文件包含漏洞扫描
当服务器通过PHP的功能(函数)包含任何文件时,由于未严格过滤要包含的文件的源,因此它可能包含恶意文件,非法用户可以构造此恶意文件以达到恶意目的,例如读取主机上的其他文件,远程文件包括可执行的PHP 木马,用于创建文件的PHP文件,包括的本地文件等。
Include:包含并运行指定文件,当包含外部文件发生错误时,系统给出警告,但整个php文件继续执行;
Require:跟include唯一不同的是,当产生错误时候,include下面继续运行而require停止运行了;
Include_once:这个函数跟include函数作用几乎相同,只是他在导入函数之前先检测下该文件是否被导入,如果已经执行一遍那么就不重复执行了;
Requireonce:这个函数跟require的区别 跟上面所讲的include和includeonce一样。
XSS跨站点漏洞
跨站点脚本攻击是指恶意攻击者将恶意脚本代码插入网页。用户浏览网页时,将执行网页中嵌入的脚本代码,从而达到了恶意攻击用户的目的。与普通请求相比,XSS请求还具有明显的文本功能,例如<script>alert(0)</script>,<img src=0 onerror=alert(0)>等。
规则模型
扫描器检测和Web攻击检测之间的区别在于扫描是一种连续行为。我们会汇总并分析扫描器在一段时间内的请求,而Web攻击检测会将每个请求视为独立事件。确定这是否是Web攻击。当请求不存在的资源时,扫描程序通常会返回状态代码404,但实际生产环境中并非如此。尤其是作为一家电子商务公司,它希望被积极的搜索引擎所抓取。这种返回404的方法将对SEO搜索引擎优化产生不利影响。因此,大多数域名将对此类请求进行3XX重定向。通常,大量返回404的请求通常是盲扫描请求,但是仍然有大量的盲扫描请求返回404以外的状态代码。依靠Web请求日志,只有请求的文本特征在特定时间分析url以识别扫描仪。
正则提取
敏感内容扫描器通常会请求诸如敏感路径和敏感文件之类的信息,因此它们首先收集此信息,然后使用正则来匹配内容。这里根据敏感信息的类型进行分类:
正则优化
正则顺序优化:根据Sensitive类的定义,当URL与关键内容匹配时,将返回匹配的内容,并跳出正则过滤周期。因此,为了进一步减少性能消耗,将生产环境中命中频率最高的规则放在顶部,将命中率较低的规则放在后面。
单条正则调优:由于常规匹配搜索的优先级是从左到右,因此在生产环境中将最高命中频率放在左侧,将最低命中频率放在最右侧。
准确性和召回性评估
评估方法:将模型部署在准实时分布式计算平台上,每分钟汇总一次,并将检测到的扫描仪数据打印为日志。根据Yarn日志输出的扫描仪IP和检测到的请求时间,在云迹中对样本进行验证。
统计特征ML模型
除了扫描程序请求和常规请求之间的文本特征外,状态码,URL的长度,所携带的ua的混淆和访问域名的混淆也存在某些差异。因此,提取命中关键词的数量和上述特征,并与规则所检测到的正常WAF日志和扫描仪日志结合,以形成黑白样本,并进一步训练ML模型。
特征提取
关键字提取:从Internet上的通用集中式扫描器收集敏感内容的字典,并用规则模型标识的扫描器日志进行补充。进一步随机抽取整个网络流量作为白色样本以匹配扫描仪关键字数据库,并删除白色样本中的大量关键字以形成关键字数据库。
特征工程
除了关键词系数特征外,还提取了请求数量,敏感词数量,敏感词的威胁系数,UA混淆程度,域名更改程度和状态代码的比例,以用于示范。
模型评估
通过规则模型收集的黑色样本和Web日志的白色样本分别进行验证和标记,然后训练随机森林模型和MLP模型分别评估召回率,准确率和F1分数。该模型已经过训练并执行良好,但是在测试集中可以看到该模型过度拟合和验证,并且结构风险过高。在生产环境中无法满足实际业务场景的要求。对于不同的模型,通过减小树深度,前后切入和调整惩罚系数来降低模型结构的风险,从而导致准确性和召回率降低。左右权衡后,效果达不到令人满意的效果。
随机森林模型评估:
MLP模型评估:
基于n-gram特征提取的MLP模型
模型训练示范
对于传统的机器学习,特征提取更加麻烦,并且需要对业务场景有深入的了解。在扫描器识别的任务中,我们可以将单个用户发起的请求序列作为短文本拼接在一起,在NLP中采用情感分析的思想,并训练词向量和分类器模型来识别扫描器请求序列。在训练过程中,需要注意对参数n-gram和max_features的调整,它们分别代表了单词选取方法和特征维。我们首先将部分数据用于不同的n-gram参数和max_features参数进行模型训练,然后评估测试集数据。在保证模型测试集得分的基础上,max_features越小,资源消耗越低。
模型评估示范
我们从苏宁应用防火墙(SNWAF)日志中提取并拼接了275,019条正常访问序列作为正样本,并通过SNWAF输出的扫描器IP列表作为黑色样本提取并拼接了361504扫描器IP访问序列作为黑色样本,以训练模型,取得了比规则模型和统计特征ML模型更好的结果。此方法具有更好的增长,并且可以随着高质量训练数据的增长进行优化和迭代。同时,缺点是模型结构比前两者稍微复杂一些,资源消耗也较大。
我们针对不同的max_features进行了k-flod测试,并在max_features = 1500时获得了良好的模型性能,交叉验证集的曲线下平均面积(AUC)约为0.99。
模型工程部署
在实际的工程应用中,我们需要将模型部署到分布式大数据计算平台。在实际的代码工程部署过程中,可能存在由于训练模型环境与分布式环境模块版本不一致或模块不足而导致模型加载失败的问题。针对上述问题,我们采取了一些措施:
提取countvectorizer模型的字典向量并手动构造词向量转换函数。
重写MLP模型预测代码以使模型预测逻辑功能化。
通过测试,发现上述方法与加载模型的输出是一致的,预测效率较高。
我们创建pyspark-streaming任务以实时使用WAF访问日志。我们对每一批用户的访问日志进行矢量化处理,并将其输入到预测模型中,以实现对扫描仪的实时监控,报告检测到的扫描器IP配置强制执行访问限制。
总结一下
本文整理并总结了各种Web扫描器的特征,并展示了规则模型和统计特征ML模型对扫描器的识别效果。
其中,规则模型具有自然优势,它具有很高的可信度和强大的可解释性。它还满足了奥卡姆剃刀简单有效的原则。但是,它仅对已知的扫描类型有效。合理的阈值设计非常重要。准确分析实际业务量;基于统计特征的机器学习识别模型的特征提取相对简单,仅提取少量数据进行训练,表达能力有限,无法充分学习正常请求行为与扫描行为之间的差异。有兴趣的学生可以在此基础上进行更精细的特征提取,以提高识别率;基于n-gram语法特征提取的机器学习模型具有更好的增长,并且可以随着高质量训练样本数据的增加而增加。优化迭代同时存在的缺点是,它比前两种方法消耗更多的资源。
在实际的生产应用中,我们选择AI模型的平台。需要根据企业的数据规模,资源状况和需求标准选择适合我们情况的模型和方法。
上一篇:针对WastedLocker勒索软件样本的详细技术分析
下一篇:最后一页
人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )8872( 亮了
自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )6288( 亮了
Grafana CVE-2020-13379漏洞分析:重定向和URL参数注入漏洞的综合利用可以在任何Grafana产品实例中实现未经授权的服务器端请求伪造攻击SSRF
牛创网络: "在Grafana产品实例中,综合利用重定向和URL参数注入漏洞可以实现未经授权的服务器端请求伪造攻击(SSRF)。该漏洞影响Grafana 3 0 1至7 0 1版本。
2020-08-12 14:26:44 )4301( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )3858( 亮了
fortify sca自定义代码安全扫描工具扫描规则(源代码编写、规则定义和扫描结果展示)
牛创网络: "一般安全问题(例如代码注入漏洞),当前fortify sca规则具有很多误报,可通过规则优化来减少误报。自带的扫描规则不能检测到这些问题。 需要自定义扫描规则,合规性角度展示安全风险。
2020-02-12 10:49:07 )3505( 亮了
整理几款2020年流行的漏洞扫描工具
牛创网络: "漏洞扫描器就是确保可以及时准确地检测信息平台基础架构的安全性,确保业务的平稳发展,业务的高效快速发展以及公司,企业和国家 地区的所有信息资产的维护安全。
2020-08-05 14:36:26 )2536( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )2261( 亮了
渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
牛创网络: " 本文介绍的两种方法,虽然断点调试比JS脚本代码替换更容易,但是JS脚本代码替换方法可以实现更强大的功能,测试人员可以根据实际需要选择适当的测试方法
2020-01-07 09:34:42 )1995( 亮了
从工业界到学界盘点SAS与R优缺点比较
牛创网络: "虽然它在业界仍然由SAS主导,但R在学术界广泛使用,因为它的免费开源属性允许用户编写和共享他们自己的应用程序 然而,由于缺乏SAS经验,许多获得数据分析学位的学生很难找到工作。
2019-07-13 22:25:29 )1842( 亮了
41款APP侵犯用户隐私权:QQ,小米,搜狐,新浪,人人均被通报
牛创网络: "随着互联网的不断发展,我们进入了一个时代,每个人都离不开手机。 但是,APP越来越侵犯了用户隐私权。12月19日,工业和信息化部发布了《关于侵犯用户权益的APP(第一批)》的通知。
2019-12-20 11:28:14 )1775( 亮了