渗透测试之信息收集 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

渗透测试之信息收集

山卡拉 内网渗透 2018-02-05 11:19:51
393914
收藏

导语:所谓“知己知彼,百战不殆”,我们越是了解测试目标,测试的工作就越是容易。所以在进行渗透测试之前,最重要的一步就是信息收集,在这个阶段,我们要尽可能地收集目标组织的信息。

在进行渗透测试之前,最重要的一步就是信息收集,在这个阶段,我们要尽可能地收集目标组织的信息。所谓“知己知彼,百战不殆”,我们越是了解测试目标,测试的工作就越是容易。信息收集中最主要的就是服务器的配置信息和网站的敏感信息,其中包括域名及子域名信息﹑目标网站系统﹑CMS指纹﹑目标网站真实IP﹑开放的端口等等。换句话说,只要是与目标网站相关联的信息,我们都应该尽量去搜集。

0X00 域名信息收集

在知道目标的域名之后,我们要做的第一件事情就是获取域名的注册信息,包括该域名的DNS服务器信息和注册人的联系信息等等。大概方法有以下几种。

1.Whois查询:WHOIS是一个标准的互联网协议,可用于收集网络注册﹑注册域名﹑IP地址等的信息。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。在whois查询中,注册人姓名和邮箱信息,通常对于测试个人站点非常有用,因为我们可以通过搜索引擎,社交网络,挖掘出很多域名所有人的信息。而对于中小站点而言,域名所有人往往就是管理员。

在KALI系统中,默认Whois已经安装,只要输入要查询的域名即可,如图1-2所示。

图片1.png 

图1-2 Kali下whois查询

还有在线whois查询,常用的有爱站工具网(https://whois.aizhan.com)和站长之家(http://whois.chinaz.com)。可以查询到域名的相关信息,如域名服务商,域名拥有者,以及邮箱电话,地址等信息等。

2.备案信息查询:网站备案是根据国家法律法规规定,需要网站的所有者向国家有关部门申请的备案,是国家信息产业部对网站的一种管理,为了防止在网上从事非法的网站经营活动。主要针对国内网站,如果网站搭建在其他国家或地区,则不需要进行备案。

常用的网站有:

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

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

0X 01 敏感信息收集

1. Google是当今世界上最强的搜索引擎之一,而对于一个渗透测试者而言,则可能是一款绝佳的黑客工具。我们可以通过构造特殊的关键字语法,来搜索互联网上的相关敏感信息。下面列举了一些常用语法,见表1-1所示。

表1-1 GOOGLE常用语法

2.png 

比如这里我们尝试搜索一些学校网站的后台,语法为“site:edu.cn intext:后台管理”,意思是搜索网页正文中含有“后台管理”,并且制定域名后缀是edu.cn的网站,搜索结果如图1-3所示。

图片2.png 

图1-3 搜索敏感信息

可以看到利用Google搜索我们可以很轻松的得到我们想要的信息,我们还可以用来收集数据库文件、SQL 注入、配置信息、源代码泄露、未授权访问和robots.txt 等敏感信息。

当然,不仅仅是GOOGLE搜索引擎,百度﹑雅虎﹑bing﹑shodan等搜索引擎都是可以的,其语法也是大同小异。

2.通过BurpSuite的Repeater功能同样能获取一些服务器的信息,如运行的server类型及版本,php的版本信息等。针对不同的sever类型,我们可以利用不同的漏洞来进行测试。如图1-4所示。

图片3.png 

图 1-4 服务器配置信息

3.除此以外在github 上也可以尝试寻找相关敏感信息,可能会泄漏数据库连接信息, 邮箱密码, uckey, 阿里 osskey, 有时候还会泄漏源代码等等。

还可以通过乌云漏洞表(https://wooyun.shuimugan.com)来查询历史漏洞信息。

0X02 子域名信息收集

子域名也就是二级域名,是指顶级域名之下的域名,假设我们的目标网络规模比较大,直接从目标主域入手显然是很不理智的,因为像这种规模的目标一般主域都是重点防护区域,与其浪费那个时间,不如先从目标的某个子域进去,然后再想办法迂回接近我们的真正目标,这样无疑是个比较好的选择。那么问题来了,怎么尽可能多的搜集目标的高价值子域呢?常用的方法有以下几种。

1.子域名检测工具

子域名检测主要工具有layer子域名挖掘机、K8、wydomain、Sublist3r、dnsmaper、subDomainsBrute(https://github.com/lijiejie/subDomainsBrute)、MaltegoCE等。这里重点推荐layaer子域名挖掘机和subDomainsBrute。

layer子域名挖掘机使用方法比较简单,在域名对话框直接输入域名就可以进行扫描了,工具显示比较细致,有域名、解析ip、cnd列表、web服务器和网站状态,这些对于一个安全测试人员,这些都非常重要。如图1-5所示。

图片4.png 

1-5 layaer子域名挖掘机

subDomainsBrute 比较有特点的是可以用小字典递归地发现三级域名,四级域名、五级域名等不容易被探测到的域名。

命令为:

python subDomainsbrute.py xxxx.com

2.Google语法

同样也可以利用Google语法来搜索子域名,例如搜索百度旗下的子域名就可以使用”site:baidu.com”语法。如图1-6所示。

图片5.png 

图1-6 google搜索子域名

此外还可以通过一些在线网站来查询子域名,如子域名爆破网站(https://phpinfo.me/domain),同IP反查绑定域名网站(http://dns.aizhan.com),根据HTTPS 证书查询子域名网站(https://crt.sh)。

0X03 常用端口信息收集

在渗透测试过程中,对端口信息的收集是一个很重要的过程,通过扫描服务器开放的端口以及从该端口来判断服务器上存在的服务,就可以对症下药更方便我们渗透目标服务器。

所以在端口渗透信息收集过程中我们需要关注常见应用的默认端口和端口上运行的服务。最为常见的扫描工具就是nmap(具体使用方法后面章节会详细说明),无状态端口扫描工具masscanzmap和御剑高速TCP端口扫描工具,如图1-7所示。

图片6.png 

图1-7 御剑高速端口扫描工具

常见端口和端口说明以及攻击方向汇总。

1.文件共享服务端口

11.png 

2.远程连接服务端口

22.png

3. Web应用服务端口

33.png

4. 数据库服务端口

44.png

5. 邮件服务端口

55.png

6. 网络常见协议端口 

66.png

7.特殊服务端口

77.png

0X04 指纹识别

指纹,由于其具有终身不变性、唯一性和方便性,已几乎成为生物特征识别的代名词。通常我们说的指纹是指人的手指末端正面皮肤上凸凹不平产生的纹线。纹线有规律的排列形成不同的纹型。但这里所讲的指纹,是指的网站CMS指纹识别和计算机操作系统以及Web容器的指纹识别等。

一般应用程序在html、js、css等文件中多多少少会包含一些特征码,比如wordpress在robots.txt中会包含wp-admin之类,首页index.php中会包含generator=wordpress 3.xx,这个特征就是这个CMS的指纹,那么我们在碰到其他网站也存在此特征的时候,就可以快速识别出该CMS,所以叫做指纹识别。

在渗透测试中,对目标服务器进行指纹识别是相当有必要的,因为你只有识别出了相应的WEB容器或者CMS,才能去查找其相关的漏洞,然后才能进行相对应的渗透操作。

CMS(Content Management System),中文叫作整站系统、文章系统,大概2004以前,如果想进行网站内容管理,基本上都是靠手工维护,但在这个信息爆炸的时代,完全靠手工来完成是一个相当痛苦的事情。所以就出现了CMS,开发者只要给客户一个软件包,然后你安装配置好,就可以定期更新数据来维护网站,节省了大量的人力和物力。

常见的CMS有dedecms(织梦),discuz,phpweb,phpwind,phpcms,ecshop,dvbbs,siteweaver,aspcms,帝国,zblog,wordpress等。

 代表的工具有御剑 web 指纹识别,whatweb,WebRobot,椰树,轻量WEB指纹识别等,可以快速识别一些主流CMS。如图1-8所示。

图片7.png 

图1-8 CMS扫描工具

除工具以外,还有一些在线网站也可以查询CMS指纹识别。

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

云悉指纹:http://www.yunsee.cn/finger.html

Whatweb: https://whatweb.net/

0X05 查找真实IP

在渗透测试过程中,我们的目标服务器可能只有一个域名,那么如何通过这个域名来确定目标服务器的真实IP对于渗透测试来讲就显得很重要。如果目标服务器不存在CDN,我们可以直接通过www.ip138.com来获取到目标的一些IP及域名信息。这里主要讲如何绕过CDN来寻找目标服务器真实IP。

目标服务器存在CDN

 CDN即内容分发网络,主要是为了解决传输距离和不同运营商节点处所带来的网络速度性能低下的问题,说简单点就是一组在不同运营商之间的对接节点上的一组高速缓存服务器,把用户经常要访问的一些静态数据资源,例如:静态的html,css,js图片等文件,直接缓存到节点服务器上,当用户再次请求的时候,直接分发到在离用户近的节点服务器上响应给用户,当用户有实际数据交互的时才会现从远程web服务器上响应,这样可以大大提高网站的响应速度以及用户体验。

所以如果渗透目标购买了cdn服务,我们直接ping目标的域名的话,我们得到的并非真正的目标web服务器,而只是离我们最近的一台目标节点的cdn服务器,这也就导致了我们没法直接得到目标真实的ip段范围。

(1)判断目标是否使用了CDN

通常我们可以ping下目标主域,观察域名的解析情况,来判断是否使用了CDN,如图1-9所示。

图片8.png 

图1-9 ping域名

还可以通过在线网站17CE(https://www.17ce.com)进行全国多地区ping服务器,通过在每个地区ping的IP结果,看这些IP是否一致,如果都是一样的,极大可能不存在cdn。如果这些IP大多都不太一样或者规律性很强,可以尝试查询这些IP的归属地,来判断是否存在CDN。

(2)绕过CDN找真实IP

在确认了目标确实用了cdn以后,就需要绕过cdn来找目标真实ip,下面介绍一些常规的方法。

A.内部邮箱源。一般的邮件系统很多都是在内部,没有经过CDN的解析,通过目标网站用户注册或者rss 订阅功能,查看邮件,寻找邮件头中的邮件服务器域名ip,ping下这个邮件服务器的域名,就可以获得目标真实ip(这里要注意,必须是目标自己的邮件服务器,第三方或者公共邮件服务器是没有用的)。

B.扫描网站测试文件。如:phpinfo,test 等测试文件,从而判断真实IP。

C.分站域名。很多网站主站的访问量会比较大。所以主站都是挂CDN的,但是分站可能就没有挂CDN,可以通过ping二级域名来获取分站IP,可能会出现分站和主站不是同一个IP但很大可能是在同一个C段下面,从而判断出目标的真实ip段。

D.国外访问。国内的CDN往往只会针对国内用户访问加速,而国外就不一定了。因此通过国外在线代理网站App Synthetic Monitor(https://asm.ca.com/en/ping.php)访问,可能就能得到真实的IP。如图图1-10所示。

图片9.png 

图1-10国外访问

E.查询域名的解析记录。也许目标很久以前并没有用过cdn,所以可以通过网站NETCRAFT(https://www.netcraft.com/)来观察域名ip历史记录,也可以大致分析出目标的真实ip段。

F.如果目标网站有自己的app,可以尝试利用fiddler或burpsuite抓取app的请求,从里面找到目标的真实ip。

G.绕过CloudFlare CDN查找真实IP。现在很多网站都使用CloudFlare提供的CDN服务,我们在确定了目标网站使用CDN后可以先行尝试通过在线网站CloudFlareWatch(http://www.crimeflare.us/cfs.html#box),对CloudFlare客户网站进行真实IP查询,如图1-11所示结果。

图片10.png 

1-11 查询CloudFlare真实IP

(3)验证获取的IP

找到目标真实ip以后,如何来验证其结果的真实性呢?如果是web,最简单的方法,可直接尝试用ip访问,看看响应的页面是不是和访问域名返回的一样,或者在目标段比较大的情况下,借助类似masscan的工具批扫描对应ip段中所有开了80,443,8080端口的ip,然后逐个尝试ip访问,观察响应结果是否为目标站点。

0X06 敏感目录文件收集

在渗透测试中,探测Web目录结构和隐藏的敏感文件是必不可少的一个环节,可以获取到网站的后台管理页面文件上传界面甚至可能扫描出网站的源代码。

针对网站目录扫描主要有DirBuster、御剑后台扫描珍藏版、wwwscan、spinder.py(轻量快速单文件目录后台扫描),sensitivefilescan(轻量快速单文件目录后台扫描),weakfilescan(轻量快速单文件目录后台扫描)等工具。这里简单讲解下DirBuster。

DirBuster是OWASP开发的一款基于java编写的专门用于探测Web服务器的目录和影藏文件。因为是java编写,所以安装时需要JAVA运行环境(JRE)。该工具纯图形化界面,用法相对比较简单,使用基本步骤如下。

(1)在Target URL输入框输入要扫描的网址,扫描时的请求方法选择Auto Switch。

(2)设置线程,推荐20-30之间,太大了容易把网站扫死。

(3)选择扫描类型,如果使用个人字典扫描,选择List based brute force。

(4)点击Browse选择字典,可以选择工具自带的字典,也可以选择自己的字典.

(5)在Select Starting Options中选择URL Fuzz方式进行扫描,进行fuzzing设置的时候,需要注意下,需要URL to fuzz里输入”{dir}”。这里{dir}是一个变量,用来代表字典中的每一行。如图1-12所示。

图片11.png 

图1-12 DirBuster配置信息

如果你扫的目标是 http://www.xxx.com/admin/,那你在URL to fuzz里面就要写成/admin/{dir},意思就是说在{dir}的前后可以随意拼接你想要的后缀或者目录,比如输入:/admin/{dir}.php就表示扫描admin目录下的所有php文件。

除此以外还有很多在线工具站,效果也是相当不错,这里推荐2个。

phpinfo https://phpinfo.me/bing.php

Webscanhttp://www.webscan.cc/

0X07 社会工程

社会工程是攻击“人性”弱点的过程,这种弱点是不可避免的,当使用社会工程的时候,攻击者的目标是找到一个员工,并从他口中挖掘出本应该是保密的信息。

假设我们正在对一家公司进行渗透测试,在收集目标的真实IP阶段,我们就可以利用收集到这家公司某个销售人员的电子邮箱,对他发送邮件,假装对某个产品很有兴趣,很显然销售人员会对邮件进行回复。这样我们就可以通过分析邮件头来收集到这家公司的真实IP地址以及内部电子邮件服务器的相关信息。

我们通过进一步的社工,假设现在已经收集到了目标人物的邮箱、QQ、电话号码、姓名、以及域名服务商,然后通过爆破或者撞库的方法获取到邮箱的密码,这个时候我们就可以来社工域服务商客服人员,冒充目标人物的身份要求协助重置域管理密码,运气好的话,技术人员会帮你重置密码,从而拿下域管理控制台,然后做域劫持。

除此以外还可以利用社工库查询,“社工库”是运用社会工程学进行攻击的时候积累的各方面数据的结构化数据库。这个数据库里有大量信息,甚至可以找到每个人的各种行为记录,比如酒店开房记录、个人身份证、姓名和电话号码。利用我们收集到的邮箱,可以在社工库查找到是否有出现泄漏密码以及通过搜索引擎搜索到社交账号等信息,然后通过社交和社工得到的信息构造成密码字典,然后对目标邮箱和OA账号进行爆破或者撞裤。如图1-13所示。

图片12.png 

图1-13 社工库


  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务