进行手头测试之前,最重要的一步就是信息收集,所谓知己知彼,百战不殆。我们越是了解测试目标,在进行测试过程中的工作就会越容易。但是我们在收集信息的时候需要收集哪些信息呢?哪些信息对我们的渗透工作有帮助呢?在渗透测试中,最主要的就是收集服务器的配置信息和网站的敏感信息,其中包括域名及子域名,网站真实ip,目标网站系统,cms指纹,开放的端口等。只要是与目标网站有关的信息我们都应该去收集。下面我们来细分一下信息收集的要点。
收集域名信息
whois查询
什么是whois?whois(读作“Who is”,非缩写)是用来查询域名的IP以及所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。在whois查询中,得到注册人的姓名和邮箱信息通常对测试站点非常有用,因为我们可以通过搜索引擎和社交网络挖掘出域名所有人的很多信息。对于中小站点而言域名所有人往往局势管理员。
备案信息查询
网站备案是根据国家法律规定,需要网站的所有者向国家有关部门申请的备案,这是国家信息产业部对网站的一种管理,为了防止在网上从事非法的网站经营活动的发生。主要针对国内网站,如果网站搭建在其他归家,则不需要进行备案。
收集敏感信息
Google是世界上最强的搜索引擎之一,对于一位渗透测试者而言,他可能是一款绝佳的黑客工具。我们可以通过构造特殊的关键字语法来搜索互联网上的相关敏感信息。
另外BurpSuite的Repeater功能同样可以获取一些服务器的信息,如运行的Server类型及版本、PHP的版本信息等、针对不同的Server,可以利用不同的漏洞进行测试。除此之外,也可以尝试在GitHub生寻找相关敏感信息,如数据库链接信息、邮箱密码、uc-key、阿里的osskey,有时还可以找到泄露的源码等。
收集子域名信息
子域名也就是二级域名,是指顶级域名下的其他域名。假设我们的目标规模比较大,直接从主域名入手显然是很不理智的,一般对于这种规模的目标其主域都是重点防护区域,所以我们可以先从某个子域进入目标,然后在想办法绕道真正的目标区域。那么如何快速收集子域名呢?
子域名检测工具
这里推荐几款工具:Layer子域名挖掘机、Sublist3r、subDomainsBrute。
搜索引擎枚举
我么可以利用Google语法搜索子域名,例如要搜索百度旗下的子域名就可以使用"site:baidu.com"语法。
第三方聚合应用枚举
很多第三方服务汇聚了大量的DNS数据集,可通过他们检索某个指定域名的子域名。
证书透明度公开日志枚举
证书透明度(Certificate Transparency)是谷歌力推的某个拟在确保证书系统安全的透明审查技术。其目标是提供一个开放的审计和监控系统,可以让任何域名的所有者,确定CA证书是否被错误签发或恶意使用。TLS的缺点是你的浏览器隐性包含了一个大型受信任CA列表。如果任何这些CA恶意为域创建新证书,则你的浏览器都会信任它。CT为TLS证书信任提供了,它可以允许浏览器验证给定域的证书是否在公共日志记录中。
收集常用端口信息
在渗透测试中,端口对于信息收集试一个非常重要的过程,通过扫描服务器开放的端口,可以从该端口判断服务器上存在的服务。所以在渗透测试信息收集过程中,我们需要关注常见应用的默认端口和对应的运行服务。端口扫面最常用的工具是Nmap,无状态端口扫描工具Masscan、ZMap和御剑高速TCP扫描工具。
指纹识别
通常我们所说的指纹就是人的手指末端正面皮肤凹凸不平的文线。而这里所说的指纹识别是指CMS指纹识别,计算机操作系统以及web容器的指纹识别等。应用程序一般在html、js、css等文件中多多少少会包含一些特征码,比如WordPress在robots.txt中会包含wp-admin、首页index.php中会包含generatoe=wordpress 3.xx,这个特征就是这个CMS的指纹,那么当碰到其他网站的时候也可以快速识别出该CMS,所以叫做指纹识别。
查找真实IP
一般我们在对一个网站进行渗透测试的时候,目标服务器可能只有一个域名,那么如何通过域名来确定目标服务器的真实IP呢?一般我们可以直接通过一些网站就可以获取目标的ip以及域名信息,如:www.ip138.com。这里主要介绍一些如何绕过CND防御,探测到目标站点真实IP的方法。
目标服务器存在CND
那么什么是CND? CDN是英文Content Delivery Network的缩写,翻译为中文就是内容分发网络,它的存在可以避开互联网中影响数据传输的缓解,从而是内容传输速度更快,更稳定。CDN的原理是,广泛采用各种缓存服务器,将它们分布到用户访问相对集中的网络中,在用户需要访问网站时,可以直接从最近的缓存服务器上拿出需要的内容。CDN的主要特点有五个,首先就是本地cache加速,然后就是可以提供颈项服务,实现跨运营商服务,其次就是远程加速和带宽优化,最后还有抗攻击的作用。所以如果目标站点购买了CND服务,可以直接ping目标的域名,但得到的并不是目标站点的真实IP,只是离我们最近的一台CDN服务器IP。
如何判断目标是否使用了CDN
通常我们通过ping目标的主域,通过观察域名解析情况,来判断目标站点是否使用了CDN。我们还可以通过一些在线网站比如:www.17ce.com 进行全国地区的ping服务器操作,然后对比每个地区的结果,看看这些IP是否一致,如果一致,可能不存在CDN,如果不一样说明存在CDN.
如何绕过CND询找真实IP
内部邮箱源,一般的邮件系统都在内部,没有经过CDN的解析,通过目标网站用户注册或者RSS订阅功能,查看邮件、寻找邮件中的邮件服务器域名IP,ping这个邮件服务器的域名,就可以获得真实IP。
扫描网站测试文件,如phpinfo,test等,从而找到真实IP。
分站域名。很多网站主站的访问量会比较澳大,所以都是挂CDN的,但是分站可能没有挂CDN,可以通过ping二级域名获取分站IP,可能会出现分站和主站不是同一个IP但在同一个C段下面的情况,从而能判断出目标的真实IP段
国外访问。国内的CDN在线往往只对国内用户的访问加速,而国外的CDN就不一定了,因此,通过国外在线代理网站访问,可能会得到真实IP,如asm.ca.com/en/ping.php
查询域名的解析记录。也许目标站点以前并没有使用过CDN,所以可以通过网站 www.netcraft.com 来观察域名IP的历史记录,也可以找到真实IP
如果目标网站有自己的APP,可以通过利用抓包工具Fiddler或者BurpSuite抓取App的请求数据包,从里面找到真实IP
绕过CloudFlase CDN查找真实ip。现在很多的网站都使用CloudFlase提供的CDN服务,在确定了目标站点之后,可以先尝试通过在先网站ClodeFlareWatch http://www.crimeflare.us/cfs.html#box 对CloudFlare客户网进行真实IP的查询
验证IP真实性
获取IP之后如何验证呢,如果是web直接通过真实IP去访问网站就可以了。
收集敏感目录
在渗透测试中,探测web目录结构和隐藏的敏感文件是个必不可少的环节,从中可以获取网站的后台管理页面,文件上传界面,甚至可能扫描出网站的源码。针对王震目录的扫面工具有御剑后台扫面珍藏版、DirBuster、wwwscan、Spinder.py(轻量级快速文件目录后台扫描)等。
社会工程学
世界第一黑客凯文·米特尼克在《反欺骗的艺术》中曾提到,人为因素才是安全的软肋。很多企业、公司在信息安全上投入大量的资金,最终导致数据泄露的原因,往往却是发生在人本身。你们可能永远都想象不到,对于黑客们来说,通过一个用户名、一串数字、一串英文代码,社会工程师就可以通过这么几条的线索,通过社工攻击手段,加以筛选、整理,就能把你的所有个人情况信息、家庭状况、兴趣爱好、婚姻状况、你在网上留下的一切痕迹等个人信息全部掌握得一清二楚。虽然这个可能是最不起眼,而且还是最麻烦的方法。一种无需依托任何黑客软件,更注重研究人性弱点的黑客手法正在兴起,这就是社会工程学黑客技术