Open Source Intelligence Gathering 101 zh_CN
开源情报收集101
原文:https://blog.appsecco.com/open-source-intelligence-gathering-101-d2861d4429e3
渗透测试几乎总是从大范围的信息收集阶段开始。本文讨论了如何使用Internet上的开源情报OSINT来构建目标的信息收集部分。收集的数据可用于识别服务器,域,版本,漏洞,错误配置,可利用的端点和敏感信息泄漏,本文仅提供学习和交流,禁止使用本文提到的技术进行非法攻击。
通过开源情报收集技术可以发现大量公开情报数据,特别是对于拥有大量外部Web应用的公司,总有一些微小的代码,一个管理员在技术论坛提出的问题,某个精心设计的技术细节,一个长期被遗忘的子域名应用,甚至包含可以用于目标站点元数据的营销材料PDF,Word,excel等。即使简单的谷歌搜索也会产生有趣的结果。以下是我们对拥有的客户端/域(无特定顺序)所做的一些开源情报收集:
1. Whois 查找
Whois查找管理员联系人和其电子邮件地址。这些电子邮件地址通常也作为应用程序上的有效用户存在。可以通过数据库泄漏或通过HaveIBeenPwned或Reg007等搜索服务搜索电子邮件地址注册或泄露信息,该服务会告诉你关于你的电子邮件是否存在违规行为。
除了电子邮件地址,whois查询还可以返回可用于社交工程攻击的IP历史信息,域过期时间甚至电话号码。
whois.domaintools.co是查询whois记录的绝佳场所
2.Google高级搜索
使用网站运营商的Google高级搜索,限制到目标域,查找php(或任何服务器端脚本文件类型),txt或log文件
site:*。example.org ext:php | ext:txt | ext:log
我们曾多次使用类似搜索查询识别出包含敏感信息和应用程序完整系统路径的有趣文件(例如日志文件)。你可以将此查询语句和减号运算符组合以排除特定搜索结果。
查找phpinfo泄露情况:
"script_filename" "HTTP Headers Information" "allow_url_fopen" ext:php
在域(子域)上搜索旧式文档。文件类型包括PDF,Excel,Word和PowerPoint。这些文档可能包含可用于其他攻击的信息。通常,文件属性中包含的文档元数据(作者姓名等)可以用作应用程序本身的有效用户名。
site:*.example.org ext:pdf | ext:DOC | ext:docx | ext:ppt | ext:pptx | ext:xls | ext:xlsx | ext:CSV
您可以在本地下载这些文件,并通过文档元数据提取程序运行它们,或查看每个文件的属性以查看泄漏的信息。
要查看可用于搜索数据的所有选项,请参阅https://www.google.co.in/advanced_search。此外,Google Hacking Database(现在在exploit-db上)允许您使用预先制作的查询来搜索Internet上特定和有趣的内容。
3.Robots.txt
检查robots.txt文件中是否有隐藏的,有趣的目录。大多数应用,框架和内容管理系统CMS都有明确定义的目录结构。所以admin目录是/ admin或/administration。robots.txt很可能包含寻找的目录名称。
4.使用公开浏览器插件
浏览HTML源代码以识别应用/ CMS /框架等。识别应用程序类型有助于将攻击集中在具有易受攻击(具有缺陷)的应用程序区域(例如插件和主题)。例如,如果查看页面源并查看wp-content,那么可以确定正在查看WordPress站点。
许多公开可用的浏览器插件也可用于识别网站框架。Firefox上的Wappalyzer在识别网站上的几种不同服务器类型,服务器和客户端框架以及第三方插件方面做得非常出色。
5.第三方供应商
通常情况,如果正在查看的网站是由第三方供应商创建的,那么很可能会在Home首页的底部看到“由第三方 - 开发者 - 支持”的变体页。
使用它来跟踪收集到承包商网站的信息,也可以获得令人难以置信的响应。浏览它可能会揭示它们构建的框架类型和版本号。作为其开发计划的一部分,承包商很可能在客户的网站上拥有测试/管理员帐户(后续移交账号之后建议修改相关信息)。
根据经验,许多网站管理员/开发人员经常使用的密码是公司名称(客户公司或承包商的公司)的变体,最后是一些带特殊字符,或不带特殊字符的数字。例如,如果承包商公司被称为“示例开发人员”,则001Example,Example001,00example,example00等是在客户网站的登录面板上尝试的良好密码候选者。
(请留意我们的下一篇文章,了解我们如何使用此技术来破坏并获取对客户端服务器的访问权限并在其上运行shell命令。)
6.查看雇佣关系
查看公司的LinkedIn个人资料,以确定高级经理,董事和非技术人员相关信息。很多时候,最薄弱的密码属于许多公司的非技术管理人员。搜索公司网站上的“关于我们”页面也可以找到目标。
基于一些电子邮件的发现,可以导出用户名的标准格式。一旦理解了用户名格式,就可以创建一个电子邮件地址和等效用户名列表,然后可以用它们来执行其他攻击,包括登录页面的暴力破解甚至利用弱密码重置功能。(不止一次,我们发现搜索电子邮件地址和可能的用户名很有用,这些用户名因使用弱密码而导致完整的应用程序和服务器泄密。)
7.IP检查
执行与IP地址相关的检查。由于托管在同一IP(共享主机)上的应用程序不尽相同,也可能会具有不同的漏洞,因此应用程序通常,会受到攻击。使用反向IP查找,您可以识别其他目标。Bing使用IP功能进行了出色的搜索。
也可以使用在你身边的人获得信号和IP地址也提供反向查找设施。
https://www.yougetsignal.com/tools/web-sites-on-web-server/
https://www.ip-address.org/reverse-lookup/reverse-ip.php
也可以在You Get Signal提供域名或IP地址。
作为使用IP地址进行检查的一部分,还必须注意域的A和PTR记录。有时由于配置错误,在使用PTR或站点的A记录时可能会访问其他站点。可以使用nslookup或dig命令获取此信息
dig -x 8.8.8.8
nslookup 8.8.8.8
8.枚举子域名
枚举子域名,以找到客户端托管基础架构的漏洞和较弱的入口点。子域枚举很容易成为评估和发现客户互联网资产的最重要步骤之一;作为其业务风险的一部分。
子域枚举可以使用各种工具完成,例如dnsrecon,subbrute,knock.py,使用Google的网站运营商或dnsdumpster甚至virustotal.com等网站。大多数这些工具使用大型常用爆破词典,如管理员,页面,人员,时间,下载,博客,开发,登陆等。这些单词附加到主域 - example.org,以创建可能的子列表域名,如admin.example.org,pages.example.org,people.example.org等。然后可以针对DNS服务器检查这些名称中的每一个,以验证条目是否存在。
9.HTTP请求和响应
查找不同类型资源请求的HTTP状态代码和响应头。对于有效页面,对于不存在的页面,对于重定向的页面,对于目录名称等都会有不一样的响应结果。在响应头中查找细微的拼写错误,额外空格和冗余值。
标题开头的额外空格使标题本身无效。
另外,请注意CSP标头。它们包含允许脚本加载的域名和来源。有时,CSP标头中列出的域名中的拼写错误或托管CDN信息。
10.开源资产搜索引擎
通过Shodan和Censys搜索客户端的域名,以查找文件,IP地址,公开的服务和错误消息。在好乡亲初段和censys有精心端口扫描上网,列举服务和分类,他们的发现使他们与检索关键字简单。这两项服务都可以用来发现大量有趣的东西,包括开放式摄像机,思科设备,医院设施管理服务器,弱配置的telnet和snmp服务以及SCADA系统。过去曾使用Censys来查找托管源代码和完整应用程序的整个docker镜像的有趣端点。
11.代码托管
在代码托管服务上查找客户端,如github,gitlab,bitbucket等。通过可搜索的在线托管代码存储库的代码中可以找到各种有趣的东西,包括Web漏洞,Web应用程序中的0days,配置问题AWS和其他密钥。
- 推荐阅读:https://michenriksen.com/blog/gitrob-putting-the-open-source-in-osint/
- 推荐阅读:https://www.itnews.com.au/news/aws-urges-developers-to-scrub-github-of-secret-keys-375785
- 推荐阅读:https://news.ycombinator.com/item?id=7411927
开发人员经常使用生产密码或API访问密钥提交代码,以便稍后实现和删除敏感信息并进行其他提交。但是,从提交日志可以找出特定提交记录,我们可以检索这些敏感信息,然后使用这些信息对客户端的托管基础架构发起攻击。
像Gitrob这样的工具可用于查询Github并从命令行本身搜索特定组织的敏感文件。
12.HTML源
浏览站点的HTML源以识别是否在云上托管任何静态内容。类似image,js和css文件这样的内容可能托管在客户端拥有的亚马逊s3库。在执行侦察时也可以识别客户端是否使用云来托管静态/动态内容。在这种情况下,如果客户端在S3 仓库上存在错误配置,那么查找客户端使用的代码存储库可能会非常有益。
- 推荐阅读:在面向公众的水桶中可以找到大量有趣的信息。
像DigiNinja的Bucket Finder这样的工具可用于通指定代码存储库的名称来进行自动化发现。此工具需要精心策划的代码存储库名爆破库和潜在的完整URL才能生效。
代码库私有云不会泄露文件和资源
公有代码库显示文件和资源名称
然后可以使用完整URL下载这些文件。
OSINT本身就是一个不断发展和不断增强的研究领域。使用我上面列出的方法和其他方法可以构建目标的配置文件并揭示目标存在的一些弱点,有时甚至可以从不存在的系统中发送单个数据包。
现在开源情报收集101这篇文章告一段落,如果经常使用的技术产生了有趣的结果,并且你想分享这些技巧,可以直接回复评论。
Now, Happy Hacking!