一、什么是信息收集

信息收集就是尽可能的收集目标的信息,包括端口信息、DNS信息、IP信息等等都是信息收集。信息收集是渗透测试的最重要的阶段,根据收集的有用信息,可以大大提高渗透测试的成功率。

域名信息收集

顶级域名/一级域名:

1
顶级域(或顶级域名,也称为一级域名),是互联网DNS等级之中的最高级的域,它保存于DNS根域的名字空间中。顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,例如在http://www.example.com这个域名中,顶级域是.com。

二级域名:

1
除了顶级域名,还有二级域名,就是最靠近顶级域名左侧的字段。例如在http://www.example.com这个域名中,example就是二级域名。

子域名:

1
子域名(Subdomain)是在域名系统等级中,属于更高一层域的域。比如,mail.example.com和calendar.example.com是example.com的两个子域,而example.com则是顶级域.com的子域。凡顶级域名前加前缀的都是该顶级域名的子域名,而子域名根据技术的多少分为二级子域名,三级子域名以及多级子域名。

Whois 查询

1
whois 是用来查询域名的IP以及所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商),不同域名后缀的Whois信息需要到不同的Whois数据库查询。通过whois来实现对域名信息的查询,可以得到注册人的姓名和邮箱信息通常对测试个人站点非常有用,因为我们可以通过搜索引擎和社交网络挖掘出域名所有人的很多信息。

(1)在线查询

如今网上出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询。网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令列接口的工具仍然被系统管理员广泛使用。whois通常使用TCP协议43端口。每个域名/IP的whois信息由对应的管理机构保存。

常见的网站包括:

1
2
3
4
5
6
7
8
9
10
11
12
13
Whois站长之家查询:http://whois.chinaz.com/

阿里云中国万网查询:https://whois.aliyun.com/Whois

Lookup 查找目标网站所有者的信息:http://whois.domaintools.com/Netcraft

Site Report 显示目标网站上使用的技术:http://toolbar.netcraft.com/site_report?url=Robtex

DNS 查询显示关于目标网站的全面的DNS信息:https://www.robtex.com/

全球Whois查询:https://www.whois365.com/cn/

站长工具爱站查询:https://whois.aizhan.com/

示例:下面是使用站长之家Whois查询youku.com域名的相关信息:

(2)使用kali中的whois工具查询

在Kali Linux下自带的Whois查询工具,通过命令Whois查询域名信息,只需输入要查询的域名即可,如下图所示。

备案信息查询

网站备案信息是根据国家法律法规规定,由网站所有者向国家有关部门申请的备案,是国家信息产业部对网站的一种管理途径,是为了防止在网上从事非法网站经营活动,当然主要是针对国内网站。

在备案查询中我们主要关注的是:单位信息例如名称、备案编号、网站负责人、法人、电子邮箱、联系电话等。

常用的备案信息查询网站有以下几个:

1
2
3
4
5
6
7
ICP/IP地址/域名信息备案管理系统:http://beian.miit.gov.cn/publish/query/indexFirst.actionICP

备案查询网:http://www.beianbeian.com/

备案吧吧:https://www.beian88.com/

天眼查:https://www.tianyancha.com/

子域名信息收集

子域名收集可以发现更多渗透测试范围内的域名/子域名,以增加漏洞发现机率;探测到更多隐藏或遗忘的应用服务,这些应用往往可导致一些严重漏洞。

常用的工具有:子域名挖掘机Layer、subDomainsBrute、Dnsenum、Dnsmap …

收集子域名的方法有以下几种:

1
2
3
4
5
6
7
利用在线工具查询子域名爆破:https://phpinfo.me/domain/

子域名爆破:https://phpinfo.me/domain/

IP反查绑定域名:http://dns.aizhan.com/

https://site.ip138.com

利用工具枚举子域名

kali上的工具在kali中的信息收集模块的DNS分析中,有很多工具可以进行域名信息收集。

站点信息收集

接下来我们进行web网站站点信息收集,主要收集如下信息:

1
2
3
4
5
6
7
8
9
CMS指纹识别

历史漏洞

脚本语言敏感目录/文件

Waf识别

......

CMS指纹识别CMS(内容管理系统)又称为整站系统或文章系统,用于网站内容管理。用户只需要下载对应的CMS软件包,就能部署搭建,并直接利用CMS。但是各种CMS都具有其独特的结构命名规则和特定的文件内容,因此可以利用这些内容来获取CMS站点的具体软件CMS与版本。

在渗透测试中,对进行指纹识别是相当有必要的,识别出相应的CMS,才能查找与其相关的漏洞,然后才能进行相应的渗透操作。

常见的CMS有Dedecms(织梦)、Discuz、PHPWEB、PHPWind、PHPCMS、ECShop、Dvbbs、SiteWeaver、ASPCMS、帝国、Z-Blog、WordPress等。

首先要知道的一点,并不是所有网站都用了CMS,所以这一块在信息收集中起的是一个辅助作用,能收集到信息最好,收不到也无所谓。

(1)在线识别

如今,网上一些在线的网站查询CMS指纹识别,如下所示:

1
2
3
4
5
6
7
BugScaner: http://whatweb.bugscaner.com/look/

潮汐指纹:http://finger.tidesec.net/

云悉:http://www.yunsee.cn/info.html

WhatWeb: https://whatweb.net/

(2)利用工具识别

常见的CMS指纹识别工具有WhatWeb、WebRobo、椰树、御剑Web指纹识别等,可以快速识别一些主流CMS。

例如,我们利用kali上的WhatWeb工具识别目标站点的cms:

如上图,WhatWeb将目标站点的服务器、中间节、cms等都识别了出来。当我们得知了一个站点的cms类型后,我们可以在网上查找与其相关的漏洞并进行相应的测试。

(3)火狐插件wappalyzer 它是一款能够分析目标网站所采用的平台构架、网站环境、服务器配置环境、JavaScript框架、编程语言等参数的chrome网站技术分析插件。

服务器信息收集

服务器信息包括服务器用的操作系统:Linux 还是 Windows 。

知道了服务器的操作系统之后,还需要知道操作系统使用的具体版本。 因为很多低版本的操作系统都存在已知的漏洞。

操作系统判断方法:

1、大小写 Windows操作系统不区分大小写,Linux系统大小写敏感,用此方法能够判断是Windows还是Linux系统。

2、ping 判断是Linux还是Windows最简单就是通过ping来探测,Windows的TTL值都是一般是128,Linux则是64。 所以大于100的是Windows,而几十的则是Linux。

但是,通过TTL值来判断服务器类型也不是百分之百准确的,有些windows服务器的TTL值也是几十,而且有的服务器禁止ping。

中间件信息收集

我们可以收集网站用的web服务器是什么类型的:Apache、Nginx、Tomcat 还是 IIS。 知道了web服务器是哪种类型后,我们还需要探测web服务器具体的版本。 比如Ngnix版本<0.83会有解析漏洞 ,IIS6.0会有文件名解析漏洞、IIS7.0会有畸形解析漏洞等。 不同的web服务器版本,存在着不同漏洞。

敏感目录/文件收集

在web渗透中,探测Web目录结构和隐藏的敏感文件是一个十分重要的环节,从中可以获取网站的后台管理页面、文件上传界面、robots.txt,甚至可能扫描出备份文件从而得到网站的源代码。

常见的网站目录的扫描工具主要有:

1
2
3
4
5
6
7
8
9
御剑后台扫描工具

dirbuster扫描工具

dirsearch扫描工具

dirbwwwscan

......

例如:

Waf识别

Web应用防护系统(Web Application Firewall)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

Waf识别工具

wafw00f是一个Web应用防火墙(WAF)指纹识别的工具。

wafw00f的工作原理:

  1. 发送正常的HTTP请求,然后分析响应,这可以识别出很多WAF。
  2. 如果不成功,它会发送一些(可能是恶意的)HTTP请求,使用简单的逻辑推断是哪一个WAF
  3. 如果这也不成功,它会分析之前返回的响应,使用其它简单的算法猜测是否有某个WAF或者安全解决方案响应了我们的攻击。
    kali上内置了该工具:

    wafw00f支持非常多的WAF识别。要查看它能够检测到哪些WAF,请使用-l 选项:

    简单使用如下:wafw00f https://www.xxx.com/

敏感信息收集

1、Google hacking(谷歌黑语法)常用搜索语法

1
2
3
4
5
6
7
8
9
10
11
intext:寻找正文中含有关键字的网页
intitle:寻找标题中含有关键字的网页
allintitle:用法和intitle类似,只不过可以指定多个词
inurl:搜索url中含有关键词的网页
allinurl:用法和inurl类似,只不过可以指定多个词
site:指定访问的站点
filetype:指定访问的文件类型
link:指定链接的网页related:搜索相似类型的网页
info:返回站点的指定信息,例如:info:www.baidu.com 将返回百度的一些信息
phonebook:电话簿查询美国街道地址和电话号码信息
Index of:利用 Index of 语法可以发现允许目录浏览的web网站,就像在本地的普通目录一样

2、FOFA
FOFA可以搜索网络组件,例如地区,端口号,网络服务,操作系统,网络协议等包括各种开发框架、安全监测平台、项目管理系统、企业管理系统、视频监控系统、站长平台、电商系统、广告联盟、前端库、路由器、SSL证书、服务器管理系统、CDN、Web服务器、WAF、CMS等。还可以绕过cdn找真实IP,如果知道一个有cdn防护的域名,在fofa上可以直接找到它的真实IP,在FOFA上搜索到了该域名的相关信息,并且可以找到真实IP的信息,还有找摄像头,矿机等等。

3、Zoomeye(钟馗之眼)ZoomEye是一款针对网络空间的搜索引擎,收录了互联网空间中的设备、网站及其使用的服务或组件等信息。

搜索语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
app:nginx  组件名
ver:1.0  版本
os:windows  操作系统
country:”China”  国家
city:”hangzhou”  城市
port:80  端口
hostname:google  主机名
site:thief.one  网站域名
desc:nmask  描述
keywords:nmask’blog  关键词
service:ftp  服务类型
ip:8.8.8.8  ip地址
cidr:8.8.8.8/24  ip地址段

端口信息收集

扫描端口可以使用Nmap,masscan进行扫描探测,尽可能多的搜集开启的端口好已经对应的服务版本,得到确切的服务版本后可以搜索有没有对应版本的漏洞。 常见的端口信息及渗透方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
tcp 20,21 FTP 允许匿名的上传下载,爆破,嗅探,win提权,远程执行(proftpd 1.3.5),各类后门(proftpd,vsftp 2.3.4)tcp 22 SSH 可根据已搜集到的信息尝试爆破,v1版本可中间人,ssh隧道及内网代理转发,文件传输等等
tcp 23 Telnet 爆破,嗅探,一般常用于路由,交换登陆,可尝试弱口令tcp 25 SMTP 邮件伪造,vrfy/expn查询邮件用户信息,可使用smtp-user-enum工具来自动跑
tcp/udp 53 DNS 允许区域传送,dns劫持,缓存投毒,欺骗以及各种基于dns隧道的远控
tcp/udp 69 TFTP 尝试下载目标及其的各类重要配置文件
tcp 80-89,443,8440-8450,8080-8089 各种常用的Web服务端口 可尝试经典的topn,vpn,owa,webmail,目标oa,各类Java控制台,各类服务器Web管理面板,各类Web中间件漏洞利用,各类Web框架漏洞利用等等……
tcp 110 POP3 可尝试爆破,嗅探
tcp 111,2049 NFS 权限配置不当
tcp 137,139,445 Samba 可尝试爆破以及smb自身的各种远程执行类漏洞利用,如,ms08-067,ms17-010,嗅探等……
tcp 143 IMAP 可尝试爆破udp 161 SNMP 爆破默认团队字符串,搜集目标内网信息
tcp 389 LDAP ldap注入,允许匿名访问,弱口令
tcp 512,513,514 Linux rexec 可爆破,rlogin登陆
tcp 873 Rsync 匿名访问,文件上传
tcp 1194 OpenVPN 想办法钓VPN账号,进内网
tcp 1352 Lotus 弱口令,信息泄漏,爆破
tcp 1433 SQL Server 注入,提权,sa弱口令,爆破
tcp 1521 Oracle tns爆破,注入,弹shell…
tcp 1500 ISPmanager 弱口令
tcp 1723 PPTP 爆破,想办法钓VPN账号,进内网
tcp 2082,2083 cPanel 弱口令
tcp 2181 ZooKeeper 未授权访问
tcp 2601,2604 Zebra 默认密码zerbratcp 3128 Squid 弱口令
tcp 3312,3311 kangle 弱口令
tcp 3306 MySQL 注入,提权,爆破
tcp 3389 Windows rdp shift后门[需要03以下的系统],爆破,ms12-020tcp 3690 SVN svn泄露,未授权访问
tcp 4848 GlassFish 弱口令tcp 5000 Sybase/DB2 爆破,注入
tcp 5432 PostgreSQL 爆破,注入,弱口令
tcp 5900,5901,5902 VNC 弱口令爆破
tcp 5984 CouchDB 未授权导致的任意指令执行
tcp 6379 Redis 可尝试未授权访问,弱口令爆破
tcp 7001,7002 WebLogic Java反序列化,弱口令
tcp 7778 Kloxo 主机面板登录
tcp 8000 Ajenti 弱口令
tcp 8443 Plesk 弱口令
tcp 8069 Zabbix 远程执行,SQL注入
tcp 8080-8089 Jenkins,JBoss 反序列化,控制台弱口令
tcp 9080-9081,9090 WebSphere Java反序列化/弱口令
tcp 9200,9300 ElasticSearch 远程执行
tcp 11211 Memcached 未授权访问
tcp 27017,27018 MongoDB 爆破,未授权访问
tcp 50070,50030 Hadoop 默认端口未授权访问

真实IP识别

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若目标存在CDN服务,将会影响到后续的安全测试过程。

如何判断目标网站是否使用了CDN 服务.

我们可以利用超级ping,ping这个网站域名,如果在每个地区ping的IP地址相同,则该服务器不存在CDN服务,如果在每个地区ping的IP地址不相同,则该服务器存在CDN服务
例如我们ping百度

每个地区的IP地址不同,说明百度使用了CDN服务。

CDN绕过技术

1、子域名查找

很多时候,一些重要的站点会做CDN,而一些子域名站点并没有加入CDN,而且跟主站在同一个C段内,这时候,就可以通过查找子域名来查找网站的真实IP。
一些在线查询工具,如:

1
2
3
http://tool.chinaz.com/subdomain/
https://phpinfo.me/domain/
http://searchdns.netcraft.com/

为了方便用户访问,我们常常将www.test.com 和 test.com 解析到同一个站点,而CDN只配置了www.test.com,通过访问test.com,就可以绕过 CDN了.
2、邮件服务查询

比如说,邮箱注册,邮箱找回密码、RSS邮件订阅等功能场景,通过网站给自己发送邮件,从而让目标主动暴露他们的真实的IP,查看邮件头信息,获取到网站的真实IP。

3、网络引擎搜索

通过关键字或网站域名,就可以找出被收录的IP,很多时候获取到的就是网站的真实IP。

1
2
3
钟馗之眼:https://www.zoomeye.org
Shodan:https://www.shodan.io
Fofa:https://fofa.so

4、国外主机解析域名

大部分 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的DNS查询,很可能获取到真实IP。
5、扫描全网

通过Zmap、masscan等工具对整个互联网发起扫描,针对扫描结果进行关键字查找,获取网站真实IP。
(1)ZMap号称是最快的互联网扫描工具,能够在45分钟扫遍全网。

1
https://github.com/zmap/zmap

(2)Masscan号称是最快的互联网端口扫描器,最快可以在六分钟内扫遍互联网。

1
https://github.com/robertdavidgraham/masscan

6、DNS历史解析记录

查询域名的历史解析记录,可能会找到网站使用CDN前的解析记录,从而获取真实ip。
相关查询的网站有:

1
2
https://viewdns.info/iphistory/
https://sitereport.netcraft.com/?url=github.com


7、配置不当绕过

在配置CDN的时候,需要指定域名、端口等信息,有时候小小的配置细节就容易导致CDN防护被绕过。

案例1:为了方便用户访问,网站管理员常常将www.test.com 和 test.com 解析到同一个站点,而CDN只配置了www.test.com,通过访问test.com,就可以绕过CDN了。

案例2:站点同时支持http和https访问,CDN只配置 https协议,那么这时访问http就可以轻易绕过。

数据库类型收集

几种常见数据库的区别:
1、Access小型数据库,当数据库达到100M左右的时候性能就会下降。数据库后缀名: .mdb一般是asp的网页文件用access数据库。
2、SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),是一个比较大型的数据库。端口号为1433。数据库后缀名 .mdf
3、MySQL 是一个关系型数据库管理系统,是最流行的关系型数据库管理系统,在WEB 应用方面MySQL是最好的应用软件之一,MySQL数据库大部分是php的页面。默认端口是3306
4、Oracle又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。常用于比较大的网站。默认端口是1521
常见搭配:

1
2
3
ASP 和 ASPX:ACCESS、SQL Server 
PHP:MySQL、PostgreSQL
JSP:Oracle、MySQL

互联网信息泄露收集

1、GitHub敏感信息泄露
2、网盘、文库、贴吧等信息泄露

3、乌云等平台历史漏洞信息及资产信息

4、微博、论坛、QQ群等信息泄露

社会工程学

社会工程学(Social Engineering)是一种通过人际交流的方式获得信息的非技术渗透手段。
社会工程学收集的常见信息包括:姓名、性别、出生日期、身份zheng号、身份zheng家庭住址、身份zheng所在公安局、快递收货地址、大致活动范围、qq、手机号、邮箱、银行card号(银行开户行)、支付宝、贴吧、百度、微博、微信、常用ID、学历(小/初/高/大学/履历)、目标性格详细分析、常用密码、照片等信息。