渗透测试之信息收集


本章概述:这是一篇关于信息收集的文章


一般来说,在做渗透测试之前,都会进行信息收集,尽可能多的获取目标的信息,这对我们的渗透工作会帮助很大。信息收集一般有域名及子域名信息、目标网站系统、指纹信息、端口信息等等。

1、域名信息

获得目标域名之后,第一步应该先获得该域名的注册信息、注册人信息等等。

1.1、Whois查询

用于收集网络注册信息、注册域名、IP地址等信息。

kali已经安装有whois工具,可以直接通过whois命令查询

nslookup、dig查询(DNS域名信息查询工具)

命令:dig xxx.com,nslookup xxx.com

两者不同的是nslookup获取到的是DNS服务器上cache找到的结果,而dig则是查询到的精确结果

常用的在线查询网站:

http://whois.chinaz.com/

https://whois.aizhan.com/

https://who.is/

1.2、备案信息查询

国内的网站的所有者都需要向国家有关部门申请备案,因此通过备案信息查询也可以查询到域名的一些信息。

常用的网站有:

天眼查

ICP备案查询网

2、收集敏感信息

2.1、Google Hacking

Google是很好的一门收集敏感信息的搜索引擎,通过Google Hacking语法,可以搜索到泄露的信息。

下面列举了部分常用的语法:

语法 描述
intitle 搜索网页标题中包含有特定字符的网页
inurl 搜索包含有特定字符的URL
filetype 搜索指定类型的文件。比如输入filetype:txt,将返回所有以txt结尾的文件url
site 找到与指定网站有联系的URL
intext 把网页中的正文内容中的某个字符做为搜索条件
cache 搜索google里关于某些内容的缓存
link 搜索所有和指定url做了链接的url
info 查找指定站点的一些基本信息

其他搜索引擎也可以用这种方法,语法基本无差

2.2、GitHub

GitHub上面也可以利用GitHub语法去进行搜索,可以找到部分敏感信息,比如代码泄露、账号密码之类的。

基本的搜索语法有:

语法 描述
in:name xxxx 搜索仓库标题含有xxxx
in:descripton xxxx 搜索仓库描述含有xxxx
in:readme xxxx 搜索readme文件含有xxxx
stars:>3000 搜索stars大于3000的仓库
stars:1000..3000 stars数量大于1000小于3000的仓库
forks:>1000 forks数量大于1000的搜索关键字
size:>=5000 仓库大于5000k(5M)的搜索仓库
pushed:>2019-02-12 发布时间大于2019-02-12的仓库
created:>2019-02-12 创建时间大于2019-02-12的仓库
mirror:true(false) 是否是镜像仓库
user:jack 用户名为”jack”的仓库
license:apache-2.0 仓库的 LICENSE为”apache-2.0”
language:java 使用”java”语言的仓库
is:public 公开的仓库
is:private 匹配有权限的私有仓库
topic:5 匹配拥有5个topic的仓库

另外也有其他方法可以查看敏感信息,比如发包,看返回包,可以看到一些服务器信息。

3、子域名信息

子域名也就是二级域名,一般情况下,一个网站的主站防守肯定是最严格的,因此直接硬干主站不太理智,所以更多的是去测试那些二级域名,甚至是三级域名、四级域名。因此我们需要收集很多的子域名,方便我们进行渗透。

3.1、子域名检测工具

(1)Layer子域名挖掘机

(2)Sublist3r

也是一款挺不错的子域名爆破工具

(3)subDomainsBrute

这一款可以递归发现三级域名、四级域名等不容易被探测到的域名

3.2、搜索引擎

利用Google Hacking查询子域名,前面有说过语法,这里就不多说了。

3.3、证书透明度公开日志枚举

证书透明度是证书授权机构的一个项目,证书授权机构会将每个SSL或者TLS证书发布到公共日志中去,证书一般都会包含域名、子域名等信息。

crt.sh:https://crt.sh/

censys:https://censys.io/

4、开放端口收集

端口扫描是最常见的信息收集方法。最常见的扫描工具有nmap、御剑端口扫描工具。

nmap除了可以扫描端口,还可以扫描存活主机、指纹识别等,是一款很强大的扫描工具,具体怎么扫描网上也有很多教程。

本文所说的信息收集方法皆以kali作为前提

5、指纹识别

这里的指纹识别指的是CMS指纹识别,操作系统以及web容器的指纹识别。

CMS:快速搭建网站的管理系统。在早期的web系统中,我们要发布一篇文章是相对比较困难的,需要有专业的web人员来编写,十分不方便,后来就有了CMS系统来帮助开发和搭建。

常见的CMS有:Dedecms、phpweb、帝国、WordPress等等

其他的CMS可以参考这篇文章:https://www.cnblogs.com/sym945/p/11715984.html

代表工具有:御剑指纹识别、whatweb,轻量指纹识别等等。

也有一些在线网站,比如:

BugScanner:http://whatweb.bugscaner.com/look/

云悉识别:https://www.yunsee.cn/

whatweb:https://whatweb.net/

6、CDN

CDN:内容分发网络。简单来说就是在各地都有节点服务器,访问的时候就近去附近的节点获取资源,主要是为了改善网络加载时间,减少服务器负载。但是这样就会造成我们没法直接去得到真实的ip。

6.1、判断是否使用了CDN

一般可以用多地ping的方式来判断是否使用了CDN。

多地ping:https://www.17ce.com/

http://ping.chinaz.com/tb.sz.gov.cn

6.2、寻找真实ip

二级域名:可以通过ping二级域名来获取分站ip,分站可能没有挂cdn,因此可以大概推断出真实ip是在哪个网段

国外访问:可以通过代理国外访问,一般cdn是针对国内,国外没有效果。可以通过国外在线代理ping来访问(https://asm.ca.com/en/ping.php)。

查询域名解析记录:历史Whois微步在线

手机APP:有APP的可以用brup抓包获得真实ip

网络空间搜索引擎:fofa

7、收集敏感目录

收集敏感目录文件是渗透测试中必不可少的一个步骤,常用的目录扫描工具有:

dirbuster,御剑后台扫描,wwwscan,nikto等