您现在的位置是:首页 > 密码破解

根据访问系统日志的出现异常请求检测

作者:果E安全网时间:2020-10-23 19:44:17分类:密码破解

简介根据访问系统日志的出现异常请求检测1序言看过兜哥在freebuf上的栏目文章内容《学点算法搞安全之HMM(上篇)》,疏忽便是将URL参数开展范化,随后应用hmm优化算法来开展训炼和检测,这儿检测的关键是xss,可是带著自己的疑惑用心

根据访问系统日志的出现异常请求检测1 序言

看过兜哥在freebuf上的栏目文章内容《学点算法搞安全之HMM(上篇)》,疏忽便是将URL参数开展范化,随后应用hmm优化算法来开展训炼和检测,这儿检测的关键是xss,可是带著自己的疑惑用心看过正下方的评价,里边提及一个我十分认可的难题

1.png

这儿原来是对同样url的参数开展数据信息获取和训炼,那麼我们知道一个网站,很有可能会出现上天随人愿的网页页面,相匹配上天随人愿的url,那麼依照那样的构思很有可能就确实必须去创建上天随人愿的实体模型,这显而易见不是实际的。

2.png

那麼大家可否将实体模型范化,去创建一个实体模型检测一个业务流程网址的全部的url及其全部url中的出现异常参数?带著那样的疑惑再次找文章内容,翻来到圣人的《Web日志安全分析浅谈》,在其中检测的基本原理就较为顶势了,根据撰写不一样的进攻标准来表明不一样种类的进攻种类,可是那样会出現一个难题,那便是在真正自然环境中,你并不了解进攻payload究竟长什么样,因而也就很有可能会导致0day的立即海关放行和变异payload的绕开。在文尾jeary也明确提出了自身的思索,这也是文中的立足点。自然在原文中jeary并沒有得出具体做法,因而小编凭借自身对日志分析系统的了解刚开始试着完成那样一套根据访问系统日志的出现异常访问检测。

3.png

这儿我第一个想起的观念便是聚类优化算法,一切正常的请求一直类似的,出现异常请求却各有不同,那麼如果我们可以根据无监管聚类优化算法来将一切正常请求给聚类到一块,那麼出现异常请求便会自身突显出去,打上出现异常的标识。理论上可行,下边刚开始实践活动。

2 数据清洗

这儿的数据来源非常简单,我在自身的vps上把blog的访问系统日志给拖下来了,大约是800M,信息量在480万条上下,即然想干的是通用性的业务模型检测,那麼这儿拿博客日志或是电子商务系统日志数据信息,从理论上而言也没有很大的区别,这是由于尽管业务模型不一样,可是每一个业务模型都是有一套自身的访问编码序列,换句话说根据博客日志的聚类可能是那样的遍布,可是根据电子商务系统日志的聚类可能是那般的遍布,实质上而言她们并沒有差别,聚类仅仅为了更好地突显出现异常请求,因此 对数据来源于上,构思上并沒有感觉有哪些难题。

先看来下blog的系统日志数据信息

4.png

这儿用的海外某个的cdn,ip仿佛全是美国ip,可是这儿是对于url参数开展检测,也没惦记着做追溯,因此 这儿ip暂未考虑到,关键是url参数,这儿一开始心较为大,在检测的实体模型中添加了访问请求方法(GET/POST)和访问状态码(200/302/404等),之后发觉实际上这两项实际上没什么必需,这是由于如果是出现异常请求,例如sql注入、xss等进攻,访问请求方法和状态码并始终不变其出现异常的实质,换句话说不论是GET還是POST,還是说200情况或是404情况,这一请求是具体存有的出现异常访问,因此 大家只必须将关心的关键放到url请求就可以,在其中包括url的path和url的param。

5.png

这儿主要是对pandas的第六列数据信息开展url的编解码和分析,获得在其中的path和params

6.png

这儿主要是对一些独特请求,例如“/”或是一些静态网页做解决,针对静态网页一般来说全是没害的,所以说这儿将静态网页归到一类,觉得上也没什么问题。。最终进到到数据信息广泛的涵数

7.png

这儿几个广泛标准1)对中文字符统一将其更换为cn;2)统一将数据更换为5;3)统一将特殊符号更换为_。针对中文字符,导致的差异很有可能会较为大,例如不一样的中文字符在搭建下边的词袋时很有可能便会导致非常大的误差,因此 这儿广泛中文字符,第二个便是广泛数据,这儿在平时的业务模型上实际上是较为普遍的,例如index.php?id=1、index.php?id=123等那样的访问请求,她们实际上全是一类的,因此 这儿最终广泛实际上就变成index.php?id=5,在聚类时便会全自动聚为一类,特殊符号更换主要是便捷统一词性标注,可是实际上是不容易危害結果的,尽管一部分标识符被更换,可是总体标识符的次序依然是聚类的合理根据。

8.png

最后清理出来实际效果以下,下边刚开始应用词袋模型将其转换为数组实体模型。

3 词袋模型

词袋模型兜哥在hmm里以前应用nltk来搭建系统日志字典,这一实体模型相对性好了解一点,就是如今例如出現“alice”、"bob",那麼依据字典的基本原理,alice很有可能就是1,bob便是2,那麼最后每一组词都能转换为其在字典中的部位。可是我这里应用的tfidf,这是一个依据词语在原文中出現的频次和全部语料库中出現的文本文档頻率来测算一个词语在全部语料库的关键水平。

这儿小编觉得用哪种优化算法实际上并不是很重要,关键取决于怎么将广泛的系统日志数据信息转换为可以唯一标识的数据信息空间向量。那麼历经这一步实际上全部的url途径和参数就早已可以转换为数组实体模型。

9.png

4 无监管聚类

这儿无监管聚类用的比较多的一个是kmeans,一个是dbscan。kmeans不太适用当今情景的缘故是kmeans你需要特定簇数,也便是你必须提早了解当众业务模型的url遍布数,例如新闻报道网页页面、评价网页页面、商品网页页面,那麼很有可能会相匹配三个簇数,可是在具体自然环境中,没有人可以说得清究竟几个业务流程作用,所以说这儿立即放弃了kmeans,选用dbscan。

dbscan是一个较为有象征性的根据相对密度的聚类优化算法。与区划和层级聚类方式不一样,它将簇界定为相对密度相接的点的较大 结合,可以把具备充足密度高的的区域规划为簇,并可在噪音的空间数据库中发觉随意样子的聚类。dbscan的应用确实是太简易,只必须填入eps和minpts参数,即能开展聚类,随后輸出聚类标识,一开始见到webber的本文《基于大数据和机器学习的web异常参数检测系统》,他采用了互联网大数据的观念能够保证即时检测,但是在其中检测观念并沒有涉及到是多少,对于我还在文章开头明确提出的难题都没有得出实际的表述,,因此 再次依照我的构思来做。。(多扯一句,这名巨头仿佛就是我那时候阿里巴巴见习二面招聘者,人很nice!尽管最终挂在三面。。)

这儿返回主题风格,为什么不可以制成即时检测?它是因为聚类优化算法的关键取决于对当今数据信息做剖析,并沒有对新数据的检测作用,因此 这儿只有说成根据线下系统日志,应用领域换句话说只有每日定时执行跑一遍,检测某一时间范围的请求。再次来科学研究dbscan的参数设定,文中的前提条件是想干一个对于随意业务模型的出现异常访问检测,那麼参数设定假如可以制成依据业务模型自动化技术调节,这再好不过了。。接下去便是看毕业论文找方式。。这儿寻找一篇博士研究生的毕业论文,并依据其优化算法观念干了完成,运用在这儿。这儿略微讲讲那2个参数eps和minpts的含意。

eps表明以目标p为管理中心,以eps为半经的地区内的全部目标,通俗化点讲这一参数便是包括数据D中与目标p间距不超eps的全部目标。而minpts则表明行业相对密度阀值,表明目标p的eps行业数量,那麼dbscan优化算法的观念大约便是根据设置行业半经和行业数量来完成一个相对密度聚类,这儿拿全国地图来将,我们知道江浙沪地区较为小,大城市邻近都较为近,那麼假如应用dbscan优化算法来完成全国城市的聚类,非常大几率江浙沪地区很有可能便会产生一类标识,而像海南省,由于是岛屿,与邻近大城市的间距较远,因此 会开创一类标识。

10.png

这儿导入了相对密度阀值Density参数来界定相对密度阀值Density为以eps为半经的园里存有minpts个数据信息点,这儿原毕业论文中提及相对密度阀值很大,很有可能会造成 同簇结合內部被区划为好几个结合;相对密度阀值很小,很有可能造成 不一样簇结合中间被合拼,毕业论文最终的结果是聚类結果簇数恰当的前提条件下,相对密度阀值越小则聚类实际效果越好,因而这儿根据核对不一样的相对密度阀值,获得最少相对密度阀值时的eps参数和minpts参数。这正中间还导入了K-均值近期邻优化算法,,这一就很少讲过。。

11.png

实际编码如上,主要是导入了一个kann,很有可能有点儿繁杂了。。

12.png

这儿能够见到当K为331时,eps为0.47,minpts为4.92,这时Density参数抵达零界点。因此 根据那样的测算,大家就可以自动化技术取得最好的eps参数和minpts参数。最终大家就能得到 归类的总标识数和每一条系统日志相匹配的归类标识。

13.png

这儿能够见到一共分为了10个标识,在其中feed相匹配的是标识1,像archives应当相匹配的是文章内容查看,标识为2,因此 在所述方式在开展聚类时确实有一定的实际效果,由于我重点关注的是出现异常请求,其相匹配的标识应该是-1,表明这是一个噪音数据信息,因此 下边关键讨论一下-1标识相匹配的系统日志纪录

14.png

看见明晰就好像文件目录工程爆破网页页面,自然这儿的ip有点儿难题,如果是具体情景,这种ip能够立即添加ban的目录里,那麼对于文件目录扫描仪这类故意个人行为,应用这类聚类观念是能够检测出去的。

15.png

这儿是较为显著的nikto扫描枪网页页面,也可以检测出去。因为扫描枪大多数是对于单独网页页面开展试着,因此 这类在统计分析遍布上具备纯天然的凸起,检测出去理所应当。。

16.png

这一应该是顺侧门个人行为和已经知道的系统漏洞进攻

17.png

见到这儿好像这东西仿佛很牛逼,立即取代waf得了,可是实际狠狠地打过脸,在实践活动結果渗入了很多的不相干网页页面,这种不相干网页页面一般都是有一个较为统一的特点,那便是参数随机化,当碰到像token或是别的一些随机生成的参数时,在聚类时因为参数较为独特,因此 一般都是会独成一类,也就是变为噪音数据信息。

18.png

上边四条数据信息将上文結果能够完全打倒,在其中像hid参数還是img参数这类,全是历经网络服务器随机化形成的,在做数据清洗的情况下难以将这种数据信息独立解决,上文也讲了想干的是一个通用性的业务模型检测,这儿实际上也可以处理,用授权管理就可以处理,可是不足通用性,之后就放弃了,实际上用授权管理的实际效果确实很好,假如说报了50条出现异常,应用授权管理将这种随机化参数给过虑掉,最后留下的很有可能就仅有5条数据信息了,而这种随机化参数通常确实是没害的,因此 它是文中实践活动第一个较为不成功的点。第二个便是上边/archives/tag/iis/feed,按道理而言这是一个iis的标识连接,怎么会这类访问请求会被标识为出现异常呢?返回dbscan的优化算法观念,一定地区内相对密度充足大就可以自成一派,那麼当一些一切正常的访问请求,很有可能确实较为罕见,她们的相对密度不足,也就不可以自成一派,此刻也就出現了乱报,这类情景实际上更普遍在后台管理一些网页页面,管理人员因为只有一个人实际操作,那麼访问的网页页面数较为比较有限,因此 应用聚类很有可能实际效果便会很差,它是第二个我认为较为难解决的点。(老实巴交讲,对于不一样业务模型开设不一样的授权管理觉得是最立即最好是的解决方法了。。)

5 特征提取数据可视化

最终用t sne来做了个降维可视化看一看数据分布

  19.png

  这里-1其实比较密集,这里推测这类标签可能就是上述随机化参数导致的数据偏移。其他类型的标签就汇聚的比较明显了。。

  6 后记

  回过头来想一想利用访问请求来做无监督聚类,的确是可以发现潜在的攻击漏洞和扫描器行为的,这点来说一定是有意义的,但是针对那种随机化参数和部分访问量比较少的请求的确可能误报上会比较多,如果能够在数据清洗时针对这类标签做特殊处理,这个基于业务模型的自动化聚类的检测思想可能会发挥更大的作用。

  上述如有不当之处,敬请指出~

  《转载先知社区 原文:基于访问日志的异常请求检测》

  

  上一篇隐藏在纯文本中:Jenkins插件漏洞下一篇常见未授权访问漏洞总结

郑重声明:

果E安全网所有活动均为互联网所得,如有侵权请联系本站删除处理,转载请注明本站地址。

我来说两句