目标侦察是对目标网络进行正式测试或攻击之前就开始的动作。目标侦察的结果将使我们了解哪些地方可能需要额外的侦察活动,或者发现在利用阶段可能具有利用价值的漏洞。通常根据与目标网络或设备的互动等级来划分侦察活动级别。
被动侦察不涉及与目标网络进行任何恶意、直接的交互。攻击者的源IP地址和行为不会被目标系统记录下来(例如,通过谷歌搜索目标电子邮件地址不会留下可被目标发现的痕迹)。被侦察目标很难将被动侦察行为与正常业务行为区分开来,但这并非不可能。
被动侦察又进一步分为直接和间接两类。直接被动侦察是指在攻击者预期与目标交互时发生的正常互动行为。例如,攻击者可能会登录企业网站、查看各种页面并下载文件以便进一步研究。这些交互行为是预期的用户活动,很少作为对目标的攻击前奏被检测。在间接被动侦察中,基本上没有与目标组织的互动行为。
与此相反的是,主动侦察包括直接查询或其他交互行为(例如,对目标网络的端口扫描),可以触发系统警报或允许目标系统捕获攻击者的IP地址和行为活动。这些信息可以用来识别和逮捕攻击者,或在法律诉讼中使用。因此,被动侦察的风险要小得多,但与其积极效果一样,也有其局限性。
渗透测试人员或攻击者通常遵循结构化的信息收集过程,覆盖从较大的领域(如业务和监管环境)到非常具体的事项(如用户账户数据)。
为了更有效,在开始信息收集之前测试人员应该确切地知道他们在寻找什么以及收集的信息将如何被使用。使用被动侦察和限制收集的数据量可以最大限度地减少被目标发现的风险。
渗透测试或攻击的第一步是使用OSINT收集信息。这是一种通过公开资源,特别是互联网收集信息的艺术。可用信息量是非常庞大的——大多数情报和军事组织都在积极开展OSINT活动收集有关目标的信息,并用于预防数据泄露。
OSINT可以分为两种类型:进攻性的和防御性的。进攻性OSINT是指收集攻击某个目标所需的所有数据,而防御性OSINT是指收集与历史攻击和其他安全事件有关的目标的信息,这些信息可以用来防御或保护自己。图2.1描述了OSINT基础思维导图。
图2.1 OSINT基础思维导图
收集信息的目标取决于渗透测试的最初目的。例如,如果测试人员想要访问个人健康档案,他们将需要相关方(包括第三方保险公司、医疗机构、企业IT运营负责人、商业供应商等)的姓名和履历信息、用户名、密码。如果攻击路径涉及社会工程,他们可能会补充相关信息的细节,使所需的信息更具可信度,例如:
• 域名 。在对外场景中,攻击者或渗透测试人员识别目标都是通过域名开始的,这是OSINT最关键的元素:
■ 子域名 。子域名属于主域名的一部分,例如,如果目标使用的域名是sample.com,它可能使用demo.sample.com、producton.sample.com、ecommerce.sample.com等域名。识别这些域名将为攻击者提供更广泛的资产,以便在侦察阶段进行评估。
■ DNS记录 。在今天的网络世界中,一切皆可联网。这意味着每个连接到互联网的设备都会分配一个唯一的IP地址。同样,DNS记录是分配给特定IP地址的一个人性化名称列表,例如,demo.sample.com被转换成格式为104.×.×.243的IP地址。DNS记录包括A记录(主机名到IP的映射)、NS记录(域名解析服务器)、CNAME(规范化名称)、MX记录(邮件交换)、AAAA记录(DNS记录到IPv6的映射)、SRV记录(服务记录)、TXT记录(文本记录)和PTR记录(指针记录,与A记录相反)。所有这些不仅为攻击者提供了与DNS有关的详细信息,还提供了其他各种各样的信息,如运行的服务类型,后续可被攻击者利用制定攻击策略。
■ 邮件交换记录 。虽然我们可以从DNS记录中找到MX记录,但识别邮件交换记录会被认为是完全不同的枚举方法,因为大多数时候它们涉及提供邮件投递服务的第三方,这有可能被攻击者利用邮件中继中的SMTP功能来发送大量的电子邮件。
• DNS侦察和路由映射 :一旦测试人员确认目标在线并包含感兴趣的内容,下一步就是确定目标IP地址和路由。DNS侦察重点关注谁拥有特定域名或一系列IP地址(如whois信息,尽管这在《通用数据保护条例》出台之后有很大改观),分配给目标实际域名和IP地址的DNS信息,以及渗透测试人员或攻击者与目标之间的路由。
这种信息收集是半主动性的——有些信息可以免费获得,而其他信息需要从第三方获得,如DNS注册服务商。尽管注册服务商可能会收集IP地址和攻击者请求的有关数据,但很少提供给最终目标。可由目标直接监控的信息,如DNS服务器日志,几乎从未被审查或留存。由于所需信息可通过可被定义的系统化、条理化方式进行查询,因此其收集是可以自动化的。
在接下来的章节中,我们将讨论如何通过预装在Kali Linux中的简单工具来轻松枚举所有域名。
我们将使用sublist3r工具来进行域名采集。这个工具没有预装在Kali Linux中,但是通过在终端运行sudo apt install sublist3r命令即可安装。这个工具使用Python编写,它使用OSINT技术枚举主域名的所有子域名。它利用搜索引擎,如谷歌、必应、百度和ASK等API。此外,它还通过NetCraft、VirusTotal、Threatcrowd、DNSDumpster和ReverseDNS等工具进行搜索,同时还使用特定字典进行DNS爆破。
成功安装该工具后,攻击者可以执行sudo sublist3r-d ourtargetcompany.com-t 3-e bing命令来利用必应搜索子域名,以packtpub.com为例,如图2.2所示。
图2.2 使用sublist3r通过Bing API收集packtpub.com子域名
如果遇到VirusTotal阻止请求的错误信息,可通过执行export VT_APIKEY=yourapikey命令来添加你自己的API key解决。API key可通过注册virustotal.com账户生成。
Maltego是支持个人和组织进行侦察最强大的OSINT框架之一。它是一个GUI工具,通过各种方法提取互联网上公开的资料来收集个人信息,如电子邮件地址、URL、社交媒体网络个人资料以及不同个体之间的关系。它也可以枚举DNS,进行DNS暴力攻击,并以易读的格式收集社交媒体数据。
我们可以通过开发可视化工具利用所收集的数据。社区版本Maltego 4.2.17是预装在Kali Linux中的。其访问的最简单方法是在终端输入maltego。Maltego中的任务被称为转换。转换是内置在工具中的,被定义为执行特定任务的脚本。
Maltego也有多个可用的插件,如SensePost工具箱、Shodan、VirusTotal和ThreatMiner。
使用Maltego开展OSINT的步骤如下:
1)为了使用Maltego,你需要访问https://www.maltego.com/ce-registration/网站创建一个账户。账户创建成功后就可以登录Maltego,登录后程序界面如图2.3所示。
图2.3 Maltego启动界面
2)在单击Maltego CE(Free)下的Run按钮、同意用户协议和条款、安装变换、选择浏览器选项(隐私模式)并单击Ready后,我们就可以使用社区版的转换功能了,不过能够免费使用的数量是有限的。
3)转换节点是Maltego客户端为了允许用户轻松安装来自不同服务提供商的转换而设计的,包括商用版和社区版转换。
4)一旦一切就绪,就可以准备使用Maltego了;通过菜单导航到Machines并单击Run Machine即可完成Machine创建,然后就可以启动Maltego引擎实例了,如图2.4所示。
图2.4 在Maltego中运行Machine
运行Machine后,通常会出现以下选项:
• Company Stalker :检索与域名相关的所有电子邮件地址,然后查看其在社交网站上的条目,如领英。它还通过过滤特定目标域名从互联网公开文档中下载和提取元数据。
• Find Wikipedia edits :从维基百科编辑中寻找细节,并且在所有社交媒体平台上进行搜索。
• Footprint L1 :执行域名的基本足迹。
• Footprint L2 :执行域名的中级足迹。
• Footprint L3 :对域名进行非常深入的探究,通常要小心使用,因为它在Kali Linux上运行将消耗大量内存资源。
• Footprint XML :适用于大型目标,如某企业的托管数据中心,并试图通过查看发件人策略框架(SPF)记录希望获得的网段以及域名服务器的DNS反向解析来获取足迹。
• Person-Email Address :用来获取个人电子邮件地址并查看其在互联网上的使用情况。这里的输入不是域名,而是完整的电子邮件地址。
• Prune Leaf entries :通过提供选项删除网络的一部分来过滤信息。
• Twitter digger X :分析推文中的别名。
• Twitter digger Y :基于推特联盟工作,查找推特、提取并进行分析。
• Twitter Monitor :基于特定的词组监测Twitter标签和命名实体,其输入是一个短语。
• URL to Network and Domain Information :识别其他顶级域(TLD)信息。例如,如果你提供www.cyberhia.com作为输入,它将识别出www.cyberhia.co.uk和cyberhia.co.in等其他顶级域名。
攻击者从Footprint L1开始获得对潜在可利用的域名和子域名以及相关IP地址的基本了解。作为信息收集的一部分,由此开始是一种不错的实践,但是,攻击者也可以利用前面提到的其他所有机器来达成目标。一旦选择了机器,单击下一步并指定域名,例如cyberhia.com。图2.5展示了域名cyberhia.com的总览。
图2.5 Maltego针对cyberhia.com执行Footprint L1的结果仪表盘
OSRFramework是一个由i3visio设计用于执行开源情报计划的工具,它提供Web界面的管理控制台OSRFConsole。要安装这个框架,请首先在终端执行sudo apt install python3-pip命令安装pip3。最后,通过在同一终端执行pip3命令sudo pip3 install osrframework即可直接安装OSRFramework工具。
OSRFramework提供了基于多种来源的关键词的威胁情报,还提供了单机版工具的灵活性,或者作为Maltego的插件。OSRFramework提供了三个便于使用的模块,渗透测试人员可以用它们来收集外部威胁情报数据。
• usufy :用于多搜索引擎搜索、识别URL中的关键字,并自动列举和CSV格式存储所有结果。如下是将cyberhia作为usufy关键词输出:
• mailfy :通过API调用在haveibeenpawned.com自动搜索,识别关键词并将邮件域添加到关键词末尾。
• searchfy :在Facebook、GitHub、Instagram、Twitter和YouTube中搜索关键词。测试人员可以在终端执行searchfy-q“cyberhia”命令,将cyberhia作为searchfy的查询关键词,如图2.6所示。
图2.6 searchfy以cyberhia作为关键词的输出
当某样东西从互联网上被删除时,它不一定在任何地方都完全删除。被谷歌访问的每一个页面都会作为快照备份在谷歌缓存服务器中。通常情况下,这些缓存服务器的目的是基于你的搜索提供最好的可用性。
攻击者可以利用同样的技术来收集给定目标的信息。例如,假设某被攻击数据库的详情被发布在sampledatadumpwebsite.com上,并且该网站或链接从互联网上被删除。
如果该页面曾被谷歌访问过,这些信息可以作为攻击者的重要信息来源,包括用户名、密码哈希、使用的后台类型以及其他相关的技术和策略信息。
Wayback Machine项目维护着互联网网页的数字档案。获取历史数据时,排在谷歌缓存之后第二使用的是https://web.archive.org/。图2.7显示了Wayback Machine中截至2018年3月24日cyberhia.com的快照。
图2.7 截至2018年3月24日cyberhia.com的快照
谷歌缓存、Wayback Machine项目以及任何特定域名的存活版本都可以通过浏览https://cachedviews.com/直接访问。
RiskIQ的Passive Total是针对任何特定目标域名提供OSINT能力的另一个平台。它同时提供商用版和社区版(https://community.riskiq.com/)。攻击者可以通过该网站枚举目标相关的信息,如DNS和IP地址、证书信息,以及特定子域名的变更频率。
图2.8展示了关于cyberhia.com的详细信息。
图2.8 Passive Total搜索cyberhia.com的结果
我们将在2.5节中更深入地讨论谷歌比较隐蔽的一面。