原文:
annas-archive.org/md5/615b11106b3e7a60eb3c9636d32097a1
译者:飞龙
第一章:1 道德黑客入门
加入我们在 Discord 上的书籍社区
packt.link/SecNet
https://github.com/OpenDocCN/freelearn-kali-pt2-zh/raw/master/docs/ult-kali-bk-3e/img/file0.png网络安全是世界上最令人兴奋且发展迅速的领域之一。每天,安全专业人员和研究人员都在以越来越快的速度发现新的、出现的威胁,许多组织也发现他们的系统和网络被恶意行为者侵入,而许多公司却没有适当的网络防御来检测威胁并判断其资产是否受到侵害。由于全球范围内网络攻击和威胁的增加,许多组织正在创造更多与网络安全相关的职位,寻求获得行业专家和技术人员,以帮助提升其网络防御并保护资产免受网络犯罪分子的攻击。本书旨在为有志成为道德黑客和渗透测试人员的网络安全行业从业者提供必要的技能、知识和智慧。在本书的过程中,您将掌握新技能并学习技术,模拟现实世界中的网络攻击,作为一名网络安全专业人员,旨在发现组织中潜在的安全漏洞,同时了解真实攻击者用来妥协目标的战术、技术和程序(TTPs)。此外,您还将学习如何利用网络安全行业中最流行的 Linux 发行版之一——Kali Linux,对目标系统和网络基础设施进行道德黑客和渗透测试评估。Kali Linux 操作系统预装了大量 Linux 软件包(应用程序)和安全工具,这些工具通常被行业专家使用,因此它是一个集成了您作为道德黑客和渗透测试人员所需的一切的武器库。在本书中,我们将采用以学生为中心、对学习者友好的方法,结合大量的实用和动手练习,帮助您从初学者逐渐过渡到中级,再到高级主题。在本章中,您将学习到各种类型的威胁行为者,以及他们攻击目标背后的动机和意图。此外,您还将了解在攻击者策划网络攻击时,如何通过各种关键因素来决定攻击的复杂性,并与雇佣的网络安全专业人员(如道德黑客和渗透测试人员)对比,他们的任务是发现公司中潜在的安全漏洞。接下来,您将了解道德黑客和渗透测试的各个阶段,以及行业专家常用的渗透测试方法。最后,您将深入理解网络杀伤链框架如何帮助网络安全专业人员更好地理解网络攻击,以及如何将每个阶段与渗透测试技术对接。在本章中,我们将覆盖以下主题:
-
理解网络安全的必要性
-
理解威胁行为者关心的事项
-
探索渗透测试的重要性
-
发现渗透测试的方法
-
探索渗透测试的方法论
-
理解网络攻击链
我希望你和我一样,激动不已地开始这段精彩的旅程。让我们深入了解吧!
理解网络安全的必要性
网络安全专注于保护系统、网络和组织免受旨在造成损害或伤害的专门攻击和威胁,这些网络犯罪分子通常被称为威胁行为者。随着时间的推移,越来越多的用户和组织将他们的系统和网络连接到全球最大的网络——互联网,而网络犯罪分子也在不断发展新的策略,从潜在受害者那里窃取资金。例如,许多网络犯罪分子正在开发更为复杂的威胁,例如勒索软件,这是一种加密恶意软件,旨在加密受害者系统中的所有数据,除了主操作系统。其目的是加密受害者在受感染系统中的最有价值资产——存储在本地存储介质上的数据,并要求支付以加密货币形式的赎金,以获取解密密钥恢复数据。勒索软件在受感染系统上停留的时间越长,勒索软件代理就越有可能建立与一个或多个由网络犯罪分子拥有和管理的指挥与控制(C2)服务器的通信通道,以接收更新和额外指令。威胁行为者可以向勒索软件代理推送更新,频繁更新用于加密受害者数据的加密密钥,从而降低受害者安全恢复数据的可能性。在此期间,威胁行为者还在将受害者系统上的数据窃取并出售到暗网的各种市场,卖给出价最高的买家。网络犯罪分子很聪明,他们非常清楚组织知道存储在其计算机和服务器上的数据的价值,并会不惜一切代价尽快恢复这些数据。
重要提示
勒索软件有能力危及与感染系统连接的各种云存储中的数据。例如,假设某用户的系统运行着一个云存储代理程序,以确保用户的数据始终同步。如果系统感染了勒索软件,感染将加密本地存储驱动器上的所有数据,包括那些已同步到云服务提供商平台的数据。然而,许多云存储提供商已内置防护措施,以应对此类威胁。
从网络安全的角度来看,不建议支付赎金,因为无法保证威胁行为者会释放加密数据,甚至提供正确的解密密钥来恢复数据。例如,世界上许多组织采取的是反应式的网络安全策略,即只有在其系统和网络受到网络攻击后才会做出反应,而不是实施缓解和对策来预防未来的威胁。然而,如果一个组织没有实施有效的网络防御措施和应急响应计划,当勒索病毒侵入网络中的一个脆弱系统时,可能会自动传播到组织内其他脆弱的系统,扩大其立足点。因此,网络威胁在网络中被遏制/隔离所花费的时间越长,造成的损害就越大。
重要说明
在本书的上一版中,Rishalin Pillay 先生提到,在他任职于微软时,他曾见识到攻击者“可能”会将解密密钥提供给受害者,但威胁行为者会 100%植入额外的恶意软件,为了更多的现金收益而回访。实际上,受攻击的组织成为了威胁行为者(攻击团体)的“摇钱树”。
因此,没有网络安全专业人员、研究人员和安全解决方案,许多组织和用户将无法避免各种类型的威胁。例如,许多银行提供在线银行系统,使客户能够执行各种类型的交易,如支付、转账等。试想一下,如果网络犯罪分子发现某银行客户登录门户存在安全漏洞,并找到了利用这一漏洞未授权访问多个客户账户的方法,窃取他们的个人身份信息(PII)并从他们的账户中转账。甚至可能利用客户数据作为未来网络攻击的新目标,故此,组织还需要保护客户数据。
识别威胁行为者及其意图
作为一名有抱负的网络安全专业人员,培养良好的道德观并理解不同类型的威胁行为者及其背后动机是非常重要的。让我们仔细看看网络安全行业中常见的几种威胁行为者类型:
- 脚本小子 – 脚本小子是一种常见的威胁行为者类型,他们不一定是年轻人或孩子。实际上,他们通常是那些没有完全理解网络安全技术细节,无法独立进行网络攻击或开发威胁的人。然而,脚本小子通常会按照真实黑客的指导或教程,执行自己的攻击,针对特定系统或网络进行攻击。
虽然你可能认为脚本小子(script kiddie)是无害的,因为他们没有必要的知识和技能,但他们通过遵循网络上恶意行为者的说明和教程,能够造成与真正黑客一样多,甚至更多的破坏。这种类型的黑客利用他们对工具的不了解来操作,从而造成更多的伤害和损害。
-
黑客激进分子(Hacktivist)– 世界各地的许多国家都有许多社会和政治议题,也有许多人和团体在这些议题上持支持或反对立场。你经常会看到抗议者组织集会、游行,甚至进行非法活动,比如破坏公共财产。有一种类型的威胁行为者,利用他们的黑客技能,执行恶意活动,以支持某种政治或社会议程。这类人通常被称为黑客激进分子。虽然有些黑客激进分子出于善意使用他们的黑客技能,但请记住,黑客行为仍然是非法的,威胁行为者可能会面临执法机构的法律追诉。
-
内部威胁(Insider)– 许多威胁行为者知道,通过互联网突破一个组织的防线是更具挑战性的,而从目标组织内部网络入手则容易得多。一些威胁行为者会伪造身份和简历,意图申请进入目标组织工作,成为员工。一旦这种类型的威胁行为者成为员工,他们将能访问内部网络,并更好地了解公司的网络架构和安全漏洞。因此,这类威胁行为者可能会在网络中植入后门,创建远程访问关键系统的途径。这类威胁行为者通常被称为内部威胁者。
-
国家支持的黑客(State-sponsored)– 这种类型的威胁行为者通常被称为国家级黑客。虽然许多国家会派遣军队去打仗,但许多战斗现在是在网络空间中进行的,这被称为网络战争。许多国家已经认识到,发展和增强网络防御是保护公民、国家资产和关键基础设施免受网络犯罪分子和其他恶意国家攻击的必要措施。因此,政府会雇佣国家支持的黑客,负责对其他国家进行侦察(情报收集),并保护自己国家免受网络攻击和威胁。有些国家会利用这种类型的威胁行为者收集其他国家的情报,甚至破坏控制公共事业或其他关键资源基础设施的系统。
-
有组织犯罪 – 在全球范围内,我们经常读到并听到许多犯罪集团和有组织犯罪团伙的新闻。在网络安全行业中,也有由一群具有相同目标的人组成的犯罪组织。该组织中的每个人通常都是专家或拥有某种专业技能,例如其中一人可能负责对目标进行广泛的侦察,另一个则负责开发高级持续性威胁(APT)。在这个有组织的犯罪团体中,通常会有一个人负责为该团体提供资金,以便购买最好的资源,确保攻击成功。这种类型的威胁行为者的意图通常很大,例如窃取目标的数据并出售以获取经济利益。
-
黑帽 – 黑帽黑客是指那些出于恶意目的使用黑客技能的威胁行为者。这些黑客可以是任何人,他们对目标系统或网络发动攻击的原因可能是随机的。有时他们可能会为了破坏目标的声誉、窃取数据,甚至只是为了个人挑战和娱乐,进行黑客攻击。
-
白帽 – 白帽黑客是行业中的“好人”。这种类型的黑客利用他们的技能帮助组织和个人保护他们的网络安全,防止恶意黑客的侵害。伦理黑客和渗透测试员就是白帽黑客的典型例子,他们以正面和道德的方式利用自己的技能帮助他人。
-
灰帽 – 这是指在白帽黑客和黑帽黑客之间游走的人。这意味着灰帽黑客拥有黑客技能,并且在白天作为网络安全专业人士帮助个人和组织,而在夜间则出于恶意目的利用这些技能。
随着新技术的不断发展,许多人总会以好奇的心态,寻找方法深入理解系统的底层技术。这常常导致他们发现设计中的安全漏洞,并最终能够利用这些漏洞进行攻击。完成本节后,你已经了解了各种威胁行为者的特点及其发动网络攻击的意图。在接下来的章节中,我们将深入了解威胁行为者关心的事项。
探索网络安全术语
在你进入网络安全领域的旅程中,你将会接触到许多常见的术语和行话,这些术语在各种研究论文、文章、文献、讨论和学习资源中经常出现。作为一名有志于从事网络安全的专业人士,了解并深入理解常见术语,以及它们与伦理黑客和渗透测试的关系是非常重要的。以下是网络安全行业中最常见的术语:
- 资产:在网络安全领域,我们通常将资产定义为对组织或个人有价值的任何事物。例如,资产是网络中的系统,可以与之互动,并可能暴露组织的网络基础设施于安全漏洞,从而可能被入侵并使网络犯罪分子获得未经授权的访问权限,同时提供一种方式将他们在受损系统中的权限从普通用户提升为管理员或 root 级权限。然而,值得提及的是,资产不仅限于技术系统,其他形式的资产还包括人员(人类)、物理安全控制,甚至是我们试图保护的网络和系统中的数据。
资产通常被分为以下几类:
- 有形资产:有形资产简单来说是指任何具有价值的实物物品,例如计算机、服务器、网络设备(路由器、交换机等)和安全设备(防火墙)。计算机和其他终端设备帮助普通用户和员工访问网络上的资源,并在组织内执行日常任务。服务器通常用于存储和托管应用程序,并提供在典型网络基础设施中所需的服务。
网络设备包含用于在系统之间转发网络流量的配置,而安全设备则用于过滤不必要的流量,防止网络和系统之间的威胁。如果这些系统和设备受到攻击,网络犯罪分子将能够将网络流量重定向到由恶意行为者控制的恶意网站,并扩展他们的操作。
-
无形资产:无形资产是没有实体形态但具有价值的事物,例如应用程序、软件许可密钥、知识产权、商业计划和模型,以及数据。
-
人员:这一类资产指的是组织的客户和员工。保护客户的数据不被盗窃并泄露到暗网,同时保障员工免受各种威胁。
识别组织的所有资产以及可能对其造成损害和破坏的潜在威胁是非常重要的。
- 威胁:在网络安全的背景下,威胁是指任何可能对系统、网络或个人造成损害的事物。无论你是在网络安全领域专注于进攻还是防御,识别各种类型的威胁都是至关重要的。全球许多组织每天都会面临不同类型的威胁,而他们的网络安全团队则日夜工作,确保公司的资产免受网络犯罪分子的侵害。
网络安全领域最激动人心、但也最令人不知所措的一方面就是行业专业人员总是需要保持比威胁行为者更领先一步,迅速发现系统、网络和应用中的安全弱点,并采取对策以减轻任何潜在威胁。
- 漏洞 – 漏洞是指在技术、物理或人类系统中存在的安全弱点或缺陷,黑客可以利用它们来未经授权地访问或控制网络中的系统。组织中常见的漏洞包括人为错误(全球范围内最大的漏洞)、设备配置错误、使用弱用户凭证、糟糕的编程实践、操作系统未打补丁、主机系统上的应用程序过时、使用默认配置等。
威胁行为者会寻找最容易利用的漏洞,例如在目标系统中最容易被攻击的漏洞。渗透测试也是如此。在安全评估过程中,渗透测试人员会使用各种技术和工具来发现漏洞,并在处理更复杂的安全缺陷之前,首先尝试利用那些简单的漏洞。
- 漏洞利用 – 漏洞利用是指用于利用系统中的安全漏洞的任何工具或代码。例如,拿起一把锤子、一块木板和一根钉子。漏洞是木板的柔软、易渗透的特性,而漏洞利用就是将钉子钉入木板的行为。一旦在目标系统上发现安全漏洞,威胁行为者或渗透测试人员将从各种在线资源中获取漏洞利用工具,或者自己开发一个可以利用安全弱点的工具。
如果你已经获取或开发了一个漏洞利用工具,那么你需要在一个系统上进行测试,确保该漏洞利用工具具有破坏目标系统的能力,并且能够按预期工作。有时候,一个漏洞利用工具可能在一个系统上有效,而在另一个系统上无效。因此,经验丰富的渗透测试人员通常会测试并确保他们的漏洞利用工具能够按预期工作,并根据其成功率对漏洞进行评分。
-
攻击 – 攻击是威胁行为者用来利用系统中的安全漏洞的方式或技术。有多种类型的攻击被网络犯罪分子广泛使用,以破坏目标系统的机密性、完整性和/或可用性。例如,LockBit 3.0 勒索软件专注于利用存在于面向互联网的系统中的安全漏洞,这些系统没有将语言设置配置为匹配特定的排除列表。该攻击通过在互联网上启动勒索软件,自动寻找并破坏易受攻击的系统。
重要说明
要了解更多关于 LockBit 3.0 勒索病毒的信息,请参见美国网络安全和基础设施安全局(CISA)发布的官方通告:
www.cisa.gov/news-events/cybersecurity-advisories/aa23-075a
。 -
攻击向量 – 攻击向量是指攻击者可以在特定的系统、网络或组织中利用的入口路径或区域。常见的攻击向量包括:直接访问、无线网络、电子邮件、供应链、社交媒体、可移动存储设备和云服务;这些是攻击者能够向目标传递恶意负载的基础设施。
-
风险 – 风险是指漏洞、威胁或攻击对组织资产可能造成的影响,以及攻击或威胁对系统造成危害的可能性。评估风险有助于确定特定问题导致数据泄露的可能性,从而损害组织的财务、声誉或合规性。减少风险对许多组织至关重要。许多认证、监管标准和框架旨在帮助公司理解、识别和减少风险。
虽然看起来道德黑客和渗透测试人员是受雇于模拟针对目标组织的真实网络攻击,但这种参与的目标远比看起来更深远。在渗透测试结束时,网络安全专业人员会呈现所有的漏洞和可能的解决方案,以帮助组织减轻并降低潜在网络攻击的风险,同时减少公司的攻击面。
-
攻击面 – 这是指系统、网络或组织中所有可以被攻击者利用的易受攻击的入口点,攻击者通过这些入口获得未经授权的访问权限,并扩大其在网络上的控制范围。道德黑客和渗透测试人员专注于识别这些易受攻击的入口点,以确定组织的攻击面,以及网络犯罪分子如何利用这些漏洞来攻击目标。
-
零日漏洞 – 零日漏洞指的是攻击者在产品或应用程序中发现安全漏洞,并在厂商尚未意识到该漏洞并有时间开发安全补丁修复问题之前,便能够利用这一漏洞进行攻击。这类攻击通常出现在国家级攻击、APT(高级持续性威胁)组织以及大型犯罪团伙中。零日漏洞的发现对道德黑客和渗透测试人员来说非常有价值,能够为他们带来漏洞奖励。这些奖励是厂商支付给安全研究人员的费用,用于奖励他们发现其应用程序中未知的漏洞。
许多漏洞悬赏计划允许安全研究人员、专业人士和任何具备合适技能的人发现供应商拥有的应用程序或系统中的安全漏洞,并报告以获得奖励。报告安全漏洞的人,通常是零日漏洞,通常会获得财务奖励。然而,也有一些威胁行为者故意试图为个人利益而利用目标系统,这通常被称为目标的黑客价值。在本节中,你已经了解了网络安全在全球各行业中的重要性和必要性。此外,你还学习了各种类型的威胁行为者及其背后动机,以及获得了行业中常见的安全相关术语知识。接下来,你将深入了解威胁行为者在规划网络攻击时对目标关注的要点。
了解对威胁行为者重要的因素
从网络安全的角度来看,入侵系统或设备一直是全球许多人感兴趣且着迷的事情。逆向工程一个系统以更好地了解其工作原理,一直吸引着好奇的头脑。类似地,黑客攻击的重点是更好地理解系统是如何运作和运行的,是否存在编程或设计上的缺陷,以及这些安全漏洞是否可以被利用来改变系统的功能,使得好奇者能够从中获利。然而,在网络犯罪分子对目标组织发起任何攻击之前,规划攻击、评估执行网络攻击所需的时间和资源非常重要。此外,攻击的复杂性和目标的黑客价值帮助威胁行为者决定是否值得继续实施攻击计划。
时间
确定从收集目标信息到实现攻击目标所需的时间非常重要。有时,网络攻击可能需要威胁行为者数天到几个月的精心策划,以确保每个阶段在按正确顺序执行时都能成功。威胁行为者还需要考虑到攻击或利用可能在目标系统上无法成功,从而在过程中产生意外的延迟,这会增加完成黑客目标所需的时间。同样,这个概念也适用于道德黑客和渗透测试员,因为他们需要确定完成渗透测试并向客户提交报告、提供发现和安全建议需要多长时间。
资源
如果没有正确的资源,完成任务将变得非常具有挑战性。威胁行为者需要拥有正确的资源,这些资源通常是软件和硬件工具。虽然技术高超且经验丰富的黑客可以手动发现并利用目标系统中的安全漏洞,但这可能是一个耗时的过程。然而,使用正确的工具集可以帮助自动化这些任务,并提高发现并利用安全漏洞的效率。此外,如果没有合适的技能集,威胁行为者在执行网络攻击时可能会遇到一些挑战,这可能导致他们寻求其他具有相关技能的人提供支持,协助实现网络攻击的目标。同样的,这个概念也适用于行业中的安全专家,如渗透测试员。并不是每个人都有相同的技能,渗透测试可能需要一个团队来为客户进行安全评估。
财务因素
另一个重要的资源是财务因素。有时候,威胁行为者无需任何额外资源,就能够成功实施网络攻击并危害其目标。然而,也有可能需要额外的软件或硬件工具来提高攻击目标的成功率。拥有预算可以让威胁行为者购买所需的额外资源。同样,渗透测试员也由雇主提供充足的资金,确保他们能够使用行业内最好的工具,从而在工作中表现出色。
黑客价值
最后,黑客价值简单来说就是执行针对目标系统、网络和组织的网络攻击的动机或原因。对于威胁行为者来说,这是达成入侵系统目标和任务的价值。如果威胁行为者认为入侵某个组织的系统不值得花费时间、精力或资源,他们可能不会选择该组织作为攻击目标。而其他威胁行为者则可能基于不同的动机针对同一组织进行攻击。通过本节内容,你已经了解了在对组织进行网络攻击之前,威胁行为者需要考虑的一些重要因素。在接下来的部分,你将会了解到更多内容。
探索渗透测试的重要性
每天,网络安全专家都在与威胁行为者赛跑,试图发现系统和网络中的漏洞。想象一下,如果威胁行为者能够在网络安全专家发现漏洞并实施安全控制和对策之前,利用一个目标系统的安全漏洞,情况会怎样。网络安全专家花费更多时间识别系统中隐藏的安全缺陷,威胁行为者就能获得更多时间来提升其网络攻击能力、利用目标并扩大在受损网络中的立足点。这将迫使网络安全专家进行事件处理和响应,以遏制并消除威胁,并将任何受损的系统恢复到可接受的工作状态。组织逐渐意识到,雇佣白帽黑客(如道德黑客和渗透测试员)是必要的,这些人具备模拟真实网络攻击的技能,目的是发现和利用隐藏的漏洞,更好地了解网络犯罪分子的战术、技术和程序(TTPs)。这些技术使得道德黑客和渗透测试员能够执行与真实黑客相同类型的攻击;不同之处在于,渗透测试员是由组织雇佣并获得合法授权进行这种入侵性安全测试。
重要提示
渗透测试员通常对计算机、操作系统、网络和编程有深刻的理解,并且了解这些技术如何协同工作。最重要的是,你需要具备创造力。创造性思维使人能够跳出框架,超越技术的预期用途,找到新的和令人兴奋的方式来实现它们。
在渗透测试结束时,会向组织的相关方提供一份执行报告和一份技术报告,详细说明所有发现的内容,如漏洞及每个弱点如何被利用。报告还包含了针对每个发现的漏洞,如何缓解和预防可能的网络攻击的建议。这使得组织能够更好地理解,如果他们成为攻击目标,黑客会发现哪些类型的信息和系统,以及为减少未来网络攻击风险所需的对策。一些组织甚至会在实施渗透测试报告中概述的建议后,进行第二次渗透测试,以确定所有漏洞是否已经修复,安全控制是否按预期工作以缓解威胁,以及攻击面是否已被缩小。
渗透测试方法论
许多学习者总是急于开始学习道德黑客和渗透测试,并且迫不及待地去攻击他们的第一个目标系统。一些人可能过于急切,可能会忽略基础知识或在过程中忘记执行重要步骤以达到他们的目标。因此,由于这个原因可能无法实现期望的结果。因此,有各种渗透测试方法可以帮助道德黑客和渗透测试人员在安全评估期间采取特定的行动,以确保所有涵盖范围内的系统、网络和应用程序都得到彻底测试以发现安全漏洞。以下是常见的渗透测试方法论:
-
渗透测试执行标准 (PTES)
-
支付卡行业数据安全标准 (PCI DSS)
-
渗透测试框架 (PTF)
-
信息安全测试与评估技术指南
-
开放源代码安全测试方法手册
-
OWASP Web 安全测试指南
-
OWASP 移动安全测试指南
-
OWASP 固件安全测试方法论
如前述列表所示,根据其所处的行业、业务类别、进行道德黑客和渗透测试的目标以及安全评估的范围,可以应用各种渗透测试方法论于组织中。
提示
要了解更多有关每种渗透测试方法论的信息,请参阅:
owasp.org/www-project-web-security-testing-guide/latest/3-The_OWASP_Testing_Framework/1-Penetration_Testing_Methodologies
。
为了更好地理解渗透测试各阶段的重要性,让我们详细看一下适用于多种场景的 PTES 方法论。
预参与阶段
在预参与阶段,选择关键人员。这些人员对提供信息、协调资源以及帮助渗透测试人员理解评估的范围、广度和约定规则至关重要。该阶段还涵盖法律要求,通常包括保密协议 (NDA) 和咨询服务协议 (CSA)。以下是在实际渗透测试之前所需的典型流程概述:
NDA(保密协议)是一种法律协议,规定渗透测试员及其雇主不会分享或保留在评估过程中遇到的任何敏感或专有信息。这对于客户非常重要,因为渗透测试员将访问他们的系统,并可能发现机密信息。公司通常会与网络安全公司签署这些协议,后者再与参与项目的员工签署协议。在某些情况下,公司会直接与执行项目的渗透测试员签署协议。渗透测试的范围,也称为参与规则,定义了渗透测试员被授权进行安全评估的系统和网络。换句话说,它定义了渗透测试员被允许和不被允许攻击的内容,以及是否有任何限制的工具和攻击方式。这确保渗透测试员始终保持在合法范围内。这是客户(用户)与服务提供商(渗透测试员)之间的相互协议。它还定义了敏感系统及其 IP 地址、测试时间以及哪些系统需要特殊的测试时间窗口。渗透测试员必须非常注意渗透测试的范围和测试位置,以确保始终遵守测试约束。以下是一些常见的预先接触问题,帮助您定义渗透测试的范围:
-
外部网络的大小/类别(IP 地址和/或网络块)是什么?(网络渗透测试)
-
内部网络的大小/类别(IP 地址和/或网络块)是什么?(网络渗透测试)
-
渗透测试的目的和目标是什么?(适用于任何形式的渗透测试)
-
Web 应用程序有多少个页面?(Web 应用渗透测试)
-
Web 应用程序有多少个用户输入或表单?
这不是一份详尽的预接触问题清单,所有接触都应经过充分思考,确保提出所有重要问题,以免低估范围或低估安全评估的价格。现在您已经理解了渗透测试的法律限制阶段,让我们继续了解信息收集阶段及其重要性。
信息收集阶段
渗透测试非常类似于现实世界中的黑客攻击,唯一的区别是渗透测试员的范围和完成安全评估的时间是有限制的。因此,就像真实的网络攻击一样,渗透测试员需要进行充分的侦察,从各种数据源收集信息,创建关于目标组织的资料,并识别安全漏洞。信息收集对于确保渗透测试员能够获得关键数据,以便顺利进行安全评估至关重要。有时,一位经验丰富的专业人员通常会花一到两天时间对目标进行广泛的侦察。了解目标越多,有助于渗透测试员更好地识别攻击面,例如在目标系统和网络中的入口点。此外,这一阶段还帮助渗透测试员识别员工、基础设施和地理位置,以便进行物理访问、获取网络详情、服务器以及目标组织的其他重要信息。在进行任何类型的攻击之前,了解目标非常重要,因为它有助于创建潜在目标的资料,并根据攻击面确定最有效的攻击类型。此外,在此阶段恢复用户凭证/登录账户,将对渗透测试的后续阶段非常有价值,因为它将帮助道德黑客和渗透测试员访问易受攻击的系统和网络。接下来,我们将讨论威胁建模的基本要素。
威胁建模
威胁建模是一个过程,旨在帮助渗透测试员和网络安全防御人员更好地理解启发安全评估的威胁,或是应用程序或网络最容易遭受的威胁。这些数据帮助渗透测试员模拟、评估并应对一个组织、网络或应用程序面临的最常见威胁。总体而言,威胁建模帮助组织和网络安全专业人员更好地理解和评估可能对公司资产产生负面影响的网络风险和威胁。此外,威胁建模帮助网络安全专业人员确定每个威胁成功危害资产的潜力,以及组织响应安全事件的可能性和能力。以下是常见的威胁模型:
-
STRIDE:身份欺骗、数据篡改、信息泄露、服务拒绝和特权提升。
-
PASTA:攻击模拟与威胁分析过程。
提示
要了解更多关于威胁建模及其各种框架的信息,请访问:
www.crowdstrike.com/cybersecurity-101/threat-modeling/
。
了解了威胁建模的重要性和必要性后,下一步是对资产进行漏洞评估,以进一步确定风险评级和严重性。
漏洞分析
在漏洞分析阶段,伦理黑客或渗透测试人员对目标系统进行手动和自动化测试,以识别隐藏的和未知的安全漏洞。识别系统中的安全漏洞有助于组织更好地理解攻击面,即其系统和网络基础设施中的脆弱入口点。虽然许多组织实施并使用自动化漏洞扫描工具,但也建议进行手动测试,以确定系统是否存在安全漏洞,以及这些漏洞如何可能被真实对手利用,因此渗透测试的需求也就产生了。此外,漏洞分析有助于组织中的利益相关者和决策者更好地确定如何将资源分配到更高优先级的系统。例如,许多自动化漏洞扫描器为每个在系统上发现的安全漏洞提供一个漏洞评分,从 0(最低)到 10(最严重)。漏洞评分可以帮助组织确定系统上哪些安全漏洞需要更多关注,并根据漏洞被对手利用后可能产生的影响来确定优先级。在本书的后续章节中,您将学习如何使用各种工具和技术对目标系统进行漏洞评估。在识别出目标系统或网络中的安全弱点后,接下来的阶段是利用。
利用
作为一名伦理黑客和渗透测试员,接下来的步骤是发现目标系统中的漏洞,执行手动测试来验证这些安全漏洞是否存在,并确定一个真实的威胁行为者如何攻陷系统。利用漏洞有时是渗透测试过程中最具挑战性的阶段,因为你需要开发或获取一个利用程序,修改并彻底测试它,确保它能够利用目标系统中的漏洞。对于许多网络安全专业人员来说,利用漏洞是最令人兴奋的阶段,突破系统的感觉非常激动人心。利用漏洞是帮助阐明为什么漏洞重要,并展示漏洞可能对组织产生影响的弹药或证据。此外,若没有漏洞利用,评估就不算是真正的渗透测试,而只是一次漏洞评估,大多数公司能比第三方顾问更好地在内部完成此工作。简单来说,在信息收集阶段,渗透测试员会描绘目标并识别任何漏洞。接下来,利用有关漏洞的信息,渗透测试员将进行研究并创建特定的利用程序,利用目标的漏洞——这就是漏洞利用。我们使用利用程序(恶意代码)来利用系统中的漏洞(弱点),从而允许我们在目标系统上执行任意代码和命令。通常,在成功攻陷目标系统或网络后,我们可能会认为任务已经完成——但其实还没有。系统突破后仍有任务和目标需要完成。接下来,我们将讨论渗透测试中的后渗透阶段。
后渗透
在威胁行为者攻陷目标系统后,攻击者通常会尝试通过攻陷更多系统并设置后门访问来扩大在网络中的立足点。这为攻击者提供了额外的进入目标组织网络基础设施的途径。同样,伦理黑客和渗透测试员也会应用常见的后渗透技术,如横向移动,来攻陷网络中的其他系统,并设置命令与控制(C2)操作,以便同时控制多个系统。在后渗透阶段,主要目标通常是展示漏洞和获得的访问权限对目标组织可能造成的影响。这种影响有助于帮助高层管理人员和决策者更好地理解风险、漏洞,以及如果威胁攻击者瞄准他们的公司和资产时可能造成的损害。
报告撰写
报告写作如其名,是渗透测试中最重要的环节之一。渗透测试可能是提供的服务,但报告写作是客户/顾客看到的交付物,是在安全评估结束时交给客户的唯一有形成果。报告应与测试本身一样,给予足够的关注和重视。报告写作不仅仅是列出发现的安全漏洞、它们的影响及建议。它是传达风险和业务影响、总结发现以及包括修复步骤的媒介。一个好的渗透测试人员也需要是一个好的报告写作者,否则他们发现的问题可能会被忽视,甚至可能永远无法被雇佣他们进行评估的客户理解。完成这一部分后,您现在能够描述渗透测试的每个阶段,并对行业中渗透测试人员的期望有了更清晰的认识。接下来,我们将深入了解不同的渗透测试方法。
探索渗透测试方法
白盒评估是 web 应用程序测试的典型方式,但也可以扩展到任何形式的渗透测试。白盒、黑盒和灰盒测试之间的关键区别在于在参与测试之前提供给渗透测试人员的信息量。在白盒评估中,渗透测试人员会获得关于目标应用程序、系统和网络的完整信息,并通常会被提供具有不同访问权限的用户凭证,以便迅速而全面地识别目标系统和网络中的漏洞。这种方法减少了道德黑客和渗透测试人员进行侦察以识别目标攻击面所需的时间。并非所有的安全测试都采用白盒方法;有时,渗透测试人员仅会获得目标组织的名称。黑盒评估是最常见的网络渗透测试形式之一,通常出现在外部网络渗透测试和社会工程渗透测试中。在黑盒评估中,渗透测试人员几乎或完全不会获得目标组织、其网络或系统的任何信息,除了组织的名称。这种特定形式的测试在试图确定真正的对手会发现什么,以及他们的入侵策略和技术时,效率较高。灰盒评估是白盒和黑盒测试的结合,通常用于提供现实的测试场景,同时为渗透测试人员提供足够的信息,以减少进行侦察和其他黑盒测试活动所需的时间。此外,在任何评估中,确保测试所有范围内的系统非常重要。在真正的黑盒测试中,有可能遗漏某些系统,导致它们没有被纳入评估中。每种渗透测试方法都与其他方法有所不同,了解这些方法非常重要。想象一下,潜在客户打电话请求对其外部网络基础设施进行黑盒测试;作为渗透测试人员,我们必须熟悉这些术语,并了解客户的期望。
渗透测试类型
作为一个有志的道德黑客和渗透测试员,理解漏洞评估和渗透测试之间的区别是非常重要的。在漏洞评估中,网络安全专业人员使用漏洞扫描器来帮助识别目标系统的安全状况。这些漏洞扫描器使用多种技术来自动化发现系统中广泛的安全漏洞。使用自动化漏洞扫描工具的缺点是,它无法识别手动测试能够发现的问题,这也是为什么许多组织聘请渗透测试人员来对其系统进行这些评估的原因之一。然而,如果渗透测试员仅仅交付漏洞扫描工具的报告,而没有在基于网络的渗透测试过程中进行手动测试,我认为这是非常不道德的。在本书的过程中,您将学习如何使用行业实践、工具和技术执行成功的渗透测试。
Web 应用程序渗透测试
Web 应用程序渗透测试,以下简称为 WAPT,是最常见的渗透测试形式,可能是本书大多数读者第一次接触的渗透测试工作。WAPT 是针对 Web 应用程序进行手动黑客攻击或渗透测试,以测试常规漏洞扫描器无法发现的安全漏洞。很多时候,渗透测试人员提交的是 Web 应用程序漏洞扫描报告,而不是手动发现和验证 Web 应用程序中的问题。在本书的后续部分,您将获得关于 Web 应用程序安全测试的技能和实践经验。
移动应用程序渗透测试
移动应用程序渗透测试类似于 WAPT,但它专门针对包含自身攻击向量和威胁的移动应用程序。这是一个新兴的渗透测试形式,对于那些希望进入渗透测试领域并且了解移动应用程序开发的人来说,机会非常大。正如您可能已经注意到的那样,不同类型的渗透测试各自有特定的目标。
社会工程渗透测试
在我看来,社会工程学渗透测试是最充满肾上腺素的安全评估类型。社会工程学是一种通过操控基本人类心理(思维)来寻找人类脆弱点,并诱使潜在受害者做出他们通常不会做的事情的艺术。例如,对手可能会尝试欺骗目标组织的员工,将受恶意软件感染的 USB 驱动器连接到他们的计算机,或者打开电子邮件中的恶意软件附件。在这种形式的渗透测试中,你可能会被要求进行诸如发送钓鱼邮件、进行语音钓鱼电话或通过说服进入安全设施并将 USB 驱动器连接到系统上,以确定真实的对手可能会取得什么成就。这种攻击有许多类型,将在本书后续章节中详细介绍。
网络渗透测试(外部和内部)
网络渗透测试侧重于识别目标环境中的安全弱点。渗透测试的目标是识别目标组织系统、网络(有线和无线)及其网络设备(如交换机和路由器)中的缺陷。以下是通过网络渗透测试执行的一些任务:
-
绕过入侵检测系统(IDS)/入侵防御系统(IPS)
-
绕过防火墙设备
-
密码破解
-
获得对终端设备和服务器的访问权限
-
利用交换机和路由器上的配置错误
现在你对网络渗透测试的目标有了更清晰的了解,让我们看看云渗透测试的目的。
云渗透测试
云渗透测试涉及进行安全评估,以识别云平台上的风险,发现任何可能暴露机密信息给恶意行为者的安全漏洞。在尝试直接接触云平台之前,请确保获得云提供商的法律许可。例如,如果你打算在 Microsoft Azure 平台上进行渗透测试,你需要从云提供商 Microsoft 获得法律许可,因为你的行为可能会影响其他共享数据中心的用户和服务,以及雇佣你进行服务的客户。
物理渗透测试
物理渗透测试侧重于测试用于保护组织数据的物理安全访问控制系统。办公室和数据中心内存在安全控制措施,以防止未经授权的人员进入公司的安全区域。物理安全控制包括以下内容:
-
安全摄像头和传感器:安全摄像头用于监控区域内的物理活动。
-
生物识别认证系统:生物识别技术用于确保只有授权人员才能进入某个区域。
-
门和锁:锁定系统用于防止未经授权的人进入安全房间或区域。
-
保安:保安是被指派保护某物、某人或某个区域的人。
完成本节后,你现在可以描述各种类型的渗透测试。接下来的旅程如果没有了解黑客攻击的各个阶段将无法完整。黑客攻击的不同阶段将在下一节中讲解。
探索渗透测试方法
道德黑客和渗透测试员是白帽黑客,即在网络安全行业中具有良好道德指南针的人,了解黑客的常见阶段以及每个阶段如何与渗透测试员对接非常重要。在任何渗透测试培训中,你将遇到黑客的五个阶段。以下是黑客的五个常见阶段:
如上图所示,威胁行为者对目标系统、网络或组织进行侦察,收集尽可能多的信息,以便更好地理解目标的攻击面,然后再继续进行攻击以破坏目标。在接下来的子章节中,你将了解每个阶段的目的,以及它如何与道德黑客和渗透测试相契合。
侦察
侦察,通常被称为信息收集阶段,是威胁行为者专注于获取有关其目标的有意义信息的过程。收集到的信息被分析以创建上下文,并开发出关于目标系统、网络或组织的资料。收集的信息有助于威胁行为者更好地理解目标的攻击面,并开发或获得适用于破坏目标系统的特定漏洞。以下是侦察阶段中使用的技术:
-
使用互联网搜索引擎收集信息
-
使用社交网络平台
-
执行谷歌黑客技术
-
执行域名系统(DNS)查询
-
使用社会工程技术
在这个阶段,目标是收集尽可能多的目标信息。接下来,我们将讨论如何使用更直接的方法,并与目标接触以获取具体和详细的信息。
扫描与枚举
黑客的第二阶段是扫描。扫描涉及使用直接的方法接触目标,以获取通过被动信息收集技术无法访问的信息。此阶段还涉及通过向目标发送特别设计的探针来对目标组织、其系统和网络基础设施进行剖析。以下是扫描阶段中使用的技术:
-
执行主机发现
-
检查防火墙并测试其规则
-
检查开放的网络端口和正在运行的服务
-
检查安全漏洞
-
创建目标网络的网络拓扑
这一阶段非常重要,因为它有助于我们完善目标的资料。在这一阶段找到的信息将帮助我们继续在目标系统或网络上执行利用攻击。
获取访问权限
这一阶段有时可能是所有阶段中最具挑战性的。在这一阶段,威胁行为者使用从前几阶段获得的信息,来构造一个漏洞利用工具,或者从在线来源获取一个设计用于攻击目标安全漏洞的漏洞利用工具。此外,威胁行为者还需要测试漏洞利用工具,确保它按预期工作,然后再将其交付并在目标系统上执行。一旦获得对目标系统或网络的访问权限,可能发生以下情况:
-
检索并破解系统中存储的密码
-
提升权限
-
转移额外的负载和恶意软件
获取访问权限(利用)阶段有时可能很困难,因为某些漏洞利用可能在一个目标系统上有效,而在另一个系统上无效。一旦漏洞利用成功并获得系统访问权限,下一步就是确保威胁行为者扩大其在被攻陷系统和网络中的立足点。
维持访问权限
在获得系统访问权限后,威胁行为者通常会尝试在被攻陷的系统上实施额外的后门,以扩大其立足点。此外,威胁行为者通常会在网络上进行横向移动,攻陷其他系统并设置后门,以便在受害者网络上实现持久访问。因此,如果被攻陷的系统离线,攻击者可以尝试远程连接到另一个系统,重新获得对目标网络的访问权限。维持访问权限的目标如下:
-
横向移动
-
数据泄露
-
创建后门和持久连接
维持访问权限对于确保你,渗透测试员,始终能够访问目标系统或网络非常重要。一旦渗透测试的技术环节完成,接下来就是清理网络。
掩盖痕迹
最后阶段是掩盖你的痕迹。这确保你在受损的系统或网络上不会留下任何痕迹。作为渗透测试人员,我们希望在目标网络上尽可能不被察觉,不触发任何安全传感器和设备的警报,同时清除渗透测试过程中留下的任何残余痕迹。掩盖痕迹确保你不会在网络上留下任何痕迹,因为渗透测试的目的是隐秘地模拟现实世界中的攻击,既要识别潜在的安全漏洞,又要测试组织网络防御的有效性。完成这一部分后,你已经掌握了描述常见的黑客攻击阶段的知识。在下一部分,你将了解网络杀伤链框架,并将在本书中的培训和练习中利用它。
理解网络杀伤链
作为一名有志成为道德黑客和渗透测试员、正在进入网络安全行业的专业人士,理解威胁行为者、对手和恶意行为者的思维方式至关重要。为了更好地进行渗透测试,你需要培养非常有创意和战略性的思维方式。简而言之,作为一名网络安全专业人员,你需要像真正的黑客一样思考,才能有效地攻破系统和网络。网络杀伤链是由美国航空航天公司洛克希德·马丁公司开发的一个七阶段框架。这个框架概述了威胁行为者在实现其对目标的网络攻击目标之前需要执行的每一个关键步骤。如果网络安全专业人员能够在网络杀伤链的早期阶段阻止攻击者,他们就能够减少威胁行为者成功实现目标的可能性,并减少造成的损害。下图展示了威胁行为者使用的网络杀伤链的七个阶段:
如前图所示,网络杀伤链的每个阶段都相互衔接,直到对手到达最后阶段——目标行动,在这一阶段,威胁行为者已成功达成他们的网络攻击目标,而受害组织的网络防御和网络安全团队未能阻止攻击或黑客的行动。在网络安全操作的蓝队方面,安全工程师需要确保系统和网络得到很好的保护,并且监控任何潜在威胁。如果检测到威胁,蓝队需要尽快分析并隔离(隔离)威胁,防止其扩散到网络上的其他设备。然而,作为一名有志的道德黑客和渗透测试员,我们可以应用威胁行为者在网络杀伤链每个阶段使用的技术和策略,在实际的组织渗透测试中实现我们的目标。在接下来的几个部分中,你将学习网络杀伤链每个阶段的基本概念,威胁行为者如何使用每个阶段,以及渗透测试员如何在安全评估中应用这些策略。
侦察
就像每个战斗计划一样,了解对手的情况在开战前至关重要。侦察阶段专注于收集关于目标的大量信息和情报,无论目标是个人还是组织。威胁行为者和渗透测试员使用这一阶段来创建目标的档案,档案中包含 IP 地址、系统的操作系统、开放服务端口、运行的应用程序、安全漏洞以及任何可能无意中暴露的敏感资源,这些资源可能增加攻击面。
重要提示
侦察阶段涉及被动和主动信息收集技术,这些将在本书的后续章节中介绍。你还将发现一些工具和技术,以提高在渗透测试过程中收集和分析信息的技能。
威胁行为者会花费大量时间研究其目标,以确定任何实体办公室、在线服务、域名、网络基础设施、在线服务器和 web 应用程序、员工联系方式、电话号码和电子邮件地址等的地理位置。主要目标是尽可能多地了解目标的信息。有时候,这一阶段可能需要较长时间。与渗透测试员在规定时间内执行整个渗透测试不同,威胁行为者可能需要 1 到 2 天的密集研究时间,才能进入下一阶段。然而,由于对手不像道德黑客和渗透测试员那样有时间限制,他们可以花费更多的时间收集信息,寻找安全漏洞,并更好地规划他们的网络攻击。
武器化
利用侦查阶段收集到的信息,威胁行为者和渗透测试人员可以利用这些信息更好地制作武器,通常称为漏洞利用,它可以利用目标系统中的安全漏洞。这个武器(漏洞利用)必须经过特别设计和测试,以确保在威胁行为者或渗透测试人员发起攻击时能够成功。漏洞利用的目标是破坏目标组织拥有的系统或网络的机密性、完整性和/或可用性。威胁行为者和渗透测试人员都需要考虑到其漏洞利用是否可能被任何反恶意软件、端点检测与响应(EDR)以及任何监控目标系统和网络的威胁检测解决方案所发现。因此,重要的是对漏洞利用进行编码或伪装,以减少触发任何安全传感器并提醒安全团队。漏洞利用利用了一个漏洞。发生这一过程后,接下来是什么?为了更具战略性,威胁行为者和渗透测试人员会将其漏洞利用与附加有效载荷结合使用。有效载荷会在漏洞利用成功攻击系统后被释放。举个简单的例子,有效载荷可以用来在目标系统上创建一个持久的后门,以便威胁行为者或渗透测试人员在被攻陷的系统在线时随时远程访问该系统。
交付
在创建漏洞利用(武器)后,威胁行为者或渗透测试人员需要使用攻击向量作为一种方法,将漏洞利用传递到目标系统上。交付可以通过攻击者的创造性思维完成,无论是使用电子邮件消息、即时消息服务,甚至通过在被攻陷的网页服务上创建驱动下载。另一种方法是将漏洞利用复制到多个 USB 驱动器上,并将其投放到目标组织的区域内,期望某个员工因为好奇心而发现它,并将其连接到内部系统。以下是一个常用于道德黑客和渗透测试的 USB Rubber Ducky 图片:
如前图所示,USB Rubber Ducky 使渗透测试人员能够将恶意脚本加载到存储卡中。一旦这个设备连接到计算机,它会被识别为人机接口设备(HID),如键盘,然后在目标系统上执行该脚本。这只是将有效载荷交付给目标的许多创造性方法之一。作为一名有抱负的道德黑客和渗透测试人员,确保你有多种方法将武器交付给目标,这样,当某种方法不起作用时,你还有其他备用解决方案。
漏洞利用
在武器(漏洞利用)被交付到目标后,攻击者需要确保在漏洞利用执行时,能够成功地利用目标系统中的安全漏洞。如果漏洞利用不起作用,威胁行为者或渗透测试者可能会被组织的网络防御系统检测到,这可能会在网络杀链中造成中断。攻击者需要确保在对目标系统执行漏洞利用之前,进行适当的测试。
安装
在威胁行为者成功利用目标系统后,攻击者将尝试创建多个持久的后门访问点,以便访问被攻陷的系统。这使得威胁行为者或渗透测试者能够通过多个通道重新进入系统和网络。在这一阶段,通常会安装额外的应用程序,同时威胁行为者会采取许多预防措施,以避免被任何威胁检测系统发现。
命令与控制(C2)
网络攻击中的一个重要阶段是建立命令与控制(C2)通信通道,连接被攻陷的系统与互联网上的 C2 服务器。这使得威胁行为者能够通过一个由对方控制的 C2 服务器集中控制一组被感染的系统(僵尸),从而创建一个由单一威胁行为者控制和管理的僵尸网络。下图展示了 C2 的示例:
https://github.com/OpenDocCN/freelearn-kali-pt2-zh/raw/master/docs/ult-kali-bk-3e/img/file5.png
威胁行为者使用数据加密、封装和各种隧道技术来躲避目标组织内的威胁检测系统。类似地,有一个称为红队测试的高级渗透测试阶段,在这一阶段,使用的手段和技术没有限制(规则的参与),目标是模拟最接近真实的恶意网络军队的高级网络攻击。然而,仍需记住,任何类型的红队活动都需要合法授权。
目标上的行动
如果威胁行为者或渗透测试员能够到达网络杀链的这一阶段,组织的蓝队就未能阻止攻击者并防止网络攻击。在这一阶段,威胁行为者已经完成了他们的目标并达成了攻击的目的。在这一阶段,攻击者可以完成攻击的主要目标,无论是从组织中窃取数据并将其出售到暗网,还是将他们的僵尸网络扩展到对另一个目标组织进行大规模的网络攻击。阻止威胁行为者或渗透测试员在这一阶段通常被认为是非常困难的,因为攻击者已经在目标组织的多个被攻陷系统上建立了多个持久的后门访问,并加密了 C2 通信通道。此外,威胁行为者还会清除任何可能帮助网络安全专家追溯攻击源的证据或痕迹。完成这一部分后,您已经学习了网络杀链的各个阶段,以及它如何帮助网络安全专家理解威胁行为者的意图。此外,您还学到了渗透测试员如何在渗透测试过程中实施这些策略。
总结
在本章中,您已经学习了全球网络安全专业人员和解决方案的重要性及其需求,旨在保护资产免受网络犯罪分子的侵害。此外,您现在对不同类型的威胁行为者及其进行网络攻击的原因有了更深入的了解。此外,您还探讨了威胁行为者关注的事项,以及各种因素如何影响其动机并决定是否值得攻击某个系统或组织。此外,您还学习了渗透测试的各个阶段,以及它与威胁行为者常用的网络杀链框架的对比。渗透测试的每个阶段都非常重要,以确保道德黑客和渗透测试员能够高效地测试目标组织的网络防御,并发现隐藏的安全漏洞。我相信本章中提供的知识为您提供了宝贵的见解,支持您在网络安全这个充满活力的领域中成为一名道德黑客和渗透测试员的道路。愿这段新获得的理解在您的旅程中赋予您力量,让您充满信心地在行业中前行并做出重要贡献。在下一章中,第二章:建立渗透测试实验室,您将学习如何在个人设备上设计和搭建一个虚拟化的渗透测试实验室,以便在一个安全的环境中锻炼您的新技能。
进一步阅读
-
网络杀伤链 -
www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html
-
MITRE ATT&CK 战术 -
attack.mitre.org/tactics/enterprise/
-
渗透测试执行标准(PTES) -
www.pentest-standard.org/index.php/PTES_Technical_Guidelines
-
支付卡行业数据安全标准(PCI DSS) -
www.pcisecuritystandards.org/documents/Penetration-Testing-Guidance-v1_1.pdf
-
渗透测试框架(PTF) -
www.vulnerabilityassessment.co.uk/Penetration%20Test.html
-
信息安全测试与评估技术指南 -
csrc.nist.gov/publications/detail/sp/800-115/final
-
开源安全测试方法学手册 -
www.isecom.org/OSSTMM.3.pdf
-
OWASP Web 安全测试指南 -
owasp.org/www-project-web-security-testing-guide/
-
OWASP 移动安全测试指南 -
owasp.org/www-project-mobile-app-security/
-
OWASP 固件安全测试方法论 -
github.com/scriptingxss/owasp-fstm
第二章:2 构建渗透测试实验室
加入我们在 Discord 上的书籍社区
packt.link/SecNet
https://github.com/OpenDocCN/freelearn-kali-pt2-zh/raw/master/docs/ult-kali-bk-3e/img/file6.png作为一个有抱负的道德黑客和渗透测试员,进行漏洞利用、有效载荷测试或练习黑客技能时,确保不破坏或对他人系统或网络基础设施(如您的组织的系统)造成任何损害非常重要。虽然有许多在线教程、视频和培训资料可以供您阅读和观看以获取知识,但从事渗透测试领域意味着需要不断增强您的攻防安全技能。很多人能谈论黑客攻击并清晰地解释方法论,但却不知道如何实施攻击。在学习渗透测试时,理解理论并学会如何将您的技能应用于模拟真实网络攻击非常重要。在本章中,您将学习如何在个人计算机上设计和构建虚拟化渗透测试实验室环境,并利用虚拟化技术减少获取多个物理系统和设备的成本和需求。此外,您还将学习如何设置虚拟隔离的网络,以确保您不会无意中攻击您不拥有的系统。更进一步,您将把 Kali Linux 设置为攻击机,把易受攻击的系统作为目标。重要的是要始终记住,练习攻防安全技能,如道德黑客和渗透测试时,必须始终在您拥有的系统和网络上进行,因为这些安全测试通常是侵入性的,可能会对系统造成损害。简单来说,攻击您不拥有的系统是非法的。在本章中,我们将涵盖以下主题:
-
理解实验室概览和技术
-
设置虚拟化管理程序和虚拟网络
-
设置并使用 Kali Linux
-
设置易受攻击的 web 应用程序
-
部署 Metasploitable 2 作为易受攻击的机器
-
构建并部署 Metasploitable 3
让我们深入了解!
技术要求
要跟随本章中的练习,请确保您满足以下硬件和软件要求:
-
Oracle VM VirtualBox -
www.virtualbox.org/wiki/Downloads
-
Oracle VM VirtualBox 扩展包 -
www.virtualbox.org/wiki/Downloads
-
Kali Linux -
www.kali.org/get-kali/
-
Vagrant -
www.vagrantup.com/
-
OWASP Juice Shop -
owasp.org/www-project-juice-shop/
-
Metasploitable 2 -
sourceforge.net/projects/metasploitable/files/Metasploitable2/
-
Metasploitable 3 -
app.vagrantup.com/rapid7
理解实验室概述和技术
构建渗透测试实验室能够为你创造一个安全的环境,在这个环境中,你可以练习并提升你的进攻性安全技能,扩展环境以添加新的易受攻击系统,并移除不再需要的旧有遗留系统,甚至可以创建额外的虚拟网络,以便将攻击从一个网络转移到另一个网络。创建你自己虚拟化的渗透测试实验室的概念,允许你最大化现有计算机的计算资源,而无需购买在线实验室时间或购买额外的计算机和设备。总体来说,这将节省大量的钱,相较于购买物理计算机和网络设备(如路由器和交换机)。作为一名网络安全讲师和专业人士,我注意到,许多刚开始从事信息技术(IT)领域的人通常认为,根据他们的学习领域,需要物理实验室基础设施。从某种程度上讲,这是正确的,但随着技术的进步,构建物理实验室来练习技能也伴随着许多缺点。以下是物理实验室的一些缺点:
-
需要物理空间来存放所需的服务器和网络设备。
-
每个设备的电力消耗将导致整体财务支出的高额。
-
构建/购买每个物理设备的成本都很高,无论是网络设备还是服务器。
这些只是许多学生和有志于成为 IT 专业人士的人的一些顾虑。在许多情况下,初学者通常只有一台单独的计算机,比如桌面电脑或笔记本电脑。能够利用虚拟化技术,这些技术应对了上述缺点,开启了 IT 领域的大门。它使得许多人和组织能够更高效地优化和管理他们的硬件资源。在虚拟化的世界中,虚拟机管理程序(Hypervisor)是一种特殊的应用程序,允许用户虚拟化操作系统,利用其系统上的硬件资源,使这些硬件资源可以与另一个虚拟化的操作系统或应用程序共享。这使得你可以在现有计算机的操作系统之上安装多个操作系统。假设你正在运行 Microsoft Windows 11 作为你的主操作系统,这通常被称为宿主操作系统,但你希望在同一台计算机上同时运行一个基于 Linux 的操作系统。你可以通过使用虚拟机管理程序来实现这一点。因此,我们将使用虚拟化来确保我们能够建立一个具有成本效益的渗透测试实验室环境。当设计渗透测试实验室环境时,我们需要以下组件:
-
虚拟化管理程序 – 虚拟化管理程序是一种应用程序,使我们能够虚拟化操作系统,并允许它们在任何硬件上运行。我们可以使用虚拟化管理程序创建多个虚拟机,这些虚拟机可以在我们的计算机上同时运行。虚拟化管理程序有很多种应用程序,我们将使用 Oracle VM VirtualBox 作为首选应用程序,因为它是免费的且易于使用。
-
攻击者机器 – 攻击者机器将用于创建并发起各种类型的网络攻击和威胁,以识别并利用目标系统中的安全漏洞。对于攻击者机器,我们将使用 Kali Linux。
-
易受攻击的机器 – 没有易受攻击的系统,我们的实验环境将不完整。我们将设置像 Metasploitable 2 这样的易受攻击系统,它是一个基于 Linux 的操作系统,托管 Web 应用程序,另外还会设置 Metasploitable 3,它有 Windows 和 Linux 版本的服务器。
-
易受攻击的 Web 应用 – 这将帮助你更好地理解威胁行为者是如何发现并利用 Web 应用中的安全漏洞的。我们将在 Kali Linux 上设置 开放 Web 应用安全项目(OWASP)的 Juice Shop Web 应用。
-
互联网访问 – 互联网连接将在 Kali Linux 虚拟机上设置。这将便于我们轻松下载其他应用程序、工具和软件包。
下图展示了我们虚拟化渗透测试实验环境的网络拓扑:
如上图所示,存在 4 个网络区域,分别是:
-
互联网用于访问在线资源,并且直接连接到 Kali Linux 虚拟机。
-
PentestNet 环境包含两台易受攻击的机器,位于
172.30.1.0/24
网络,并且也直接与 Kali Linux 连接。 -
RedTeamLab 环境包含一个 活动目录(AD)基础设施,包含一台 Windows 服务器和两台位于
192.168.42.0/24
网络上的客户端,并且与 Kali Linux 直接连接。 -
HiddenNet 环境包含一个位于
10.11.12.0/24
网络上的单一易受攻击主机,并且只能通过 PentestNet 网络访问。因此,我们需要攻破 PentestNet 环境中的一台主机,看看是否有办法进行攻击的横向移动。
下图提供了更多的技术细节,以便更好地理解在我们的实验环境中,特定的 IP 网络是如何分配的:
如前图所示,Kali Linux 虚拟机将分配 3 个网络适配器,这些通常被称为虚拟网络接口卡(vNICs)。这些 vNICs 使我们能够通过桥接连接访问互联网,使用 172.30.1.0/24
网络访问 PentestNet 环境,使用 192.168.42.0/24
网络访问 RedTeamLab 环境。这个实验设计非常适合学习如何在系统之间进行横向移动,从一个网络切换到另一个网络,并入侵 AD 环境。现在,您已经了解了虚拟实验室环境,以及我们将在本书中使用的系统和技术,接下来让我们开始设置虚拟化管理程序和虚拟网络吧。
设置虚拟化管理程序和虚拟网络
信息技术行业有许多来自不同厂商的虚拟化管理程序,然而,Oracle VM VirtualBox 是一款免费且易于使用的虚拟化管理程序,具备与商业(付费)产品相同的所有基本功能。在本节中,您将学习如何设置 Oracle VM VirtualBox 并在计算机上创建虚拟网络。在开始之前,以下是一些重要因素和要求:
-
确保计算机的处理器支持虚拟化功能,例如VT-x/AMD-V。
-
确保通过 BIOS/UEFI 在您的处理器上启用了虚拟化功能。
如果您不确定如何访问计算机上的 BIOS/UEFI,请查阅设备手册或访问供应商网站以获取具体说明。
让我们开始吧!
第一部分 - 设置虚拟化管理程序
如前所述,业界有许多虚拟化管理程序,本书将全程使用 Oracle VM VirtualBox。然而,如果您希望使用其他虚拟化管理程序,请确保根据系统和网络设计进行配置。要开始此练习,请使用以下说明:
- 首先,在您的主机计算机上,访问
www.virtualbox.org/wiki/Downloads
,并选择适合您的主机操作系统的Oracle VirtualBox 平台包,如下所示:
- 接下来,您需要下载Oracle VM VirtualBox 扩展包应用程序。这将为VirtualBox 管理器应用程序启用额外的功能,例如在主机计算机上创建虚拟隔离的网络。在同一下载页面上,稍微向下滚动即可找到下载链接,如下所示:
- 接下来,安装在第 1 步中下载的Oracle VirtualBox 平台包。在安装过程中,使用默认配置。一旦应用程序安装到您的主机计算机上,VirtualBox 管理器界面将如下所示:
-
接下来,关闭Oracle VM VirtualBox 管理器应用程序,因为此时不需要它。
-
接下来,要安装Oracle VM VirtualBox 扩展包,只需右键单击软件包并选择打开方式 > VirtualBox Manager,如下所示:
- VirtualBox 许可证窗口将出现,请确保阅读并点击同意以接受协议,继续安装,如下所示:
安装完成后,您可以关闭VirtualBox Manager应用程序,直到以后需要时再打开。
第二部分 - 创建虚拟隔离网络
在创建渗透测试实验环境时,切勿意外地扫描或释放恶意载荷到您拥有的系统和网络上,如互联网上的系统。要开始设置虚拟隔离网络,请使用以下说明:
-
首先,在您的 Windows 主机上打开命令提示符。
-
接下来,使用以下命令将当前工作目录更改为
C:\Program Files\Oracle\VirtualBox
:
C:\Users\Glen> cd C:\Program Files\Oracle\VirtualBox
- 接下来,使用vboxmanage应用程序,使用以下命令为虚拟PentestNet网络创建一个虚拟动态主机配置协议(DHCP)服务器:
C:\Program Files\Oracle\VirtualBox> vboxmanage dhcpserver add --network=PentestNet --server-ip=172.30.1.1 --lower-ip=172.30.1.20 --upper-ip=172.30.1.50 --netmask=255.255.255.0 --enable
以下代码片段展示了在命令提示符上执行的前述命令:
执行前述命令后,vboxmanage应用程序会创建一个 DHCP 服务器,该服务器会自动将 IP 地址从172.30.1.1
到172.30.1.254
范围内分配给任何连接到PentestNet网络的系统。
您可以使用
vboxmanage list dhcpservers
命令查看在您的主机计算机上通过 VirtualBox 启用的所有 DHCP 服务器及其配置。
- 接下来,使用以下命令为HiddenNet网络创建一个新的 DHCP 服务器:
C:\Program Files\Oracle\VirtualBox> vboxmanage dhcpserver add --network=HiddenNet --server-ip=10.11.12.1 --lower-ip=10.11.12.20 --upper-ip=10.11.12.50 --netmask=255.255.255.0 --enable
以下代码片段展示了执行前述命令的过程:
执行前述命令后,它将创建另一个虚拟 DHCP 服务器,该服务器将自动将 IP 地址从10.11.12.1
到10.11.12.20
范围内分配给任何连接到HiddenNet网络的虚拟机。
- 接下来,使用以下命令创建另一个 DHCP 服务器和虚拟网络,将分配给RedTeamLab网络:
C:\Program Files\Oracle\VirtualBox> vboxmanage dhcpserver add --network=RedTeamLab --server-ip=192.168.42.1 --lower-ip=192.168.42.20 --upper-ip=192.168.42.50 --netmask=255.255.255.0 --set-opt 6 192.168.42.40 --enable
以下代码片段展示了执行前述命令以创建另一个虚拟 DHCP 服务器:
与前面的步骤不同,创建RedTeamLab网络的命令已被修改,指定了虚拟机连接到该虚拟网络时所使用的域名系统(DNS)服务器地址。在设置 AD 实验环境时,DNS 服务器地址将非常有用。此时,超管虚拟机和虚拟网络已经配置完毕。接下来,您将学习如何将 Kali Linux 作为虚拟机部署并设置在我们的实验环境中。
设置和使用 Kali Linux
Kali Linux 是网络安全行业中最受欢迎的 Linux 发行版之一,因为它包含了超过 300 个预安装的软件包,这些软件包主要用于进攻性安全评估。道德黑客和渗透测试人员通常使用 Kali Linux 对目标系统和网络进行侦察、扫描、枚举、利用甚至后期利用技巧。虽然很多人通常认为 Kali Linux 仅为进攻性安全专业人士(如渗透测试人员)设计,但它在技术行业中也被系统管理员甚至网络安全专业人员广泛使用,用于测试其安全控制和系统的安全漏洞。然而,Kali Linux 基于 Debian 版本的 Linux,并且作为一个免费的操作系统,它多年来已吸引了网络安全行业专业人员的广泛关注。Kali Linux 拥有许多功能和工具,使得渗透测试人员或安全工程师在工作时更加轻松。它包含了许多工具、脚本和框架,用于执行各种任务,如收集目标信息、进行网络扫描、漏洞发现,甚至是利用攻击,仅举几例。在本节中,您将学习如何将 Kali Linux 设置为虚拟机,建立与互联网和我们虚拟隔离网络的连接,并了解 Kali Linux 的基础知识。让我们开始吧!
第一部分 – 将 Kali Linux 部署为虚拟机
Kali Linux 有多种部署模型,从直接在硬件上进行裸机安装,到在 Android 设备上安装。为了简化我们的实验室设置过程,并让操作更容易跟随,您将学习如何在 Oracle VM VirtualBox 应用程序中将 Kali Linux 设置为虚拟机。这种方法确保您可以快速开始。请按照以下说明开始这项练习:
- 首先,访问官方 Kali Linux 网站
www.kali.org/get-kali/
,然后点击 虚拟机,如下面所示:
- 接下来,点击 VirtualBox 64 下载 Kali Linux 2023.2 的 VirtualBox 镜像,如下所示:
下载的文件是一个压缩文件夹,扩展名为 .7z。
-
接下来,为了解压缩文件夹中的内容,您需要从
www.7-zip.org/download.html
下载并安装 7-Zip 应用程序。 -
接下来,打开 7-Zip 文件管理器 应用,导航到包含 Kali Linux 压缩文件夹的目录,选择文件并点击 提取,如下面所示:
- 接下来,文件解压窗口将会出现,点击 确定 继续,如下面所示:
解压过程将开始,通常需要几秒钟或几分钟才能完成。解压完成后,你会在 7-Zip 文件管理器 中看到一个新文件夹。这意味着文件内容已成功解压,现在可以关闭该应用程序。
- 接下来,打开 Windows 资源管理器,并进入包含已解压内容的目录。在该目录下,你将看到两个文件,右键点击 VirtualBox 虚拟机定义 文件,选择 打开方式 > VirtualBox 管理器,如下所示:
Oracle VM VirtualBox Manager 应用程序将自动打开,并导入 Kali Linux 虚拟机,如下所示:
在启动 Kali Linux 虚拟机之前,需要对虚拟机设置进行一些定制调整。
第二部分 – 定制 Kali Linux 及其网络适配器
以下说明将引导你定制 Kali Linux 虚拟机环境,并确保它与我们的虚拟化渗透测试实验室拓扑对齐。此外,你将学习如何将每个 vNIC(网络适配器)连接到互联网、PentestNet 和 RedTeamLab 虚拟网络。开始定制 Kali Linux 虚拟环境,请按以下说明操作:
- 首先,确保 Nested VT-x/AMD-V 虚拟化功能在虚拟机和计算机处理器之间是可用的,我们需要在 Windows 命令提示符中执行以下命令:
C:\Users\Glen> cd C:\Program Files\Oracle\VirtualBox
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe list vms
重要提示
VBoxManage.exe list vms
命令使我们能够查看所有虚拟机的列表,包括它们的名称和在 Oracle VM VirtualBox 管理器中的 ID。
- 接下来,使用新导入的 Kali Linux 虚拟机的名称,使用以下命令启用虚拟机上的 Nested VT-x/AMD-V 功能:
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe modifyvm "kali-linux-2023.2-virtualbox-amd64" --nested-hw-virt on
确保将你在 第 1 步 中看到的 Kali Linux 虚拟机的名称替换为引号内显示的名称,如下所示:
- 接下来,在 Oracle VM VirtualBox Manager 中,选择 Kali Linux 虚拟机 并点击 设置,如下所示:
- 若要调整分配给虚拟机的内存(RAM)数量,请进入 系统 > 主板 > 基础内存,如下所示:
建议不要在基础内存刻度的黄色和红色区域分配内存。Kali Linux 可以在 2 GB 内存下高效运行;然而,如果你的系统有超过 8GB 的可用内存,那么可以考虑为 Kali Linux 虚拟机分配 4 GB 内存。
此外,在 系统 > 处理器 标签页中,你可以修改分配给该虚拟机的虚拟 CPU 核心数量。使用 1 到 2 个核心即可满足需求;但根据计算机可用硬件资源的不同,你也可以分配更多的核心。
-
接下来,让我们将Kali Linux 虚拟机连接到您的物理网络,以访问互联网。在 Kali Linux 的设置菜单中,选择网络类别 > 适配器 1,并使用以下配置:
-
启用网络适配器
-
附加到:桥接适配器
-
名称:使用下拉菜单选择与您的物理网络连接并能访问互联网的物理网络适配器。
-
以下截图展示了应用于适配器 1(vNIC 1)的前述配置:
-
接下来,让我们将适配器 2(vNIC 2)分配给PentestNet网络。选择适配器 2标签,并使用以下配置:
-
启用网络适配器
-
附加到:内部网络
-
名称:在字段中手动输入
PentesNet
-
混杂模式:允许所有
-
以下截图展示了应用于适配器 2(vNIC 2)的前述配置:
-
最后,让我们将适配器 3(vNIC 3)分配给RedTeamLab网络。选择适配器 3标签,并使用以下配置:
-
启用网络适配器
-
附加到:内部网络
-
名称:在字段中手动输入
RedTeamLab
-
混杂模式:允许所有
-
以下截图展示了应用于适配器 3(vNIC 3)的前述配置:
在适配器 3上配置网络设置后,点击确定以保存 Kali Linux 虚拟机的设置。至此,我们已配置 Kali Linux 虚拟机上的所有 3 个虚拟网络适配器。一个适配器通过主机计算机上的物理适配器提供互联网连接,另外 2 个虚拟适配器连接到虚拟网络(PentestNet 和 RedTeamLab)。
第三部分 - 开始使用 Kali Linux
许多初次使用者总是对登录到他们的第一个攻击者机器感到兴奋,特别是这样一台旨在帮助道德黑客和渗透测试人员发现并利用目标系统和网络中的安全漏洞的机器。以下说明将帮助您开始使用 Kali Linux:
-
首先,打开Oracle VM VirtualBox 管理器,选择Kali Linux 虚拟机并点击启动以开机。
-
接下来,将出现登录提示,使用详细的用户凭据,用户名:
kali
,密码:kali
登录到桌面:
如果您的 Kali Linux 桌面视图没有根据显示器的分辨率进行缩放,只需在VirtualBox 菜单栏的顶部切换视图选项 > 视图 > 自动调整客户机显示。
- 一旦登录到 Kali Linux 操作系统,为了查看可用工具的列表,请点击桌面左上角的 Kali Linux 图标,如下所示:
如上图所示,预安装的工具都是按照执行伦理黑客和渗透测试练习的顺序进行分类的。例如,所有常用于侦察的工具可以轻松找到在01 – 信息收集类别中,而无线渗透测试工具则可以在06 – 无线攻击类别中找到。在本书中,你将主要使用 Linux 终端并学习许多命令。如果这是你第一次使用 Linux 和命令,不用担心,这将是一次全新的学习体验,并且在学习新技术、发展你的攻防安全技能、模拟真实的网络攻击的过程中,你将会玩得很开心。
- 接下来,为了在 Kali Linux 上禁用 IPv6,点击左上角的 Kali Linux 图标,选择设置管理器图标,如下所示:
- 设置窗口将出现,点击高级网络配置,如下所示:
- 接下来,网络连接窗口将出现,选择有线连接 1(vNIC 1),然后点击齿轮图标,如下图所示:
- 接下来,编辑有线连接 1窗口将出现,选择IPv6 设置标签,将方法更改为禁用,然后点击保存,如下所示:
你可以关闭网络连接窗口和设置菜单。
- 接下来,让我们确定 Kali Linux 虚拟机是否在每个连接到互联网的网络适配器上获取了 IP 地址,分别是 PentestNet 和 RedTeamLab 网络。
要打开Linux 终端,点击左上角的 Kali Linux 图标,选择终端模拟器,然后执行 ip address
命令,如下所示:
如上图所示,Kali Linux 虚拟机上有 4 个网络适配器:
-
lo – 这是回环网络适配器,允许操作系统与自托管的应用程序进行通信,反之亦然。
-
eth0 – 根据我们的实验室拓扑图,这是 vNIC 1,并且在虚拟机设置中它的网络适配器 1 连接到互联网,通过物理网络实现连接。inet 地址是分配给该接口的 IP 地址。
-
eth1 – 根据实验室拓扑图,这是 vNIC 2,它是虚拟机设置中的网络适配器 2,连接到 PentestNet 网络(
172.30.1.0/24
)环境。 -
eth3 – 根据实验室拓扑图,这是 vNIC 3,它是虚拟机设置中的网络适配器 3,连接到 RedTeamLab 网络(
192.168.42.0/24
)环境。
- 接下来,让我们检查网络连接,并确认 DNS 解析是否在我们的 Kali Linux 虚拟机上正常工作。在 终端 中,使用以下命令向
www.google.com
发送 4 个 Internet Control Message Protocol(ICMP)消息:
kali@kali:~$ ping www.google.com -c 4
以下截图显示 Kali Linux 操作系统成功地将主机名解析为 IP 地址,并成功连接到互联网上的 Google Web 服务器:
- 最后,要更改用户名为
kali
的默认密码,请使用passwd
命令,如下图所示:
在 Linux 终端输入密码时,由于安全原因,密码是不可见的。
第四部分 - 更新仓库源和软件包
有时,某些工具可能无法按预期工作,甚至在渗透测试或安全审计过程中意外崩溃。开发人员经常发布更新以修复应用程序和软件包中的错误,并向用户体验中添加新功能。让我们通过以下步骤学习如何更新源和软件包:
- 要更新 Kali Linux 上的本地软件包仓库列表,请使用
sudo apt update
命令,如下所示:
通过更新 Kali Linux 机器上的软件包仓库列表,当您使用 sudo apt install <package-name>
命令安装新的软件包时,Kali Linux 将从官方源获取该应用程序的最新版本并进行更新。
source.list
文件并不总是能够正确更新。为了确保您的 Kali Linux 机器设置正确,请查看关于 Kali Linux 仓库的官方文档,网址为:www.kali.org/docs/general-use/kali-linux-sources-list-repositories/
。
- (可选)要将您的 Kali Linux 机器上的所有现有软件包升级到最新版本,请使用
sudo apt upgrade
命令,如下所示:
如果在升级过程中收到 Kali Linux 无法执行升级的错误信息,请使用 sudo apt update --fix-missing
命令,然后再次使用 sudo apt upgrade
。
- 接下来,Dewalt 提供的 PimpMyKali 脚本可以帮助我们修复和安装一些非常有用的实用工具和工具集到我们的 Kali Linux 虚拟机中。请使用 Dewalt 提供的以下命令:
kali@kali:~$ git clone https://github.com/Dewalt-arch/pimpmykali
kali@kali:~$ cd pimpmykali
kali@kali:~/pimpmykali$ sudo ./pimpmykali.sh
接下来,PimpMyKali 命令行菜单会显示多个选项,输入 N
,因为我们在新的虚拟机上运行此脚本,如下所示:
在设置过程中,脚本会询问是否重新启用以 *root*
账户登录 Kali Linux 的功能,这完全取决于个人偏好。我输入了 N
(否)并按下回车键继续该过程。请记住,这个设置过程需要几分钟才能完成。
- 最后,在设置过程完成后,你需要重新启动 Kali Linux 虚拟机以确保所有配置生效。你可以在 Kali Linux 桌面界面的右上角找到电源选项。
若要了解更多关于 Dewalt 的 PimpMyKali 脚本的信息,请查看官方 GitHub 仓库:
github.com/Dewalt-arch/pimpmykali
。
完成本部分后,你已经学会了如何将 Kali Linux 设置为虚拟机,启用虚拟机的互联网和其他网络连接,并更新软件包仓库源列表。接下来,你将学习如何设置一个易受攻击的 Web 应用程序,并在本书的后续章节中探索 Web 应用程序渗透测试。
设置易受攻击的 Web 应用程序
学习如何使用 Kali Linux 模拟现实世界的网络攻击,如果没有了解如何发现和利用 Web 应用程序中的漏洞,学习过程是不完整的。开放 Web 应用程序安全项目(OWASP)是一个致力于通过软件(包括 Web 应用程序)提升安全性的组织。OWASP 以其 Web 应用程序中最关键的安全风险榜单——OWASP Top 10 而闻名。
本书编写时,OWASP Top 10 的最新版本是 2021 年。更多信息请见:
owasp.org/www-project-top-ten/
。
作为一个有抱负的道德黑客和渗透测试员,了解如何识别并对 OWASP Top 10 列表中的每个类别进行安全测试非常重要。OWASP 创建了一些项目,使学习者能够在安全环境中安全地使用他们的进攻性安全技能和技术,发现 Web 应用程序的漏洞并加以利用。在本部分中,我们将在 Kali Linux 上部署 OWASP Juice Shop 易受攻击的 Web 应用程序。要开始设置 OWASP Juice Shop Web 应用程序,请使用以下指令:
-
首先,启动你的 Kali Linux 虚拟机 并登录。
-
接下来,打开 终端 并使用以下命令更新软件包仓库列表:
kali@kali:~$ sudo apt update
- 接下来,使用以下命令在 Kali Linux 上安装 Docker 仓库源:
kali@kali:~$ printf '%s\n' "deb https://download.docker.com/ linux/debian bullseye stable" | sudo tee /etc/apt/sources.list.d/docker-ce.list
以下截图显示了前述命令成功执行的情况:
- 接下来,使用以下命令下载并设置 GNU 隐私保护(GPG)密钥以供 Docker 使用:
kali@kali:~$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-cearchive-keyring.gpg
以下截图显示了前述命令成功执行的情况:
若要了解更多有关在 Kali Linux 上设置 Docker 的信息,请查看官方文档:
www.kali.org/docs/containers/installing-docker-on-kali/
。
- 接下来,再次更新软件包仓库列表并使用以下命令安装 Docker:
kali@kali:~$ sudo apt update
kali@kali:~$ sudo apt install -y docker.io
kali@kali:~$ sudo systemctl enable docker –now
kali@kali:~$ sudo usermod -aG docker $USER
使用
docker version
命令测试 Docker 是否在 Kali Linux 上正确安装。
- 接下来,使用已安装的 Docker 应用程序从在线 Docker Hub 仓库拉取OWASP Juice Shop容器:
kali@kali:~$ sudo docker pull bkimminich/juice-shop
以下截图展示了 OWASP Juice Shop Docker 容器的下载和设置过程:
- 接下来,使用以下命令在 3000 端口运行 OWASP Juice Shop Docker 容器:
kali@kali:~$ sudo docker run --rm -p 3000:3000 bkimminich/juice-shop
以下代码片段展示了前面命令的执行:
要停止运行的 Docker 容器,请使用
CTRL + C
快捷键组合。
- 最后,在 Kali Linux 上打开 Firefox 浏览器并访问
http://127.0.0.1:3000
,以访问并与 OWASP Juice Shop 网络应用程序交互,如下图所示:
要了解更多有关 OWASP Juice Shop 脆弱网络应用程序的信息,请参见官方文档:
owasp.org/www-project-juice-shop/
。
完成此练习后,您已学会如何在 Kali Linux 上设置 Docker 和 OWASP Juice Shop。接下来,您将学习如何在我们的实验室环境中设置 Metasploitable 2,这是一种脆弱的基于 Linux 的系统。
将 Metasploitable 2 部署为脆弱机器
在构建渗透测试实验室时,重要的是包括一些脆弱的系统,它们将作为我们的攻击目标。这些系统包含故意设置的脆弱服务和应用程序,能够帮助我们练习并提高技能,更好地理解如何发现和利用漏洞。一台非常流行的脆弱机器被称为 Metasploitable 2。这个脆弱机器包含许多可以被利用的安全漏洞,非常适合学习道德黑客和渗透测试。为了开始在我们的实验室环境中设置 Metasploitable 2,请按照以下说明操作:
第一部分 – 部署 Metasploitable 2
以下步骤将指导您获取 Metasploitable 2 虚拟机并在 Oracle VM VirtualBox 管理器中进行部署:
-
首先,在主机计算机上,访问
sourceforge.net/projects/metasploitable/files/Metasploitable2/
下载metasploitable-linux-2.0.0.zip文件到您的设备。 -
下载 ZIP 文件后,解压(解压缩)其内容。解压后的文件是 Metasploitable 2 虚拟机的虚拟硬盘和设置配置文件。
-
接下来,我们创建一个用于 Metasploitable 2 的虚拟机,打开Oracle VM VirtualBox 管理器并点击新建。
-
当创建虚拟机窗口出现时,点击专家模式以更改配置视图。
-
接下来,使用以下配置来设置虚拟机:
-
名称:Metasploitable 2
-
类型:Linux
-
版本:其他 Linux(64 位)
-
以下截图展示了创建虚拟机窗口中的前面设置:
- 接下来,在创建虚拟机窗口中展开硬盘类别,选择使用现有虚拟硬盘文件选项,然后点击右侧的文件夹图标,如下所示:
- 接下来,点击硬盘选择器并点击添加,如下所示:
- 接下来,将弹出一个窗口,使用它导航到Metasploitable 2提取文件夹及其内容,选择Metasploitable VMDK 文件并点击打开,如下所示:
- 接下来,您将自动返回到硬盘选择器窗口,您将在其中看到Metasploitable磁盘文件,选择它并点击选择,如下所示:
- 接下来,您将自动返回到创建虚拟机窗口,在那里您将看到Metasploitable.vmdk文件被加载为现有的虚拟磁盘文件,点击完成,如下所示:
此时,Metasploitable 2 虚拟机已经在 Oracle VM VirtualBox 管理器中创建并加载。接下来,我们将把 Metasploitable 2 虚拟机连接到PentestNet虚拟网络。
第二部分 – 配置网络设置
由于我们的渗透测试实验室拓扑包含多个虚拟网络,以下步骤将帮助确保 Kali Linux 与 Metasploitable 2 虚拟机之间具有端到端的网络连接。
-
要配置网络设置,请在Oracle VM VirtualBox 管理器中选择新创建的Metasploitable 2虚拟机并点击设置。
-
接下来,进入网络部分 > 选择适配器 1并使用以下配置:
-
启用网络适配器
-
附加到:内部网络
-
名称:PentestNet(请手动在字段中输入)
-
混杂模式:允许所有
-
以下截图显示了适配器 1的前述配置,点击确定保存:
- 接下来,启动Metasploitable 2虚拟机,并使用用户名:
msfadmin
和密码:msfadmin
登录。然后使用ip address
命令验证虚拟机是否在172.30.1.0/24
网络上获取了 IP 地址,如下所示:
如果您的鼠标光标卡在虚拟机内,请按右 Ctrl 键释放光标。
- 最后,使用
sudo halt
命令关闭 Metasploitable 2 虚拟机。
完成本节后,您已经学会了如何将 Metasploitable 2 设置为我们渗透测试实验室中的易受攻击的机器。接下来,您将学习如何使用 Vagrant 构建和部署 Metasploitable 3。
构建和部署 Metasploitable 3
在本节中,您将学习如何构建和部署 Metasploitable 3,包括 Windows 服务器版和 Linux 服务器版。Windows 服务器版将使用双网卡网络连接,分别连接到 PentestNet 网络(172.30.1.0/24
)和 HiddenNet 网络(10.11.12.0/24
)。这种设置将使我们能够在不同网络之间进行跳板和横向渗透。最后,Linux 服务器版将仅连接到 HiddenNet 网络(10.11.12.0/24
)。下图显示了系统和网络之间的逻辑连接:
如前所示,为了访问 Metasploitable 3 – Linux 服务器,我们首先需要通过 PentestNet 网络攻破 Metasploitable 3 – Windows 服务器,然后将攻击转向 HiddenNet 网络。
第一部分 - 构建 Windows 服务器版
要开始构建和部署 Metasploitable 3 – Windows 版本,请使用以下说明:
-
首先,您需要在主机计算机上下载并安装 Vagrant。Vagrant 使用户能够构建和维护虚拟机和应用程序。在您的主机计算机上,访问
www.vagrantup.com/
,并点击网页上的 Download 按钮。 -
接下来,选择并下载 Vagrant AMD64 版本 2.3.7,如下所示:
-
下载 Vagrant 软件包后,双击安装包以启动安装过程。安装完成后,系统会提示您重启主机计算机,以确保更改生效。
-
主机计算机重启后,打开 Windows 命令提示符,并使用以下命令重新加载并安装 Vagrant 的其他插件:
C:\Users\Glen> vagrant plugin install vagrant-reload
C:\Users\Glen> vagrant plugin install vagrant-vbguest
以下截图显示了前述命令的执行:
- 接下来,使用以下命令将 Metasploitable 3 – Windows 服务器版本加载到您的系统中,使用 Vagrant:
C:\Users\Glen> vagrant box add rapid7/metasploitable3-win2k8
- 接下来,选择选项
1
,如图所示,使用 VirtualBox 作为首选虚拟化程序:
Vagrant 将开始下载 Metasploitable – Windows 版本的虚拟机文件,如下所示:
- 接下来,将当前工作目录更改为
.vagrant.d\boxes
,重命名rapid7-VAGRANTSLASH-metasploitable3-win2k8
文件夹,并使用以下命令初始化 Metasploitable 3 – Windows 虚拟机的构建配置:
C:\Users\Glen> cd .vagrant.d\boxes
C:\Users\Glen\.vagrant.d\boxes> REN "rapid7-VAGRANTSLASH-metasploitable3-win2k8" "metasploitable3-win2k8"
C:\Users\Glen\.vagrant.d\boxes> vagrant init metasploitable3-win2k8
以下截图显示了前述命令成功执行的情况:
- 接下来,使用以下命令启动该虚拟机的构建过程:
C:\Users\Glen\.vagrant.d\boxes> vagrant up
下图显示了前面命令的执行情况:
这个过程通常需要几分钟才能完成。
如果
vagrant up
命令出现错误,请重新执行该命令。
- 过程完成后,打开Oracle VM VirtualBox Manager,您会发现一个新创建的虚拟机*boxes_default_正在运行。这是 Metasploitable 3 – Windows 虚拟机,选择它并点击显示:
- 一旦虚拟机被分离,在虚拟机菜单栏中,点击输入 > 键盘 > 插入 Ctrl-Alt-Del,如下图所示:
- 选择Administrator账户并使用默认密码:
vagrant
登录,如下所示:
登录后,简单地关闭所有出现的窗口,并不要激活操作系统。
-
点击左下角的开始图标并选择关闭按钮以关闭/关闭操作系统。
-
接下来,在Oracle VM VirtualBox Manager中,选择Metasploitable 3 – Windows虚拟机并点击设置。然后,选择网络类别并使用以下配置为适配器 1:
-
启用网络适配器
-
附加到:内部网络
-
名称:PentestNet(手动输入字段中)
-
混杂模式:允许所有
-
下图显示了适配器 1的前述配置:
-
接下来,选择适配器 2并使用以下配置:
-
启用网络适配器
-
附加到:内部网络
-
名称:HiddenNet(手动输入字段中)
-
混杂模式:允许所有
-
下图显示了适配器 2的前述配置:
若要重命名虚拟机,选择设置 > 常规 > 基本 > 名称选项。
- 最后,确保 Kali Linux 与 Metasploitable 3 – Windows 虚拟机在网络中具有端到端连接。
接下来,您将在 HiddenNet 网络中部署 Metasploitable 3 – Linux 虚拟机。
第二部分 - 构建 Linux 服务器版本
要在我们的实验室环境中开始设置 Metasploitable 3 的 Linux 版本,请使用以下说明:
- 在 Windows 命令提示符中,使用以下命令通过 Vagrant 加载 Linux 版本的 Metasploitable 3 到您的主机设备:
C:\Users\Glen\.vagrant.d\boxes> vagrant box add rapid7/metasploitable3-ub1404
- 接下来,选择选项1并按回车键以下载 Metasploitable 3 – Linux 版本的虚拟机文件,如下所示:
- 接下来,删除Vagrantfile文件,重命名rapid7-VAGRANTSLASH-metasploitable3-ub1404文件夹,并使用以下命令初始化 Metasploitable 3 – Linux 虚拟机的构建配置:
C:\Users\Glen\.vagrant.d\boxes> del Vagrantfile
C:\Users\Glen\.vagrant.d\boxes> REN "rapid7-VAGRANTSLASH-metasploitable3-ub1404" "metasploitable3-ub1404"
C:\Users\Glen\.vagrant.d\boxes> vagrant init metasploitable3-ub1404
下图显示了执行前述命令的过程:
您可能需要在继续下一步之前打开Oracle VM Virtual Manager。
- 接下来,打开Windows 资源管理器,然后前往
C:\Users\<userrname>\.vagrant.d\boxes\metasploitable3-ub1404\0.1.12-weekly\virtualbox
,在此文件夹下你会找到已编译的虚拟机文件。右键点击box文件 > 用…打开 > VirtualBox 管理器,如下所示:
- 接下来,导入虚拟设备窗口将出现,点击完成,如下所示:
- 接下来,metasploitable3-ub1404虚拟机将被导入到Oracle VM VirtualBox 管理器中。选择该虚拟机并点击设置,如下所示:
-
接下来,选择适配器 1并使用以下配置:
-
启用网络适配器
-
附加至:内部网络
-
名称:HiddenNet(手动输入该名称)
-
混杂模式:允许所有
-
以下截图显示了适配器 1上的前述配置:
- 最后,启动metasploitable3-ub1404虚拟机,使用用户名:vagrant,密码:vagrant 登录。登录后,使用
ip address
命令验证虚拟机是否在10.11.12.0/24
网络上获取到 IP 地址,如下所示:
使用
sudo halt
命令关闭该虚拟机。
完成本节后,你已经学会了如何在实验环境中设置 Metasploitable 3 的两个版本。Metasploitable 3 包含比其前身更多的新漏洞,后续章节将带你一起体验如何利用这些漏洞。
概要
完成本章后,你已经了解了在你的电脑上搭建渗透测试实验室的重要性。你学习了如何使用虚拟机管理程序来虚拟化系统的硬件资源,这些资源可以同时被多个操作系统共享并运行在同一台系统上。此外,你还掌握了在虚拟化环境中部署和设置 Kali Linux、多个易受攻击的系统和 Web 应用程序的技能。我相信,本章所提供的知识将为你提供宝贵的洞察力,支持你成为一名伦理黑客和渗透测试员的职业道路。在下一章设置高级黑客技术中,你将为后续章节中的红队技术设置一个 Active Directory 实验环境。
进一步阅读
-
OWASP Top 10 -
owasp.org/www-project-top-ten/
-
Kali Linux 博客 -
www.kali.org/blog/
第三章:3 为高级渗透测试技术做准备
加入我们的 Discord 书籍社区
packt.link/SecNet
https://github.com/OpenDocCN/freelearn-kali-pt2-zh/raw/master/docs/ult-kali-bk-3e/img/file73.png学习渗透测试的方法和技巧总是令人兴奋的。尽管许多专业人员可能专注于特定类型的渗透测试,例如内部或外部网络渗透测试、社交工程渗透测试,甚至是 Web 应用程序安全测试,但了解如何执行无线渗透测试以及如何在企业环境中攻破 Microsoft Windows 域始终是有益的。在本章中,您将学习如何设置一个活动目录域环境,使您能够执行高级渗透测试练习,例如红队技术,发现安全漏洞并攻破域控制器,接管组织的域。此外,您还将设置一个 RADIUS 访问服务器,为我们的企业无线网络提供认证、授权和计费(AAA)服务。在本章中,我们将涵盖以下主题:
-
构建一个活动目录红队实验室
-
设置无线渗透测试实验室
让我们开始吧!
技术要求
为了跟随本章中的练习,请确保您已经满足以下硬件和软件要求:
-
Oracle VM VirtualBox -
www.virtualbox.org/
-
Windows 10 Enterprise -
www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise
-
Windows Server 2019 -
www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2019
-
Ubuntu Server 22.04 LTS -
releases.ubuntu.com/jammy/
构建一个活动目录红队实验室
活动目录是 Microsoft Windows Server 操作系统中的一个角色,使 IT 管理员能够集中管理 Windows 环境中的所有用户、设备和策略。活动目录确保整个 Windows 域内的用户帐户可以进行集中管理,并且可以创建并分配策略给不同的用户组,以确保人员拥有执行与其工作职责相关的操作所需的访问权限。活动目录在全球许多组织中广泛存在。作为一个有抱负的道德黑客和渗透测试员,了解如何发现 Microsoft Windows 域中的各种安全漏洞,并利用这些安全缺陷攻破组织的域控制器及其系统、服务和共享资源是非常重要的。
要了解更多关于域控制器的作用和重要性,请参阅:
www.techtarget.com/searchwindowsserver/definition/domain-controller
。
本节将教你如何创建一个 Microsoft Windows 实验环境,其中包括一个 Microsoft Windows Server 2019 和 2 台 Windows 10 企业版客户端作为虚拟机。这个实验环境将允许你练习高级渗透测试技术,如针对 Windows 域的红队演练以及在 Active Directory 环境中利用安全漏洞。下图展示了 RedTeamLab 环境:
如我们所见,我们的 Kali Linux 虚拟机直接连接到RedTeamLab环境中的系统。在本书的后续章节中,你将学习如何对目标进行漏洞利用和后期利用技术,因此当你在 Windows 域内进行攻击时,我们假设你已经成功入侵网络,并至少攻破了一个连接到 Active Directory 的系统。现在,我们将专注于为后续的安全测试设置环境。下表显示了我们将在RedTeamLab环境中设置的用户账户:
如上表所示,我们将创建 2 个域用户(gambit 和 rogue),一个额外的域管理员(wolverine)以及一个具有域管理员权限的服务账户(sqladmin)。为了开始设置我们的红队实验室部分,请使用以下指示:
第一部分 – 设置 Windows Server
在本节中,你将学习如何将 Microsoft Windows Server 2019 设置为虚拟机。请按照以下步骤开始本练习:
- 在你的主机电脑上,访问
www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2019
,点击下载 VHD,确保你完成注册表单,以便访问虚拟硬盘(VHD)64 位版本的下载链接,如下所示:
与下载 ISO 镜像相比,使用预构建的 Windows Server 2019 VHD 文件将减少将 Windows Server 2019 操作系统安装为虚拟机所需的时间。
-
一旦 Windows Server 2019 VHD 文件下载到你的主机计算机上,打开Oracle VM VirtualBox 管理器,点击新建来创建一个新的虚拟机环境。
-
当创建虚拟机窗口出现时,点击专家模式并使用以下配置:
-
名称:Windows Server 2019
-
类型:Microsoft Windows
-
版本:Windows 2019(64 位)
-
硬盘:使用现有的虚拟硬盘文件(点击文件夹图标 > 添加 > 选择 Windows Server 2019 VHD 文件)。
-
点击完成以保存虚拟机
-
-
一旦 Windows Server 2019 虚拟机 在 Oracle VM VirtualBox 管理器 中创建并保存,选择它并点击 设置。
-
在 设置 窗口中,选择 网络 类别,并使用以下设置配置 适配器 1:
-
适配器 1:启用网络适配器
-
附加到:内部网络
-
名称:RedTeamLab(手动输入该字段)
-
混杂模式:允许所有
-
以下截图展示了适配器 1 的前述配置:
-
接下来,选择 Windows Server 2019 虚拟机 并点击 启动 以开机。
-
一旦虚拟机运行,您将被提示选择您的国家/地区、首选应用语言和键盘布局,点击 下一步。
-
接下来,您需要阅读 许可条款 并点击 接受。
-
接下来,为内建的
Administrator
帐户创建密码,使用P@ssword1
作为密码,并点击 完成。 -
接下来,登录到 Windows Server 2019 虚拟机。在虚拟机菜单栏中,选择 输入 > 键盘 > 插入 Ctrl-Alt-Del 以查看登录窗口:
- 使用用户名:
Administrator
和密码:P@ssword1
登录。
第二部分 – 配置虚拟机附加功能
-
确保 Windows Server 2019 虚拟机正在运行并且已登录。
-
要将虚拟机的桌面分辨率调整为适合主机计算机的显示器,在虚拟机菜单栏中,选择 设备 > 插入来宾附加 CD 镜像,如下所示:
- 接下来,在 Windows Server 2019 中打开 Windows 资源管理器,导航到 此电脑,双击 VirtualBox Guest Additions 虚拟磁盘,如下所示:
-
当安装窗口出现时,点击 下一步 并确保在安装过程中使用默认设置。安装完成后,请不要重启。
-
接下来,在 Windows Server 2019 中,点击 开始 按钮(左下角)并打开 Windows PowerShell。使用以下命令为以太网网络适配器静态分配 IP 地址和子网掩码:
PS C:\Users\Administrator> netsh interface ipv4 set address name="Ethernet" static 192.168.42.40 255.255.255.0
- 接下来,将默认主机名更改为
DC1
,并使用以下命令重启服务器:
PS C:\Users\Administrator> Rename-Computer -NewName "DC1" -Restart
以下截图展示了前述命令的执行结果:
- 接下来,服务器重启后,使用管理员凭据登录。Windows Server 桌面界面会自动调整为适应显示器的分辨率。如果没有,您可以通过 VirtualBox 菜单栏 > 查看 > 自动调整来宾显示 选项来切换,如下所示:
第三部分 – 设置活动目录域服务
活动目录是 Microsoft Windows Server 中非常重要且流行的角色,它允许 IT 专业人员集中管理 Windows 环境中的所有用户、设备和策略。要在我们的实验室中设置活动目录,请按照以下说明操作:
-
打开Windows PowerShell应用程序,在 Windows Server 2019 虚拟机中进行操作。
-
使用以下命令安装Active Directory 域服务及其管理工具:
PS C:\Users\Administrator> Install-WindowsFeature -name AD-Domain-Services -IncludeManagementTools
- 接下来,使用以下命令配置名为
redteamlab.local
的新的 Active Directory 林和域:
PS C:\Users\Administrator> Install-ADDSForest -DomainName redteamlab.local -skipprechecks
系统会提示您输入安全模式管理员密码,请输入P@ssword1
。当系统提示继续操作时,输入Y
并按Enter继续,具体操作请参考以下截图:
安装过程需要几分钟完成,然后 Windows Server 将自动重启。
- 服务器重启后,使用管理员凭据登录。这时,您将作为域管理员登录服务器。
第四部分 – 创建域用户和管理员账户
以下步骤将详细指导您如何创建域用户和域管理员,并将用户分配到各种安全组。为了确保这些步骤简洁明了,我们将使用 Windows Server 上的 Windows PowerShell:
- 在 Windows Server 2019 虚拟机中,打开Windows PowerShell应用程序,使用以下命令创建 4 个域用户账户:
PS C:\Users\Administrator> net user gambit Password1 /add /domain
PS C:\Users\Administrator> net user rogue Password1 /add /domain
PS C:\Users\Administrator> net user wolverine Password123 /add /domain
PS C:\Users\Administrator> net user sqladmin Password45 /add /domain
以下截图展示了前述命令的执行结果:
- 接下来,使用以下命令将
wolverine
账户设置为具有与管理员相同权限的高权限用户账户:
PS C:\Users\Administrator> net localgroup "Administrators" wolverine /add
PS C:\Users\Administrator> net group "Domain Admins" wolverine /add /domain
PS C:\Users\Administrator> net group "Enterprise Admins" wolverine /add /domain
PS C:\Users\Administrator> net group "Group Policy Creator Owners" wolverine /add /domain
PS C:\Users\Administrator> net group "Schema Admins" wolverine /add /domain
以下截图展示了前述命令的执行结果:
- 接下来,我们将对
sqladmin
账户执行相同操作:
PS C:\Users\Administrator> net localgroup "Administrators" sqladmin /add
PS C:\Users\Administrator> net group "Domain Admins" sqladmin /add /domain
PS C:\Users\Administrator> net group "Enterprise Admins" sqladmin /add /domain
PS C:\Users\Administrator> net group "Group Policy Creator Owners" sqladmin /add /domain
PS C:\Users\Administrator> net group "Schema Admins" sqladmin /add /domain
以下截图展示了前述命令的执行结果:
第五部分 - 禁用反恶意软件保护和域防火墙
在我们的实验室中,我们需要确保连接到 Windows 域的客户端禁用了 Windows Defender 反恶意软件保护。某些技术可以绕过当前和未来的防病毒软件,但随着恶意软件保护技术和解决方案的持续进步,未来将无法继续使用这些方法。以下步骤将引导您通过组策略对象(GPO)确保所有系统上禁用 Windows Defender 和主机防火墙:
- 在 Windows Server 2019 虚拟机中,打开Windows PowerShell应用程序,使用以下命令创建一个名为
DisableAVGPO
的新 GPO:
PS C:\Users\Administrator> New-GPO -Name DisableAVGPO -Comment "This GPO disables AV on the entire domain"
以下截图展示了执行前述命令时预期的结果:
- 接下来,使用以下命令禁用反恶意软件服务的常驻运行:
PS C:\Users\Administrator> Set-GPRegistryValue -Name 'DisableAVGPO' -Key "HKLM\Software\Policies\Microsoft\Windows Defender" -ValueName "ServiceKeepAlive" -Type DWORD -Value 0
如下所示,前述命令成功更新了DisableAVGPO
策略:
- 接下来,使用以下命令关闭反恶意软件的实时保护:
PS C:\Users\Administrator> Set-GPRegistryValue -Name 'DisableAVGPO' -Key "HKLM\Software\Policies\Microsoft\Windows Defender\Real-Time Protection" -ValueName "DisableRealtimeMonitoring" -Type DWORD -Value 1
以下截图展示了前述命令更新了策略:
- 接下来,使用以下命令关闭 Windows Defender Antivirus:
PS C:\Users\Administrator> Set-GPRegistryValue -Name DisableAVGPO -Key "HKLM\Software\Policies\Microsoft\Windows Defender" -ValueName "DisableAntiSpyware" -Type DWORD -Value 1
以下截图展示了前述命令的执行情况:
- 接下来,使用以下命令关闭 Windows Defender 防火墙:
PS C:\Users\Administrator> Set-GPRegistryValue -Name DisableAVGPO -Key "HKLM\Software\Policies\Microsoft\WindowsFirewall\StandardProfile" -ValueName "EnableFirewall" -Type DWORD -Value 0
PS C:\Users\Administrator> Set-GPRegistryValue -Name DisableAVGPO -Key "HKLM\Software\Policies\Microsoft\WindowsFirewall\DomainProfile" -ValueName "EnableFirewall" -Type DWORD -Value 0
PS C:\Users\Administrator> Set-GPRegistryValue -Name DisableAVGPO -Key "HKLM\Software\Policies\Microsoft\WindowsFirewall\PublicProfile" -ValueName "EnableFirewall" -Type DWORD -Value 0
如下截图所示,前述命令执行成功:
第六部分 – 为服务身份验证攻击做好设置
在我们的红队部分,你将学习如何在 Windows 环境中发现文件和网络共享资源。本节演示了如何在 Windows Server 2019 上创建网络文件共享,以模拟一个可以被威胁行为者利用的易受攻击的服务。开始本练习时,请按照以下指示操作:
- 在 Windows Server 2019 上,以管理员权限打开 Windows PowerShell 应用程序并执行以下命令,以在
C:
驱动器上创建共享文件夹:
PS C:\Users\Administrator> cd\
PS C:\> mkdir CorporateFileShare
PS C:\> net share DataShare=c:\CorporateFileShare
以下截图展示了前述命令的执行情况:
- 接下来,我们可以通过打开 Server Manager 应用程序并选择 File and Storage Services > Shares 来验证共享文件夹,如下所示:
- 接下来,为确保我们能够模拟网络攻击来破坏 Windows Server 环境中的 Kerberos 功能,我们需要在我们的域控制器(即 Windows Server)上创建 Service Principal Name(SPN)。以管理员权限打开 Windows PowerShell 应用程序并执行以下命令:
PS C:\> setspn -a DC1/sqladmin.REDTEAMLAB.local:64123 REDTEAMLAB\sqladmin
以下截图展示了执行前述命令以将 sqladmin
账户分配为 SPN:
若要了解更多有关 Windows Server 上服务主体名称的信息,请访问:
learn.microsoft.com/en-us/windows/win32/ad/service-principal-names
。
- 最后,在 Windows Server 2019 虚拟机上使用
slmgr /rearm
命令,防止其作为试用版自动关机。重启系统以确保更改生效,然后将虚拟机关机,直到稍后需要使用时。
第七部分 – 安装 Windows 10 企业版
在本节中,你将学习如何在红队实验室拓扑中设置两台 Microsoft Windows 10 客户端系统。一台虚拟机将以 Bob 用户登录,另一台则以 Alice 用户登录。开始本练习时,请按照以下指示操作:
-
在你的主机计算机上,若要下载 Microsoft Windows 10 企业版 ISO 文件,请访问
www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise
并点击 Download the ISO – Enterprise。 -
接下来,填写注册表单并点击 Download 按钮,然后选择 ISO - Enterprise 64-bit edition,如下所示:
-
一旦 Windows 10 企业版 ISO 文件下载到您的主机计算机上,打开Oracle VM VirtualBox 管理器,点击新建以创建一个新的虚拟机。
-
创建虚拟机窗口将出现,使用以下配置:
-
名称:Bob-PC
-
ISO 镜像:使用下拉菜单,选择其他 > 然后选择 Windows 10 企业版 ISO 文件并点击打开以附加该文件。
-
类型:Microsoft Windows
-
版本:Windows 10(64 位)
-
跳过无人值守安装:是(勾选此框)
-
以下截图显示了前面的配置:
一切设置完成后,点击完成以保存虚拟环境。
- 接下来,选择 Bob-PC 虚拟机并点击设置,如下所示:
-
点击网络类别,并对适配器 1 应用以下设置:
-
适配器 1:启用网络适配器
-
附加到:内部网络
-
名称:RedTeamLab(手动输入此字段)
-
混杂模式:允许所有
-
以下截图显示了适配器 1 的前面配置:
-
接下来,选择新创建的虚拟机,点击启动以开启系统。
-
在Windows 设置窗口中,点击下一步,然后点击立即安装。
-
接受适用的通知和许可条款,然后点击下一步。
-
对于安装类型,点击**自定义:仅安装 Windows(高级)**选项。
-
然后,选择Dive 0:未分配空间并点击下一步开始安装。安装完成后,虚拟机将自动重启两次。
-
第二次重启后,系统将提示您选择区域,点击是。
-
接下来,选择您的键盘布局,点击是。您可以跳过添加第二个键盘布局的选项。
-
在 Windows 10 设置过程中,系统会要求您连接到网络。选择我没有互联网选项继续,如下所示:
-
接下来,点击继续进行有限的设置。
-
接下来,创建用户名:
bob
,密码为:P@ssword2
。 -
在隐私窗口中禁用所有不必要的服务,并禁用 Cortana。之后,设置过程将继续,并自动登录到 Windows 10 桌面。
-
在 Windows 10 虚拟机上安装VirtualBox 客户端增强功能。请参阅第二部分,第 2 步至第 4 步。
-
在 Bob-PC 上,打开具有管理员权限的命令提示符,并使用以下命令启用网络发现和文件共享:
C:\Windows\system32> netsh advfirewall firewall set rule group="Network Discovery" new enable=Yes
C:\Windows\system32> netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes
以下截图显示了前面命令的执行结果:
- 接下来,使用以下命令将默认主机名更改为 Bob-PC:
C:\Windows\system32> powershell
PS C:\Windows\system32> Rename-Computer -NewName Bob-PC
PS C:\Windows\system32> Restart-Computer
一旦此虚拟机重新启动,主机名将变为 Bob-PC,并启用 Windows 网络和文件共享。现在关闭 Bob-PC。
- 接下来,让我们创建另一个 Windows 10 虚拟机,并将其命名为 Alice-PC。重复 步骤 3 – 20,并确保您将 Alice-PC 作为新虚拟机的名称(步骤 4)和主机名(步骤 20)。在安装过程中创建用户名:
alice
,密码:P@ssword2
作为本地用户。
第八部分 – 将客户端添加到域
使用以下指示将每台 Windows 10 虚拟机 Bob-PC 和 Alice-PC 加入到域控制器:
-
启动 Windows Server 2019 虚拟机,Bob-PC 和 Alice-PC。
-
在 Bob-PC 和 Alice-PC 上,以管理员权限(以管理员身份运行)打开 命令提示符,使用
ping 192.168.42.40
命令测试每台 Windows 10 系统与 Windows Server 2019 机器之间的网络连接,如下所示:
如前述截图所示,Bob-PC 能够成功与 Windows Server 2019 虚拟机通信。
- 接下来,在 Bob-PC 和 Alice-PC 上使用以下命令加入
redteamlab.local
域:
C:\Windows\system32> powershell
PS C:\Windows\system32> Add-Computer -DomainName RedTeamLab.local -Restart
- 接下来,将会出现 Windows PowerShell 凭据请求 窗口,请输入域管理员账户 (
Administrator
/P@ssword1
) 来验证请求并点击如下所示:
- 系统重新启动后,在登录窗口的左下角单击 其他用户。然后,使用域用户账户登录,例如用户名:
gambit
或rogue
,密码:Password1
,如下所示:
第九部分 – 设置账户接管和文件共享攻击
为了确保我们可以利用文件共享服务并对连接到域的 Windows 客户端执行账户接管攻击,请使用以下指示:
- 使用域管理员账户登录 Bob-PC 和 Alice-PC,例如用户名:
redteamlab\Administrator
,密码:P@ssword1
,如下所示:
- 以管理员权限打开 命令提示符,并使用以下命令将域用户账户
gambit
和rogue
设为 Bob-PC 和 Alice-PC 的本地管理员:
C:\Users\Administrator> net localgroup "Administrators" redteamlab\gambit /ADD
C:\Users\Administrator> net localgroup "Administrators" redteamlab\rogue /ADD
下图显示了上述命令的执行:
- 接下来,在同一 命令提示符 窗口中,使用以下命令在每台 Windows 10 机器 Bob-PC 和 Alice-PC 上创建一个本地共享文件夹:
C:\Users\Administrator> cd\
C:\> mkdir SharedData
C:\> net share DataShare=c:\SharedData
下图显示了上述命令的执行:
- 最后,关闭您的 Windows 10 和 Windows Server 2019 虚拟机,直到稍后需要它们。
完成本节后,你已经建立了一个包含许多组织中最常见服务和配置的 Microsoft Windows 实验环境。这个环境将帮助你在本书后续章节中进行高级渗透技术的演练,专注于红队演习。在下一节中,你将学习如何设置一个无线渗透测试实验室,以练习无线漏洞利用。
设置无线渗透测试实验室
了解如何进行无线渗透测试有助于组织确定真实威胁行为者如何发现并利用公司无线网络基础设施上的安全漏洞。在许多组织中,你通常会发现无线网络被部署来支持员工的无线移动性。员工可以将智能手机、物联网 (IoT) 设备、平板电脑和笔记本电脑连接到公司 Wi-Fi 网络,并访问有线网络上的资源,如打印机和服务器。在小型和大型组织中,无线路由器或接入点通常会使用以下无线安全标准之一进行配置:
-
有线等效隐私 (WEP)
-
Wi-Fi 受保护访问 (WPA)
-
Wi-Fi 受保护访问 2 (WPA2)
-
Wi-Fi 受保护访问 3 (WPA3)
现代大多数无线网络通常配置了 WPA2 和 WPA3 标准。前述的安全标准也为小型网络和普通消费者设计,因为它们通过使用一个共享密码(称为 预共享密钥 (PSK))来简化配置。因此,任何想要访问无线网络的人都需要相同的 PSK。在大型环境中,需要提高无线网络用户的安全性和集中管理。安全专家通常会在网络上实现一个 认证、授权与计费 (AAA) 服务器,如 远程认证拨号用户服务 (RADIUS),以处理网络用户、帐户和策略的集中管理。以下是无线网络的访问方法:
-
预共享密钥 (PSK) – 这种方法允许你在无线路由器或接入点上配置密码或密码短语。任何拥有 PSK 的人都可以访问网络。
-
企业版 – 这种方法利用运行 RADIUS 的集中访问服务器来处理 AAA。无线网络上的每个用户都需要在访问服务器上创建一个独特的用户帐户,并为该帐户分配策略,同时生成日志以确保问责制。
-
Wi-Fi 受保护设置 (WPS) – 这种访问方法取消了在无线网络上使用密码和密码短语的需求。它提供了一种通过 8 位数字 PIN 来轻松认证无线网络的方法。然而,已知存在安全漏洞和攻击方式来获取 WPS PIN。
因此,在这一部分,你将学习如何设置支持个人和企业无线网络安全测试的无线渗透测试实验环境。你将需要一个支持 WEP 的无线路由器或接入点,来学习如何对旧的安全标准进行安全测试,WPA2-Personal 用于新安全标准的安全测试,WPA2-Enterprise 用于企业无线网络的安全测试。此外,拥有支持 WPA3 的无线路由器将有助于学习如何攻破 WPA3 目标网络。以下图示展示了无线渗透测试实验环境:
如前图所示,RADIUS 服务器(接入服务器)和无线路由器/接入点连接到组织的内部网络。因此,如果攻击者能够攻破无线网络,敌方将获得未授权的访问权限,进而执行横向移动。下一部分将演示如何在你的计算机上设置 RADIUS,并将其与无线路由器或接入点关联。
设置 RADIUS 服务器
在本节中,我们将利用虚拟化的力量,在我们的网络上设置一个 RADIUS 服务器,如 FreeRadius,来处理无线路由器的 AAA 流程,用于测试 WPA2-Enterprise。要开始这项练习,请按照以下说明操作:
第一部分 – 安装 Ubuntu 服务器
-
首先,你需要下载并设置 Ubuntu Server 作为虚拟机。在你的主机上,访问
ubuntu.com/download/server
下载Ubuntu Server 22.04 LTS ISO 镜像。 -
接下来,打开Oracle VM VirtualBox Manager并点击新建来创建一个新的虚拟机。
-
在创建虚拟机窗口,确保使用以下配置:
-
名称:Radius Server
-
ISO 镜像:使用下拉菜单,选择“其他”,然后选择 Ubuntu Server ISO 文件。
-
类型:Linux
-
版本:Ubuntu(64 位)
-
跳过无人值守安装:勾选该框
-
以下截图显示了前述配置:
-
点击完成保存新虚拟机后,选择Radius Server虚拟机并点击设置。
-
在设置窗口中,选择网络类别,并为适配器 1 使用以下配置:
-
启用网络适配器
-
附加到:桥接适配器
-
名称:使用下拉菜单选择与物理网络连接的主机上的物理网络适配器。
-
-
接下来,启动Radius Server虚拟机以开始 Ubuntu Server 的安装过程。
-
在安装窗口中,选择试用或安装 Ubuntu Server选项以开始安装过程。
-
接下来,选择你偏好的语言并按回车。
-
接下来,选择你偏好的键盘配置并选择完成。
-
在选择安装类型菜单中,选择 Ubuntu Server 并选择完成。
-
接下来,在网络连接菜单中,将自动为此 Ubuntu Server 从您的网络分配一个 IP 地址,请确保记下该地址并选择完成。
-
在配置代理菜单中,保持默认设置并选择完成。
-
在配置 Ubuntu 归档镜像菜单中,保持默认设置并选择完成。
-
在引导存储配置菜单中,保持默认设置并选择完成。
-
在存储配置菜单中,保持默认设置并选择完成。
-
当确认破坏性操作窗口出现时,选择继续。
-
在配置文件设置菜单中,为自己创建一个用户账户并选择完成。
-
在升级到 Ubuntu Pro菜单中,保持默认设置并选择继续。
-
在SSH 设置菜单中,使用键盘上的空格键选择安装 OpenSSH 服务器选项,然后选择完成。
-
接下来,特色服务器快照菜单将出现,保持默认设置并选择完成。
-
安装过程需要一些时间完成,因为它会尝试自动下载并安装更新。完成此过程后,选择立即重启。
重启后,如果 ISO 文件未能从光驱中自动弹出,只需在控制台屏幕上按 Enter 键继续。
第二部分 – 设置 FreeRadius
本节中,您将学习如何在 Ubuntu 服务器上设置 FreeRadius,创建无线网络用户的用户账户。请使用以下说明开始此练习:
-
确保Radius 服务器虚拟机在Oracle VM VirtualBox 管理器中运行。
-
接下来,在 Windows 主机上,打开 Windows 的命令提示符应用程序,并使用以下命令远程连接到虚拟机:
C:\Users\Glen> ssh <yourname>@<server-ip-address>
以下截图显示了执行前述命令时的预期输出:
请记住,在终端界面输入密码时,为了安全原因,密码是不可见的。
- 接下来,使用以下命令更新本地软件包仓库列表并安装 FreeRadius:
glen@radius:~$ sudo apt update
glen@radius:~$ sudo apt install freeradius
以下截图显示了执行前述命令的结果:
- 接下来,使用以下命令验证 FreeRadius 的子目录:
glen@radius:~$ sudo ls -l /etc/freeradius/3.0/
以下截图显示了 3.0 文件夹内的文件和目录列表:
users
文件包含用户凭据,而clients.conf
文件包含 AAA 客户端账户,例如我们实验室拓扑中的无线路由器。
- 接下来,使用 Nano 命令行文本编辑器修改
users
文件并创建一个用户账户:
glen@radius:~$ sudo nano /etc/freeradius/3.0/users
- 使用键盘上的方向键,选择以下行:
#bob Cleartext-Password := "hello"
然后通过删除#
符号取消注释该行,并将密码从hello
更改为password123
,如下面所示:
-
接下来,按
CTRL + X
,然后按Y
和 Enter 键保存文件。 -
接下来,我们创建一个无线路由器的客户端账户,使用以下命令编辑
clients.conf
文件:
glen@radius:~$ sudo nano /etc/freeradius/3.0/clients.conf
- 使用方向键,进入 定义 RADIUS 客户端 部分,并插入以下代码:
client 172.16.17.123 {
secret = radiusclientpassword1
shortname = corporate-ap
}
以下截图显示了 clients.conf
文件中的前述代码:
客户端 IP 地址(172.16.17.123
)是无线路由器的 IP 地址,请确保检查无线路由器的 IP 地址,并用前述代码中的 IP 地址替换。如果客户端 IP 地址与无线路由器的 IP 地址不同,用户(bob)将无法通过 RADIUS 服务器进行身份验证。
-
按
CTRL + X
,然后按Y
和 Enter 键保存文件。 -
接下来,使用以下命令重新启动 FreeRadius 服务并验证其状态:
glen@radius:~$ sudo systemctl restart freeradius
glen@radius:~$ sudo systemtctl status freeradius
以下截图显示了 freeradius
服务已启动并正在运行:
- 此外,使用
sudo lsof -i -P -n | grep freerad
命令验证端口1812
和1813
是否为 FreeRadius 服务打开,如下所示:
第三部分 – 配置带有 RADIUS 的无线路由器
本部分将展示如何配置无线路由器以查询网络上的 RADIUS 服务器。在本部分中,您需要一台支持 WPA2-Personal 和 WPA-Enterprise 安全模式的物理无线路由器。下图展示了 RADIUS 服务器和无线路由器的 IP 地址,注意您的个人网络中 IP 地址可能会有所不同:
要开始配置带有 RADIUS 的无线路由器,请使用以下指南:
-
打开无线路由器并登录管理仪表盘。
-
接下来,进入 无线 选项卡,将 网络名称(SSID)更改为
Target_Net
,如下所示:
-
接下来,在无线安全菜单中,使用以下配置使无线路由器能够查询网络中的 RADIUS 服务器:
-
安全模式:WPA2-Enterprise
-
加密:AES
-
RADIUS 服务器:输入 RADIUS 服务器虚拟机的 IP 地址
-
RADIUS 端口:1812
-
共享密钥:radiusclientpassword1
-
以下截图显示了将前述配置应用于无线路由器时的情况:
请记住,您需要确保无线路由器上的 IP 地址与 RADIUS 服务器上的 clients.conf
文件中的 IP 地址匹配,同时 RADIUS 服务器的 IP 地址与无线路由器上的无线安全配置中的 IP 地址匹配。完成本部分后,您已学习如何设置一个无线渗透测试实验室环境,以执行高级渗透测试技术。
总结
在本章中,你已经掌握了构建一个 Windows 环境的实践技能,这个环境模拟了一个典型的企业组织,包含域用户、各种服务账户、管理员和共享网络资源。此外,你还学习了如何创建一个包含 RADIUS 服务器的无线网络实验室,用于提供 AAA 服务,帮助你在大型组织中复制企业无线网络。这些实验室环境将在本书后续章节中被用到,尤其是在你学习高级渗透测试技术(如红队演习)时。我相信本章所呈现的知识为你提供了宝贵的洞察,支持你在网络安全这个动态领域中成为一名道德黑客和渗透测试员的道路。愿这份新获得的理解赋能你的旅程,让你以自信的姿态在行业中前行,并产生深远的影响。在下一章,侦察与网络渗透测试,你将学习如何执行开源情报(OSINT),以被动方式收集目标的敏感信息。
进一步阅读
-
了解 FreeRadius -
www.techtarget.com/searchsecurity/definition/RADIUS
第四章:4 被动侦察
加入我们的 Discord 书籍社区
packt.link/SecNet
https://github.com/OpenDocCN/freelearn-kali-pt2-zh/raw/master/docs/ult-kali-bk-3e/img/file119.png作为一名有抱负的道德黑客和渗透测试员,培养你的技能并深入了解对手如何有效地发现并收集目标组织的敏感信息,分析收集的数据以生成有意义的信息,进而为计划未来对目标的网络攻击提供支持是至关重要的。像许多有抱负的道德黑客一样,我们总是对入侵系统和网络感到兴奋,因为这是学习进攻性安全战术和技术的有趣部分。然而,培养对手的思维方式同样重要,这有助于更好地理解真实的威胁行为者如何规划对目标系统、网络或组织的攻击。对手使用各种侦察技术和程序来寻找和收集关于目标的数据,以便更好地理解目标系统是否在线、是否存在安全漏洞,以及哪些攻击途径和基础设施可用于向目标传递恶意负载。了解关于目标的更多信息可以改善对手的攻击计划。本章中,你将学习威胁行为者和道德黑客如何使用侦察技术来发现、收集和分析被目标组织泄露的敏感数据,以及这些数据如何导致未来的网络攻击。此外,你还将学习如何隐匿作为道德黑客和渗透测试员的身份,并匿名化你的互联网流量,从而提高隐蔽性并减少威胁级别。本章将涵盖以下内容:
-
侦察的重要性
-
探索被动侦察
-
创建一个假身份
-
匿名化互联网流量
让我们开始吧!
技术要求
为了跟随本章的练习,请确保你已经满足以下硬件和软件要求:
- Kali Linux -
www.kali.org/get-kali/
侦察的重要性
侦察工作专注于收集尽可能多的目标数据,然后分析收集到的数据,生成有意义的信息,供对手或威胁行为者利用,以识别目标系统、网络或组织的攻击面和安全漏洞。对手使用各种侦察技术和工具收集关于目标的系统信息、网络信息和组织信息。在不了解目标及其弱点的情况下,创建如漏洞利用等武器将会非常困难,而这些武器可能会影响目标系统、网络或组织的机密性、完整性和/或可用性。系统信息为道德黑客提供了宝贵的洞察力,因为它让我们知道目标系统上运行的内容,例如主机操作系统及其版本。操作系统和版本信息帮助道德黑客研究已知的安全漏洞,并开发或获取具有潜在能力的漏洞利用工具,用于危及目标。例如,全球许多组织并不总是在其网络基础设施中运行最新版本的操作系统。尽管操作系统供应商不断推出新版本并向客户发布安全更新,但由于多种原因,并非每个人都安装最新的安全补丁或更新,甚至有些人不会升级到最新版本。这种情况为对手、道德黑客和渗透测试人员创造了许多可能性。假设你正在为一个目标组织进行内部网络渗透测试,并发现他们的服务器运行的是较旧版本的 Microsoft Windows Server,经过一些研究,你发现所有的服务器都存在EternalBlue和PrintNightmare这些严重的安全漏洞。如果一个真正的对手发现了这些漏洞,你可以想象可能带来的影响和损害。系统信息包括以下内容:
-
确定网络中的存活主机
-
设备主机名
-
操作系统类型和版本
-
运行中的服务及版本
-
开放的服务端口
-
未认证的网络共享
-
用户名和密码
网络信息帮助道德黑客和渗透测试人员识别目标组织是否使用了任何不安全的协议、是否运行了易受攻击的服务,或是否有任何无意暴露的关键系统服务端口。例如,不安全的网络协议在传输前后不加密任何数据,因此,道德黑客可以拦截网络流量,意图捕获任何敏感数据,如用户凭据和密码哈希,这些信息可以被用于未授权访问网络中的关键系统。网络信息包括以下内容:
-
域名系统 (DNS) 记录
-
域名
-
子域名
-
防火墙规则和策略
-
IP 地址和网络块
-
网络协议和服务
组织信息帮助道德黑客识别目标组织的员工及其联系信息,例如电话号码和电子邮件地址,这些信息可以用于各种社会工程攻击,如网络钓鱼。此外,识别高层次员工帮助道德黑客将网络钓鱼邮件集中在具有高权限用户账户的目标人物上。组织信息包括以下细节:
-
员工的详细信息和联系信息
-
组织及其远程办公室的地理位置
-
员工的角色和资料
洛克希德·马丁公司网络杀伤链的第一阶段是侦察,描述了威胁行为者如何利用此阶段进行攻击计划,如对目标进行广泛的研究,以更好地了解其安全漏洞,并确定威胁行为者如何实现其网络攻击的目标。此外,MITRE ATT&CK框架将侦察列为其企业矩阵的第一阶段,并将其描述为攻击者用来以被动或主动方式收集有关目标的信息的技术,包括收集组织、网络、系统信息以及员工数据,这些数据可以在未来的网络攻击中利用。因此,像道德黑客和渗透测试人员这样的网络安全专业人士也使用相同的侦察技术来高效地收集和分析数据,模拟真实攻击者的行为,进而攻击目标。因此,这为道德黑客和渗透测试人员提供了网络威胁情报(CTI),帮助他们了解目标组织如何泄露敏感数据,以及这些数据如何被真正的攻击者利用,在未来的攻击中加以利用。侦察通常分为以下几个类别:
-
被动侦察 – 被动侦察技术的目的是确保道德黑客不会与目标建立直接互动。此技术涉及从互联网的多个数据源收集和分析公开可用的信息,关于目标的详细资料。被动信息收集帮助道德黑客提高隐蔽性,减少触发安全传感器或警报的可能性,避免引起目标注意。
-
主动侦察 – 主动侦察技术通过与目标建立直接连接或互动,收集那些无法通过被动侦察技术获得的敏感信息。此技术涉及通过网络向目标发送特制探针,以收集操作系统、运行中的服务等技术细节。
根据 MITRE ATT&CK 框架,以下是对手常用的侦察技术:
-
主动侦察 – 该技术专注于向目标系统和网络发送探测信号,收集敏感信息,例如识别目标的网络块信息,发现应用程序和操作系统中的安全漏洞。
-
收集受害者主机信息 – 该技术帮助威胁行为者收集关于目标硬件、设备上运行的软件、设备固件及系统配置的信息。
-
收集受害者身份信息 – 恶意行为者使用此技术收集用户凭证、电子邮件地址、员工姓名和联系信息,这些信息来自公开数据源和泄露数据。
-
收集受害者网络信息 – 威胁行为者利用该技术收集目标网络基础设施的网络相关信息,如域名注册商信息、公共 DNS 记录、网络拓扑信息、IP 地址和网络块信息。
-
收集受害者组织信息 – 恶意行为者使用此技术收集关于目标的地理位置、服务提供商、商业运营的日期和时间,以及识别组织的关键人员。
-
信息钓鱼 – 恶意行为者常通过向目标组织发送钓鱼电子邮件,试图欺骗受害者执行某些操作或透露敏感信息,这些信息可进一步在网络攻击中被利用。
-
搜索封闭的源数据 – 搜索封闭的数据源包括查阅基于订阅的服务,这些服务提供有关威胁情报和数据泄漏的信息,包含有关组织泄露数据的敏感信息。
-
搜索开放的技术数据库 – 这些开放的技术数据库包含有关人员、组织和域名的公开信息。这些信息可被威胁行为者在规划网络攻击时利用。
-
搜索开放网站/域名 – 该技术涉及通过社交媒体平台、互联网搜索引擎和代码仓库网站搜索任何公开可用的信息,这些信息可用于识别安全漏洞并计划针对目标的网络攻击。
-
搜索受害者拥有的网站 – 访问目标拥有的网站可能包含有用的信息,如员工联系方式、电话号码、电子邮件地址,以及识别高层员工及其角色。这些信息可被用来开展鱼叉式钓鱼攻击。
在侦察阶段收集的信息帮助威胁行为者、道德黑客和渗透测试人员进入利用阶段,从而获得对目标系统或网络的访问权限。
侦察通常被称为足迹收集,即从攻击者的角度获取目标组织的特定信息。收集到的信息可以通过多种方式用于获取目标系统、网络或组织的访问权限。足迹收集让道德黑客和渗透测试员能够更好地了解目标基础设施的安全态势,快速识别目标系统和网络中的安全漏洞,创建组织的网络图,并将关注点缩小到具体的 IP 地址、域名以及需要信息的设备类型。足迹收集是侦察阶段的一部分;然而,由于足迹收集可以提供更具体的目标信息,我们可以将其视为侦察阶段的一个子集。下图展示了信息收集、侦察与足迹收集之间的联系:
作为一个有抱负的道德黑客和渗透测试员,使用相同的战术、技术和程序(TTPs)进行侦察有助于你更好地理解真实攻击者是如何识别目标组织的攻击面,收集并分析公开可用的数据以识别安全漏洞,并利用收集的数据来改善他们的攻击计划。通过使用与真实对手相同的侦察 TTPs,你将能够更好地模拟针对目标的真实网络攻击,并获得所需的见解,为改进网络防御、减少攻击面以及提高组织安全态势提供建议。
探索被动侦察
被动侦察侧重于收集信息,而不直接与目标进行连接或互动。这种方法降低了道德黑客和渗透测试者的威胁级别,从而减少了触发任何警报的可能性,警报会通知目标有人正在收集有关他们、他们的系统和网络基础设施的信息。随着时间的推移,全球各地的人们每天都会上传和创建更多的数据。无论是有人上传自己的照片、制作有趣的营销视频,还是发布有关新产品和服务的信息,互联网都在存储大量的数据,网络犯罪分子可以收集并仔细分析这些数据,以更好地了解他们的目标并改进其网络操作。如前所述,道德黑客和渗透测试者使用与真正威胁行为者相同的战术、技术和程序(TTPs),以高效地发现组织如何泄露关于自身的数据,以及恶意行为者如何利用收集到的数据来识别和危及其目标的安全漏洞。例如,互联网搜索引擎的设计目的是对互联网上的每个网页进行索引(爬取)并分析,以改善搜索结果,并为用户提供更准确的信息,帮助用户轻松找到网站服务器的主机名或互联网上某个资源的统一资源定位符(URL)。对手和道德黑客也使用各种互联网搜索引擎来发现无意中暴露的系统、不安全的网页门户和资源,这些资源属于目标组织。以下是道德黑客常用的互联网搜索引擎:
-
Google -
www.google.com/
-
Yahoo! -
www.yahoo.com/
-
Bing -
www.bing.com/
-
DuckDuckGo -
duckduckgo.com/
-
Yandex -
yandex.com/
Yandex 互联网搜索引擎是俄罗斯基于的,提供亚洲和欧洲地区更好的资源搜索结果。DuckDuckGo 是一个注重隐私的互联网搜索引擎,不会存储用户的搜索或跟踪详情。
作为一名有志的伦理黑客,建议在进行目标研究时使用至少两种不同的互联网搜索引擎。例如,一种搜索引擎可能提供更符合目标的结果,而另一种搜索引擎可能提供较少敏感的结果。然而,在侦察阶段,收集所有信息是至关重要的,然后分析收集到的数据,以确定哪些信息是有用的,并帮助你建立目标的资料。为了更好地理解对手、伦理黑客和渗透测试人员如何使用被动侦察来识别目标上的敏感信息和安全漏洞,让我们深入探索开放源代码情报。
开放源代码情报
开源情报(OSINT)通常指从多个数据源收集和分析公开可得的信息,以更好地了解攻击面,例如目标组织的安全漏洞。此外,OSINT 还帮助道德黑客和渗透测试人员识别目标如何泄露敏感数据,这些数据可以被威胁行为者利用来提升其网络攻击和威胁。随着越来越多的组织在互联网上创建在线存在,从启动虚拟服务器到在云计算服务提供商的基础设施上托管其 Web 应用程序,许多公司正在利用社交媒体平台提高意识并与新客户和现有客户分享信息。社交媒体平台使得世界各地的人们可以通过数字媒介分享更新、图片和视频,然而,有时人们会在不意识到潜在风险的情况下泄露关于自己或其组织的敏感信息,如果这些信息被网络犯罪分子利用,可能会带来严重后果。例如,一名员工分享了一张自己在工作站上的数字照片,然而图片的背景显示了桌面上的一些机密文件、员工的 ID 徽章以及计算机显示器上的一些应用程序。如果威胁行为者针对该公司,攻击者将通过被动侦察来识别目标组织的社交媒体存在,如其 LinkedIn、Facebook、Instagram 和 Twitter 页面。有时,组织会在社交媒体上发布新职位空缺的招聘信息,并列出潜在候选人的技术要求。威胁行为者可以利用职位发布中找到的技术细节来确定组织网络中运行的技术和应用程序。此外,威胁行为者还可以识别过去和现在员工的社交媒体账户,以确定是否有人上传了包含敏感细节的图片。社交媒体平台为用户提供了许多隐私功能,然而,并非每个人都会花额外的时间确保其在线资料是私密的,并且仅对受信任的联系人可见。如果威胁行为者能够找到隐私设置不安全的员工社交媒体账户,并且这些员工的图片完全公开,攻击者可以简单地查找包含员工 ID 徽章的图片,这些图片可以用来制作假徽章,从而非法进入公司的设施,甚至确定员工计算机上运行的应用程序。识别目标系统上的应用程序有助于威胁行为者研究操作系统和计算机应用程序的安全漏洞。虽然在社交媒体平台上可以找到大量敏感信息,但也有其他的 OSINT 数据源,如以下内容:
-
在线论坛 – 有许多在线论坛和讨论板,例如Stack Overflow(
stackoverflow.com/
),通常由技术社区成员用来互相帮助和分享想法。然而,技术人员可能会在讨论论坛上创建个人资料,并包含他们的职位和公司名称。威胁行为者可以搜索与目标组织相关的用户资料,然后查看员工发布的所有帖子和讨论,以识别可能泄露的敏感信息。例如,员工可能会在论坛上发布求助帖子,寻求帮助解决其网络中特定应用程序的问题,并透露应用程序版本、错误日志以及服务器的主机操作系统。威胁行为者可以利用这些信息研究该应用程序和操作系统的已知安全漏洞。 -
搜索引擎 – 网络搜索引擎会爬取每个网页并识别互联网上的网页服务器。威胁行为者可以利用搜索算法,并使用定制的搜索参数在各种互联网搜索引擎上查找特定的资源和目标组织的敏感网址。例如,威胁行为者和网络安全专业人士都可以使用Google Dorking技术进行高级的 Google 搜索。
-
公共数据库 – 互联网上有许多公共数据库,其中包含有关公司及其位置的信息,以及个人及其联系方式。威胁行为者可以收集并分析公共数据库中找到的信息,计划针对目标组织员工的社交工程攻击,以便进入其网络基础设施。
-
网络档案 – 互联网档案馆(
archive.org/
)是一个在线数字图书馆,保存互联网的每一份快照,并将其归档保存 20 年。因此,互联网上发布的任何内容都会被归档,并且任何人都可以检索,包括威胁行为者和道德黑客。互联网档案馆帮助威胁行为者识别目标网站服务器上的遗留网页应用程序和插件,以查找潜在的安全漏洞。 -
WHOIS 数据库 – 互联网上有许多 WHOIS 数据库,存储公共域名的注册详情。这类数据库包含域名的注册和到期日期、注册人的联系方式和地址,以及公共 DNS 记录。如果域名所有者没有支付额外费用来保护他们的个人身份信息(PII),威胁行为者可以利用所有者的个人信息策划未来的网络攻击,如社交工程攻击。
-
公共记录 – 在世界各地,许多国有和政府机构通常会存储关于国家财产、公民、商业注册等的公共记录。例如,这些机构中的许多正在通过互联网建立在线平台,威胁行为者可以轻松访问公共记录,以识别目标公司的地理位置。
-
代码仓库 – 许多开发者正在使用 GitHub 和其他在线代码仓库,来同时处理他们组织的新应用和现有应用。然而,如果用户没有在其账户上应用适当的隐私控制,威胁行为者可以轻松查看他们的在线代码项目,以确定目标组织中正在运行的应用程序,以及代码中是否存在可以被利用的安全漏洞,从而在网络中建立立足点。
-
地理空间数据 – 该数据来源包括公开可用的地图和影像系统,使得互联网上的任何人都能找到物理位置并识别某个区域的周边环境。例如,威胁行为者可以使用谷歌地图来确定目标组织的地理位置,并通过其街景功能查看是否有附近的停车场以及物理通道进入该区域。
此外,组织通常会在各种互联网平台上发布自己的信息,如博客、社交媒体平台和招聘网站。由于互联网随时可用且容易访问,威胁行为者或渗透测试人员仅通过使用搜索引擎就能轻松收集目标组织的信息,进而识别其基础设施。由于对手利用开放源信息(OSINT)来提升其网络攻击和未来操作的效果,道德黑客和渗透测试人员也使用相同的战术、技术和程序(TTPs),确保他们能够高效发现目标如何泄露敏感数据,以及威胁行为者如何利用这些信息破坏目标的系统和网络。此外,道德黑客将获得网络威胁情报(CTI),从而提供有关如何帮助组织减少数据泄露、预防未来网络攻击和威胁的建议。以下图示展示了从各种在线数据源收集 OSINT 的思维导图:
如前图所示,存在许多数据来源,通常被对手和道德黑客用来达到不同的目标。威胁行为者的目标通常集中在以恶意目的破坏目标系统的机密性、完整性和/或可用性。而道德黑客和渗透测试人员则运用相同的技术和技能,凭借良好的道德指引,帮助组织识别潜在的安全漏洞,并采取对策来防止真实的网络攻击。
请记住,验证从 OSINT 收集的信息的准确性非常重要。有时,在线数据源可能不会提供关于目标的最新信息,这可能导致基于过时的信息规划网络攻击或开发漏洞利用。
应该收集多少数据
收集的越多数据,应该能帮助你更好地理解目标,但多少数据才算足够呢?在开始进行 OSINT 之前,道德黑客和渗透测试人员需要理解渗透测试的交付物,了解组织是否有兴趣确定其公司数据是否被故意或无意地泄露到网上,攻击者如何识别并利用其系统中的安全漏洞,以及如果对手利用 OSINT 来规划网络攻击,将会带来什么影响。一旦道德黑客确定了安全评估的范围,他们将开始进行数据收集与获取,收集目标组织的 OSINT 数据。这意味着,道德黑客将使用侦察 TTP(战术、技术和程序)来收集多种数据类型,如文本、媒体和地理空间数据,从互联网上多个数据源收集,以创建目标的档案。在这个阶段,对于道德黑客和渗透测试人员来说,识别与目标相关的信息并为其添加上下文是非常重要的,同时还要判断收集到的数据是否足够。如果收集到的数据不足,道德黑客将无法获取足够的细节来确定目标系统中的安全漏洞类型、攻击向量(用于传送恶意负载)、目标的地理位置、系统上运行的服务和应用程序等等。数据收集阶段结束后,道德黑客需要仔细分析收集到的数据,以更好地理解它如何应用于目标组织。在这个阶段,道德黑客可能会发现一些有趣的东西,并决定通过收集更多的数据进行深入分析。然而,重要的是要监控在渗透测试每个阶段所花费的时间,因为你希望将大部分时间花在侦察阶段,而不是忽视利用和后期利用阶段。因此,在研究目标时,深入研究的过程中需要保持警觉,避免掉进“兔子洞”。您的 OSINT 图形分析器(YOGA)思维导图帮助道德黑客和渗透测试人员更好地可视化如何从一个数据点轻松推导出另一个数据点,并展示可以从每个数据点收集的信息类型,如下所示:
如前所示的截图所示,如果一个道德黑客以目标域名作为起点,YOGA 提供了一张地图,展示了下一个数据点和信息收集来源。
要了解更多关于 YOGA 的信息,请参见:
yoga.myosint.training/
。
分析过的数据已被转化为有意义的信息,以确定以下内容:
-
收集的数据的准确性如何?
-
数据是否来自可靠的来源?
-
收集的数据是事实还是主观的?
-
是否收集了足够的数据来理解目标,还是需要更多数据?
接下来,道德黑客或渗透测试员可能会尝试收集更多的数据,但会选择不同的领域,以更好地理解和完善目标的资料。例如,道德黑客可能会尝试确定员工的组织层级,并执行社交媒体 OSINT,识别所有拥有社交媒体档案的员工,以调查每个人泄露了关于公司的哪些信息。发现员工的社交媒体账户可能会导致发现受攻击组织中的 IT 专业人员,并确定他们是否最近在社交媒体上发布了关于公司技术工作的内容。一旦足够的数据被分析出来,道德黑客和渗透测试员就可以创建情报,帮助规划武器化、交付和利用阶段,以攻破目标。然而,收集敏感信息的主动侦察技术和程序是必要的,因为这些信息在 OSINT 中无法获得。完成这一部分后,你已经了解了被动信息收集的重要性,以及道德黑客和渗透测试员如何利用 OSINT 识别目标系统、网络和组织中的安全漏洞。在下一部分,你将学习如何隐藏作为一个有抱负的道德黑客的在线身份。
创建袜子木偶
有许多技术和工具是道德黑客和渗透测试员常用的,用来收集关于其目标的各种互联网信息。在使用 OSINT 策略和技术时,你需要确保在整个过程中不直接与目标组织接触,且不暴露自己的真实身份。袜子木偶是网络安全行业中使用的术语,尤其是在渗透测试员中。袜子木偶是对个体的虚假表现,例如创建一个完整的假身份或人格,目的是渗透在线社区以收集信息。虽然冒充他人是违法的,但黑客在收集关于目标的信息时,往往会在互联网上创建一个假身份。通过在社交媒体网站等在线平台上创建一个虚假的人格,没有人知道账户所有者的真实身份。因此,黑客可以假装是目标的员工或共同朋友,以收集有关该组织的数据。
永远不要使用个人账户进行与工作相关的活动,如 OSINT 操作、调查、道德黑客或渗透测试。
渗透测试人员通常会创建一个“虚拟身份”来掩盖其真实身份,以便在对目标进行情报收集时使用。这种技术用于防止目标(如组织或个人)识别出正在收集他们数据的渗透测试人员的真实身份。如果组织雇佣渗透测试人员模拟现实中的网络攻击,而渗透测试人员又使用他们真实的在线账户来收集情报,那么他们的真实身份可能会被揭露。一些社交媒体平台,如 LinkedIn,允许用户查看最近访问他们个人资料的人。如果渗透测试人员使用真实账户调查某员工的个人资料,可能会触发组织的警觉。另外,使用“虚拟身份”的一个关键方面是确保目标不知道是谁在进行开源情报(OSINT)调查。这也是渗透测试人员在进行安全评估时保持隐蔽性的良好实践。在创建虚拟身份时,确保个人资料看起来非常真实可信,以便任何查看的人都不会怀疑。以下是一些创建虚拟身份的资源:
-
假名生成器 -
www.fakenamegenerator.com/
-
这个人不存在 -
www.thispersondoesnotexist.com/
-
代理信用卡 -
privacy.com/
与其考虑创建虚假身份或虚假人格所需的所有组件,不如使用像假名生成器这样的网站,它允许你选择各种特征和参数,网站会在几秒钟内生成一个完整的虚假身份。没有图片的个人资料通常是一个红旗,而使用别人照片可能在一段时间内有效,直到有人发现他们朋友或亲人的个人资料照片被用在另一个账户上。使用像这个人不存在这样的网站是有利的,因为它使用算法生成不存在于现实中的人像。但是请记住,有各种在线工具可以用来识别 AI 生成的图像。有时,作为渗透测试人员,你可能需要一个一次性电话号码或某种支付服务来帮助完成渗透测试工作。使用你自己的信用卡在各种网站上进行交易可能会暴露你的真实身份,例如购买一个一次性电话号码来进行电话社会工程攻击。使用像Privacy这样的网站可以作为你信用卡的代理。该网站通过存储你的真实信用卡号,使你能够为每个独特的服务或网站生成一个独特的代理卡号,从而防止你通过电子商务网站的信用卡号暴露真实身份。以下是在创建虚拟身份时的一些指南:
-
每当你创建社交媒体账户时,确保不要使用你的真实 IP 地址。可以考虑在当地的咖啡店使用免费的互联网服务。
-
在创建社交媒体账户时,请不要使用虚拟私人网络(VPN)或洋葱路由器(TOR)服务,因为许多社交媒体平台能够检测到你的原始流量通过 VPN 或 TOR 进行代理,并且在账户创建过程中将要求额外的身份验证。
-
你的假身份账户应该看起来像一个普通人,以避免被识别为虚假账户。
-
在注册在线账户时,考虑使用临时邮箱地址。有许多免费的邮箱服务,比如Proton Mail(
proton.me/
),它们提供额外的隐私保护。然而,你也可以在 Gmail、Outlook,甚至是 Yahoo Mail 上创建一个简单的(基础的)邮箱地址。 -
在创建假身份账户后,确保经常分享更新、状态、图片,并与平台上的其他人互动和连接。
-
不要使用他人的照片作为你的假身份账户头像。反向图像搜索可以用来识别图片是否是假的或被滥用。
完成本节后,你已经理解了在对目标进行侦察时使用假身份账户的基本原理和重要性。在下一节中,你将学习如何匿名化你的互联网流量。
匿名化基于互联网的流量
在渗透测试过程中保持身份隐蔽非常重要,以防目标知道是谁在收集关于他们的信息。然而,在网络攻击链的侦察阶段,你可能会使用各种工具来帮助自动化信息收集过程。这些工具将会生成流量,并在每个离开你设备的数据包中包含你的源 IP 地址。例如,你正在对目标网站服务器进行端口扫描,以识别开放端口和运行的服务。当你设备上的端口扫描工具向目标网站服务器发送特制的数据包(探测)时,每个探测包都会包含你的源 IP 地址,攻击者可以利用这个 IP 地址来识别你的地理位置。目标网站服务器将生成每次交易的日志,并记录所有源 IP 地址,包括你的。以下是渗透测试员常用的匿名化流量的技术:
-
虚拟私人网络(VPN)
-
Proxychains
-
洋葱路由器(TOR)
在以下子章节中,你将了解作为渗透测试员使用这些技术的好处。
虚拟私人网络(VPN)
VPN 允许用户在不安全的网络(如互联网)上安全地发送数据。在信息技术(IT)领域,安全和网络专业人员通常使用 VPN 来确保他们的远程工作人员和办公室能够通过互联网安全访问公司总部的资源。这种类型的 VPN 被称为远程访问 VPN。此外,站点对站点 VPN 可用于在互联网跨越分支办公室之间建立一个安全的通信通道,而无需使用电信提供商提供的专用广域网(WAN)服务。渗透测试人员可以使用 VPN 服务确保他们的攻击系统产生的网络流量来自不同的地理位置。假设您需要使用工具对互联网上的目标服务器进行扫描,但不希望目标知道流量的实际来源。使用 VPN,其中 VPN 服务器位于另一个国家,可以对您有利。这意味着您的网络流量将通过 VPN 服务提供商的网络安全地路由,并且只会在目标 VPN 服务器所在的国家/地区退出。因此,您可以让所有网络流量在美国、俄罗斯和巴西等地退出,从而掩盖和匿名化您的身份和来源。以下图示展示了使用在线 VPN 服务器的简单示意图:
https://github.com/OpenDocCN/freelearn-kali-pt2-zh/raw/master/docs/ult-kali-bk-3e/img/file123.png
以下是使用 VPN 匿名化您的网络流量时需要考虑的一些重要事项:
-
使用商业 VPN 服务提供商需要付费订阅。
-
确保您的 VPN 服务提供商不保留日志或将用户数据出售给互联网第三方数据经纪商。
-
确保 VPN 服务提供商允许用户无限制或不计量的带宽。
-
确保 VPN 服务提供商支持您的操作系统并提供相应的 VPN 客户端。
-
您可以在云服务提供商的服务器上托管自己的 VPN 服务器。
-
使用 VPN 时,请确保您的 DNS 流量不会泄漏,因为它会暴露您的地理位置。考虑使用DNS 漏洞测试(
www.dnsleaktest.com/
)来验证您的 DNS 消息是否泄漏到 VPN 隧道外。 -
使用 VPN 时,请考虑禁用操作系统上的 IPv6 通信。
OpenVPN 允许任何人托管自己的 VPN 访问服务器作为自托管解决方案或在云端使用。OpenVPN 访问服务器允许最多 2 个设备免费使用。欲了解更多关于 OpenVPN 访问服务器的信息,请参阅:
openvpn.net/access-server/
。
在选择 VPN 服务、云服务提供商或设置解决方案之前,请确保进行大量的研究和测试,以确定哪种解决方案最适合你。接下来,你将学习如何使用 Proxychains 匿名化你的互联网流量。
Proxychains
代理是一个系统,通常是服务器,位于网络中源主机和目标主机之间。如果发送者想与目标服务器通信,发送者会将消息转发给代理系统,然后由代理系统转发给目标服务器。目标服务器会认为消息来自代理系统,而不是实际的源。 在信息技术领域,使用代理服务器有许多好处。在网络安全行业中,它通常用于匿名化网络流量的来源,并掩盖道德黑客和渗透测试者的真实源 IP 地址。渗透测试者使用proxychains,它使他们能够在向目标系统、网络或互联网发送流量时,创建多个代理服务器之间的逻辑连接链。Proxychains 允许渗透测试者配置各种类型的代理,如下所示:
-
HTTP
-
HTTPS
-
SOCKS4
-
SOCKS5
简单来说,道德黑客系统的流量会首先发送到链中的第一个代理服务器,然后传送到下一个代理,依此类推,直到链中的最后一个代理服务器将流量转发到互联网的目标。与 VPN 相比,使用 Proxychains 并不会加密你的流量,但它确实为你的网络流量提供了匿名性,并防止你的真实 IP 地址暴露给目标。下图显示了代理链效应中的流量流动过程:
https://github.com/OpenDocCN/freelearn-kali-pt2-zh/raw/master/docs/ult-kali-bk-3e/img/file124.png
渗透测试者如何获得代理服务器列表?这是许多人常问的问题。简单来说,你可以通过各种云服务提供商(如 Microsoft Azure 和Amazon Web Services(AWS))在互联网上设置你自己的代理服务器。此外,你还可以从付费服务(如 VPN 服务提供商)获得代理服务器,或者执行 Google 搜索,如 free proxy server list,来查找免费可用的代理服务器。
你可以使用像
spys.one/en/
这样的网站,获取免费代理服务器列表。然而,请记住,这些服务器可能并非总是在线或可用。因此,建议使用多个代理服务器。
要开始设置 proxychains,请按照以下说明操作:
-
打开Oracle VM VirtualBox 管理器并启动Kali Linux虚拟机。
-
登录到Kali Linux虚拟机,打开终端,然后使用以下命令更新本地文件名数据库并搜索
proxychains4
配置文件:
kali@kali:~$ sudo updatedb
kali@kali:~$ locate proxychain
以下截图显示了proxychains4.conf
文件的位置:
-
接下来,无论是在主机操作系统还是 Kali Linux 上,打开网页浏览器,访问
spys.one/en/
,查看代理服务器列表。确保从网站上选择一些代理服务器。 -
选择了前一步中的一些代理服务器后,您需要修改
proxychains4.conf
文件以使用这些代理服务器。使用以下命令通过 Nano 命令行文本编辑器打开proxychains4.conf
文件:
kali@kali:~$ sudo nano /etc/proxychains4.conf
- 接下来,
proxychains4.conf
文件的内容将在终端中显示,使用键盘上的方向键向下滚动到包含#dynamic_chain
的行,并删除该行开头的#
字符。然后,在strict_chain
行的开头插入一个#
字符,如下图所示:
如前所示,删除 Linux 配置文件中行首的#
字符将取消该行的注释,操作系统将执行该行命令。因此,取消注释dynamic_chain
,代理链程序将链式连接所有预定义列表中的代理服务器。通过注释strict_chain
,代理链程序将不会使用这种代理方法。
- 接下来,滚动到
proxychains4.conf
文件的末尾,在socks4 127.0.0.1 9050
行的开头插入一个注释符号(#
),以禁用 TOR 代理选项。然后,在ProxyList的末尾插入每个额外的代理服务器,如下所示:
-
接下来,要保存配置文件,按
CTRL + X
,然后按Y
确认文件名,最后按Enter
保存并退出到终端。 -
在使用 Proxychains 之前,请使用以下命令获取您的真实公共 IPv4 地址:
kali@kali:~$ curl ifconfig.co
- 要使用 Proxychains,请使用以下命令启动一个 Firefox 网页浏览会话,将所有基于互联网的流量通过代理服务器列表进行路由:
kali@kali:~$ proxychains4 -f /etc/proxychains4.conf firefox
proxychains4 -f <配置文件>
命令允许我们选择特定的配置文件进行使用。
- 接下来,一旦在 Kali Linux 上打开 Firefox 应用程序,访问
ifconfig.co/
以验证互联网设备所看到的公共 IP 地址和地理位置,如下所示:
如上图所示,公共 IP 地址是proxychains4.conf
文件中的最后一个代理服务器。此外,这里显示的公共 IP 地址与第 8 步中的真实公共 IP 地址不同。另外,您可以使用以下命令下载并查看具有新公共地址的ifconfig.co
网页:
kali@kali:~$ proxychains4 -f /etc/proxychains4.conf curl ifconfig.co
以下截图显示了使用与不使用 Proxychains 时的公共 IP 地址:
https://github.com/OpenDocCN/freelearn-kali-pt2-zh/raw/master/docs/ult-kali-bk-3e/img/file129.png
- 最后,每当您想使用 Proxychains 时,确保检查代理服务器是否在线,并使用第 9 步中显示的命令。
接下来,您将学习如何使用 TOR 将您的互联网流量通过暗网进行路由。
洋葱路由器(TOR)
TOR 项目及其服务通常被网络安全专家、研究人员和网络犯罪分子用来匿名化他们的互联网流量并访问暗网。TOR 允许用户通过 TOR 网络的多个节点来路由其互联网流量,从而隐藏发送者的身份和地理位置信息。此类服务和技术对道德黑客和渗透测试人员非常有用,因为 TOR 提供多层数据加密,以提高安全性和匿名性。每当用户向 TOR 网络发送数据包时,计算机上的 TOR 应用程序会通过多层数据加密将数据包进行加密。当加密的数据包到达 TOR 网络的第一个节点时,第一节点会解密第一层加密,以决定如何将数据包转发到下一个节点。当数据包到达第二节点时,它会解密另一层加密,整个过程会重复,直到数据包到达 TOR 网络中的出口节点或最后一个节点。出口节点将进行最后一次解密,以确定数据包的真实目的地 IP 地址,并将其转发到互联网上/暗网上的目标主机。因此,互联网或暗网中的目标主机无法追踪到数据包的真实来源,因为每个 TOR 节点只知道转发数据包时前一个和下一个节点的信息。下图显示了 TOR 网络中的链式效果:
https://github.com/OpenDocCN/freelearn-kali-pt2-zh/raw/master/docs/ult-kali-bk-3e/img/file130.png
要开始在 Kali Linux 上设置 TOR 服务和 TOR 浏览器,请使用以下说明:
-
打开Oracle VM VirtualBox 管理器并启动Kali Linux虚拟机。
-
接下来,在登录 Kali Linux 后,打开终端并使用以下命令更新软件包仓库列表:
kali@kali:~$ sudo apt update
- 接下来,使用以下命令在 Kali Linux 上安装TOR和TOR 浏览器:
kali@kali:~$ sudo apt install -y tor torbrowser-launcher
- 接下来,使用以下命令启动TOR 浏览器应用程序:
kali@kali:~$ torbrowser-launcher
- 一旦TOR 浏览器出现,点击连接,以建立 TOR 浏览器与 TOR 网络之间的连接,如下图所示:
- 一旦连接到 TOR 网络,访问
ifconfig.co/
来确认 TOR 浏览器的流量是否通过 TOR 网络路由,如下所示:
如果您选择访问
.onion
后缀的网址,请自担风险。请确保不要下载任何内容、信任任何人或任何黑暗网络上的信息。
- 接下来,关闭 TOR 浏览器 以终止连接和应用程序。
TOR 浏览器仅会将来自自身的流量通过 TOR 网络路由,而不会将 Kali Linux 上其他应用程序的流量通过 TOR 网络路由。要将 Kali Linux 上任何应用程序的流量通过 TOR 网络路由,请使用以下配置:
- 在 Kali Linux 上,打开 终端 并使用以下命令打开
proxychains4.conf
文件:
kali@kali:~$ sudo nano /etc/proxychains4.conf
- 打开
proxychains4.conf
文件后,取消注释socks4 127.0.0.1 9050
行,并注释掉 ProxyList 中的所有其他代理服务器,如下所示:
-
接下来,按
CTRL + X
键保存配置文件,然后按Y
确认文件名并按Enter
保存并退出终端。 -
接下来,使用以下命令在 Kali Linux 上启动 TOR 服务:
kali@kali:~$ sudo systemctl start tor
kali@kali:~$ sudo systemctl status tor
以下截图显示 TOR 服务正在运行(活跃状态):
- 接下来,使用以下命令启动应用程序,同时将其所有基于互联网的流量通过 TOR 网络路由:
kali@kali:~$ proxychains4 firefox
以下截图显示了来自 Firefox 应用程序的基于互联网的流量正在通过 TOR 网络进行路由:
- 最后,使用以下命令在 Kali Linux 上停止 TOR 服务:
kali@kali:~$ sudo systemctl stop tor
kali@kali:~$ sudo systemctl status tor
完成本节后,您已经了解了多种匿名化互联网流量的方法,并学会了如何在 Kali Linux 上使用 proxychains 和 TOR 服务。
总结
在本章中,你学习了侦察在渗透测试中的重要作用,以及它如何帮助道德黑客构建目标的资料,以更好地理解目标上存在的安全漏洞。此外,你还探索了侦察的各种 TTP(战术、技术和程序),以及渗透测试者如何利用 OSINT 来识别目标组织如何泄露关于它们自身的敏感数据,以及这些数据如何被真实的对手利用。最后,你获得了作为道德黑客和渗透测试者,隐蔽在线身份和匿名化互联网流量的技能和实践经验。我相信,本章所提供的知识将为你提供有价值的见解,支持你成为网络安全领域中的道德黑客和渗透测试者的道路。愿这种新获得的理解能够在你的旅程中赋予你力量,让你能够自信地在行业中航行,并产生重大影响。在下一章中,探索开源情报,你将获得有效收集和分析公开信息的实际技能,以便为目标创建情报。
进一步阅读
-
MITRE ATT&CK 侦察 -
attack.mitre.org/tactics/TA0043/
-
OSINT 生命周期 -
www.sans.org/blog/what-is-open-source-intelligence/
-
OSINT 框架 -
osintframework.com/
第五章:5 探索开放源代码情报
加入我们的 Discord 书籍社区
packt.link/SecNet
https://github.com/OpenDocCN/freelearn-kali-pt2-zh/raw/master/docs/ult-kali-bk-3e/img/file136.png仅仅几十年前,由于各种限制,互联网并没有那么容易为世界各地的许多人和组织所接入。然而,随着技术的不断发展,互联网服务提供商(ISP)不断扩展网络基础设施,确保每个人都能连接和访问互联网,今天的互联网用户数量比以往任何时候都要多,而且这个数字还在持续增长,许多人和组织利用互联网获取个人利益和商业利益,如教育、营销、与他人进行数字连接、电子商务等等。这意味着,人们不断在互联网上创建和上传数据,因此信息可以轻松地被互联网上的任何人访问。有时,人们甚至是组织的员工,会在互联网上分享过多的敏感信息,而没有意识到对手如何收集和分析这些数据,进而创建情报,计划对组织发起网络攻击。在本章中,你将探索道德黑客和渗透测试人员如何收集和分析开放源代码情报(OSINT),这些情报来源于在线数据源,用于创建目标资料并更好地理解目标,在进一步开发或获取利用工具以入侵目标系统和网络之前。你将学习如何利用谷歌黑客技术筛选搜索结果,识别任何意外暴露的资产、系统和资源。此外,你将掌握威胁行为者如何在目标域进行被动侦察并识别组织的子域的实战技能。进一步,你将探索渗透测试人员常用的各种互联网搜索引擎,用于识别公司技术基础设施,以及黑客如何收集员工数据来规划和改进他们的操作。在本章中,我们将涵盖以下内容:
-
谷歌黑客技术
-
域名侦察
-
子域收集
-
识别组织基础设施
-
收集员工数据
-
社交媒体侦察
让我们开始吧!
技术要求
为了跟上本章的练习,请确保你已经满足以下硬件和软件要求:
-
Kali Linux -
www.kali.org/get-kali/
-
DNSmap -
github.com/resurrecting-open-source-projects/dnsmap
-
Sublist3r -
github.com/aboul3la/Sublist3r
-
Sherlock -
github.com/sherlock-project/Sherlock
Google 黑客技术
Google 黑客技术的概念,有时被称为 Google dorking,并不是指入侵 Google 的网络基础设施或系统,而是利用 Google 搜索引擎中的高级搜索参数来过滤特定结果。许多组织并不总是密切关注他们在互联网上暴露的系统和资源。Google 搜索是一个非常强大的搜索平台,能够爬取/索引互联网上的所有内容,并过滤大多数恶意网站。由于 Google 索引了一切,搜索引擎可以自动发现许多组织的隐藏在线目录、资源和登录门户。
使用 Google 黑客技术本身并不违法,但有一条非常细微的界限,你不应该越过,否则你将面临法律问题。我们可以使用 Google 黑客技术来发现互联网上隐藏的敏感目录和网页门户,但如果你怀着恶意意图利用这些信息进行网络攻击,那么你可能会面临法律行动。
要开始学习 Google 黑客技术,我们来看看以下场景:
- 假设你需要使用被动侦察技术来识别目标组织的域名和子域名。一种常见的技术是使用 Google 搜索来发现目标的公共资产。
为此,请使用 site:domain-name
语法,过滤指定域的所有结果,如此处所示:
如上图所示,Google 搜索仅返回包含目标域名的结果。
- 如果你想根据特定关键词过滤目标域名的搜索结果,可以使用
keyword site:domain-name
语法,如下所示:
如上图所示,eternalblue site:microsoft.com
语法使我们能够过滤搜索结果,只显示包含 ‘eternalblue
’ 关键词的所有微软域名和 URL。在进行基于设备的应用程序、操作系统和供应商的安全漏洞与利用研究时,这非常有用。
- 如果你想找到目标组织的所有域名,并基于两个关键词过滤结果,可以使用
keyword1 AND keyword2 site: domain-name
语法,如下所示:
如上图所示,使用 AND
运算符与精心挑选的关键词有助于我们找到目标域的登录门户。
你可以使用
OR
语法来指定关键词,而不是使用AND
来包含两个关键词。
- 如果你有兴趣在特定域名上搜索特定文件类型,请使用
site:domain-name filetype:file type
语法,如下所示:
如前面的截图所示,包含filetype:
语法有助于我们筛选搜索结果,显示任何被目标组织故意或无意泄露的文件。
- 要发现包含敏感关键词的特定目录,可以使用
site:domain-name intitle:keyword
语法,如下所示:
如前面的截图所示,将login
关键词作为intitle:
参数是展示目标域的登录门户的有用方法。
- 要查找目标组织的子域,使用
site:domain-name -www
语法以排除www
参数,如下所示:
使用这一技巧是从搜索结果中排除特定子域和 URL 的好方法。
此外,你可以使用
site:*.domain.com -site:www.domain.com
语法来查找目标组织的子域。
此外,如果你不太确定如何在谷歌搜索引擎中使用高级搜索操作符,你可以直接访问谷歌主页,然后点击设置 > 高级搜索,以打开高级搜索菜单,如下所示:
谷歌提供了一种非常简单易用的方法,允许用户进行高级搜索和过滤,而不需要了解高级搜索操作符,如下所示:
一旦你填写了必要的详细信息并点击高级搜索按钮,谷歌会自动插入执行高级搜索所需的相应搜索操作符。虽然使用高级谷歌搜索操作符有很多可能性,但有时会有些令人不知所措。Google Hacking Database(GHDB)由 Kali Linux 的创建者Offensive Security(www.offsec.com/
)维护,可以在www.exploit-db.com/google-hacking-database
找到。GHDB 是一个包含各种谷歌 dork(高级搜索操作符)列表的网站,这些操作符用于通过谷歌搜索查找互联网中非常敏感的信息和资源:
如前面的截图所示,GHDB 会定期更新新的搜索语法,帮助用户发现易受攻击的服务和敏感目录。不过需要提醒的是,使用谷歌黑客技术时一定要小心谨慎。请不要将找到的信息用于恶意目的或对系统或网络造成伤害。完成这一部分后,你已经学习了道德黑客和渗透测试人员如何利用谷歌搜索的强大功能来发现隐藏的目录和资源。在接下来的部分,你将学习如何发现组织拥有的暴露资产。
域名侦察
收集关于目标域名的信息有助于网络犯罪分子、道德黑客和渗透测试人员识别目标组织是否有任何暴露的系统和网络基础设施,这些都可能在规划未来的攻击时被利用。此外,域名侦察有助于道德黑客和渗透测试人员确定组织的外部攻击面,即识别所有面向互联网的系统、它们的操作系统、开放端口和运行的服务,目的是发现可以被真实攻击者利用的安全漏洞。这有助于道德黑客确定目标是否无意中暴露了脆弱的系统、服务和应用程序,并了解威胁行为者如何利用这些信息进行网络攻击。
收集 WHOIS 数据
如果你能访问一个包含互联网上注册域名记录的数据库呢?许多域名注册商允许公众查看有关已注册域名的公开信息。这些信息可以在互联网上的各种 WHOIS 数据库中找到。以下是可以从 WHOIS 数据库收集的各种信息类型的列表:
-
注册人联系信息
-
管理联系信息
-
技术联系信息
-
域名服务器
-
重要日期,例如注册、更新和过期日期
-
注册域名 ID
-
注册商信息
访问 WHOIS 数据库非常简单:你可以使用你喜欢的互联网搜索引擎来查找各种 WHOIS 数据库,如下所示:
在 Kali Linux 中,你将拥有一个预安装的 WHOIS 工具,允许渗透测试人员直接在终端上执行 WHOIS 查询。要在目标域名上执行 WHOIS 查询,打开 Kali Linux 的终端并执行 whois <domain-name>
命令开始搜索,如下所示:
如前面的截图所示,WHOIS 工具能够通过简单地询问一个可信的在线源来检索目标域名的公开信息。请记住,随着全球对在线隐私需求的增加,域名所有者支付额外费用来确保他们的联系方式和个人信息不会被 WHOIS 数据库公开。这意味着,如果域名所有者为额外的隐私保护功能支付了费用,你通常不会在 WHOIS 数据库中找到不再公开的个人联系信息。然而,不要忽视这个工具,因为全球仍有许多组织并不总是重视在线隐私。由于许多人和组织缺乏安全意识和疏忽,威胁行为者和渗透测试人员可以利用这一漏洞收集目标的 OSINT 信息。
执行 DNS 枚举
域名系统(DNS)是一个应用层协议,使得像计算机这样的系统能够将主机名解析为 IP 地址。在网络上有如此多的设备,尤其是在互联网上,记住 Web 服务器的 IP 地址可能是相当具有挑战性的。通过 DNS,系统管理员可以为每个设备配置 IP 地址和主机名。使用主机名要记住起来容易得多,比如 www.packtpub.com
或 www.google.com
。但是,你知道为 Packt 和 Google 托管这些网站的服务器的 IP 地址吗?你可能不知道,这没关系,因为在互联网上,有一个层级结构的 DNS 服务器,保存着公共主机名及其 IP 地址的记录。这些被称为根 DNS 服务器。DNS 服务器就像传统的电话簿,列出了人们及其电话号码。在 DNS 服务器上,你可以找到服务器和设备的主机名记录,以及它们相关的 IP 地址。许多知名的互联网公司,如思科、谷歌、Cloudflare 等,已经在互联网上设置了许多公共 DNS 服务器,这些服务器包含几乎所有公共域名的记录。为了更好地理解客户端设备(如计算机)如何使用 DNS 解析域名,让我们来看一下以下场景:
-
假设你想在计算机上查看
www.example.com
的网页,于是你决定打开 Web 浏览器,在地址栏中输入www.example.com
并按回车键连接到 Web 服务器。 -
你的计算机将检查本地 DNS 缓存,以确定
www.example.com
的 IP 地址是否已因先前的连接而已知。如果在本地缓存中找到www.example.com
的 IP 地址,计算机会建立与目标服务器的连接。 -
如果客户端的本地 DNS 缓存中没有找到 IP 地址,客户端会向 DNS 服务器发送DNS 查询消息,请求该主机名(
www.example.com
)的 IP 地址,如下所示:
- DNS 服务器将检查其记录并以非权威的DNS 回复消息响应客户端,提供主机名的 IP 地址,如下所示:
如果 DNS 服务器没有该主机名的请求记录,它将执行递归 DNS 查询,从互联网上的其他 DNS 服务器或根 DNS 服务器中获取 DNS 记录。当客户端从 DNS 服务器的 DNS 回复中收到 IP 地址时,客户端会将该主机名的 IP 地址映射保存在本地 DNS 缓存中,以备将来使用。
- 客户端使用来自DNS 回复的 IP 地址连接到互联网上的
www.example.com
,如下所示:
互联网上有许多公共 DNS 服务器,其中一些是恶意行为者创建的,目的是将不知情的用户重定向到恶意网站进行社交工程攻击。因此,我建议在所有网络设备、安全设备、服务器和计算机上使用可信的 DNS 提供商,以提高您组织的网络安全。以下是一些互联网上流行的 DNS 服务器:
-
Cloudflare:
1.1.1.1/
-
Quad 9:
www.quad9.net/
-
Cisco OpenDNS:
www.opendns.com/
-
Google Public DNS:
developers.google.com/speed/public-dns
此外,DNS 服务器不仅将主机名解析为 IP 地址,还包含关于域名的各种记录信息,如下所示:
-
A
:该记录将主机名映射到 IPv4 地址。 -
AAAA
– 用于将主机名映射到 IPv6 地址。 -
NS
– 用于指定域名的名称服务器。 -
MX
– 指定该域名的邮件交换服务器或电子邮件服务器。 -
PTR
– 该记录将主机名映射到 IPv4 或 IPv6 地址。 -
CNAME
– 用于指定另一个记录的别名。 -
RP
– 该记录包含域名的责任人信息。 -
SOA
– 该记录指定域名的授权信息。 -
SRV
– 该记录包含服务记录,例如该域上特定服务的端口号。 -
TXT
– 该记录允许域名所有者指定文本记录。常用于域名所有权验证。
你可能会想,学习 DNS 与作为渗透测试人员的被动侦察和 OSINT 有什么关系呢?作为一名渴望成为渗透测试人员的人,DNS 枚举是探测目标域特定 DNS 记录的一种技术,可以获取有关组织面向互联网资产的信息,并识别任何可能有助于策划网络攻击的安全漏洞。执行 DNS 枚举实际上是在互联网上从公共 DNS 服务器请求目标域的 DNS 记录。然后,分析收集到的信息,以创建情报并更好地理解对手如何利用这些情报来攻破目标组织。在 Kali Linux 中,你会发现许多 DNS 分析工具,可以帮助道德黑客和渗透测试人员高效地收集和分析目标域的 DNS 记录。虽然使用这些工具的偏好通常取决于渗透测试人员的个人选择,但我强烈建议你尝试所有可用的工具,以更好地理解哪些工具最适合你。要开始使用DNSrecon进行 DNS 枚举,请按照以下说明操作:
-
开启Kali Linux虚拟机并登录。
-
接下来,打开终端并使用以下命令检索目标域的 DNS 记录:
kali@kali:~$ dnsrecon -d microsoft.com -n 1.1.1.1
以下截图显示了 DNSrecon 能够从 Cloudflare 的公共 DNS 服务器检索到 Microsoft.com 域的公共 DNS 记录:
使用
-d
语法可以指定目标域,使用-n
语法可以指定要查询的名称服务器,
如前面的截图所示,DNSrecon 能够检索到目标域的各种 DNS 记录,如 A 记录、NS 记录、MX 记录和 SOA 记录。道德黑客和渗透测试人员可以利用收集到的信息识别目标所拥有的其他资产的公共 IP 地址。
- 此外,DNSrecon 还能够枚举目标域的 SRV 记录,如下所示:
如前面的截图所示,每一行的末尾表示每个服务的开放端口号。识别开放端口有助于渗透测试人员确定运行中的服务和目标系统的入口点。
要了解更多关于 DNSrecon 及其附加功能,请在 Kali Linux 中使用
dnsrecon -h
和man dnsrecon
命令。
完成此练习后,你已经学会了如何从公共 DNS 服务器枚举目标域的 DNS 记录。接下来,你将学习如何利用易受攻击的 DNS 服务器提取敏感的 DNS 记录。
利用 DNS 区域传输
DNS 区域传输允许将一个 DNS 服务器上的区域记录从主 DNS 服务器复制到另一个 DNS 服务器上,例如从主 DNS 服务器复制到次级 DNS 服务器以实现冗余。有时,IT 专业人员可能会忘记保护他们的 DNS 服务器,并实施安全控制以防止区域记录被复制到未经授权的 DNS 服务器。如果威胁行为者成功地在目标组织上执行 DNS 区域传输,攻击者将能够获取公共和私有的 DNS 记录,这有助于攻击者识别目标内部网络上的关键系统。在另一种场景下,目标组织可能没有在其 DNS 服务器上将内部和外部命名空间分开。这种 DNS 服务器配置错误可能导致未来的 DNS 区域传输攻击。虽然如今发现具有这种安全漏洞的目标 DNS 服务器的可能性较小,但对于道德黑客和渗透测试员来说,了解攻击者如何发现并利用这种安全漏洞仍然非常重要。然而,随着安全培训被应用到几乎所有 IT 课程和认证领域,未来一代的 IT 专业人员通常会意识到这种安全漏洞,以确保他们的系统和网络始终安全。因此,配置不当的 DNS 服务器的可能性几乎可以忽略不计,因为作为一个有抱负的渗透测试员,你应该不留死角,始终在渗透测试的范围内对目标进行全面测试。
Digi Ninja的优秀团队(
digi.ninja/
)搭建了一个很棒的环境,帮助更好地理解如何测试 DNS 区域传输漏洞。此外,他们将他们的在线平台免费向公众开放,任何人都可以了解有关 DNS 服务器配置错误的安全漏洞。
要开始此练习,请按照以下说明操作:
-
启动你的Kali Linux虚拟机并登录。
-
打开终端并使用
host
命令来获取zonetransfer.me
的 DNS 记录,如下所示:
如上图所示,成功检索到多个 DNS 记录,如 A
和 MX
记录。
- 接下来,我们尝试获取目标域名的
NS
记录,使用host -t ns zonetransfer.me
命令,如下所示:
如上图所示,目标域名有 2 个名称服务器,分别是:nsztm1.digi.ninja
和 nsztm2.digi.ninja
。我们可以继续检查每个名称服务器,确定它们是否配置错误,允许未经授权的区域传输。
- 接下来,我们查询
nsztm1.digi.ninja
名称服务器,看看它是否存在 DNS 区域传输漏洞并获取区域记录,使用以下命令:
kali@kali:~$ host -l zonetransfer.me nsztm1.digi.ninja
以下截图显示了从nsztm1.digi.ninja
名称服务器获取的所有 DNS 记录,针对目标域:
如上述截图所示,有许多有趣的主机名及其对应的 IP 地址已被检索到。这些主机名可能不是被目标组织有意地暴露在互联网上的,而是由于 DNS 服务器设置不当而被发现。
确保查询给定域名的所有名称服务器 - 有时,一个服务器可能配置错误,即使其他服务器都已经保护。
- 接下来,为了自动化对目标域名进行 DNS 分析和执行 DNS 区域传输,请使用DNSenum工具和以下命令:
kali@kali:~$ dnsenum zonetransfer.me
DNSenum 工具将尝试检索目标域名的所有 DNS 记录,并尝试使用找到的所有名称服务器执行 DNS 区域传输。以下截图显示 DNSenum 成功检索到了目标域名的区域记录:
DNSEnum 成功检索到了其他区域记录,如下所示:
正如你所能想象的,收集到的信息可以被对手和道德黑客利用,以发现目标组织拥有的其他资产,识别它们的主机名和 IP 地址。完成了这项练习,你将学会如何作为道德黑客和渗透测试员执行 DNS 枚举和区域传输。接下来,你将学习如何使用 Spiderfoot 自动收集 OSINT。
使用 Spiderfoot 进行自动化
Spiderfoot 是一个非常流行的 OSINT 工具,帮助道德黑客、渗透测试员和网络安全研究人员在收集关于目标的情报时自动化他们的流程和工作负载。该工具以图形和表格的形式提供了所有收集到的数据的优秀可视化,帮助你轻松阅读和解释收集到的数据。要开始使用 Spiderfoot,请按照以下说明操作:
-
启动Kali Linux虚拟机并确保其拥有活动的互联网连接。
-
接下来,打开终端并使用以下命令启动 Spiderfoot Web 界面:
kali@kali:~$ spiderfoot -l 0.0.0.0:1234
以下截图显示了上述命令的执行:
如上述截图所示,-l
语法指定了 Spiderfoot Web 界面的 IP 地址和端口号。其中,0.0.0.0
指定所有接口,1234
是 Spiderfoot Web 界面的开放端口,用于接收入站连接。
- 接下来,在 Kali Linux 内的 Web 浏览器中打开并转到
http://127.0.0.1:1234/
以访问 Spiderfoot Web 界面,如下所示:
- 接下来,为了自动化 OSINT 数据收集和分析,点击新扫描 > 设置一个扫描名称和扫描目标并选择被动选项,然后点击立即运行扫描如下所示:
- Spiderfoot 开始从互联网上的多个数据源收集并分析有关目标组织或域名的数据,如下所示:
- 选择Graph标签,查看每个数据点如何与目标域名相互连接,如下所示:
点击前面截图中显示的数据点,可以揭示与目标相关联的域名、子域名、主机名、电子邮件地址或网址。
- 接下来,为了查看根据类别收集的数据,点击Browse,如下截图所示:
- 接下来,点击Internet Name类别查看收集的数据,如下所示:
正如你所想象的那样,Spiderfoot 可以深入挖掘,直到收集到目标域名的所有数据,包括 DNS 信息,并将数据格式化为信息,并转换成可以被道德黑客和渗透测试员利用的情报。完成这一部分后,你已经掌握了执行域名和 DNS 侦察的实战经验和技能。在下一部分,你将学习如何使用 OSINT 技术发现子域名。
子域名收集
每天,像 Bing、Google 和 Yahoo 这样的搜索引擎都会频繁地学习并索引新的和现有的网站,以提高它们的搜索结果。如果一个人搜索某个公司的官网,你很可能会发现主要域名,如example.com
。许多组织出于各种原因创建子域名,但作为一个有抱负的道德黑客和渗透测试员,发现目标组织的所有子域名可能会导致找到敏感的地点和资源,比如登录门户和无意暴露的企业目录,这些目录可能包含机密文件和资源。
使用 DNSmap 进行枚举
DNSmap的工作方式与我们在前面章节中介绍的工具略有不同。DNSmap 通过查询 Kali Linux 中内置的字典列表,尝试枚举目标父域名的子域名。一旦找到子域名,DNSmap 还会尝试自动解析 IP 地址。要开始使用 DNSmap,请按照以下说明操作:
-
开启Kali Linux虚拟机并确保其有互联网连接。
-
接下来,打开终端,使用以下命令在 Kali Linux 上安装 DNSmap 的最新版本:
kali@kali:~$ sudo apt update
kali@kali:~$ sudo apt install dnsmap
- 接下来,使用以下命令通过 DNSmap 自动发现目标的子域名:
kali@kali:~$ dnsmap microsoft.com
以下截图显示 DNSmap 正在识别目标组织的子域名,并解析每个主机名/子域名到 IP 地址:
作为渗透测试员,发现目标的子域名可以帮助你找到易受攻击的 web 应用程序甚至系统。此外,这些信息可以用来建立对目标的更好分析。接下来,你将学习如何使用另一种流行的工具,它利用 OSINT 技术收集目标组织的子域名。
使用 Sublist3r 进行子域名发现
你可以利用搜索引擎的强大功能,通过 Sublist3r 工具发现子域名。Sublist3r 是一个基于 Python 的工具,利用 OSINT 技术和数据源(如搜索引擎和其他互联网索引平台)来枚举(提取/获取)目标公共域名的子域名。要开始使用 Sublist3r,请按照以下步骤操作:
-
首先,启动 Kali Linux 虚拟机,并确保它连接到互联网。
-
接下来,打开 终端,使用以下命令从该应用程序的有效分支下载 Sublist3r 安装文件:
kali@kali:~$ sudo apt update
kali@kali:~$ git clone https://github.com/huntergregal/Sublist3r.git
由于在撰写本文时,官方 GitHub 仓库中的 Sublist3r 包已不再工作,因此我们将使用来自
github.com/aboul3la/Sublist3r
的已知可用分支。
- 接下来,使用以下命令将当前工作目录更改为 Sublist3r 文件夹,并安装该工具的必要依赖项:
kali@kali:~$ cd Sublist3r
kali@kali:~/Sublist3r$ sudo pip install -r requirements.txt
- 接下来,使用以下命令对目标域名执行子域名发现:
kali@kali:~/Sublist3r$ python ./sublist3r.py –d microsoft.com
以下截图展示了使用 Sublist3r 进行子域名发现的过程:
-o
语法允许 Sublist3r 创建一个输出文件并将结果存储在自定义位置。例如,添加-o /home/kali/Desktop/subdomains.txt
命令会将输出文件保存在 Kali Linux 的桌面上。
利用发现的子域名信息,渗透测试员需要检查这些子域名,以确定它们指向的位置,例如一个易受攻击的 web 应用程序,甚至是员工或客户的登录门户。在完成本部分内容后,你已经学会了如何高效地发现目标组织的子域名。接下来,你将学习如何使用 OSINT 技术识别组织的技术基础设施。
识别组织基础设施
虽然许多组织认为他们的网络基础设施隐藏在公共 IP 地址后面,威胁行为者无法确定其内部基础设施,但威胁行为者使用各种 OSINT 技术和工具来识别目标组织内部运行的系统和应用程序。在接下来的子章节中,你将学习到组织如何泄露其内部网络的技术细节,以及这些信息如何被威胁行为者利用来提高他们的网络攻击能力。
招聘网站的数据泄露
多年来,我注意到许多组织泄露了大量关于其内部基础设施和系统的数据,这些数据可以帮助对手通过简单分析公开信息,改进攻击计划并识别组织中的安全漏洞。例如,招聘人员通常会在招聘网站或公司网站的招聘栏目上发布职位空缺,供求职者查看。招聘人员或职位发布者常常会提供关于组织内部系统的具体技术细节,以帮助求职者判断该职位是否适合他们的职业发展。以下是公司在招聘网站上发布技术信息的优势:
-
潜在候选人如果在面试过程中成功,将会对自己将要使用的环境和技术有所了解。
-
潜在候选人可以事先确定自己是否具备该职位所需的技能。
然而,威胁行为者可以利用职位发布中找到的技术细节,确定公司内部运行的操作系统、应用程序及其版本、网络和安全解决方案。此外,这类信息通常是公开信息和开源情报(OSINT),可以被对手用来确定攻击面和公司安全漏洞。以下是公司在招聘网站上发布技术信息的缺点:
-
公司正在向公众泄露关于其技术的细节,这些信息可能被威胁行为者利用。
-
黑客可以确定基础设施,并选择漏洞和工具,对目标组织进行网络攻击。
作为渗透测试员,当招聘人员披露此类信息时,我们可以通过识别客户和服务器的操作系统、网络设备供应商以及公司网络中安全设备和技术的供应商,轻松创建目标组织的内部基础设施档案。为了更好地理解如何作为渗透测试员培养黑客思维,我们来看看以下截图:
如上图所示,招聘人员列出了理想候选人的主要资格要求。我们通过仔细分析所提供的信息,来更好地了解所需的经验。职位发布者正在寻找一位拥有 Microsoft Windows Server 2012、2016 和 2019 经验的人。可以从这些信息中得出以下结论:
-
招聘组织拥有一个 Microsoft Windows 环境,并且使用一些较旧版本的 Windows Server,特别是 2012 和 2016。
-
组织内的旧系统或所有 Windows 服务器可能未完全打补丁,存在安全漏洞的可能性。
-
该组织可能还没有在其网络中部署 Windows Server 2019,或者计划很快推出更新版本的 Windows Server。
-
招聘公司指定了他们现有的网络设备和安全解决方案的供应商,包括思科路由器和交换机以及 Fortinet 防火墙。这为攻击者提供了明确的威胁防范系统信息。
-
该组织还在使用微软的云计算服务,如 Azure。他们的基于云的服务器和应用程序可能存在安全漏洞。
作为一名有抱负的渗透测试员,使用你最喜欢的搜索引擎,你可以搜索已知的安全漏洞,并学习如何利用这些技术。正如你所看到的,招聘人员泄露了过多的关于组织的数据,这些数据也可以被威胁行为者用于对该组织的恶意目的,同时也可以被雇佣的道德黑客和渗透测试员利用,模拟现实世界的网络攻击,帮助组织识别其数据泄露的方式以及如果这些信息被真正的攻击者利用可能带来的影响。接下来,你将学习如何使用一个特殊的互联网搜索引擎,找到世界各地许多组织暴露的系统。
使用 Shodan 寻找易受攻击的系统
Shodan是一个用于搜索物联网(IoT)、系统和直接连接到互联网的网络的搜索引擎。道德黑客、渗透测试员,甚至威胁行为者都会使用 Shodan 来识别他们组织或目标的资产,并检查这些资产是否已在互联网上公开暴露。这个在线工具帮助网络安全专业人员快速确定他们组织的资产是否已暴露在互联网上。为了提供一些额外的见解,假设你想确定你的组织是否有任何系统,如服务器,能够通过互联网访问。这些服务器可能包含开放的服务端口、易受攻击的运行应用程序和服务。假设你的组织有一个运行旧版操作系统的遗留系统,该操作系统没有及时安装厂商发布的最新安全更新,而且直接连接到互联网。渗透测试员或威胁行为者可以使用在线工具,如 Shodan,发现这样的系统,而无需直接从渗透测试员的系统向目标服务器发送任何探测请求,仅仅因为 Shodan 会自动检测到它。要开始使用 Shodan,请按照以下说明操作:
-
使用你的网页浏览器,访问
www.shodan.io/
并注册一个账户。没有账户也可以在 Shodan 上进行搜索,但结果会非常有限。 -
创建账户后,登录并使用 Shodan 的搜索框输入一些关键词,如
windows server 2008
,如下图所示:
如前所示的截图显示,全球范围内仍有超过 200,000 台设备正在运行 Microsoft Windows Server 2008 操作系统,并使用 Shodan 识别出这些直接连接到互联网的系统。作为道德黑客和渗透测试人员,您可以使用 Shodan 查找目标组织拥有的公开资产,以确定公司的攻击面。此外,一旦能够识别出目标的操作系统,您可以研究这些系统已知的安全漏洞。
- 点击任何一个系统都会提供有关系统的额外信息,如开放端口、运行服务、横幅和区域设置详细信息。以下截图显示了系统的本地信息:
如前所示的截图,Shodan 能够检索主机名、域名、互联网服务提供商(ISP)详细信息及其自治系统号(ASN),以及区域设置信息。这些信息帮助黑客和道德黑客在其侦察阶段确定目标组织的地理位置。
- 此外,Shodan 提供了有关开放端口及其关联服务的详细信息,如下所示:
如前所示的截图,Shodan 能够识别出此系统上暴露的服务和端口。无论这些端口是否被组织有意暴露,黑客和道德黑客都可以使用这些信息来确定目标系统上运行的服务,并确定是否存在任何安全漏洞。
要了解更多有关服务名称和端口号的信息,请参阅:
www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
。
例如,系统正在运行已知存在安全漏洞的Server Message Block(SMB)版本 1,使攻击者能够在目标系统上执行远程代码执行(RCE)。此外,Shodan 能够枚举出设备上运行的远程桌面协议(RDP)服务的有效用户名。这些详细信息有助于道德黑客和渗透测试人员改进其攻击和未来操作,以获取目标的访问权限。
作为一名有抱负的道德黑客和渗透测试人员,端口开放是为了允许系统进出流量。识别开放端口有助于确定目标系统上的入口点。
- 此外,如果 Shodan 检测到系统上的任何已知安全漏洞,它将提供以下详细信息:
如前所示,Shodan 提供了已知安全漏洞的列表,简要描述了这些漏洞及其相关的常见漏洞与暴露(CVE)编号。
CVE 数据库允许网络安全专业人员和研究人员报告和跟踪安全漏洞,网址为
cve.mitre.org/
。此外,网络安全专业人员使用 CVE 详细信息来创建网络威胁情报(CTI),以增强他们的网络防御并缓解新兴的威胁。
如前所述,伦理黑客和渗透测试人员可以利用 Shodan 的搜索算法,主动收集信息,以识别其目标的攻击面。Shodan 可以帮助你收集 OSINT 数据,而无需直接与目标接触。在接下来的部分,你将了解到如何使用行业内另一个知名工具,深入收集互联网系统的情报。
使用 Censys 发现暴露的系统
Censys是另一个互联网搜索引擎,帮助网络安全专业人员和研究人员收集和分析关于面向互联网的系统的信息,并识别它们的攻击面,以更好地理解网络犯罪分子如何利用公开信息(如域名、IP 地址和数字证书等)来攻击目标组织。要开始使用 Censys,请遵循以下步骤:
- 首先,访问
search.censys.io/
并在平台上注册一个免费用户账户:
- 注册账户后,登录并使用搜索字段输入目标组织的名称、IP 地址或域名,然后点击搜索进行查找,如下所示:
如前所示,已对 Cloudflare 的域名服务器(DNS)地址进行了查找。结果显示了有关网络和 IP 地址、运行的服务、开放端口以及服务器的地理位置的信息。这些信息在尝试查找目标组织的地理位置或地区数据时非常有用。
- 接下来,探索标签页提供了更多信息,例如与域名、IPv4 和 IPv6 地址以及组织拥有的其他资产的关联,如下所示:
-
历史标签页让你查看目标系统发生的变化。了解变化的内容帮助伦理黑客和渗透测试人员判断应用程序或配置中是否存在漏洞。例如,在 Web 应用程序上安装新插件可能会引入新的安全漏洞,攻击者可以利用这些漏洞进行攻击。
-
WHOIS表格提供了域名注册的详细信息和域名所有者的联系信息。有时,域名所有者在注册过程中未支付额外费用来隐藏其个人信息。对于威胁行为者和道德黑客来说,识别域名注册详细信息是常见的做法,以确定所有者的联系方式和组织的地理位置。
使用从 Censys 收集的信息,道德黑客和渗透测试人员可以创建公开可通过互联网访问的系统及其开放端口的档案。这些信息可以用来研究安全漏洞和利用技术来攻破这些系统。在接下来的部分中,你将学习如何自动化被动侦察技术和获取 OSINT 数据。
使用 Maltego 映射外部系统
Maltego 是一款由 Maltego Technologies 创建并维护的图形化开源情报工具。该工具帮助道德黑客和渗透测试人员通过使用图形交互式数据挖掘应用程序收集目标组织的基础设施情报。该应用程序提供从互联网上多个数据源查询和收集信息的能力,并以易于理解的图形展示数据。这些图形展示了每个实体与目标之间的关系,从而帮助渗透测试人员识别外部攻击面或目标系统、网络和组织。要开始使用 Maltego 进行数据收集,请按照以下说明进行操作:
-
前往
www.maltego.com/ce-registration/
注册 Maltego 应用程序的免费社区版(CE)用户账户。 -
接下来,启动Kali Linux虚拟机并登录。
-
在Kali Linux桌面,打开终端并使用以下命令更新本地软件包库列表并安装 Maltego:
kali@kali:~$ sudo apt update
kali@kali:~$ sudo apt install maltego
- 接下来,点击 Kali Linux 图标(左上角)以展开应用程序菜单,选择01 – 信息收集 > OSINT 分析 > maltego,如下所示:
- 接下来,Maltego 产品选择窗口将出现,选择Maltego CE(免费) > 运行,以启动社区版,如下所示:
-
接下来,配置 Maltego – 许可协议窗口将出现,接受许可协议并点击下一步。
-
接下来,配置 Maltego – 登录窗口将出现,确保使用第一步中创建的用户凭据,然后点击下一步继续。
-
在登录结果、安装转换、帮助改进 Maltego、Web 浏览器选项、隐私模式选项和准备好窗口中点击下一步。
-
要开始收集目标组织的信息,打开一个新图表。操作方法是点击Maltego 图标(左上角),然后点击新建:
如前面截图所示,创建新图表后,你会在左侧面板看到各种类型的实体,而右侧则显示概览、详细视图和属性视图面板。
- 接下来,要开始收集目标组织的基础设施信息,在实体调色板区域,将域实体拖动到图表面板的中间,如下所示:
- 接下来,在图表面板中双击域实体,打开详情窗口,在域名字段中输入组织的域名,并点击确定,如下所示:
- 要检索目标的公共 DNS 记录,右键点击图表面板中的域实体,选择全部转换 > 转为 DNS 名称 – NS(名称服务器),如下所示:
一旦转换执行并检索到数据,Maltego 会在图表面板中填充,显示目标的名称服务器,如下所示:
- 要检索邮件交换(MX)记录,以识别目标的邮件服务器,右键点击域实体 | 选择全部转换 | 转为 DNS 名称 – MX(邮件服务器),如下所示:
一旦 Maltego 从公共 DNS 服务器检索到 MX 记录,图表面板会更新,显示目标组织的邮件服务器:
- 要检索名称服务器或邮件服务器的公共 IP 地址,右键点击图表面板中的其中一个实体 | 选择全部转换 | 转为 IP 地址 [DNS],如下所示:
-
接下来,为了发现是否有与目标域名相关的网页,右键点击域实体 | 选择全部转换 | 转为网站 [快速查找]。
-
要检索与网站地址相关联的公共 IP 地址,右键点击网站实体 | 选择全部转换 | 转为 IP 地址 [DNS],如下所示:
- 要检索与目标域名关联的已知公开电子邮件地址列表,右键点击域实体 | 选择全部转换 | 转为电子邮件地址 [PGP],如下所示:
最后,您可以通过点击左上角的 Maltego 图标并选择保存选项,保存 Maltego 收集的信息。Maltego 的关系映射功能可以帮助您分析信息,并了解一个组件是如何与另一个组件连接的。通过 Maltego 收集的信息,您可以确定公开可用的服务器、IP 地址、员工的电子邮件地址、网页上的关联 URL 等。如您所见,使用像 Maltego 这样的工具可以帮助自动化从互联网上多个数据源收集各种类型的 OSINT 数据,这有助于道德黑客和渗透测试人员在侦察阶段减少投入的时间。接下来,您将学习如何使用 Netcraft 识别目标组织的外部攻击面、资产和技术。
使用 Netcraft 识别基础设施
Netcraft 使道德黑客和渗透测试人员能够收集关于目标组织的 OSINT,更好地了解其互联网-facing 设备的技术、操作系统、应用程序和位置。Netcraft 提供以下数据类型:
-
网络和 IP 信息
-
IP 地理位置数据
-
网站技术和应用程序
要开始使用 Netcraft 来分析目标组织/域名,请使用以下说明:
- 使用标准的网页浏览器,访问
sitereport.netcraft.com/
,然后在域名字段中输入目标域名并点击Look UP,如下所示:
- 几秒钟后,Netcraft 将自动显示它所知道的有关目标域名及其技术的所有信息,如下所示:
如前所示的截图所示,道德黑客和渗透测试人员可以使用这些信息来确定域名的所有者、名称服务器、托管公司和目标的公共地址。
- 接下来,为了确定目标组织的地理位置,向下滚动到SSL/TLS部分,如下所示:
如前所示的截图所示,Netcraft 能够收集并分析目标域名数字证书中的信息,并提供组织、州和国家的信息。这些信息对于道德黑客在规划物理渗透测试时非常有用。此外,Subject Alternative Name字段提供了允许使用该数字证书的附加子域名,这些数据帮助渗透测试人员识别目标所拥有的其他资产。
- 接下来,站点技术部分提供了有价值的信息,如识别服务器端和客户端技术,当计划进行 Web 应用程序渗透测试时,这些信息非常有用,如下所示:
完成此练习后,你将掌握如何利用 Netcraft 辨识目标组织的公共基础设施,成为一名道德黑客。接下来,你将学习如何使用 Recon-ng 自动化数据收集和分析。
使用 Recon-ng 进行数据采集
Recon-ng 是一个用 Python 编写的 OSINT 侦察框架。该工具本身包含许多模块以增强功能、存储 OSINT 的数据库、交互式帮助和菜单系统,类似于 Metasploit。Recon-ng 可以执行基于 Web 的信息收集技术,从多个在线数据源收集 OSINT,是任何有志成为道德黑客或渗透测试员的必备工具。要开始使用 Recon-ng 进行数据收集,请按照以下说明操作:
- 启动 Kali Linux 虚拟机,并在 Terminal 中执行以下命令以启动 Recon-ng:
kali@kali:~$ recon-ng
- Recon-ng 使用各种模块,这些模块旨在从多个数据源收集和分析数据。默认情况下,Recon-ng 没有预安装任何模块,因此请使用以下命令从 Recon-ng 市场安装所有模块:
[recon-ng][default] > marketplace install all
以下截图显示了 Recon-ng 正在下载并设置模块:
安装模块后,Recon-ng 会自动重新加载新安装的模块,并且会显示大量以红色书写的警告信息,如下所示:
上面的截图显示了多个 Recon-ng 模块,这些模块需要 应用程序接口(API)密钥,以允许 Recon-ng 从数据源获取 OSINT。
modules search
命令用于显示所有当前的 Recon-ng 模块及其分类,如发现、利用、导入、侦察和报告。
- 接下来,要查看 Recon-ng 支持的 API 密钥列表,请使用以下命令:
[recon-ng][default] > keys list
如下截图所示,密钥列表命令可以帮助我们查看支持的 API 密钥,并判断是否已在使用某个 API。
- 接下来,要获取支持的 API 密钥,只需访问数据源,例如 BuiltWith
builtwith.com/
并创建一个免费的用户帐户。账户创建后,登录并转到 Tools > API Access,即可找到 API 密钥。你可以根据需要为每个支持的模块获取多个 API 密钥。
考虑从以下数据源获取 API 密钥:
-
Hunter -
hunter.io
-
Censys -
search.censys.io
-
VirusTotal -
www.virustotal.com
-
Shodan -
www.shodan.io/
- 一旦获得 API 密钥,下一步是将每个 API 添加到其支持的 API 模块中。使用
keys add <API-module-name> <API key value>
命令。例如,使用以下命令为builtwith_api
添加 API 密钥,如下所示:
[recon-ng][default] > keys add builtwith_api 12345
- 添加 API 密钥后,使用
keys list
命令验证密钥是否已成功添加,如下所示:
- 作为一名道德黑客和渗透测试员,您可能同时处理多个项目,Recon-ng 允许您创建多个虚拟工作空间,以帮助您更好地管理数据的收集和分析。要创建一个新的工作空间,请使用以下命令:
[recon-ng][default] > workspaces create myfirstproject
一旦创建了新的工作空间,Recon-ng 将自动将您的工作环境从
default
切换到新工作空间。要查看 Recon-ng 中可用工作空间的列表,请使用workspaces list
命令。此外,workspaces load <workspace-name>
命令允许您选择并在特定工作空间内工作,而workspaces remove <workspace-name>
命令则从 Recon-ng 中删除一个工作空间。
- 接下来,
modules search <keyword>
命令允许您根据关键词搜索特定的模块。例如,使用modules search whois
命令查看所有包含whois
关键词的 Recon-ng 模块,如下所示:
- 接下来,要在 Recon-ng 中使用特定模块,使用
modules load <module-name>
命令。例如,要收集目标域名的point-of-contacts(POCS)列表,可以使用以下命令:
[recon-ng][myfirstproject] > modules load recon/domains-contacts/whois_pocs
[recon-ng][myfirstproject][whois_pocs] > info
如下图所示,info
命令打印了所选模块的描述和所需的选项:
- 要为模块设置所需的选项,使用以下命令将
microsoft.com
设置为我们的目标域名的SOURCE:
[recon-ng][myfirstproject][whois_pocs] > options set SOURCE microsoft.com
要在模块中取消设置某个值,请使用
options unset <parameter/value>
命令。确保执行info
命令来验证该值是否已取消设置/删除。
- 接下来,使用
run
命令执行该模块,如下所示:
- 接下来,使用
back
命令退出模块,并使用modules search bing
命令搜索可以利用 Bing 搜索引擎的模块,如下所示:
- 接下来,使用以下命令加载
bing_domain_web
模块,显示其信息,设置目标域名并执行该模块:
[recon-ng][myfirstproject] > modules load recon/domains-hosts/google_site_web
[recon-ng][myfirstproject][google_site_web] > info
[recon-ng][myfirstproject][google_site_web] > options set SOURCE microsoft.com
[recon-ng][myfirstproject][google_site_web] > run
- 使用
show hosts
命令查看有关目标收集的子域名和主机名列表,如下所示:
- 接下来,使用
show contacts
命令查看已收集的联系信息列表,如下所示:
可以使用 show 命令查看特定的信息,这些信息通过 Recon-ng 获得,命令格式如下:show [
companies
] [credentials
] [hosts
] [locations
] [ports
] [pushpins
] [vulnerabilities
] [contacts
] [domains
] [leaks
] [netblocks
] [profiles
] [repositories
]。此外,dashboard
命令提供了 Recon-ng 所有活动的汇总,例如显示某个模块被执行的次数以及收集的数据量。
- 要查看
myfirstproject
工作区内活动的总结,请使用dashboard
命令,如下所示:
- 接下来,收集所有数据可能会让人感到不知所措,然而 Recon-ng 有多种报告模块可以帮助我们。使用
modules search report
命令查看所有报告模块的列表,如下所示:
- 要生成 HTML 格式的报告,请使用以下命令设置所需的参数,并指定最终报告的输出位置:
[recon-ng][myfirstproject] > modules load reporting/html
[recon-ng][myfirstproject][html] > info
[recon-ng][myfirstproject][html] > options set CREATOR GLEN
[recon-ng][myfirstproject][html] > options set CUSTOMER ACME_Enterprises
[recon-ng][myfirstproject][html] > options set FILENAME /home/kali/Desktop/myfirstproject_report.html
[recon-ng][myfirstproject][html] > run
以下截图展示了如何在该模块上应用前述命令:
- 要查看报告,只需进入输出目录(如
/home/kali/Desktop
),然后使用网页浏览器打开报告 HTML 文件,如下所示:
该报告提供了一个非常易于理解的总结,展示了使用 Recon-ng 收集的所有数据。报告模块在帮助伦理黑客在侦察阶段关联目标数据方面发挥了极好的作用。
- 接下来,要访问 Recon-ng 的网页界面,请在新的终端中使用以下命令:
kali@kali:~$ recon-web
- 一旦工作区初始化完成,请在 Kali Linux 内打开网页浏览器并访问
http://127.0.0.1:5000/
,如下面所示:
- 如上图所示,伦理黑客和渗透测试人员可以利用 Recon-ng 的网页界面来改进他们的数据收集和分析工作。
要了解更多关于 Recon-ng 及其功能的信息,请访问官方 GitHub 仓库:
github.com/lanmaster53/recon-ng
。
完成此练习后,您已经学会了如何利用 Recon-ng 高效地从多个数据源收集和分析 OSINT。接下来,您将学习如何使用 theHarvester 进行数据收集。
使用 theHarvester 进行数据收集
使用像theHarvester这样的工具可以高效地收集 OSINT,以识别目标组织的子域名和其他暴露的资产。要开始使用 theHarvester 进行数据收集,请使用以下说明:
-
首先,启动Kali Linux虚拟机,并确保它具有互联网连接。
-
接下来,打开终端,并使用以下命令显示 theHarvester 的菜单:
kali@kali:~$ theHarvester -h
上述命令显示了帮助菜单,并提供了各种语法的列表,以及如何使用它们从在线资源中获取 OSINT。此外,帮助菜单还提供了使用 -b
命令的各种数据源列表。
- 接下来,要检索目标域的子域列表,请使用以下命令:
kali@kali:~$ theHarvester -d microsoft.com -b duckduckgo
kali@kali:~$ theHarvester -d microsoft.com -b dnsdumpster
kali@kali:~$ theHarvester -d microsoft.com -b bing
kali@kali:~$ theHarvester -d microsoft.com -b yahoo
kali@kali:~$ theHarvester -d microsoft.com -b crtsh
以下截图显示了 theHarvester 成功收集到了目标域的多个子域:
要了解 theHarvester 的更多功能,请访问官方 GitHub 仓库:
github.com/laramies/theHarvester
。某些数据源需要 API 密钥才能从在线数据库中检索数据,要了解如何将 API 密钥添加到 theHarvester,请参阅:github.com/laramies/theHarvester/wiki/Installation#api-keys
。
完成这一部分后,你将掌握收集目标组织的开放源信息(OSINT)的技能,从而识别它们如何泄露数据,如它们的内部基础设施,向互联网上的任何人公开。在下一部分,你将学习如何收集员工的开放源信息。
收集员工数据
全球范围内,许多组织的员工通常会泄露并分享过多的个人和组织信息,而没有意识到威胁行为者或对手如何收集并分析这些信息,从而计划网络攻击或增强对组织和自身的威胁。你会发现,许多组织的领导层员工通常会在专业的社交网络平台上分享他们的联系信息,以下是一些常见的信息类型:
-
全名和职位
-
公司的电子邮件地址
-
电话号码
-
角色与职责
-
最近的项目及其技术细节
-
员工徽章的照片
作为一名渗透测试员,在像 LinkedIn 这样的网站上创建一个账户,作为一个“傀儡”账户,实际上非常简单。你只需要在账户上填充一些虚假的信息,例如声明自己是另一分公司工作的员工,然后将目标组织的一些低级员工添加为联系人。这样,目标组织的其他员工就会注意到你的“傀儡”账户和他们有共同的联系人,这样可能会减少他们的怀疑。员工们有可能会自动接受你的连接/好友请求,因为他们会看到你是他们公司的一名员工。这为你与目标组织中的高层员工建立联系提供了一些杠杆作用,从而使你能够收集联系方式,计划各种社会工程学攻击,并确定你的攻击目标。
使用 Hunter
Hunter 是一个在线数据源,从互联网上的公共来源收集员工和组织数据。作为道德黑客和渗透测试员,这是收集员工姓名、电话号码、电子邮件地址甚至职位名称的必备资源,尤其是在规划社交工程攻击时。要开始使用这个工具,请按照以下说明操作:
-
首先,您需要在
hunter.io/
注册一个免费账户并完成注册流程。 -
注册过程完成后,使用您的用户凭证登录在线平台。
-
接下来,您将看到 域名搜索 字段,只需输入一个目标域名,如下所示:
- 当在 域名搜索 字段中输入一个域名时,Hunter 将提供搜索建议,我以
microsoft.com
为例,如下所示:
如前面截图所示,Hunter 可以提供员工信息的列表,如员工的姓名、电子邮件地址、电话号码以及其他信息来源。此外,收集目标组织的电子邮件地址有助于确定员工电子邮件地址的格式。因此,如果攻击者或道德黑客知道员工的姓名,那么猜测员工的电子邮件地址会变得更容易,这些信息在规划社交工程、密码喷射和凭证填充攻击时非常有用。
若要了解更多关于密码喷射和凭证填充攻击的信息,请参阅
attack.mitre.org/techniques/T1110/003/
和attack.mitre.org/techniques/T1110/004/
。
以下截图显示了 Hunter 用于收集特定人物数据的所有来源:
虽然员工会在各种在线平台上提供他们的联系信息,包括公司的网站,但这些信息可以被威胁行为者和渗透测试员用于对组织进行社交工程攻击。
社交媒体侦察
组织的员工常常泄露过多关于自己和公司的信息。虽然许多员工很高兴在他们的组织中工作,但有时他们会分享可以被威胁行为者利用的信息,从而增强他们对目标的攻击。作为一名有抱负的道德黑客和渗透测试员,从社交媒体平台收集和分析信息可以帮助发现那些隐私设置较弱、信息安全性较差的员工个人资料,并收集其个人资料中的敏感数据。以下是一些常见的泄露信息:
-
员工的联系信息,如电话号码和电子邮件地址,这些信息可用于社交工程和账户接管攻击。
-
分享带有员工徽章的照片,这些照片可以被攻击者用来创建假身份进行物理渗透测试中的冒充。
-
员工计算机系统和桌面的图片,这些可以向攻击者透露可用的设备供应商和操作系统。
-
员工已完成的项目可能包含特定的技术细节,这些细节可以让攻击者对内部网络基础设施进行分析。
这些只是一些常见的社交媒体平台(如 LinkedIn)上发布的信息类型。作为渗透测试员,你可以创建一个虚拟身份,在社交媒体上冒充他人,并欺骗目标组织的员工执行某个动作或泄露敏感信息(社会工程学)。此外,想象一下执行物理渗透测试时,你可以打印一个假员工 ID 卡,并通过使用目标组织社交媒体页面上的信息,穿着像典型员工一样的服装。接下来的几个小节中,你将学习如何进行社交媒体侦察。
使用 Sherlock 进行自动化
Sherlock 是一款 OSINT 工具,帮助渗透测试员快速确定目标是否有社交媒体账户,以及这些账户可能存在于哪些平台上。该工具支持 200 多个社交媒体网站,自动化检查每个站点的过程,并生成结果报告。要开始使用 Sherlock 进行社交媒体侦察,请按照以下说明操作:
- 启动Kali Linux虚拟机,打开Terminal并使用以下命令从其官方 GitHub 仓库下载Sherlock:
kali@kali:~$ sudo apt update
kali@kali:~$ git clone https://github.com/sherlock-project/Sherlock
- 接下来,使用以下命令安装 Sherlock 所需的依赖项:
kali@kali:~$ cd sherlock
kali@kali:~/sherlock$ python3 -m pip install -r requirements.txt
- 然后,使用以下命令在互联网上搜索目标组织的社交媒体存在,命令如下:
kali@kali:~/sherlock$ python3 sherlock microsoft --timeout 5
请注意,使用了--timeout
命令来指示 Sherlock 在任何社交媒体网站上停留的时间不超过 5 秒,如下所示:
当 Sherlock 完成任务后,结果将存储在当前工作目录中的一个文本文件中,如下所示:
请务必检查输出文件中的每个网站,以确保其有效并提供有关目标的有意义信息。渗透测试员可以利用收集到的信息轻松识别目标组织或用户拥有的社交媒体账户。这些信息还可以用于收集目标的进一步情报。完成这一部分后,你已经学会了如何通过 Sherlock 自动化收集数据的过程,寻找目标组织或个人的用户账户。
总结
在本章中,您已经学习了如何应用各种 Google 黑客技术,执行高级搜索和过滤,以识别互联网中的敏感目录和暴露资源。此外,您还掌握了进行域名侦察的实践技能,收集和分析 DNS 记录,执行区域传输,并识别目标的子域名。更进一步,您学会了如何利用专业的互联网搜索引擎识别全球公司暴露的资产,并对 OSINT 如何帮助道德黑客和渗透测试员开发目标档案有了更深的理解。我相信,本章所提供的知识将为您提供宝贵的洞察力,支持您在动态的网络安全领域中成为一名道德黑客和渗透测试员的道路。愿这段新获得的理解为您的旅程赋能,让您能够自信地在行业中导航并产生重要影响。在下一章,探索主动侦察中,您将学习如何执行主动侦察技术,以识别活跃系统、开放端口和运行中的服务。