渗透测试教程:如何侦查目标以及收集信息?

发表于:2018-2-01 11:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:xnianq    来源:嘶吼

  导语
  在黑客进行攻击时,收集信息是一个很重要的步骤。这里的收集信息不光是指寻找一个公司的子域名,还指寻找一些和这个公司正在使用应用有关的配置信息。在这篇文章中,会介绍不同的方法以及使用多种工具的组合去挖掘子域名,内部资源,公司使用的应用、私钥、以及API端点,或者文件以及目录结构。收集尽可能多的信息,这样可以给我增加更大的攻击面,帮助我们找到更多的漏洞
  爆破子域名
  比较传统的方法,大多数黑客都会使用类似于sublist3r,knockpy,或者enumall这种工具基于字典去爆破目标的子域名。这种方法对于大多数情况都是有效的,但是我还是相信这种方法还可以进行优化。一旦我们开始子域名爆破,我们会发现这个公司是如何设置子域名的,然后进而通过这种规律生成独特的字典进而更有效的爆破这个公司更低一级的域名。举个例子,如果这个公司使用’dashboard.dev.hackme.tld’这样的域名,我们应该进一步爆破dev后面的三级域名。这样也许我们会碰到一些防护相对薄弱的站点。
  这一方法同样可以使用在internal二级域名后面,这样可以更多的发现公司内部的更多信息,以便我们拓展攻击面。
  通过github收集信息
  github可以成为收集目标基础设施信息的好工具。我们可以通过简单的搜索目标公司的域名或者公司名称,去寻找github上被上传的文件,或者一些文档。我们同样可以根据第一次搜索的信息进一步搜索更详细的信息。举个例子,如果我们在搜索’hackme.tld’,并且找到他们正在使用JIRA或者企业vpn这样的应用软件,这就意味着我们可以重点放在’us.hackme.tld’这一个域名上了,下一步就是对这一域名的三级域名进行暴力枚举。
  github也是寻找个人信息以及API私钥的好地方。这里最困难的地方就是在构造搜索关键字时,一定要变得灵活。以下是我在github寻找经常使用的关键字:
  “Hackme.tld” API_key
  “Hackme.tld” secret_key
  “Hackme.tld” aws_key
  “Hackme.tld” Password 
  “Hackme.tld” FTP
  “Hackme.tld” login 
  “Hackme.tld” github_token
  我们同样可以在github上寻找子域名的更多信息以及目录。我就只是通过搜索'api.hackme.tld',以及分析几年前他们提交的旧文件,就分析出了他们使用的旧的API断点。有大量的工具是可以自动化搜索这些信息的,不过我还是喜欢手动的去挖掘,因为通过审计搜索出来的文件,也许会有意外的收获,即使大多是搜索的信息都是没有用的。
  这样看起来通过github收集信息是一个不错的主意,但是有些事情上可能会出现错误:
  我们可能只是发现了第三方服务,而不在目标管辖范围之内,同样我们可能还会发现一个不正确的密钥,甚至这个密钥是故意放在github上面的。
  所以如果你找到的内容实在公司范围内的,那确实是很棒。
  亚马逊web服务(AWS)
  aws已经成为数千家不同公司的巨大财富。一些公司只是使用aws去保存他们的文件内容,不过其他公司会在上面部署他们的应用程序。当然这就可能会产生一些漏洞,因为aws也可能出现配置错误。举个例子,通常配置错误的s3会允许外部用户在属于该公司的内部存储区中写入文件。
  这就会有很多方法去发现这种错误配置:
  1. 使用google语法去寻找:site:s3.amazonaws.com + hackme.tld
  2. 在github上寻找:"hackme.tld" + "s3"
  3. 可以对AWS进行爆破,进而自动化去寻找这样的配置
  Lazys3就是基于第三种方法进行开发的,这一工具使用常见的s3存储区列表产生不同的模式和排列,通过判断返回包状态,如果不是返回404,则就判断存在漏洞。举个例子,如果我们正在搜索hackme.tld域名下是否有存在s3存储区漏洞的主机,这一工具就会对字典中每一个内容进行测试,然后返回他们的状态码,200或者403。
  对aws进行暴力破解进而寻找不同的应用程序会对我们的攻击面进行拓展,但是还是会出现一些错误的:
  1. s3存储区可能并没有明确指出它属于目标公司的,它可能属于其他公司管辖。
  2. 由于第三方应用的原因,我们可能还是不成功
  3. s3存储区可能有读取权限,但是存储区的内容并没有任何敏感信息。
  所以在报告漏洞时一定要检查当前找到的漏洞是不是属于上述情况,如果是的话,很遗憾..
  主机识别
  为了使之前的收集信息的方法更加准确,我们可以使用其他主机识别的工具,比如Censys,Shodan,或者archive.org去拓展我们的攻击面。
  censys.io
  Censys在扫描Ip地址,以及收集端口信息方面做的很好。Censys通过帮助我们分析SSL证书信息,进而找到更多可以使用的工具。Censys进行搜索有很多语法,但是我个人只是想目标站点的ssl证书。举个例子,使用以下字符串进行搜索:
  443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:Yahoo.com
  可以让我们查看yahoo.com任何子域名的属性。
  我们可以像使用其他工具一样,调整Censys的搜索。这就需要发挥自己的想象了,我通过随机字符进行搜索,发现了不止一次有趣的东西,比如我搜索:"hackme.tld"+internal,出现了我从来没有见过的内容:
  Shodan.io
  Shodan和censys大部分功能还是很类似的,不过shodan可以扫描任意ip地址,以及该IP端口开放的任何端口,生成大量数据,允许用户通过ip地址的位置,组织,开放端口,运行的产品,主机名,还有很多进行过滤查找。
  比如我们想要搜索hackme.tld域中运行的使用默认端口的RabbitMQ服务,就可以进行以下搜索:"hostname:hackme.tld org:hackme ports:15672。我们还可以更换要搜索的服务名称,比如我们要寻找tomcat服务,我们可以进行以下搜索:"hostname:hackme.tld org:hackme product:tomcat"
  你可以通过阅读shodan指南获取更多信息。
  Archive.org
  archive.org是一个很好的网站去查找之前公司网站存在的旧的robots.txt,以及网站之前的版本。这样有助于我们去分析源码以及得到更多的有用的信息,比如一些被遗忘的子域名。在网站上搜索目标,然后选取比较靠前的日期,然后点击搜索就可以得到想要的结果。
  这也可以实现自动化进行,使用waybackurl.py和waybackrobots.txt,我们可以运行这一脚本,直接获取我们上述说明的信息。
  收集完JavaScript文件列表后,我们可以使用JSParser创建这些JavaScript文件的完整列表:
  结论
  收集信息不仅仅是使用工具去查找一些信息,更多的是要了解我们的目标,再使用这些工具集,结合不同的方法挖掘尽可能多的信息。这篇文章并没有涵盖对目标侦查的所有方法,但是你可以结合上述方法,添加更多自己的想法,使其变得更加有效。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号