渗透测试之信息收集方法论

2020-06-23 11:36:55 浏览数 (1)

渗透测试前夕首先要做的是对目标进行信息收集,了解目标的各种情况,扩展目标的攻击面,也就是目标对外开放的信息面,对于信息收集的方式,主要分两种,一种是被动式信息收集、一种是主动式信息收集,对于我们而言,为了让自己不至于被快速发现,最好的方式就是被动式信息收集。

被动式信息收集

什么是被动式?就是在我们不接触目标的情况下就能对目标有一定的认知,通过第三方平台来获取目标的信息,那么为什么第三方会有目标的信息呢?因为类似搜索引擎这样的平台,通过爬虫的方式去目标网站进行爬取内容,供大众搜索发现。

这类第三方扫描或者爬取数据是没有专门的目标,他们的目标是全网所有网站的数据,对于防御来说无法将其定性为指向型攻击,仅做扫描探测,但是对于我们来说,前期的信息收集已经足够,剩下的无法通过第三方获取的数据,就需要我们自己通过主动式的信息收集来进行。

既然要信息收集,那么对于渗透测试而言,我们可能更关注目标对外公布的资产信息,比如:域名信息、人员联系方式、第三方合作公司、公司法人等,主要目的是扩大攻击面。

常规搜索引擎

对我们而言最大的第三方信息源非搜索引擎莫属,搜索引擎的主要原理就是通过爬虫对全网网站进行爬取,但是会遵循一些法则,比如网站根目录下 robots.txt 中规定的爬取规则,所以在搜索引擎中搜索之后,可以查看网站 robots.txt 下的内容做些补充,主流的搜索引擎包括:谷歌、必应、百度,对于安全从业者来说最好的搜索引擎莫过于谷歌了,所支持的语法非常丰富还有大量同行在扩展,推荐一个可以查看所有谷歌语法后门的网站:

https://www.exploit-db.com/google-hacking-database

网络空间搜索引擎

什么是网络空间搜索引擎?像谷歌这样的常规搜索引擎主要通过爬虫来实现,而有些搜索引擎不光使用爬虫技术,还会使用比如:端口扫描、指纹识别、口令探测、版本探测等一系列查点的手段,这类搜索引擎可以大大节省我们信息收集的时间,目前也出现很多类似的平台,有付费也有免费的,比如:

1、shodan 算是最早出现的网络空间搜索引擎,信安之路曾经发布个一个关于 shodan 使用的手册,公众号后台回复:shodan 即可获取,其官方网站:

https://www.shodan.io

2、国内也有两款,zoomeye 是知道创宇旗下的产品,网站:

https://www.zoomeye.org/

fofa 是华顺信安旗下的网络搜索引擎,网站:

https://fofa.so/

3、除了已经搭建好的平台,给大家提供服务,赚取一些费用,我们自己也可以搭建这样的平台,只是数据的来源可能没有商业的全,但是对于一些特殊需求还是可以满足的,这里有一个免费分享扫描数据的平台,其中包括证书数据、全网服务器开放的常见端口信息等,地址:

https://scans.io

除了提供数据外,他们还建设了一个可以是实时查询数据的平台,地址:

https://censys.io/data

扫描是存在数据实时性和漏报误报的情况,既然有多个平台,那么就可以使用多个平台来进行相互的补充和配合,发挥各自平台的优势,来提升我们信息收集的效率。

代码分享平台

代码分享可能是每个程序员心中都有的情怀,各种开源项目曾出不穷,为的就是一颗追求技术和自由的心,但是对于企业而言,最担心的就是程序员将公司的核心代码给开源共享,但是人员的安全意识各不相同,难免会有员工想要分享自己的测试代码附带企业内部信息的情况,所以代码分享平台也是我们信息收集的重要来源,有的时候不只是可以看到一些内部信息,说不定会有直接进入内部的认证信息。

最常见的代码分享平台就是 github 了,这是企业发生代码泄漏最大的途径,很多时候重要信息字段需要使用 github 的代码搜索,需要用户登录之后才可以使用:

天眼查

天眼查是基于政府公开数据,可以实现查公司,查老板,查关系,通过天眼查可以获得企业老板背后投资的公司主体信息,从而关联出与目标相关的企业主体,扩展攻击面。网站:

https://www.tianyancha.com

主动式信息收集

被动式的信息收集毕竟是从大数据中提取与目标相关的数据,难免不全,所以还需要我们进行主动去跟目标进行交互,从而获取到我们想要的信息。

主要获取信息,我们需要知道需要哪些信息,最常用的信息就是域名信息、IP 信息、员工联系方式、系统指纹信息、应用指纹信息等。

域名信息

域名包括一级域名和多级域名,一级域名是我们信息收集的开始,一个企业可能有多个一级域名,一级域名的获取可以通过搜索引擎、友情链接、投资关系等途径获得。

多级域名的获取方式主要有两种,一种是通过爬虫技术,也就是搜索引擎或者自实现爬虫的方式爬取网站中的所有链接进行匹配获得,一种是通过 DNS 暴力枚举的方式,扩展未知域名,以前分享过关于二级域名的获取方式的文章,请参考:《原创 论二级域名收集的各种姿势

IP 信息

这里的 IP 主要是企业对外开放服务的 IP,获取途径可以是开放的 whois 信息,对于国内而言,IP 地址比较紧缺,能够以这种方式查询出 IP 段的公司屈指可数,所以不是一个非常有效的方式,还有就是大量服务都是运行在云上,使用的 IP 地址都是云服务商提供的,所以 whois 信息不是非常有用。

还有就是通过前面步骤获取的域名信息,将域名进行解析后的 IP 可能就是企业使用的公网 IP,有些公司申请的公网 IP 可能是连着的,可以对 IP 段进行扩展之后,通过扫描指纹来判断该 IP 的归属。

联系方式

获得员工的联系方式主要目的是通过诱骗社工的方式来利用员工安全意识薄弱的缺点进行攻击测试,一旦员工上钩,那么企业内部沦陷的可能就极大的提升了。

指纹信息

系统指纹信息主要是系统的版本、开放了哪些端口、启动了哪些服务,使用的主要工具就是端口扫描的,最知名也是最强大的就属 Nmap 了,之前信安之路出过一个 Nmap 的使用指南,请看《原创 nmap使用指南(终极版)》

应用指纹,主要针对 web 应用,判断应用是使用开源的 web 系统还是自研,毕竟开源的系统,多多少少会存在已知 的安全问题,能够快速判断应用是否存在安全问题,而不用完整的进行安全测试。

关于 web 指纹识别,国外有一款 whatweb,可以试试:

https://github.com/urbanadventurer/WhatWeb

对于指纹识别核心是指纹规则库,这个可能比较适合国外,由于国内开源或者商业的系统太多,很难多到很全面,也有些安全公司在解决这个问题,比如四叶草的 bugscan:

http://www.bugscan.net

通过社区的力量来扩展指纹信息以及漏洞利用插件,扫描加利用一体化。

总结

对于渗透测试来说,收集的信息越多我们的成功可能性越大,跟目标系统交互的越少,被发现的几率越小,毕竟引起安全团队的重视,对于我们渗透测试不是一个好消息,我们要做的就是尽可能少的去目标系统上留下足迹,而可能多的利用公共基础数据来达到我们的目标。

0 人点赞