bd434f075a13c2d22fdb01e0f1a7bfbb_b

刚跟COS读者群的一个自称是外国人的的读者聊完天。问我是不是黑客,然后想学黑客,我居然用我那蹩脚的英语基本跟他聊了半天,各种鼓励。不管是否是真的外国人,瞬间觉得我人生格调变高了,也惊叹cos的粉丝都有外国人了。
其实看到有个外国人发消息给我,第一时间觉得是装的,来社工的,后面聊了下感觉不像是装的,不过也没聊任何感觉像是社工相关的话题,他是不是装的就无所谓,没聊到相关隐私的问题,哈哈(我发完微博发现大家意识都很好,第一想到的就是社工和钓鱼,也可能我听众和关注的都是搞安全的)。 

每次开题前总要与大家闲扯下,哈哈。来北京有一两个礼拜了,现在在公司做的是公司Web漏洞检测引擎的开发工作,安全与开发相结合,自己觉得挺喜欢的。扯多了,做Web漏洞检测引擎的工作,所以自己对于这边多多少少做了一些功课,所以今天来与大家聊聊这方便的话题,如果有不对的观点欢迎大家指出(下面讲到扫描器都是讲Web漏洞扫描器)。

 

先来给个专业的概念把,嗯,不说我解释的,也是网上找的,哈哈。

 

漏洞扫描是指基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用的漏洞的一种安全检测(渗透攻击)行为。

不知道大家都用过什么扫描器?有同学会问,啊D漏洞注入工具、HDSI算吗?穿山甲、JSky是吗?我觉得都是。可能有的同学又会说,啊D、HDSI、穿山甲更偏向是攻击测试方面,这些我们下文再细细讨论。

 

先来说说一个话题,怎么分类?Web漏洞扫描器,在我看来可以分为两种情况,一种是比较通用型的,比如Nessus,可以检测大部分类型的漏洞,另一种针对型,比如SQLmap,针对SQL注入的漏洞检测。然后,再或者,纯验证型和利用性,这就如POC与EXP的区别,EXP在POC的基础上进一步利用漏洞进行利用,SQLMAP其实就属于一种利用型,最近有在看w3af的代码,它就属于两种都有,不同的插件。

 

扫描器又是如何扫描到漏洞的?扫描器一般有几个关键部分,一个是爬虫,一个是核心检测。大部分的扫描器对于不同类型的扫描,如SQL注入、XSS等等,都是采用不同插件的形式。整个扫描流程应该大概是这样一个过程:

 

1、收集目标站点的URL,也可能是单点的URL

2、把URL给各个检测组件进行检测

3、结果收集

 

中间可能穿插着一些流程控制等等。

 

一个大概的流程,关于漏洞扫描的能力,大家可能已经注意到点了,一个是对URL的收集,另外一个就是不同漏洞类型的检测组件的能力。

 

后者我就不说了,涉及到东西有点多,比如XSS的检测,说白了就是规则,你的规则够全够准,就检测的更准,但怎样算够好?这个没法说清楚,靠实践。

 

然后网址的收集,目前主流的扫描器可能有两种方式,一种就是利用爬虫分析页面收集URL,另外一种就是代理的模式,各有优势。爬虫可能大家比较好理解,代理的模式,不知道大家用过Fiddler没,有个Watch的插件,是检测XSS的,大概原理就是比如我开启Fiddler后,对浏览器设置了代理,那么我用浏览器做的任何访问都通过Fiddler的代理,就被捕获各种URL的访问,然后Wathc就对这些URL进行检测。

 

怎样去评价一个扫描器的好坏?最直接的方式,是否收集的URL够全,检测的漏洞的误报率和漏报率,用专业术语就是召回率和精度,具体什么意思,大家百度下就懂了,我也解释不清楚,其实咱们屌丝用误报率和漏报率就够了,简单明了。

 

其实如何快速找到漏洞?单单靠扫描器可能容易找到一些通用的漏洞,往往其实是要根据一些个人经验和猥琐的技巧,毕竟市面上的那些扫描器其实要说你用,我也在用,为什么有的人找的洞多?有很多道道。

 

其实之前一直有想着自己写一款自用扫描器的想法,不过现在在负责公司的漏洞扫描器,就不适合自己搞一个了。我觉得我自己应该就是一个安全与开发结合的路线,这样走下去挺好的。

 

(题图来自网络)