一、什么是渗透测试?
渗透测试是一门艺术。你可以学习很多技术,了解所有的工具,但现实是软件是复杂的,尤其是当你开始把很多软件系统放在一起的时候。正是这种复杂性意味着,在寻找进入系统的方法时,不存在放之四海而皆准的解决方案。对一台 Web 服务器有效的攻击可能对运行在不同系统上的同一台 Web 服务器无效。有时,在某个特定的攻击突然开始起作用之前,你可以尝试多次而不成功,然后你就找到了侵入系统的方法。一个熟练且成功的渗透测试人员不仅拥有运行工具和理解正在发生的事情所必需的技术技能,还拥有尝试不同方法所必需的创造力。
你可能会听到渗透测试被称为道德黑客。事实上,有一些专业认证的名称中包含了道德黑客。它们本质上是一样的,尽管道德黑客在名称中包含渗透测试没有的成分。道德是渗透测试的一个重要组成部分。毕竟,这个名字已经说明了一切。您正在测试是否可以穿透系统和网络防御。如果你能渗透进去,你就获得了某种程度的接触。在正常运营过程中,这可能是您可能没有的访问权限,这就是道德的用武之地,尽管在现实中,道德成分更多的是法律要求。
美国和许多其他国家的法律规定,未经授权访问计算机系统和网络是非法的。一旦你获得了渗透测试的权限,你就违反了法律。当然,除非你得到许可。虽然您可能没有相关系统的帐户,这是显式授权,但您应该始终拥有执行测试的权限,这是获得系统访问权限的隐式授权。这种许可是至关重要的,你可能有时会听到它被称为“出狱自由”卡。虽然从技术上来说,这更像是一张“远离监狱”的卡片,而不是一张“走出监狱”的卡片,但你不想忽视的一个词是“监狱”。如果你认为你在帮某人测试他们的网络或应用程序安全,并且当你发现一个严重的漏洞时他们会感谢你,那么请再想一想。即使在几年前,当每个人都不太担心计算机安全时,这也不是由受人尊敬的专业人士做的。执行任何类型的渗透测试或使用我们将要审查的工具来对付您不同意接触的系统,都有可能让您锒铛入狱。
闯入系统可以是有趣和令人兴奋的,有些人真的发现解决难题和进入有点高。然而,有很多方法可以在不测试其他人的系统的情况下获得经验。使用 VirtualBox、VMWare 或 Parallels 等虚拟机软件,您可以在一台计算机系统上安装多个操作系统。事实上,我强烈建议启动并运行一些虚拟机,这样您就可以尝试一些我们将介绍的技术。至少,您可能希望安装 Kali Linux 和 Metasploitable 2 的副本。Kali Linux 是一个曾经被称为回溯的 Linux 发行版。它包含了许多默认安装的安全工具,可以用来对发行版中的内容进行渗透测试。Metasploitable 2 是 Linux 的一个实现,它被设计成可利用的。它包括易受攻击的各种服务版本,可在漏洞框架 Metasploit 中获得。复制一个旧的 Windows 安装也不是一个坏主意,只是为了看看 Windows 攻击是什么样子的。
信息安全
为什么我们要进行渗透测试?最终,渗透测试人员的目标是帮助组织提高防御能力,以防真正的攻击者闯入并窃取信息。这种信息可以以多种形式出现。就企业而言,它可能是知识产权。这是企业赖以将其与其他公司区分开来的任何信息。这可能是专利、源代码或任何其他关于业务如何运行的文档。其他形式的数据包括银行信息、信用卡号、社会保险号、用户名、密码,尤其是任何与医疗保健相关的数据。攻击者可能试图窃取其中的任何信息,因为这些信息可能被出售或用于获得对其他系统的额外访问权限。
你会发现我几乎避免使用任何形式的 hack 这个词。黑客技术有着悠久而传奇的历史,比它在计算机上的应用早了几十年。当我开始使用电脑时,黑客意味着用电脑做一些非常酷和有趣的事情。黑客攻击的结果就是黑客攻击。这些天来,hack 和 hacking 显然是想暗示一些别的东西,但媒体使用这些词的方式非常模糊,它掩盖了真正发生的事情。在大多数情况下,当你在新闻中听到“黑客”时,你听到的是犯罪。我发现最好把犯罪叫做犯罪。如果我们谈论的是犯下这一罪行的人,我们谈论的是罪犯。为了清楚起见,你会看到攻击者或对手这两个词。这些人试图闯入你的系统。你会看到单词 attack 用来表示他们在做什么。重要的是要记住,这些人的所作所为一点也不可爱或迷人。他们经常有充足的资金和良好的组织,他们的活动是作为一种商业运作,因为他们从中赚了很多钱。对待他们就好像他们有武器,很危险,因为他们就是。
组织将花费大量时间和资源来保护自己免受这些攻击。他们将实现防火墙来阻挡攻击者,并实现入侵检测系统,以便在有人通过防火墙时有希望捕捉到。他们还将在组织内实现程序,以保护自己免受内部攻击,这种攻击也很常见。这可能包括对强密码或多因素身份验证的要求,这可能要求用户除了使用用户名和密码之外,还必须携带某些东西,甚至使用指纹之类的东西。
组织试图防范的是漏洞。漏洞是系统中的弱点。然而,系统是一个非常模糊的术语。在这种情况下,通过使用“系统”一词,我们不仅谈论使您的计算机有用的操作系统和应用程序,而且在更大的范围内,还谈论整个企业网络中的所有计算机和网络设备。组织将试图找到它的弱点或漏洞,并消除或减少它们。试图消除或减少漏洞的过程称为补救。当您试图降低被利用的漏洞的影响时,您就是在减轻影响。因此,在管理漏洞的过程中,您会听到缓解和补救这两个术语。
当你利用一个漏洞时,你就是在利用它。随着我们的继续,您将会看到对漏洞利用的引用,这些漏洞利用是特定的技术,甚至是旨在利用特定漏洞的软件。利用漏洞的目的可能是获得系统级访问权限,这意味着攻击者可以看到甚至控制文件、用户和服务。其中一些操作需要比普通用户更高的访问级别。在 Windows 系统上,你会说你有管理员权限。在 Linux 或类似 Unix 的系统下,你可以说你有根用户或超级用户权限。root 用户是类 Unix 系统(包括 Linux)上的默认管理帐户。如果您是 root 用户,您可以在系统上做任何事情。如果您是 root 用户,而有些操作您无法执行,那么可能是出了问题。
当我们谈论信息安全和漏洞管理时,最后要回顾的是概率和影响的概念。在评估漏洞时,安全专家通常会考虑两个因素。首先是概率。这通常会被定性为低、中或高。它指的是特定漏洞被利用的可能性。如果有可用的概念验证代码,或者如果有广泛可用的漏洞(“在野外”),可能性可能非常高。如果您有额外的缓解措施,例如您必须在本地网络上而不是远程网络上才能利用该漏洞,您可能会认为这种可能性较低。进行这种评估和分类通常需要知识和经验的结合。
另一个需要了解的重要因素是影响。如果漏洞被触发,就会发生这种情况。如果利用漏洞导致应用程序崩溃,但它马上恢复,这可能是一个低影响的利用。另一方面,如果它导致远程攻击者对您的系统进行未经授权的管理访问,影响会很大。如果它导致对业务的关键或敏感信息的破坏,您也可以说它是高影响。虽然这可能比概率更容易衡量,但仍然需要大量的知识和经验才能做到准确。
为了让某人关注某个特定的漏洞,对影响和概率进行高评级可能很有诱惑力,但你很快就会失去可信度。没有必要绝对修复每个漏洞。确保最关键的问题得到最多的关注要重要得多。诚实并以事实为基础,你会确保你的意见有意义。
最后要注意的是。我们一直在谈论信息安全,这是一个你会经常听到的短语。目标是保护组织的信息资产。但是,攻击者可能不关心您的信息资产。他们可能更关心你的计算资产。换句话说,他们可能只是希望收集一个系统,并将其添加到为他们执行任务的系统网络中。这是一个非常有利可图的行业,所以不要因为你是一个小组织就认为你不是目标。你是。尤其是如果你很容易被选中的话。你的系统和它们的计算能力与那些知名大公司的一样好,如果它们很容易被侵入就更好了。
渗透测试的局限性
渗透测试是寻找漏洞并试图利用它们。但是,有些人和组织可能倾向于认为所有的漏洞都可以被快速利用。事实上,如果做得好,渗透测试可能是一个非常耗时的操作,为了执行测试,您通常只有非常有限的时间。如果组织正在寻找大爆炸,一个给你带来大量数据的大利用,那么一些害羞的东西可能会被视为他们是安全的迹象。事实上,没有什么比这更偏离事实了。
如果你或你工作的组织对目标缺乏远见,你将会以糟糕的结果告终,或者更糟的是,会给组织提供一个错误的安全感。如果你只发现小东西,你没有达到你的渗透目标。如果你没有渗透过任何系统,或者没有以任何显著的方式渗透过任何系统,这可能会被视为该系统或应用程序不能被渗透的标志。这意味着,在大量系统上花费时间的情况下,你无法穿透它。重要的是要记住,公司的对手是有动机的,并且通常在很长一段时间内是有耐心的。如果你是他们的目标,他们会在比你做渗透测试更长的时间内不断攻击你。
通常,渗透测试甚至在开始之前就可能因为实现的规则和约束而瘫痪。例如,我曾经参与过一些项目,其中客户不希望接触特定的系统和网络,因为他们知道这些系统和网络很脆弱。排除已知易受攻击的基础设施的测试不能完整或准确地表示组织的安全状况或它们有多易受攻击。如果在没有附加信息的情况下孤立地使用该报告,它会产生误导。
专注于渗透行为可能不会给你正在工作的公司带来很多好处。相反,执行安全评估可能更好。这在一定程度上是一种渗透测试,但它不仅限于您能够快速侵入的组件。您可能无法在有限的时间内找到问题。这并不意味着没有需要解决的问题。举个例子,虽然这是非常非常容易实现的,但我们经常看到 Web 服务器不仅提供软件名称,还提供版本。有时,甚至是 Linux 内核版本,如果它在 Linux 系统上的话。Windows 系统有时会提供运行 Internet Information Server (IIS)的 Windows 版本的详细信息。虽然这些可能不是可怕的问题,但它们为攻击者提供了太多的信息。当然,他们也许可以通过其他方式找到这些信息,但是为什么要让他们的工作变得更容易呢?让他们为得到的每一点信息而工作。当关闭一些泄漏点非常容易时,尤其如此。关闭从 Web 服务器公开版本号的功能只需要几分钟的时间。几乎没有理由不花几分钟来加强警戒。
如果您正在进行渗透测试,这种类型的发现不会得到很多分数。然而,安全评估完全是另一回事。安全评估的目的是尽可能真实完整地评估公司的安全状况。您可能会在安全评估中发现比渗透测试中多得多的项目。在渗透测试中,你可能不会与目标合作。如果目标在寻找支撑防御的方法,这通常是一个错误。是的,你可以测试操作响应能力,你可以感觉到一个人在没有任何内部帮助的情况下可以走多远,但是如上所述,这是一种错误的安全感。同样,发现某人在工作三天后无法进入并不能告诉你任何关于你对一个连续几周夜以继日工作的坚定攻击者的准备情况。
安全评估是安全专家和目标之间的合作。这通常是全知识渗透测试,以及渗透测试人员可能永远不会看到的配置和设置的审查。这是有价值的,原因有二。第一个是因为攻击者会不停地戳戳戳,直到某样东西最终屈服。第二,一些攻击发生在内部。这些人将了解其中一些设置,并能够利用它们。安全评估可以发现更有价值的信息,只需向第三方公开日常业务,第三方不会关注日常事务,对问题视而不见,因为“这就是这里的工作方式”执行安全评估的安全专业人员可以对所发现的问题进行客观分析,以便管理层确定问题的优先级并加以解决。
测试类型
第一种叫做黑盒测试。这有点像传统的渗透测试,但在极端的一端。黑盒测试意味着测试人员除了知道目标是谁之外,对目标一无所知。攻击者可能不知道 IP 地址、域名或任何东西。这需要事先收集大量情报。这可能是一个非常有价值的练习,因为一个公司应该总是知道他们向外部世界泄露了多少可以用来攻击他们的信息。信息收集将占用大量时间,因此确保为此安排时间非常重要。你不会想在分配给你的四天中抽出两天时间来收集信息,这样你就可以开始实现攻击了。
当有人正在执行全面的黑盒渗透测试时,这可能是测试响应能力的好机会。在这种情况下,你可能有一个红队,有时也被称为老虎队。红队是攻击队。他们是想进来的人。在内部的人,不管他们是否意识到它正在发生(有时操作人员不知道,以便获得真实的反应能力),都被称为蓝队。你也可能有一个白人团队,他们知道这个等式的两端。这在比赛中更常见,然而,在这种情况下,白队完全是中立的,并管理比赛。
如果你有兴趣参与渗透测试的实践,并且你想以一种安全的方式完成它,这也是很有挑战性的,网上有很多比赛。这些有时被称为夺旗竞赛或网络防御竞赛。有时你在团队中工作,但也有挑战,你可以独自解决一个特殊的难题进入一个系统。
另一方面,更接近前面提到的安全评估的是白盒测试。这一般都是全知识。攻击小组与目标紧密合作。这可能需要提前建立凭证。这允许测试人员执行完整的本地(系统上)评估,而不必在检查本地设置之前进行渗透。你可能拥有外表看起来非常坚硬的系统,但是一旦系统破裂,它的内部就会变得柔软、黏糊糊。这可能是一个巨大的问题,所以检查本地强化和远程强化是有帮助的。运营团队通常会得到通知,并与攻击团队合作,以确保测试不会对客户造成影响。
在黑色盒子和白色盒子之间是灰色盒子。这是一个灰色地带,这听起来并不夸张。每个灰盒测试可能不同,因为它介于黑色和白色测试之间。一种常见的方法是预先提供所有的初始参数。这将是考虑使用的 IP 地址和主机名。这样,红队就不用花时间去搜寻这些信息了。这种方法还有一个好处,就是限制对明显超出范围的系统的影响,如果是真正的黑盒测试,这种情况可能会意外发生。考虑到这里可能发生的各种活动,让无辜的旁观者置身事外是很重要的。
理想情况下,确定你计划如何接近应该基于你所拥有的时间量和客户真正想要完成的事情的交集。你可以做的不同类型的测试总是有所取舍,所以你应该告诉客户或你的雇主在给你的时间内你可以做什么。如果他们担心一旦有人进入后会发生什么,白盒测试可能是最合适的。如果他们真的想了解他们对事故的反应,你可以使用黑盒测试。黑盒测试通常会在侦察上花费大量时间,而在实际测试上花费较少的时间。有时灰箱测试提供了最好的平衡,但这是你需要确保与客户沟通的事情。
通常,测试在生产环境中进行。这为实时系统中的防御措施提供了最佳思路。然而,这是有风险的。一些公司可能更喜欢在受保护的实验室环境中进行一些测试,以避免对实时系统造成任何影响。这样做可能是为了确保企业能够继续获得客户,但如果担心测试结果会导致数据损坏或泄露,也可以这样做。根据具体情况,这两种情况都是有效的,但您必须确保实验室环境尽可能真实地反映真实环境,否则一开始就进行测试就是浪费。
谁做钢笔测试
这确实是一个棘手的问题,你可以从几个不同的角度来探讨它。首先,你可能想知道从事这项工作的是什么类型的人。这可能归结于他们所拥有的知识或技能的类型。仅仅因为你是安全专家并不意味着你会是一个好的渗透测试者。如果你是一名防火墙管理员,从技术上讲,你应该是一名安全专家,但是你可能不擅长做渗透测试工作。这并不意味着你不擅长,但这两者并不自动携手并进。
就我个人而言,我认为它与技术技能关系不大,因为这些技能总是可以被教授或获得的。擅长渗透测试的人很可能是非常好奇的人。这是一个不允许事物停留在表面价值的人。作为其中的一部分,他们也将是持久的。他们希望对某件事有更多的了解,并持续关注某个特定的问题或挑战,直到他们解决了它或用尽了所有的可能性。渗透测试人员还需要一定的创造力。这是因为你需要一个能从不同角度解决问题的人,而不是第一次尝试就止步不前。
如果你想从内部找人替你做测试,解决这个问题是很重要的。这就带来了一个重要的问题:是使用组织内部的人还是外部的人。如果你使用外部组织,你会得到客观性的好处。外面的人不知道事情的运作方式,所以他们可能不会做出假设。每当执行渗透测试的人开始做假设时,他们就冒着遗漏许多漏洞的风险。如果你继续一次又一次地使用同一个外部测试器,同样的情况也会发生。结果就是太熟悉了。举个例子,几年前我有一个客户。在早期的一些测试过程中,我在做一些非常基本的扫描时无意中导致了一个系统失败。这个系统显然比我们任何人想象的都要脆弱得多,但那次经历最终影响了接下来几年的许多后续测试。我们总是很小心自己的攻击性。这包括外部团队和内部团队。
然而,使用内部人员意味着无论何时你需要他们,理论上你都有可以支配的人,并且你可以做大量的增量测试。然而,和其他事情一样,这也有优点和缺点。如果你对某件事看得太多,你可能会错过一个改变,因为你开始假设太多。此外,除非你可以付钱给那些唯一目的是执行这种测试的人,否则如果你经常使用他们来进行渗透测试,你就会失去那些可能有其他事情要做的人的生产力。
在找人执行渗透测试方面,有很多事情要考虑。如果你自己也想成为一名渗透测试员,考虑到你正在阅读的内容,准备花一些时间学习基本的渗透测试实践,以及如何构建复杂的 IT 系统,包括编程语言、数据库和系统管理。这些都会帮助你成为一个更好的渗透测试者,更深刻地理解你在做什么。这会让你更吃香。你的工具包越大,越多的人会想利用你。
方法学
在执行安全性测试时,有许多方法可用。你可以去找一个你喜欢的,无论是深度的还是非常简单的。你可以发展你自己的,一旦你开始掌握你正在做的事情,你可能就想这么做。出于我们的目的,我们将使用一个非常简化的框架。当你开始做你自己的渗透测试时,无论你使用什么方法学—
并且你将需要使用某种方法学—
你将想要与你的客户或雇主交流那种方法学。
使用方法的原因是为了证明你所做的是可重复的。你不只是在黑暗中开枪。你真的想通了你在做什么。提供你的方法论,在一个高层次上,表明你正在使用一个文档化的过程,即使你在每一个单独的时刻都是凭感觉飞行。提供方法通常会给你的测试和结论更多的权重。如果我只是提供一堆结论,而他们不知道我是如何得出这些结论的,整个事情可能更难接受。就像你在上数学课一样。展示你的作品。
我们将在本书中使用的方法是我在与客户合作时使用的常用方法的修改版本。它将允许我们直接进入渗透测试的核心部分。也就是说,这种方法有所简化。随着您继续工作,将会出现许多我们不会涉及的领域,包括以下内容:
- 情报收集——这是针对你的目标的侦察工作,根据交战前你获得的信息多少而有所不同。即使向您提供了整个范围,您也可能想要执行一些侦察,以便您可以向客户提供从信息泄漏角度来看他们暴露程度的指导。
- 扫描——这是不同层次的侦察。在你开始决定你的攻击策略之前,你需要知道你的目标是什么。这将为您提供大量关于系统和端口的信息,以及可能存在的任何防火墙的信息。这也是您可能需要小心的地方,这取决于您正在执行的测试级别。这可能是一个非常嘈杂的步骤,因为你在这里开始与目标直接接触。这可能对客户有用,看看他们是否能检测到扫描作为支撑他们防御姿态的一部分。
- 漏洞识别–一旦您确定了一些目标系统和应用程序,获得已知漏洞的列表将告诉您可以快速轻松地进入哪些地方。您可以使用多种技术来执行此步骤。其中一些可能是自动化的,但其他的将非常手动。
- 利用——您发现的漏洞会导致您被利用。这是您通过利用您发现的漏洞实际上开始渗透系统的地方。这一步可能非常耗时,也令人心碎,因为漏洞并不总是导致系统受损。一些漏洞很难被利用,而另一些漏洞可能无法利用。在这一阶段,您可能会发现许多误报,漏洞被识别出来,但预期的利用并没有起作用。
- 报告——一旦你完成了,一定要清楚地记录下你的所有发现,这样你就有一些具体的、连贯的东西可以呈现给你的雇主或客户。这个阶段是必不可少的。尽管做前四步很有趣,但是如果你没有做好这一步,你就不会再被邀请去玩了,而且消息可能最终会传开,这样就没有人会邀请你去玩他们的玩具了。花时间学习写一份好的有效的报告。
实际上,这些阶段中的一些可能会被压缩,这取决于你工作的时间。您可能会发现使用的一些自动化工具可以在一个步骤中完成大部分工作。然而,不要依赖自动化工具。永远要仔细检查你的结果,不要假设他们总能找到漏洞,或者他们找到的漏洞总能被利用。这就是为什么分开做所有这些工作总是一个好主意,即使你有一个工具可以同时做一堆事情。事实是,虽然各种方法被设计来模拟攻击者的行为,但攻击者并不总是遵循这些步骤。他们可能只是简单地进行端口扫描或端口清扫,然后在发现可能易受攻击的开放端口后发起攻击。绝大多数情况下,盲目发动攻击几乎是没有成本的。
摘要
任何人都可以成为渗透测试员。好的渗透测试人员需要经验和知识,就像擅长其他职业的人一样。尽管渗透测试是一种高度技术性的职业,但它也是一门艺术。这是因为某一天有效的东西第二天可能就无效了。软件是复杂的。能够处理每天的差异并适应这些差异是工作的重要部分,也是使其成为一门艺术的重要部分。在每一次渗透测试中,从来没有一个清晰的分步过程。你必须有点创造力,非常坚持,非常有弹性。耐心和坚持会让你走向成功。
当你准备成为一名渗透测试员时,你应该牢记期望的道德义务。如果你只是想走出去,闯入系统而不考虑法律,你当然可以这样做。但这并不意味着你就是渗透测试者。这会让你成为一名罪犯,而且你很有可能再也不会自由了。总是,总是从你的目标那里得到关于你应该做什么的完全一致的意见。在你学习的过程中,要么找一个非常理解和宽容的人或组织,让你在他们的系统上尝试一些东西,或者,更好的是,给你自己找一个你可以使用的小型实验室系统。有许多方法可以做到这一点。最便宜的方法是获得一个内存很大的系统,然后构建虚拟机。这个不一定很贵。几乎任何一台现代电脑都能满足你的需求。然后你可以得到像 VirtualBox 这样的免费软件来托管你的虚拟机。
当您开始进入渗透测试时,请注意您正在遵循的步骤。当你习惯于遵循一个相当有规律的程序时,你就发展了你的方法。记录下来可能会有帮助。您可能希望在为您的雇主或客户生成的报告中使用您生成的文档。教育你的客户会改善你和他们的关系,让他们物有所值,并且清楚地展示你的价值。许多渗透测试人员提交的报告强调了他们能够做的一切,却没有清楚地解释发生了什么或者可以做些什么。提供清晰完整的文档也将确立你正在遵循一个过程,而不是对你正在做的每件事都信口开河。
练习
- 如果您对 VirtualBox、VMWare 或 Parallels 更熟悉,可以购买它们的副本。在您的系统上安装它。您可以从
http://www.virtualbox.org
获得 VirtualBox。这将是一个简单的安装,除了接受任何提示的默认值之外,您不需要做任何事情。 - 获取 Kali Linux 的副本。这将是一个。将用于将 Kali 安装到虚拟机中的 ISO 映像。您可以下载当前的。ISO 出自
http://www.kali.org
。VirtualBox 将允许您从安装新的操作系统。您下载的 ISO 映像。同样,Kali 的安装应该相当简单。接受安装中的缺省值,因为缺省的 Kali 安装将使您达到我们的目的。 - 获取 Metasploitable 2 的副本。有不同的地方可以得到这个。你应该使用谷歌、必应或者你最喜欢的搜索工具来寻找下载它的地方。这将是我们将要做的一些事情的一个很好的目标。这不需要安装。这是一个 VMWare 映像,您应该能够在任何虚拟化软件中打开它,包括 VirtualBox。
二、挖掘信息
我们征服系统的第一步是挖掘目标的信息。幸运的是,在我们生活的这个互联时代,如果你知道如何以及在哪里寻找,有很多信息可以在网上的某个地方找到。信息的容易获得意味着有很多信息是容易获得的。当然,所有这些容易获取的信息都存在隐私问题,但目前我们并不关心隐私。事实上,我们将感谢自由流动的信息,你会发现你可以访问,而不必诉诸任何诡计,欺骗,或违反法律。甚至没有任何潜在的违法行为。在信息变得如此自由和容易获得之前,你可能知道翻垃圾箱和其他获取信息方式的故事。这种策略几乎完全没有必要。
首先,你有谷歌。除了可以通过谷歌获得难以置信的海量信息之外,还有很多技术可以用来改进你的搜索。谷歌提供了多种方法,可以非常准确地找到你要找的信息,这样你就不会费力地浏览大量页面,只为了找到你要找的那一条信息。在你寻找针的时候,你可以把它想象成一个自动干草过滤器。虽然谷歌黑客,如其名,非常强大,但它并不完美。你可能仍然需要做大量的手工过滤和阅读。
除了谷歌,还有很多网站可以用来收集目标的信息。社交网站通常是获取信息的好地方,当然工作网站也是很好的信息库,尤其是在收集你的目标的技术信息时。根据你正在工作的公司的了解程度,你可能会找到大量的信息,这些信息也存储在非常公开的地方。
虽然互联网大部分是分散的,但也有一些情况下存在中央信息库。这些存储库被称为区域互联网注册中心(rir),它们在获取企业信息方面非常有用。这可能包括有关分配给企业的域名注册和 IP 地址的信息。一般来说,这是公开信息,尽管一些细节,特别是与域名注册相关的细节可能会被掩盖。不过,说到 IP 地址,都是公开的。挖掘这些存储库有时会发现有用的信息,包括联系数据。
使用所有这些网站和策略的组合,你将能够收集关于你的目标的大量信息。
谷歌黑客
谷歌黑客这个词听起来非常酷,在某些方面确实如此,其应用远远超出了我们所谈论的范围。然而,尽管名字如此,这绝不是对谷歌的攻击。相反,这是一种使用谷歌在其搜索引擎中实现的大量关键词的方式,以帮助您获得尽可能窄的结果。从你的搜索中返回 1589341 页的日子已经一去不复返了。相反,你可以通过不同类型的搜索得到非常非常具体的信息。这被称为谷歌黑客,但实际上,其他搜索引擎已经实现了许多相同的关键字。如果你真的喜欢另一个搜索引擎,而不是谷歌,你应该试试这些,看看他们是否在那里工作。表 2-1 显示了谷歌引入的允许你缩小搜索范围的关键词。
表 2-1。
Google Hacking Keywords
操作员 | 描述 |
给予称号 | 在标题中查找搜索词 |
第七 | 仅在标题中查找搜索词,而不在文档的其他地方查找 |
伊努埃尔 | 在 URL(地址)中查找搜索词 |
阿力努勒 | 类似于 allintitle,只在 URL 中查找搜索项 |
螺纹类型 | 您提供文件类型和搜索条件。所有结果都具有该文件类型。 |
allintext | 搜索将不会看网址,只是在文本中。 |
位置 | 把你的搜索范围缩小到一个特定的网站。你必须提供网站以及搜索词。 |
环 | 搜索指向页面的链接 |
金融家 | 此搜索将只在锚定标签中查找 |
numrange(数字范围) | 搜索数字 |
日期范围 | 结果将在指定的日期范围内 |
作者 | 在谷歌群中搜索特定作者。这只适用于谷歌群组。 |
组 | 查找组名。这只适用于谷歌群组。 |
在主体中 | 搜索帖子中的主题行。这只适用于谷歌群组。 |
msgid | 在组内搜索消息 ID。 |
谷歌不仅仅是网页搜索引擎。它还用于搜索图像、群组和新闻。谷歌托管群组,类似于邮件列表或旧的新闻组群组。它们可以只在网上使用,但也可以和电子邮件一起使用。此外,谷歌将允许你搜索新闻。这是一种获取谷歌定义的新闻信息来源集合的方式。如果你想知道某个突发事件,你可以搜索谷歌新闻来找到相关信息。
正如你可以从关键词中看到的,你可以开始真正缩小你的主题。作为一个例子,你可以在图 2-1 中看到一个搜索,该搜索旨在查找microsoft.com
站点上所有包含 Microsoft Windows 字样的 Excel 电子表格。为了完成这个特定的搜索,我们使用了filetype
和site
关键字。
图 2-1。
Google hacking keywords
当然,除了微软网站上的一系列 Excel 电子表格之外,还有许多更有用的搜索可以让你获得更多有趣的信息。你可以寻找包含目录列表的网站。大多数网站应该关闭目录列表,因为管理员不希望您直接访问那里的所有文件。他们可能会使用一些作为背景文件,这些可能包括密码之类的东西。对于任何配置文件来说尤其如此。
对于服务器负责的每个站点,Web 服务器都有一个根目录或文件夹。从该 Web 服务器提供的所有页面都在该根目录或文件夹下。Web 服务器使用索引页,这意味着如果没有请求特定的页面,就会自动提供特定的页面。如果没有索引页,并且服务器配置为允许索引页,这种情况并不常见,服务器将显示目录中所有文件和文件夹的列表。
为了定位打开了目录列表的网站,我们转向使用另一个关键字intitle
。当网站显示给定目录中的文件列表时,通常会在页面标题中加入“索引”字样。因此,如果我们使用intitle
关键字并查找“Index of ”,我们应该会返回打开了目录列表的页面。您可以更进一步,寻找特定的文件类型。例如,如果目录列表中有一个.txt
文件,这可能会引起特别的兴趣。这可能包括robots.txt
文件,该文件可能包括 Web 管理员不希望搜索引擎查看的所有文件的列表。这样做的原因通常是这些文件中包含敏感信息,因此网站所有者不希望它们被轻易找到。
如果你发现自己在搜索有趣的东西时不知所措,你可以去谷歌黑客数据库(GHDB)。在撰写本文时,它位于 https://www.exploit-db.org/google-hacking-database/
,尽管考虑到互联网的流动性,该 URL 可能会随着时间的推移而发生变化。找到它的最好方法是用谷歌快速搜索。谷歌黑客数据库是一个有趣的搜索库,可以用来找到各种各样的结果。在图 2-2 中,你可以看到可以找到的搜索类别。你可以做很多事情来寻找属于“物联网”的各种设备。你可以找到网络摄像头,寻找应用程序给出的特定错误信息,找到易受攻击的系统,并使用谷歌黑客进行许多其他非常有针对性的搜索。这是一个很好的起点,如果你的创造力有一点点被挖掘,你要去哪里进行搜索。
图 2-2。
Google Hacking Database categories
GHDB 包括了很多固定的搜索词,不用你自己想就能使用。当然,虽然数据库中有很多诱惑,但是请记住,您只是在与签订了服务合同的客户打交道。开始玩登录门户之类的东西,看看您可以用一些默认用户名和密码完成什么不仅是不道德的,而且如果它超出了您的参与范围或针对您无权访问的网站进行,也可能被视为非法。一如既往,小心行事。为客户工作时,添加site:
关键词,在客户领域内专门寻找这些问题是很重要的。记住使用 site:关键字将你的搜索限制在你的客户范围内将有助于你远离麻烦。
当你将一些与谷歌黑客相关的技术与你从其他来源获得的信息结合起来时,你也许能够发现一些漏洞。一个很好的例子是,您可以在搜索词中使用site
:
标记,比如错误消息,来识别目标公司基础设施中的漏洞。对于 Web 应用程序来说尤其如此。易受攻击的 Web 应用程序通常会生成特定的错误消息。您可以在属于您的目标的网页中搜索错误消息的实例。“谷歌黑客”可以通过查看是否有错误出现在属于你的目标网站的抓取中来节省你的大量时间。
使用谷歌提供的关键词可以给你一些非常有针对性的结果。这些术语中的许多可以组合起来,使您的搜索变得非常强大。如果你有兴趣了解更多或者得到一些如何使你的谷歌搜索更有效的想法,谷歌黑客数据库是一个很好的资源。你可能还会发现,有些关键词在其他搜索网站上也适用。
网络社交
谷歌并不是唯一能获得大量有趣信息的地方。在社交网站上可以找到很多东西。如果你做一些明智的搜索,作为一个大的公共论坛,Twitter 可能真的很有帮助。如果你有一个特定的客户,进行如图 2-3 所示的搜索。这个特定的示例搜索很无聊,而不是寻找可能包含潜在可利用信息的东西。这本书的出版商只需演示这一过程。如果你正在与一家公司合作,你可能会发现他们张贴工作列表或参考他们正在寻找的特定技能。可能会有一些有用和有趣的帖子与他们内部正在进行的事情有关,任何这些信息都有可能在将来被使用。技术信息永远是黄金,就像他们参考的任何员工技能或与他们合作的任何供应商一样,但可能会有许多其他参考资料可用于以后的社会工程攻击。
图 2-3。
Twitter search results
Twitter 并不是唯一一个可以被搜索信息的社交网站。脸书是另一个这样的网站,虽然它有一系列的权限设置,这可能比 Twitter 更难找到信息。曾经有一个公共应用编程接口(API ),任何人都可以用它来查询脸书的信息。这已经被关闭了。为了得到任何感兴趣的东西,你必须有一个有适当权限的帐户。换句话说,如果你正在寻找一个特定人的帖子,而这些帖子被设置为只对朋友开放,你必须成为那个人的朋友才能获得信息。企业可能会公开帖子,但可用的 API 和信息远不如过去那样开放。虽然 API 通常只用于查询公开的帖子,但你可能会惊讶地发现,有多少帖子是由那些完全不懂的人公开的。几年前,一个年轻人自己写的网站weknowwhatyouredoing.com
,收集了一些与吸毒和说你公司坏话有关的状态。他之所以能够做到这一点,是因为脸书发布了公共 API。该网站已不存在,因为公共 API 已不存在。
公共 API 不再存在的事实并不意味着你不能连接到脸书,自己浏览一下。脸书的好处是没人能看出你在偷偷摸摸。LinkedIn 就不能这么说了。LinkedIn 也是一个社交网站,但不像脸书那样主要是个人性质的,它更侧重于商业。随着时间的推移,LinkedIn 增加了其他社交网站的各种功能,包括状态更新。这些状态更新可以提供许多有用的信息,有时包括带有一组简短要求的工作可用性。
与其他社交网站不同,LinkedIn 的一个缺点是,如果你访问某人的 LinkedIn 个人资料,他们会收到你访问过的通知。这可能是也可能不是你想要的。然而,LinkedIn 提供了丰富的信息。它或多或少是一个非常公开的来自世界各地的简历库。和简历一样,LinkedIn 的个人资料中包含了很多工作职责的详细信息,这些信息会在他们的工作经历中显示出来。如果您可以看到某人在某家公司工作的技术列表,您就可以确定该公司正在使用的基础架构的类型。你可以在图 2-4 中看到一个例子。这是一家公司的员工写的,该公司在网络中使用了 Juniper 和 Cisco 设备。他们还使用了北电的设备。从这个列表中,我们可以确定我们可以寻找漏洞的系统类型。这可能会为我们提供进入网络的途径。
图 2-4。
List of technologies from LinkedIn
LinkedIn 的伟大之处在于,与脸书等其他社交网站不同,信息是公开的。如果人们可以看到彼此和他们所做的事情,LinkedIn 的效果最好。这是寻找潜在雇主或了解更多潜在雇员、供应商或合作伙伴的好方法。这是一个很棒的网站,原因有很多。然而,在定位基础设施信息时,LinkedIn 并不是唯一的来源。任何工作地点都可以使用。在图 2-5 中,您可以看到一个未指定公司的安全工程师职位的一小部分工作列表。这份工作列表告诉我们,该公司在其网络中使用 Cisco,并且也与 VMWare 合作。这两个事实都可以在你寻找目标信息时使用。
图 2-5。
Job Listing
虽然这不能告诉我们很多,但这是一个起点。如果你能把它和你已经获得的其他信息放在一起,你可能会得到更多的关注。有时你可以利用各种来源的信息,以便更好地了解你的目标正在发生什么。你可以通过 LinkedIn 等网站从前雇员那里获得信息,他们可能会提供一份他们在雇主那里用过的供应商特定技能的清单。例如,这可能会告诉您目标使用的是 Palo Alto Networks 设备或 Cisco 设备。如果您发现前雇员任职后的工作列表显示了一套不同的设备,您可能会得出这样的结论:这是一个较新的部署,可能还没有解决所有的错误和配置设置,因此它可能是一个成熟的目标。当然,它也可以只是一个单独的位置,尽管在较大的公司中,他们可能会在所有站点使用相同的设备供应商,以实现统一性并节省批量购买的成本。为了确定你在处理什么,你必须在网络上做一些探索,但是你从工作网站上收集的这些信息作为一个起点可能是有价值的。
互联网注册中心
在互联网上有业务的公司必须在不同的地方登记信息。随着互联网的发展,存储这些信息的位置数量也在增加。当一个公司注册一个域名,比如apress.com
,它必须提供存储在互联网名称与数字地址分配机构(ICANN)的联系信息。有许多注册服务商将为消费者提供接口并管理该接口,但所有捕获的数据只有一个存储库。幸运的是,有一个工具可以用来从这个存储库中收集信息。图 2-6 显示了工具whois
在命令行的使用。您只需提供一个域名,whois 就会收集该域名的所有信息。这些数据库的问题是,它们长期以来被用来提取联系人,然后用于各种营销和垃圾邮件目的。因此,许多公司使用“私人”注册,这阻止了whois
工具透露注册域名的人的联系信息。您将从 whois 查询中获得的信息表明联系信息是隐藏的,因此您不会有任何公司特定的信息。
图 2-6。
Whois request
即使您无法获得联系信息,您也可以从 whois 请求中获得其他信息,这些信息是不可拒绝或阻止的,例如该域名的注册商以及创建日期和该域名信息的最后更新日期。这远不如获取域名相关的名称、电话号码、地址和电子邮件地址有趣,但这是有意义的。您还可能会发现注册尚未转为私有的域名,因此您可能能够获得有关域名注册的其他信息。获取 whois 信息有多种方式,包括在任何类似 Unix 的操作系统上使用命令行 whois 程序,如 Linux 或 Mac OS X,如图 2-6 所示。您还可以在任何系统(包括移动设备)上使用 Web 界面。
除了负责域名注册之外,ICANN 还负责通过其下属的一个部门——互联网号码分配机构(IANA)分配互联网协议(IP)地址。IANA 管理 IP 地址和众所周知的端口(网络和电子邮件等众所周知的服务端口)的注册,以及其他事务。IANA 将网络地址块分配给地区互联网注册管理机构(rir),包括美国互联网号码注册管理机构(ARIN)、欧洲网络研究机构(RIPE)、亚太网络信息中心(APNIC)、拉丁美洲网络信息中心(LACNIC)和非洲网络信息中心(AfriNIC)。每个注册管理机构都维护自己的信息数据库,这些信息表明谁拥有 IP 地址块,以及有关组织及其联系信息的信息。注册有着悠久的传统,如域名和 IP 地址块所有权,至少包括技术和管理联系。如果您使用whois
查找 IP 地址,您将获得组织信息以及联系信息。担心内部信息泄露的公司通常会隐藏一般的联系信息。
即使在信息是一般性的情况下,您也可以从一个 IP 地址的 whois 查找中收集许多详细信息。在图 2-7 中,您可以看到一个针对 IP 地址的 whois 请求。在响应中,您可以看到一个 IP 地址所属的地址范围。您可以查看 IP 地址属于一个小块还是一个大得多的块。这将有助于你确定调查范围。你可能会得到一个单一的 IP 地址,或者你可能会发现一个单一的 IP 地址,如果你没有从你的目标提供更多的信息。得到完整的区块会给你其他的地址,你可以看看。这也将保护你不至于误戳另一个实际上不属于你正在合作的公司的 IP 地址。
图 2-7。
Whois request on an IP address
遗憾的是,Whois 的实现各不相同。一些 whois 实现只会告诉你哪个 RIR 拥有你正在寻找的信息。您可能需要实际指定要查询哪个 RIR。在图 2-7 中,可以看到主机whois.apnic.net
被指定为查询 IP 地址 1.1.1.1 信息的系统。通常,每个 RIR 都有一个名为whois
的主机名来处理这些查询。对于 APNIC,whois.apnic.net
处理请求,而对于 ARIN,whois.arin.net
处理请求。其他 rir 有相似的主机名。在图 2-7 中可以看到,该组织拥有区块 1.1.1.0-1.1.1.255。在某些情况下,您可能会看到某个组织拥有一个更大的区块,但另一个组织却获得了一个更具体的区块。能够确定谁拥有特定的地址是非常有帮助的。
在某些情况下,您可能会发现某个特定的 IP 地址被某个公司用作 Web 或电子邮件服务器,而实际上该 IP 地址可能完全属于另一个公司。这可能会告诉你,你的目标公司已经将一些服务外包给一家提供商,而不是在内部托管。
为了让互联网上的每个人都能到达他们想去的地方,有大量的信息可以从一些存储库中获得。这些存储库,即区域性互联网注册中心,可以提供联系地址或 IP 地址范围等信息。你可能还会发现公司很关心他们提供的信息。如果因为被注册商隐藏而没有得到任何联系信息,你会知道该公司至少采取了一些简单的措施来保护自己。这些信息在你前进的过程中可能会很有用,因为你会知道你面对的是一个有一些保护措施的对手。
摘要
在这里你可以学到的最重要的技能是谷歌黑客技术。谷歌黑客利用特定的关键字来帮助缩小搜索参数,以获得非常具体的结果。有了这些信息,您可以更好地识别基础架构中的弱点,但您也可能会发现机密备忘录或其他文档,这些文档可能会提供有用的信息,如用户名或密码。许多公司不知道他们的网络访问系统中存储了什么,谷歌可能会定期对这些系统进行搜索和编目。谷歌黑客关键词可以帮助你将你正在搜索的草堆缩小到几缕干草,这可能会模糊你正在寻找的针。即使在渗透测试之外,谷歌黑客也是一项非常有用的技能。你使用这些关键词越多,它们就越成为你的第二天性,从而减少你在谷歌内部查找信息的时间。
你可以在很多地方收集与公司相关的信息,通常不需要接触公司。在当今世界,公司需要在互联网世界中保持存在,并且经常比他们意识到的更有存在,这仅仅是因为他们不能总是控制现任和前任员工的言行。这意味着像脸书、Twitter 和 LinkedIn 这样的社交网站对你这个渗透测试者来说是非常有价值的资源。您通常可以非常容易地确定该公司在其基础架构中使用哪些供应商,这可以帮助您找到进入途径。通常,工作描述或 LinkedIn 简介会非常具体地介绍正在使用的技术。
此外,您还可以利用各种互联网注册中心来维护与域名和 IP 地址相关的所有信息,这些信息在整个互联网上都是全球性的。通常,这些信息会附带物理地址,甚至联系人姓名、电子邮件地址和电话号码。您可以使用这些信息进行网络钓鱼或其他社会工程攻击。根据您使用的攻击技术,这些信息可能比基础设施供应商的技术细节更有价值。
练习
- 使用 Google hacking 技术获得一个网站列表,这些网站可以让您访问具有管理员登录权限的网络摄像头。
- 使用
whois
,如果您使用 Linux 或 Mac OS,可以从命令行,或者通过许多 Web 界面中的一个,来获取关于进程的所有信息。然后,寻找你正在工作的公司的信息。 - 使用 whois 收集有关 IP 地址的信息,包括 4.2.2.1 和 8.8.8.8。这两个地址都属于众所周知的域名服务器。
- 使用 Google hacking 定位已经生成 500 个内部服务器错误响应的 Web 服务器页面。“500 内部服务器错误”表示服务器在处理请求时遇到了问题,可能是编程错误或配置错误。这两种可能性都有可能被利用。
- 使用谷歌黑客获得可能存储在 ICANN 的 pdf 列表。
三、什么是开放的?
通常在这一点上,无论你是被提供了一些开始的地方,还是你在谷歌或互联网注册表中找到了一些,你至少有一些 IP 地址或主机名可以使用。无论哪种情况,域名系统(DNS)都是下一步要做的事情。至少,更好地理解 DNS 的结构和使用是很重要的。DNS 是互联网协议(IP)地址映射到主机名的地方,反之亦然。有一些真正有用的工具,通常在 DNS 中使用,我们将看看这些工具,因为您可能想更详细地了解您正在查看什么以及它可能在哪里。
在这一点上,我们有一些地方可以开始—
我们可以使用 DNS 来获得基于我们所拥有的额外信息,无论是 IP 地址还是域名。使用 DNS,我们可以从 IP 地址中查找主机名。DNS 也存储一些叫做资源记录的东西。资源记录指示特定主机名或 IP 地址的功能。使用设计用来查询 DNS 服务器的工具,我们可以获得这些信息,并利用它来更好地了解公司可能使用的系统。我们可以确定 Web 服务器在哪里,使用什么系统发送电子邮件,以及与这些系统相关联的 IP 地址。这些主机名和与它们相关联的 IP 地址将提供一些额外的地方,以便对我们的目标进行更直接的探查和刺激。
找到这些主机的目的是为了让我们能够看到主机上正在运行什么应用程序,因为最终这些应用程序将成为我们的目标。我们可以使用端口扫描器(如 nmap)来确定哪些应用程序正在侦听网络端口。还有其他的端口扫描器,甚至有些比 nmap 更快,但是没有一个更古老或更有用。一旦我们有了端口,nmap 也可以给我们应用程序的名称。我们还可以使用一些其他工具来更直接地与底层应用程序进行交互,从而确定正在运行的确切软件。例如,知道端口 80 上有一个 Web 服务器并不能告诉我们太多。理想情况下,我们希望知道正在使用的软件的名称,如 Apache 或 IIS 或 Nginx,以及版本号。nmap 有时可以获得这些信息,尽管还有其他方式。
域名系统
首先,让我们谈谈域名系统(DNS)和它是如何组合在一起的。使用 DNS 的原因是因为人类不能很好地记住数字,而互联网依赖于数字地址,称为 IP 地址。为了让人类能够提供对他们有意义的地址,必须有一个系统能够将人类可读的地址翻译成机器可读的地址,反之亦然。DNS 提供了这个功能,以及其他一些功能。
DNS 是按层次结构组织的。最顶层是顶级域名(TLD)。这些包括。com,。网,。org,。edu 和所有特定于国家的域。您可以在图 3-1 中看到 DNS 层级图。顶级域名下面是二级域名。在图中,您可以看到wubble.com
、foo.com
以及其他显示为二级域的域名。这些域中的每一个都包含实际的主机名,尽管它们也可能有第三层域,称为子域。例如,如果wubble.com
有一个小团体想要它自己的子域,举个例子,它可能是offshoot.wubble.com
。下面你可能有类似 www.offshoot.wubble.com
的主机名。
图 3-1。
DNS diagram
域名是 DNS 记录(包括主机名)的容器,但域名本身也可以有与之关联的 IP 地址。在图 3-1 中,foo.com
是域名,可能包含主机名 www, www.foo.com
可能有 172.20.42.5 的 IP 地址,但foo.com
也可能有自己的 IP 地址。该 IP 地址可能完全不同,比如 172.30.15.6。主机名和域名放在一起, www.foo.com
,称为完全限定域名(FQDN)。
每个主机名,像 www.wubble.com
或 www.microsoft.com
,
实际上只是我们能够使用 IP 地址以外的东西的一种方式,因为我们不像我们那样擅长于将名称与事物联系起来那样擅长于记住数字。当您查找属于某个主机名的 IP 地址时,您会执行一个称为递归 DNS 查询的操作。递归查询意味着你从一个地方开始,它把你指向另一个地方,你不断地做这个过程,直到你得到你正在寻找的答案。你要寻找的所有信息都存储在通常称为域名服务器的系统中。权威名称服务器是拥有关于主机名或 IP 地址的最准确信息的服务器,但是为了到达权威服务器,查询从本地或缓存服务器开始。本地或缓存服务器将启动该过程。
当您寻找主机名的 IP 地址时,首先要做的是从本地高速缓存名称服务器发起对 A 记录或地址记录的请求。这通常是企业内部的服务器或服务提供商提供的服务器。当您去请求 www.wubble.com
时,您的客户端将向您的缓存服务器发出请求,该服务器将查看它是否在本地存储了信息。如果没有,它必须从权威服务器上为你找到答案。它首先去的地方是图 3-1 所示图表的最顶端。这些被称为根域名服务器,它们提供了关于在哪里可以找到二级域名服务器的信息,二级域名服务器将是该域的权威服务器。因此,缓存服务器将向与。com 域名,它的地址已经知道,寻找与wubble.com
相关的域名服务器。根服务器将回复所请求的域名服务器的信息。缓存服务器然后向权威 DNS 服务器的 IP 地址发出请求,要求 www.wubble.com
。一旦 DNS 找到了wubble.com
域的权威服务器,缓存服务器就应该停止搜索。
虽然 A 记录是您最常使用的记录,但 DNS 支持许多其他记录类型。SOA 记录或授权开始记录跟踪信息,如该域的区域上次更新的时间。MX 或邮件交换器记录可以告诉您哪个服务器或 IP 地址是发送邮件到特定域的地址。NS 记录指示与域相关联的名称服务器。A 记录是地址记录,指示与主机名相关联的 IP 地址,而 PTR 记录则相反,将 IP 地址解析为主机名。还有 RR 记录,它指示可能与该域相关联的其他资源。CNAME 记录是一个规范名称,它只是一个别名。使用 CNAME 记录,您可以使一个主机名引用另一个主机名。例如,您可能让主机名transfer
成为ftp
的 CNAME,主机名ftp
成为 A 记录。这意味着如果一个 IP 地址改变了,你只需要改变一个 A 记录,但是你有许多主机名都指向同一个地方。
有许多程序可以用来从 DNS 服务器检索信息。最常见的是 dig、nslookup 和 host。每一个都可以使用配置的本地或缓存服务器请求信息,或者可以直接访问特定的名称服务器。虽然您可以使用这些实用程序,但它们都是命令行程序。如果你喜欢图形界面,有程序可以提供。还有一些网站可以用来执行 DNS 查找。为了确定特定域的名称服务器,您可以使用这些实用程序中的任何一个,或者您可以使用whois
,我们之前使用它来查找关于特定域注册给谁的其他信息。
如果您对一个域名执行一个whois
查询,您将获得的信息之一将是分配给该域的名称服务器。你可以在图 3-2 中看到这一点。该图显示了对apress.com
的whois
查找。响应的底部是与域相关联的名称服务器。其中一个是ns1.rackspace.com
,另一个是ns2.rackspace.com
。查看主机名,我们可以推断为某个地址处理 DNS 的服务提供商是 Rackspace。任何时候,如果您想知道应该检查哪个 DNS 服务器来直接从源获得权威信息,您可以使用whois
来获得该域的域名服务器。
图 3-2。
Whois query for name servers
实用程序dig
非常有用,尽管如果您不熟悉正在查看的内容,解析输出可能会有点困难。然而,dig
可以用来在命令行上提取不同的记录。图 3-3 显示了dig
的使用。这个特定的请求是寻找邮件交换器(MX)记录。这告诉我们负责接收该域邮件的系统的主机名。每个域至少有一个 MX 记录。从 MX 记录中知道主机名将告诉您,如果您想要使用简单邮件传输协议(SMTP)对组织的接收邮件服务器执行渗透测试,您需要与哪个系统进行交互。
图 3-3。
Using dig
我们最关心的回答在回答部分。本部分显示的数据告诉我们,对于域名apress.com
,邮件是由 Google 运营的邮件服务器基础设施处理的,或者至少看起来是这样。这可能会告诉我们一些关于他们基础设施的其他信息。在附加部分,dig
从答案部分查找了与主机名相关的 IP 地址。你可以看到这些都是 A 记录,或者地址记录。如果您有一个 IP 地址,并且想要从中获得一个主机名,那么您将会寻找一个 PTR(指针)记录。CNAME 记录,或规范名称,实际上只是一个别名。例如,你可以设置web.apress.com
有一个 www.apress.com
的 CNAME 条目。这意味着,如果您需要更改这两台主机的 IP 地址,您只需更改 www.apress.com
地址,因为对web.apress.com
的任何检查都将强制执行对 www.apress.com
的 A 记录查找,因为它保存了地址。Web.apress.com
只是对不同主机名的引用。
Dig 是一个非常强大的 DNS 查找工具,但不是唯一的。虽然 dig 和 nslookup 都可以安装在类似 Unix 的操作系统上,但 dig 通常不能在 Windows 系统上使用。因此,nslookup 值得一看。要执行上述查找,您可以参见图 3-4 中的步骤。
图 3-4。
Using nslookup
使用 nslookup,我需要做的第一件事是设置我正在寻找的记录类型。在本例中,我要查找 MX 记录,所以我将我的类型设置为 MX。一旦我完成了这些,我需要做的就是输入域名,nslookup 将为我进行查找。您可以直接查询名称服务器。例如,如果我想直接使用 dig 访问权威服务器,我会在命令的末尾添加@ns.rackspace.com
。同样,使用 nslookup,我只需告诉它我要访问的服务器,它就会查询该服务器,而不是在我的系统上配置的 DNS 服务器。进入 nslookup 后,我可以设置服务器,nslookup 会将所有查询发送到该服务器,直到服务器被更改或我们退出程序。这允许我直接在一个服务器上检查,以避免本地服务器上缓存条目的任何问题。
渗透测试基础(全)(2)https://developer.aliyun.com/article/1525432