“鲁迅”先生曾经说过:“渗透测试的本质就是信息收集”。
渗透测试作为网络安全评估的一部分,在评估网络安全风险中起着至关重要的作用。
所谓“知己知彼,百战百胜”,我们只有对渗透目标有了更加深刻的了解和认识,才能得心应手,过程才能更顺利。
那我们今天就来聊聊信息收集的那些事。
一、信息收集
渗透测试中的信息收集是如何分类的呢?
根据信息收集的手段性质,我们把信息收集分成两类:主动收集,被动收集。
有人会问,啥叫主动收集?啥叫被动收集啊?
主动收集
主动收集就是我们直接访问目标资产,通过工具等手段,直接对目标资产进行探测。
这种方法的优点是可以获取到更多、更全的目标信息,但缺点也很明显:主动收集因为要直接去探测目标资产,有概率会被目标主机发现,记录下你的行为,这可能会对后面的工作造成影响。
被动收集
被动收集是通过多种第三方服务对目标资产进行探测、收集信息。
例如,我们可以通过Google Hacking、fofa、zoomeye等搜索引擎对目标进行信息探测。
当然这种方法也是有好有坏。
好处是不会被目标主机发现,缺点是获取到的信息可能不会那么全面。
所以在信息收集过程中,不能局限于某种方法,应该结合各家所长,各种工具、搜索引擎搭配使用,来达到既隐藏自己、又能尽可能的收集到目标信息的目的。
二、信息收集内容
那么我们在渗透测试过程中到底要收集什么内容呢?
当然是对我们接下来的渗透测试有所帮助的信息啦。
比如:收集目标的所有主机资产信息、网站资产信息、目标主机的端口信息,目标网站的指纹信息等,这些都是我们所需要的。
三、 信息收集的思路
明确了需要收集的信息类型,我们应当怎样去收集这些信息呢?
子域名收集
在说子域名收集过程前,我们要先说一下目标的主域名。
以百度为例,假如我们需要知道百度的主域名,那么我们应该怎么操作呢?
我们打开天眼查,输入百度,就可以看到网站备案域名,这些就是百度的主域名:
找到这些主域名后,我们就可以去收集这些主域名下的子域名了。
这里我们可以通过使用子域名收集工具,或者子域名在线收集等方法,去收集这些域名下的子域名。
这里简单介绍两个子域名收集方式:
1、子域名爆破工具:
layer子域名挖掘机、御剑、subDomainsBrute等。
2、子域名在线查询:
https://phpinfo.me/domain、站长工具等网站。
资产指纹探测
收集到子域名后,我们需要对发现的这些子域名进行指纹探测,查看子域名所使用的框架、中间件、服务器等指纹信息。
要想发现这些指纹信息,我们可以借助一些指纹发现工具,比如:Wapplyzer、御剑web指纹识别程序等。还有一些在线指纹识别网站,如:云悉、潮汐指纹等网站。
探测到指纹信息后,我们可以在这些指纹信息中找到目标资产使用的CMS、OA系统、服务器及该网站的title等信息。
找到这些信息后,我们就可以查看使用的CMS、OA系统是否存在历史漏洞,框架以及中间件这些是否存在CVE漏洞等。
四、其他信息的收集
当然,我们要收集的信息不止上面提及的那些,也包含以下内容:
端口信息
如果我们知道目标ip开放的端口,那么就可以根据特定的端口进行测试。
如常见的FTP的21号端口弱口令,SSH的22号端口弱口令,redis的6379端口未授权访问……通过服务器的开放端口去进行测试,更容易发现漏洞。
为了发现端口,我们可以使用端口扫描工具:namp、masscan等。通过这些端口扫描工具,可以查看目标服务器的开放端口,我们通过这些端口再去测试。
网站信息
当我们拿到了目标网站,这个时候,我们就要考虑这个网站是不是存在敏感信息,比如敏感文件、敏感目录甚至备份文件呢?
如果我们拿到了这些包含敏感信息的文件,可能会对接下来的渗透工作产生巨大的帮助。
这里推荐使用dirsearch目录扫描工具,该工具旨在暴力扫描网站页面结构,发现可能存在于网站的敏感文件及其目录。
信息收集的方法还有很多,如在Github上收集目标网站的敏感信息、通过社工获取信息等等,我们就不一一说明了。
在渗透测试过程中,信息收集是非常重要的一步。甚至可以说信息收集量的多少,直接影响后面渗透的结果。
所以当我们拿到渗透目标时,首先要做的,就是想办法尽可能多的收集到目标信息,这些信息也许对接下来的渗透工作起着至关重要的作用,并且会对渗透效率有大幅度的提升。
张余福
上汽集团网络安全应急响应中心安全运营工程师
多年网络安全经验(应用安全,渗透测试,信息安全,安全平台运营)