信息收集是进行渗透测试的第一步,也是非常重要的一步。正所谓 “知己知彼,方能百战不殆”,因此在这个阶段,我们要尽可能地收集目标组织的信息。
关于信息收集的重要性我在这学期的护网行动中深有体会,一开始找不到目标资产,一度以为没有资产信息,后来转变了思路才发现原来资产有这么多。因此通过篇文章来系统的总结下信息收集的大致内容和常用方法,话不多说,开干。 (ง •_•)ง
首先,在得到一个目标的域名后,我们要做的第一件事就是去获取域名的注册信息,即该域名的DNS服务器信息和注册人的个人信息等。
域名信息收集的常用方法有以下几种:
Whois是一个标准的互联网协议,可用于查询域名是否被注册,以及注册域名的详细信息(如域名所有人、域名注册商等)。通过Whois查询得到注册人的姓名和邮箱信息对测试个人站点非常有用,因为我们可以通过搜索引擎和社交网络挖掘出域名所有人的很多信息。对中小站点而言,域名所有人很可能就是管理员。
使用方法:
1、通过在线网站:
站长之家:https://whois.chinaz.com/
阿里云域名信息查询:https://whois.aliyun.com
2、通过kali自带的whois查询工具:
也可以在windows下安装使用 下载链接,安装方法可以参考这篇文章:链接,安装完成后使用方法和kali的一样。
网站备案是根据国家法律法规规定,需要网站的所有者向国家有关部门申请的备案,这是国家信息产业部对网站的一种管理,为了防止在网上从事非法的网站经营活动的发生。主要针对国内网站,如果网站搭建在其他国家,则不需要进行备案。
常用的查询网站有:
ICP备案查询:http://icp.chinaz.com/
天眼查:https://beian.tianyancha.com/
面对某些安全做得很好的目标,直接通过技术层面很难完成渗透测试。在这种情况下,可以利用搜索引擎对目标暴露在互联网上的关联信息进行搜集。例如:数据库文件、SQL注入、服务配置信息,甚至是通过Git找到站点泄露源代码,以及Redis等未授权访问、Robots.txt等敏感信息,从而达到渗透目的。
收集敏感信息的常用方法:
Google Hack是指使用Google、百度等搜索引擎对某些特定网站主机漏洞(通常是服务器上的脚本漏洞)进行搜索,以达到快速找到漏洞主机或特定主机的漏洞的目的。
对于普通的用户而言,Google只是一款强大的搜索引擎,而对于渗透人员而言,它可能是一款绝佳的黑客工具。正因为Google的检索能力强大,我们可以构造特殊的关键字语法来搜索互联网上的的相关敏感信息。
常用语法:
Site:找到与指定网站有联系的URL。例如输入“Site:family.chinaok.com”。所有和这个网站有联系的URL都会被显示。
Intitle:搜索网页标题中包含有特定字符的网页。例如输入“intitle: cbi”,这样网页标题中带有cbi的网页都会被搜索出来。
Inurl:搜索包含有特定字符的URL。例如输入“inurl:cbi”,则可以找到带有cbi字符的URL。
Intext:搜索网页正文内容中的指定字符,例如输入“intext:cbi”。这个语法类似我们平时在某些网站中使用的“文章内容搜索”功能。
Filetype:搜索指定类型的文件。例如输入“filetype:cbi”,将返回所有以cbi结尾的文件URL。
这些就是Google的常用语法,也是Google Hack的必用语法。虽然这只是Google语法中很小的部分,但是合理使用这些语法将产生意想不到的效果。
例:当我们想获取一些政府网站的后台页面时,可通过构关键字 site:gov.cn intext:后台管理
来实现搜集,意思是搜索网页正文中含有“后台管理”并且域名后缀是 gov.cn的网站。
可以看到利用Google Hacking语法搜索,可以很高效地得到我们想要的信息,还可以用它来收集数据库文件、SQL注入、配置信息、源代码泄露、未授权访问和robots.txt等敏感信息。(更详细的Google Hacking语法介绍可以看这篇文章:传送门)
接下来介绍另一款资产信息搜集神器:fofa
链接:https://fofa.so/
FOFA网络安全空间搜索 是专为渗透人员设计的一款搜索引擎,其相对于Google 的知名度相对低了一些,但是对于渗透人员这是款信息收集的神器。用途大致和Google一样,就不多介绍了。
来简单说下其查询语法:
官方上给的很清楚,这里简单演示下如何使用:
需要注意,在fofa中,多条件查询是用&&
和||
来连接的,什么意思就不解释了。
例:查找一些后台管理且地点在杭州的资产信息:构造语法:title ="后台管理"&&city="Hangzhou
还可以查找指定开放的端口网站,例:查找开放了3389 端口的后台管理系统:port="3389"&&title="后台管理"
篇幅有限,更多骚操作可以看这篇文章:https://www.anquanke.com/post/id/84865
GitHub作为一款应用最广的开源代码平台,给程序员提供了很多便利,但如果使用不当,比如将包含了账号密码、密钥等配置文件的代码上传了,导致攻击者能发现并进一步利用这些泄露的信息,就是一个典型的GitHub敏感信息泄露漏洞,再如开发人员在开发时,常常会先把源码提交到github,最后再从远程托管网站把源码pull到服务器的web目录下,如果忘记把.git文件删除,就造成此漏洞。利用.git文件恢复网站的源码,而源码里可能会有数据库的信息。
很多网站及系统都会使用pop3和smtp发送来邮件,不少开发者由于安全意识不足会把相关的配置文件信息也放到Github上,这时配合我们的Google搜索语法,就能把这些敏感信息给找出来了。
site:Github.com smtp
site:Github.com smtp @qq.com
site:Github.com smtp @126.com
site:Github.com smtp @163.com
site:Github.com smtp @sina.com.cn
获取数据库信息泄露:
site:Github.com sa password
site:Github.com root password
子域名也就是二级,是指顶级域名下的域名。如果目标的网络规模比较大,直接从主域入手显然是很不理智的,因为一般其主域都是重点防护区域,这种情况下可以选择“曲线渗透”,即先进入目标的某个子域,然后再想办法迂回接近真正的目标。
搜集目标子域常用的方法有以下这几种:
Layer子域名挖掘机:
是一款基于python语言开发的,高并发的DNS暴力枚举工具,可以用于二级域名收集。支持Python3.5+和Python2.7,推荐使用Python3.5+以上版本。
Python3环境下运行需 安装aiodns库。(aiodns环境 Kali自带,推荐在Kali下使用,windows下aiodns环境很难安装)
我们同样可以利用Google语法 来搜索子域名,假如想要获得qq的子域名,可构造关键词:“site:qq.com”
不得不说,Google是真的好用!
几个好用的在线网站:
1、DNSdumpster:https://dnsdumpster.com/
2、子域名爆破:https://phpinfo.me/domain/
使用非常方便,而且速度 “很快啊”。
在渗透测试中,哪些端口是开放的,对于渗透测试员尤为重要。通过扫描服务器开放的端口可以获得该服务器上存在的服务,从而可以对其进行精准打击。
说起端口扫描,那就不得不说Nmap这款工具,Nmap是被专业人员广泛使用的一款功能全面的端口扫描工具。强烈推荐!
基本使用:
最简单的使用就是:nmap 域名/ip
就可以扫描出端口的开放信息:
可以看到服务器 80、443等端口是开放的。
还可以使用命令:nmap -p 端口 IP(域名)
,判断ip是否开放指定端口:
可以看到 B站 80端口是开放的,8080是关闭的。更多nmap骚操作请看这篇文章:传送门
Masscan号称是最快的互联网端口扫描器,最快可以在六分钟内扫遍互联网。而且,masscan更加灵活,它允许自定义任意的地址范和端口范围。
由于使用工具通常会在目标网站留下痕迹,接下来提供一种在线网站探测方法。
因为使用工具通常会在目标网站留下痕迹,因此推荐几个在线的端口扫描网站:
站长工具(老熟人了):http://tool.chinaz.com/port/
ThreatScan在线网站:https://scan.top15.cn/web/portscan
,知道了这些,端口的信息收集是不成问题了,但作为一个测试人员只知道如何扫描是不够的,还应知道开放端口所对应的服务,下面简单列举下:
远程连接服务端口:
文件共享服务端口:
Web应用服务端口:
邮件服务端口:
网络常见协议端口:
特殊服务端口:
CMS(Content Management System)又称为整站系统或文章系统,用于网站内容管理。用户只需要下载对应的CMS软件包,完成部署搭建,就能直接利用CMS。
因为各类CMS都有其独特的结构命名规则和特定的文件内容,因此可以利用这些内容来判断一个CMS类型信息,这就叫CMS指纹识别。
在渗透测试中,对目标站点进行指纹识别是很有必要的,如果识别出目标站点对应的CMS,则可以查找与该CMS相关的漏洞,方便对目标的进一步的渗透。
常见的CMS有:
门户:dedecms(织梦)、phpcms、帝国cms
博客:WordPress、zblog、emlog
社区:Discuz、PHPWind
商城:shopex、ECShop
下面介绍几款经典的识别工具。
1、在线cms指纹识别:http://whatweb.bugscaner.com/look/
2、云悉指纹识别:http://www.yunsee.cn/info.html
常用的本地工具有:御剑Web指纹识别、大禹CMS识别程序等。下面简单演示下御剑这款工具使用:
可以看到成功解析到了域名,这款工具速度还可以,而且支持自定义关键字和正则匹配两种模式、使用起来还可以。缺点就是目前指纹的配置库偏少。
对于查询到的CMS,可以在漏洞库网站查询对应的漏洞,进行进一步的渗透。推荐两个好用的漏洞库:
1、乌云漏洞库:https://wooyun.x10sec.org/
例:对织梦CMS进行漏洞查询:
2、安全客漏洞库:https://www.anquanke.com/vul
说到查找真实IP,需要先知道什么是CDN?
CDN全称 Content Delivery Network,即内容分发网络。指一种通过互联网连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。
因此,如果目标服务器使用了CDN服务,那么我们直接查询到的IP并不是真正的目标服务器的IP,而是一台离你最近的目标节点的CDN服务器,这就导致了我们没法直接得到目标服务器的真实IP。
我们可以直接ping目标域名,通过返回的域名可以判断是否为真实ip,我们来ping百度官网看一下:
可以看到,ping的解析域名发生了改变,不再是 “www.baidu.com”了,出现这种就代表大概率使用了CDN。这时直接访问 ping出来的域名或ip是无服务的,因为这台服务器只是做了数据转接,并没有web服务。
我们再来ping一下域名:“baidu.com”
可以看到,这次的解析域名没有改变,这时访问 ip:39.156.66.14,发现也可以直接访问的到,出现这种情况说明 baidu.com域名可能并没有使用CDN,ip 39.156.66.14就有可能是真实ip。
还可以使用在线网站进行检测,这里推荐一些很好用的网站:
1、全球Ping测试:https://www.wepcc.com
2、17CE:https://www.17ce.com
3、站长之家ping检测(没错又是它):http://ping.chinaz.com/
1、子域名查找法:
因为CDN和反向代理是需要成本的,有的网站只比较常用的域名使用cdn或反向代理,所以可以通过通过查找子域名来查找网站的真实IP。
2、 查询主域:
很多网站只对 www域名使用了cdn,秃域名不使用,为的是在维护网站时更方便,不用等cdn缓存。所以可以试着把目标网站的www去掉,ping一下看ip是不是变了,这个上面的百度 baidu.com就是这样的。
3、查看域名历史解析:
可能目标之前没有使用CDN,所以可能会存在使用 CDN 前的记录。通过平台以前收集到的ip与域名绑定历史记录进行查询。
4、通过邮件服务器:
一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件,寻找邮件头中的邮件服务器域名IP,ping这个邮件服务器的域名,就可以获得目标的真实IP(必须是目标自己内部的邮件服务器,第三方或者公共邮件服务器是没有用的)。
5、从国外访问:
国内的CDN往往只对国内用户的访问加速,而对国外的访问就不一定了。此时我们使用国外的主机直接访问可能就能获取到真实P。
在渗透测试中,探测Web目录结构和隐藏的敏感文件是一个必不可少的环节,从中可以获取网站的后台管理、文件上传等重要页面,甚至可能扫描出网站的源代码。
目录扫描工具有非常多种,如:御剑后台扫描工具、wwwscan命令行工具、dirb命令工具、dirbuster扫描工具;其原理大致相同,都是对网站进行暴力枚举扫描,下面介绍下个人觉得非常好用的工具:
dirsearch是一个功能强大,且非常经典的工具,基于python开发,旨在暴力扫描页面结构,包括网页中的目录和文件。下载链接
使用方法:-u url -e 开发语言
(可以不指定语言,即 *)
这款工具是一款可视化的程序,支持用户自定义的字典,用起来比较方便。
信息收集的最高境界大概就是社会工程学了,社会工程学(Social Engineering)是一种通过人际交流的方式获得信息的非技术渗透手段。社会工程学在渗透测试中起着不小的作用,利用社会工程学,攻击者可以从一名员工的口中挖掘出本应该是秘密的信息。
社会工程学协助渗透测试的例子数不胜数,渗透某个网站遇到困难时,给网站的呼叫人员打电话,往往能解决很多问题。此外,许多服务器的登录密码与该服务器的管理者有关,密码总是有个人痕迹,因此利用社会工程学获得服务器管理者的信息后,进行服务器渗透测试要简单得多。
俗话说“渗透的本质也就是信息收集”,信息收集的深度,直接关系到渗透测试的成败。在信息收集阶段应尽可能多的获取目标站点的各种信息,可大大提高渗透测试的成功率。,关于信息收集的总结到这里就结束了,以后发现新的好用的东西会接着补充,如果本文有哪些不对的地方,欢迎各位大佬补充更正❤。
参考文章:
https://www.freebuf.com/articles/web/215182.html
https://cloud.tencent.com/developer/article/1685126
https://www.anquanke.com/post/id/84865
https://www.cnblogs.com/H4ck3R-XiX/p/12489218.html
https://www.freebuf.com/articles/web/215182.html
https://blog.csdn.net/weixin_42320142/article/details/102679143
https://www.anquanke.com/post/id/163348