掌握你的边界与攻击面
注意:本文最初于2020年7月发布在我的网站infosecamateur.com上。在Twitter上关注我@mconnarty!
组织使用大量产品和方法试图实现“安全”,包括设备日志监控、渗透测试服务、端点保护工具、漏洞扫描器等。然而,有点像令人沮丧的说法“东西总是在你最后找的地方”,漏洞往往出现在你最不安全的环节——通常是你根本不知道的地方。
在这篇文章中,我想谈谈我认为被略微忽视的一点——也许是因为任务的规模,即人们真正理解他们的边界/攻击面。
像Mitre的Att&ck框架和洛克希德·马丁网络杀伤链等威胁模型以及各种信息表明,侦察是众所周知和理解的。渗透测试员完全能够进行黑盒侦察,但根据我的经验,他们经常从事范围广泛但浅显(简单且有时无效的漏洞扫描)或范围狭窄且专注于特定服务的任务。此外,侦察必须是一个持续的过程,以捕捉任何新风险。
作为网络防御者,我想了解我所保护网络的弱点,这意味着我喜欢进行一些基本侦察,记录暴露的内容,检查我发现的任何服务的补丁状态,并对我发现的内容持批判态度。然后可以将其添加到任何现有漏洞扫描/监控范围中。理想情况下,这应该是一个更严格和定期完成的事情。
我常做的事情
子域名枚举
除了暴力破解子域名,我会使用SecurityTrails.com等网络工具或仅使用Google来识别子域名。https://securitytrails.com/blog/subdomain-scanner-find-subdomains是一篇很好的博客文章,重点介绍了一些可用于此目的的工具和技术。
一些子域名可能强烈暗示其用途。例如,webmail.company[.]com可能指向一个OWA(Outlook Web Access)实例。其他可能更难确定,可能需要调查DNS服务器/反向代理/负载均衡器以确定内部IP。
通常,我会将其放入地址栏并尝试通过http和https访问,但这种方法有明显的缺点。如果不是Web服务,查看暴露的端口可能会揭示其身份;如果是Web服务,你可能不知道发布的特定目录,例如web2.company.com/unknown_directory/。
版本分析
如果你能连接到暴露的服务,那么识别运行的版本通常是我的下一步。许多漏洞扫描工具能够识别过时的版本,识别服务可能意味着将其纳入常规扫描范围。为了快速获胜,我常发现版本的常见位置包括:
-
对于Web服务:
- 网页本身可能明确显示在某个地方,通常在页面顶部或底部。
- 在源代码中,这可能明确列出,但通常可在导入的脚本或命名约定中识别(例如web2.company.com/site/js_source_4.42.6.js)。
- 在HTTP头中——使用开发者控制台或CURL -v(详细模式)。版本可能列在HTTP响应的字段中。
- 对徽标进行反向图像搜索——有时Web应用难以识别,你可能只看到一个带有徽标的登录框,对徽标进行反向图像搜索可以给你线索。
-
其他服务:
- 获取横幅:
nmap -v(对此持保留态度!)
- 获取横幅:
知道版本后,CVEDetails.com可以突出显示任何值得关注且可能需要立即关注的漏洞。此外,某些版本可能接近或已过EOL(生命周期结束),因此风险可能不会立即显现,但如果无法更新,则需要密切监控。
Google和其他搜索引擎可以是一个很好的起点,揭示对手有用的各种信息。这可能包括从社会工程学角度有用的信息(这可能是另一篇博客文章的主题),但其他信息也可以收集到。
-
服务:例如,“login site:company.com”及其变体可以揭示任何可能未知的登录页面。尝试其他词如vpn、admin等。Google Dorks有详细记录,值得浏览一些。https://www.exploit-db.com/google-hacking-database
-
信息泄露:通常人们可能尝试解决问题时会询问论坛,并可能粘贴配置细节以获取答案。这里的信息可能包括内部命名结构、可能的凭据以及组织中使用的技术类型,所有这些都为获得网络访问权限的人提供了优势。
Shodan
Shodan.io可用于识别任何可能开放的服务和端口,并可以突出显示任何已知漏洞。这些端口在大型组织中可能非常动态,因此建议在现有定期漏洞扫描之外进行持续监控(可能使用Shodan Monitor)。
Shodan有一些缺点:
- IP范围必须众所周知,大型组织通常拥有多个网络块,重要的是记住本地站点IP以及其他可能未知的IP(某人设置本地未知宽带线路并将其连接到网络)。有时在Shodan中搜索公司名称或证书详细信息(如序列号)可以揭示其他IP地址。
- Shodan只会告诉你从它观察到开放的端口报告的服务上存在的漏洞。例如,如果在端口443和80上运行IIS 6并托管多个Web应用程序,Shodan将报告易受攻击的IIS版本,但不会报告这些端口上可能运行的Web应用程序的任何信息。它也无法报告反向代理后面的任何内容的漏洞状态。
邮件
来自组织的邮件可以揭示有用信息,正文和签名块有助于理解一些内部策略,而邮件头可以揭示内部服务器名称和IP地址。关于邮件路由的信息在邮件到达收件人的过程中被添加到邮件头中,每次新信息添加到邮件头顶部。如果内部服务器名称似乎遵循结构,例如“ml1.lon.int.companyx.com”——我们可以推测:
- 服务器名称“ml1”表示邮件服务器,因此域控制器可能是DC1。
- “lon”可能表示地理结构。
- “int”可能表示这是基础设施的内部部分,但也是我们枚举的另一个子域名。
- “companyx.com”可能是我们枚举中未考虑的另一个域名。
了解命名约定可以让你进行有根据的猜测以定位服务,这对攻击者在任何成功入侵后非常有用。
DNS
除了DNS配置错误(如允许外部区域传输)之外,组织的DNS记录可以揭示大量有用信息。有多种工具如DNSRecon可以协助这一点,https://dnsdumpster.com/footprinting-reconnaissance/深入探讨了这一点,并强调这是一个迭代过程,一次搜索的结果可以馈送到下一次。
总结
我简要介绍了一些可以做的事情,以初步了解暴露的内容。理解边界风险应该是构建组织安全策略的主要组成部分。监控设备、定期打补丁、与网络隔离(你对DMZ有多自信?)并在可能的情况下移除。侦察应该是定期的,你越早识别意外发布到互联网的服务,它被利用的可能性就越小。