针对单个网站的信息收集,可能没什么难度,有大量一键信息收集的工具,比如 oneforall,但是如果你面对的目标是一千一万个,该如何信息收集?数据该如何使用?
很多同学现在挖洞靠一些网络空间搜索引擎,比如 zoomeye、fofa 等,这些平台已经收集了网络空间上的大量信息,包括 IP 、域名、端口、网站 header、body 甚至还有指纹信息,在节省我们时间的同时,也让我们自己有所依赖,从而放弃自己动手收集信息,因为自己动手,即费时间,也费精力,效果还不一定好,技术能力不一定能满足自己的欲望。
我们是否有必要从零收集大量目标数据,并进行数据存储,以备随时拿来用呢?我觉得是有必要的,毕竟网络空间搜索引擎面向的是整个网络空间,而我们关注的只是必要的目标。还有就是网络空间搜索引擎的数据并非百分之百覆盖,还是有很多你想要,但是他没有的数据。
信息收集的几个步骤并没有太多新鲜的东西,无非是子域名收集(暴力枚举、爬虫、网空引擎)、端口扫描(nmap、masscan、自研脚本)、网站指纹识别几个步骤。说起来挺简单,但是实际操作起来并没那么容易,当你的目标是成千上万个的时候,很多工具无法满足你的需求,或者需要花费的时间很多,该怎么办?需要你有一定的编码能力,借助成熟工具获取的结果,对不同数据结果进行数据归一化处理,适配不同工具,或者自己实现各种功能,设计开发一款自动化信息收集的工具。
信息收集完成之后,数据量是非常惊人的,如果将所有数据保存成文本格式,当你想要搜索 body 中存在某个关键词的时候,你会发现非常慢,甚至还很消耗系统性能,这个时候将数据处理,存入数据库就很关键了,在我需要的时候,直接搜索就能获得想要的结果,比如:
光看上图可能看不出啥,其实对于信息收集的数据,比较关键的就是子域名、IP、端口、服务、指纹、是否存在 waf、网站头、网页内容等信息,如果将网页内容都入库,会非常大,没必要,可以将网页内容中的关键部分入库就可以了,比如 jquery 等,可以根据自己的经验,提取关键内容,方便后续提取相关目标进行批量漏洞测试。
最后分享一下我目前针对信息收集的数据设计的表结构:
至于后续这些数据怎么用,可以关注信安之路的公众号和知识星球,我会将这些数据的使用过程和作用都进行记录和分享。如果你也想拥有一个属于自己的信息数据库,小型网空数据库,可以参加信安之路最后一期的公益 src 实践训练营,通过自己动手,收集想要的数据,并将所有数据进行格式化,然后入库,备用。