精通防御性安全-全-
精通防御性安全(全)
原文:
annas-archive.org/md5/f98daef68ae3edbfb393ecb438616462译者:飞龙
前言
掌握防御性安全 是一本面向 IT 专业人员的书,旨在帮助他们提高网络安全知识,包括 Wireshark、DVWA、Burp Suite、OpenVAS 和 NMAP 等工具的使用,硬件威胁如武器化树莓派,以及 Unix 和 Windows 的加固技术。
如果你是网络安全专业人员,本书将帮助你探索 IoT、Web 应用和云等高级防御性安全领域,并处理复杂的主题,如恶意软件分析和取证。
到本书结束时,你将获得成为网络安全专家所需的所有技术技能,以及制定定制化网络安全策略所需的所有知识,最终成为防御性安全的专家。
本书适合谁
本书非常适合 IT 专业人员、数据科学家、开发人员以及任何希望了解并探索网络安全迷人世界的 IT 专家。
本书对于希望扩展其网络安全知识并有效创建和设计大型组织防御性安全策略的网络安全专业人员来说,是一个极大的资产。
需要具备网络、信息技术(IT)、服务器、虚拟化和云计算等概念的基本理解。
本书内容
第一章,防御性安全概念复习,全面概述了网络安全概念(包括攻击类型),帮助更好地理解当前的威胁格局。
第二章,管理威胁、漏洞和风险,概述了如何处理网络安全漏洞和威胁,包括风险管理、业务连续性和灾难恢复。
第三章,理解政策、流程、合规性和审计,提供了如何设计和开发网络安全政策(和流程),如何实现合规性,审计介绍,以及如何应用网络安全成熟度模型的详细指南。
第四章,修补第 8 层,专门讲解了与用户相关的风险、与用户相关的常见威胁类型(包括社交工程)以及如何防止这些威胁。
第五章,网络安全技术与工具,解释了如何在你的防御性安全策略中利用先进的网络安全设备,并提供了 APT 和威胁情报的介绍。
第六章,保护 Windows 基础设施,深入探讨了保护 Windows 基础设施的策略、工具和技术,包括加固、修补和端点安全。
第七章,加固 Unix 服务器,包含了一份全面的最佳实践汇编,旨在确保您的 Unix 应用服务器具有良好的防御安全态势。
第八章,增强你的网络防御技能,是一本旨在涵盖网络安全最重要元素的章节,包括网络扫描器、Wi-Fi 漏洞,以及适用于无线网络的用户安全指南,您可以在您的组织中加以利用。
第九章,深入物理安全,深入探讨了物理安全中最危险的工具和攻击,包括强大的 LAN Turtle、隐秘的 Plunder Bug LAN Tap、危险的 Packet Squirrel、便携式 Shark Jack、令人惊叹的 Screen Crab 和先进的 Key Croc,以及最新的 USB 威胁。
第十章,应用物联网安全,是一本完整的物联网安全指南,涵盖了如何检测恶意物联网设备,以及如何利用物联网设备创建自己的网络安全系统。
第十一章,在云端的安全开发与部署,探讨了不同类型的云以及如何保护云中数据的不同状态,还介绍了 Kubernetes 的安全性和一些用于测试云安全性的工具。
第十二章,掌握 Web 应用安全,是一本有趣的章节,教你如何收集有关你网站的公开信息,并提供一些实践实验,帮助你理解用于 Web 应用安全的工具,包括 DVWA 和 Burp Suite。
第十三章,漏洞评估工具,介绍了漏洞管理和扫描器,包括如何安装和配置先进工具,如 OpenVAS。
第十四章,恶意软件分析,是一本全面的恶意软件分析指南,包括恶意软件分析的类型、所用工具的解释,甚至还有一个实践实验,帮助你进行第一次恶意软件分析。
第十五章,利用渗透测试进行防御安全,包含了动手实践经验,帮助你学习进攻性安全所使用的工具,包括如何安装和设置 Metasploit、SearchSploit、sqlmap 和 Weevely。
第十六章,实践取证,是一本全面的数字取证指南,包括取证平台的介绍、如何以及在哪里收集证据,并提供一系列国际标准,从法律角度正确地收集证据。
第十七章,实现安全工具自动化,提供了最常见的自动化攻击的解释,并给出了使用 Python 和树莓派自动化安全工具的一些示例。
第十八章,实用资源的汇编,是一个网络资源汇编,你可以在防御性安全中利用这些资源,包括工具、最佳实践、免费模板、框架和标准。
为了充分利用本书
你需要一台安装了 Kali Linux 的机器,才能跟随本书中的示例和实验。示例已经在一台加载了 Kali Linux 版本 2020.3 虚拟机镜像的虚拟机上进行了测试。它们也可能适用于任何未来版本的 Kali。
如果你想基于这款小巧但强大的设备创建一些网络安全工具,可以选择使用树莓派。

我们还将使用多种网络安全工具,包括 NMAP、Wireshark、sqlmap、DVWA、Burp Suite 和 Metasploit。然而,这些工具的安装和配置将在本书中介绍!
下载彩色图像
我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图和图表的彩色图像。你可以在此下载:static.packt-cdn.com/downloads/9781800208162_ColorImages.pdf。
使用的约定
本书中使用了许多文本约定。
文中的代码:表示文本中的代码字、数据库表名、文件夹名称、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 用户名。例如:“使用这个工具,你可以创建一个autorun.inf文件,该文件将在插入设备(如 USB、DVD 或 CD)时自动执行。”
代码块的格式如下:
//Identify USB HID Devices
let MalPnPDevices =
MiscEvents
| where ActionType == "PnpDeviceConnected"
| extend parsed=parse_json(AdditionalFields)
| sort by EventTime desc nulls last
| where parsed.DeviceDescription == "HID Keyboard Device"
| project PluginTime=EventTime, ComputerName,parsed.
ClassName, parsed.DeviceId, parsed.DeviceDescription, AdditionalFields;
任何命令行输入或输出都如下所示:
sudo apt-get install telnet
粗体:表示新术语、重要单词或屏幕上显示的单词。例如,菜单或对话框中的单词通常以粗体显示。以下是一个示例:“这些设置可以通过Windows 组策略编辑器中的高级审核策略配置进行配置和验证(审计)。”
提示或重要说明
外观如下。
联系我们
我们始终欢迎读者的反馈。
一般反馈:如果你对本书的任何内容有疑问,请发送邮件至 customercare@packtpub.com,并在邮件主题中注明书名。
勘误:虽然我们已尽最大努力确保内容的准确性,但错误仍有可能发生。如果你在本书中发现错误,我们将非常感谢你向我们报告。请访问 www.packtpub.com/support/errata 并填写表单。
盗版:如果您在互联网上发现我们作品的任何非法复制形式,恳请您提供该位置地址或网站名称。请通过版权@packt.com 与我们联系,并提供相关材料的链接。
如果您有兴趣成为作者:如果您在某个领域有专业知识,并且有兴趣撰写或参与书籍的创作,请访问authors.packtpub.com。
分享您的想法
阅读完《防御安全精通》后,我们很希望听到您的想法!请点击此处直接进入本书的亚马逊评论页面,分享您的反馈。
您的评论对我们和技术社区非常重要,它将帮助我们确保提供高质量的内容。
第一部分:掌握防御性安全概念
本节将带你深入了解网络安全的基础知识。阅读本节后,你将掌握成为网络安全大师所需的所有知识。
本节包含以下章节:
-
第一章,防御性安全概念的复习
-
第二章,管理威胁、漏洞和风险
-
第三章,理解政策、程序、合规性和审计
-
第四章,修补第 8 层
-
第五章,网络安全技术和工具
第一章:第一章: 防御安全概念回顾
网络安全不再是 IT 部门的专属问题,它越来越成为公司领导层需要理解的问题,也是一个需要组织中每个成员的意识和知识的挑战。
– Rogelio Umaña - 高级合伙人 | RDP 咨询的数字化转型
理解核心的网络安全概念是成为大师的关键。大师不仅仅是通过与特定技术相关的经验来定义的,更是通过对话题的深刻理解和对技术术语与概念的恰当使用。
作为一名网络安全专家,你可能会受到媒体的邀请,了解最新的攻击信息,或被政府召集加入网络安全顾问团队。在这两种情况下,你都需要准备好发声,提供你的专家意见,本章将帮助你深入理解网络安全概念,使你能够以大师级别的自信发言!
作为这一旅程的一部分,我们将涵盖以下主要主题:
-
深入探讨网络安全的核心
-
管理网络安全的传奇痛点:密码
-
如何掌握深度防御
-
对蓝队和红队的全面解释
技术要求
本章没有技术要求,但你可能需要一杯咖啡(来为即将接收的大量知识准备好大脑)。
现在,让我们准备好迎接我们的学习冒险。
深入探讨网络安全的核心
大师在他们的领域中拥有更高的知识和理解。在这种情况下,你应该理解所有的概念、术语和攻击方式,才能自信地作为网络安全专家发言。这不仅仅是重复别人告诉你的内容,而是要获得一种理解的层次,能够解释所有这些话题,使每个人都能理解(即使他们不熟悉 IT 概念)。
网络安全三原则
一位 CISO 曾告诉我:如果你想看某人是否真正了解他们所谈论的攻击,只需问:这个攻击影响的是CIA 三原则中的哪一项?如果没有回应,那个人是新手。如果答案不明确或缺乏论据,那个人是初级,但如果回应清楚地概述了攻击会影响三原则中的哪些元素及其原因,那么你正在与一位专家交谈。
这一三原则在进行防御安全工作时尤为重要,因为它将帮助你根据影响的程度以及这些影响如何与业务相关来优先考虑风险。
这对组织来说尤其重要,因为它帮助他们确定优先投资领域(并提供更多资源),以减少在网络攻击发生时对公司造成的影响或损害。例如,攻击人力资源公司信息网页的可用性可能对业务影响较小,而攻击其管理的机密信息可能会造成灾难性的后果。

图 1.1 – CIA 三元组
图 1.1 展示了CIA 三元组的三个组成部分:机密性、完整性和可用性。现在,让我们深入了解这三个概念。
机密性
影响机密性的攻击是基于未经授权的人访问公司的数据。那么,如何知道谁可以访问哪些类型的数据呢?回答这个问题的最佳方法是遵循最佳实践,要求所有公司根据数据的敏感性对其数据进行分类和标记。这样,你就可以有效地确定如何实施适当的控制措施。数据可以按照以下方式进行分类:
-
限制:这是公司拥有的最重要的数据,可能包括商业机密,如果泄露,可能会对公司造成灾难性影响。
-
机密:这是公司必须保密的数据(仅限知情者)。很多时候,这类数据与外部法规相关,若泄露,可能会面临制裁和罚款。
-
私人:这是较不敏感的数据。然而,它并不适合公开消费,应当保留在组织内部。
-
公开:这是指那些旨在公开分发的数据(通常,这些数据是公开的并且在线可检索的)。
完整性
除了保持数据的机密性外,我们还需要确保数据不会被恶意行为者篡改。实际上,我们需要确保有适当的机制,确保数据只能由授权方进行更改。
如果你的公司运营一个交易性网站(如电子商务网站),这尤其重要,因为攻击者可能攻击你的数据库,创建或修改折扣代码,而等你发现问题时,你的商品可能已经以远低于原价的价格被售出并配送。
这些攻击之所以更危险,是因为攻击者不仅会将折扣应用到自己的购买上,而是会应用到每个人的购买上。因此,你可能会发现 1,000 个订单被以 99%的折扣处理,这使得你很难识别出是谁实施了攻击。
最著名的黑客攻击银行事件是因为数据的完整性被破坏。
因此,由于这些攻击的影响,企业必须主动并不断地投入时间和资源来防止它们的发生。
可用性
这些攻击旨在破坏给定系统、网络或网络资源的可用性。
除了在线商店外,这些是相对不太危险的攻击类型;然而,这类攻击也是最常见的类型。事实上,黑客行动组织进行的大多数攻击都旨在破坏系统可用性。
攻击类型
为了实施一个良好的防御策略,你必须理解当前的威胁形势和最常见的攻击类型——你无法防范未知的威胁。一些资料根据影响的领域将攻击分类;例如,网络攻击和物理攻击。然而,这样的高层次分类对于像你这样的高手来说过于简单,因此,我将提供一份详尽且最新的常见攻击类型列表,正如图 1.2所示:

图 1.2 – 网络安全威胁形势
现在,让我们深入探讨这些类别,以便更好地理解当前的威胁形势。
恶意软件
每个人都熟悉这种类型的攻击。事实上,几乎每个人在一生中至少会遭遇一次这种攻击。然而,尽管大多数这类攻击可以通过良好的、更新的防病毒软件加以预防,但值得关注新的威胁,以确保我们的防护机制能够应对新出现的威胁。
为了提高这些攻击类型的有效性,通常它们会与其他策略结合使用进行传播,例如,通过社会工程学手段。
重要提示
恶意软件有多种类型,包括远程访问木马(RAT)、木马、蠕虫、勒索软件、间谍软件等。每种类型都有其独特之处,你必须理解它们的特性,才能有效地防御。
有趣的是,我记得当我发现我每周都要重新安装我妈妈电脑的操作系统,原因是我弟弟在上网时相信他的好运时:

图 1.3 – "你赢了"恶意软件样本
现在,让我们来看一下任何公司安全的最大威胁——通过社会工程学进行渗透:
社会工程学
作为技术爱好者,我们通常专注于保护我们的系统和网络。事实上,我们可能会投入大量时间、精力和资源来建立一个稳固的网络安全环境,但这并不完整,直到你将最弱的一环——用户纳入考虑。
我曾见过很多公司遭受灾难性攻击的案例,原因并不是他们的昂贵系统被突破,也不是因为他们遭遇了复杂的零日漏洞攻击,而是因为一名员工不小心将自己的凭据提供给了攻击者。
这个话题通常被忽视,犯罪分子正是利用了这一点,因此你必须理解并应用所有的策略、机制和系统,以避免在你的组织中发生此类攻击。在第四章《修补第 8 层》中,我们将深入探讨如何防御包括钓鱼攻击、精准钓鱼、捕鲸攻击、网络药物攻击等在内的攻击。
中间人攻击
假设你在商场约会,想要播放一个视频,但墨菲定律作祟,你的网速极其缓慢。然而,有一个名为Free Wi-Fi的 Wi-Fi 网络——听起来像是奇迹,对吧?嗯,让我告诉你,这可不是你的幸运日。很有可能有网络犯罪分子知道该地区的手机信号差,因此设下陷阱,悄悄捕获你所有的数据,而你甚至没有察觉。
虽然这是一个简化版的中间人攻击案例,但它展示了实现这种攻击的简易性。
重要提示
在技术方面,犯罪分子可能会使用多种可用的攻击方式,如会话劫持、IP 欺骗、重放攻击或窃听。这些将在第八章《增强你的网络防御技能》中深入讲解。
拒绝服务攻击
黑客活动分子常用的经典攻击——分布式拒绝服务(DDoS)攻击非常有趣,因为它可能以两种方式影响你,既作为攻击者,也作为目标。如前所述,这类攻击的影响取决于业务的性质;然而,你的基础设施也可能被攻击者用来发起基于僵尸网络的攻击,攻击其他公司,无论你的公司属于什么类型的业务,这都会对你的公司产生严重影响。
僵尸网络
僵尸网络是由受感染的设备组成的网络,这些设备由攻击者远程控制(通常使用指挥与控制服务器),执行一系列任务,且设备所有者并未同意或知晓。这些受控或感染的机器通常被称为僵尸,如前所述,它们将执行背景任务,如 DDoS 攻击、发送垃圾邮件和挖掘加密货币(比特币)。
这些攻击的一种有趣变种是 SYN 洪水攻击。这种攻击非常有趣且巧妙,它基于 TCP 的三次握手。但等等,什么是 TCP 三次握手?
让我通过类比来解释一下:假设你(客户端)需要一辆出租车(服务器),于是你决定打电话叫出租车(SYN)。当出租车到达时,它告诉你它已经到达门口(SYN-ACK),并等待你确认才能通过(ACK)。现在,假设你从未确认,一直在打电话叫更多出租车。最终,你的车道将被出租车占满,阻止了其他任何车的到来。

图 1.4 – SYN 洪水攻击
我知道 SYN Flood 攻击 可能听起来非常技术化,但这并不意味着它不常见。此外,还有许多其他执行 DDoS 攻击 的方式,另一个很酷的例子就是 teardrop 攻击。
Teardrop 攻击
Teardrop 攻击利用了一种旧的漏洞,在这种漏洞中,系统试图重新组装碎片化的包,但由于这些包已损坏,系统崩溃(CPU 达到 100%)。如前所述,这是一个旧的漏洞,现代系统不应受到影响。然而,出现了一个名为 FragmentSmack 的新版本,它影响当前的操作系统,包括 Windows 10 和 Linux 发行版(参见 CVE-2018-5391)。好消息是,已经有了这两者的补丁。
重要提示
在 Windows 系统中,你可以通过以下方式禁用数据包重组:
Netsh int ipv4 set global reassemblylimit=0
Netsh int ipv6 set global reassemblylimit=0
还有其他类型的 DDoS 攻击,包括 死亡之 Ping 和 Smurf 攻击(使用 ICMP 包),但这些是你应该已经熟悉的旧攻击,因此我不会浪费你太多时间。
零日漏洞
这些类型的攻击是最危险的攻击之一,因为它们会给我们带来突然的打击。
在处理这些类型的攻击时,快速反应是 关键。事实上,你需要 时刻 留意新的漏洞,以便了解它们,评估它们是否会影响你的基础设施,并找到解决方法或缓解措施,直到发布正式的解决方案或补丁。
有许多网站和博客提供网络安全新闻;然而,正如你可能知道的那样,假新闻很流行,因此你需要确保使用可靠的来源,提供最佳的信息。就我个人而言,我建议你使用以下网站,随时掌握最新的漏洞和威胁:
-
RSS 源很酷
顺便提一下,我建议你使用 RSS 源订阅上述网站,以实时获取所有新闻。你可以通过小部件或应用程序在手机上获取它们,或者将它们添加到你的消息应用中。例如,我使用 Slack,集成非常酷(
slack.com/help/articles/218688467-Add-RSS-feeds-to-Slack)。
DNS 攻击
我记得曾经在 Windows 2000 机器上修改主机文件,只是为了通过重定向页面来娱乐自己。然而,事情已经发生了变化,现在有了许多更复杂的与 DNS 相关的攻击。

图 1.5 – 旧式 DNS 攻击
现在,让我们来看一下你需要了解的今天最流行的 DNS 攻击。
DNS 劫持
在此攻击中,计算机通常会受到恶意软件的影响,将计算机的 DNS 指向攻击者的 DNS 服务器,而不是可信的 DNS,这样攻击者就可以控制并重定向所有流量。
这里有一些可以采取的防御措施:
-
保护端点免受恶意软件攻击。
-
始终检查网站的 URL。
-
如果可能,手动输入 URL,而不是点击链接(尤其是来自电子邮件的链接)。
-
实施 DNSSEC。
-
检查和/或监控Host文件是否有修改。
-
你还可以使用这个网页检查你的 DNS 是否被篡改:
forms.fbi.gov/check-to-see-if-your-computer-is-using-rogue-DNS。
中间人攻击
这种攻击与之前提到的原理相同,都是拦截 DNS 请求并用虚假网站进行回应。攻击者通过拦截受害者与真实 DNS 之间的请求,将恶意网站的响应提供给用户。
这里有一些可以采取的防御措施:
-
避免连接到开放的热点。
-
避免连接到公共网络。
-
避免连接到免费的 Wi-Fi。
DNS 路由器攻击
在这种情况下,攻击者利用路由器中的漏洞进行重定向,将流量导向恶意网站。
这里有一些可以采取的防御措施:
-
更改你网络设备(路由器、接入点等)上的默认管理员和连接密码。
-
保持你的网络设备固件为最新。
-
尝试购买有良好声誉的网络设备(质量差的固件设备可能会存在漏洞)。
DNS 缓存中毒
这与 DNS 劫持非常相似,但在这种情况下,攻击者只是修改了 DNS 缓存,将未来的请求发送到恶意网站。
以下图示展示了一个缓存中毒攻击的典型示例:

图 1.6 – 缓存中毒攻击流程
但别担心,以下是你可以采取的防御措施:
-
将你的 DNS 解析器放置在防火墙内部。
-
移除不必要的 DNS 解析器以降低风险。
-
必须强化 DNS 服务器,以确保所有不必要的服务被移除(从而减少故障点和潜在漏洞)。
-
使用随机源端口、随机化查询 ID,并在域名中使用随机大小写(大写/小写)。
-
清空你的 DNS 缓存 macOS(Catalina):
sudo killall -HUP mDNSResponder -
清空你的 DNS 缓存 Windows:
ipconfig /Flushdns -
清除你的浏览器缓存。
此外,如果你有一个暴露给外部用户的系统,建议实施“重启与恢复”系统,这样一旦有人在本地更改了 DNS,这些值将在计算机重启或用户注销后被删除(并恢复为原始值)。
域名劫持与重定向
这种攻击针对的是网页资源(网页、网页应用等)。在这种情况下,攻击者会修改您在域名注册商的 DNS 设置,将所有指向您页面的流量重定向到另一个服务器。在这里,攻击者利用拼写错误的名称或与原始字母相似的字母来欺骗用户,让他们误以为访问的是真实网站。
以下是可以采取的防御措施:
-
将您的域名注册在一家可信赖的公司。
-
避免在多个供应商处注册域名。
-
为您的 DNS 管理员账户使用非常长且随机的密码(基于密码管理器)。
让我们考虑一个例子。
你认为这两个域名 I2C2x.com 和 l2C2x.com 是一样的吗?
它们看起来一样,但实际上并不相同,这是这些攻击类型(以及某些钓鱼攻击)中使用的策略之一,用来欺骗受害者认为他们访问的是原始网站,而实际上并非如此。
在这个例子中,第一个域名使用了大写字母 i,而第二个例子则使用了小写字母 L,这与眼睛相似,但显然不是相同的域名。
DNS 隧道
这是一种非常巧妙的攻击方式,攻击者利用 DNS 查询和响应来窃取数据,而不被检测到。这种外泄机制使得攻击者能够绕过大多数网络控制。然而,这种攻击非常复杂,因为它要求攻击者必须控制存储数据的机器(通常是通过使用指令与控制恶意软件),内部 DNS 服务器、外部 DNS 服务器以及一个域名。
正常的 DNS 查询:
C:\Users\Cesar> Nslookup mysite.com
Server: dns.google
Address: 8.8.8.8
Non-authoritative answer:
Name: mysite.com
Address: 168.82.172.128
DNS 隧道查询:
C:\Users\Cesar> Nslookup company_exfiltrated_data123.com
Server: dns.google
Address: 8.8.8.8
*** dns.google can't find company_exfiltrated_data123.com: Non-existent domain
以下是可以采取的防御措施:
-
设置监控器来跟踪 DNS 流量中的异常(这些攻击中的许多会指数级增加 DNS 查询的数量,从而外泄大量数据)。
-
分析 DNS 查询以识别异常。
DNS 隧道工具
有几种工具可以用于数据外泄,包括
dns2tcp和heyoka,还有一些其他工具用于嗅探 DNS 查询的内容,包括dnshunter和reassemble_dns。
请记住,这只是您可以作为基准使用的示例列表,但还有许多其他类型的攻击在这里不会提及,但会在稍后讨论,例如物联网攻击、基于网页的攻击等。然而,记住,一个专家应该不断研究,保持更新,时刻警惕新的威胁和漏洞。
管理网络安全的著名痛点:密码
密码对我们的工作可能是最大的痛点。有趣的是,在过去的 14 年中,许多专家一直在说密码会消失,但尽管所有新的身份验证技术,密码仍然存在,并且可能会长期存在。因此,作为安全专家,我们需要不断寻找创新的方式来防止基于密码的攻击,这就是为什么在本章中,我们将审查最常见的攻击类型以及如何保护您和您的基础设施免受这些攻击的影响。
密码泄露
现在,每个月或每周几乎都可以看到新的数据泄露(暴露了数百万用户的电子邮件、用户名和密码到互联网)。因此,虽然你无法控制其他公司对你个人数据的安全级别,但你可以采取一些额外措施来防止受到这些攻击的影响。
注意:
如果你还没有这样做,请检查你的账户是否已经被泄露。你可以在著名网站haveibeenpwned.com和dehashed.com/上进行这项检查。
在这些页面上你可以找到的一个很酷的功能是通过电子邮件、用户名甚至密码进行搜索。此外,这些网站还会告诉你一些非常有趣的信息,比如你的数据曾在哪些黑客攻击中被暴露过、用户名详细信息(如果网站使用自定义用户名而不是电子邮件)以及被泄露密码的哈希值。
防御措施
我曾经在是否应该添加这一步骤上犹豫不决(因为这对像你这样的专家可能是显而易见的);然而,如果我不添加,有些人可能会指责我,所以在这里是:如果你的密码在这些网站中被发现,那么请更改你的密码(所有密码):
-
在可用时使用或启用多因素或多步骤身份验证。
-
在可用时迁移到更强大的无密码解决方案(例如 Microsoft Authenticator)。
但是,Cesar,你不打算推荐密码保险库吗?实际上不会,因为密码保险库在这类攻击中无济于事,因为无论你的密码是CesarRocks还是Iam_having-a.greattimereadingthisbookin2021,它们都会以相同的方式泄露,作为一个看起来像这样的哈希:31b54027af2ed2299b2bd7fda556d782。
提示
想要解码哈希吗?你可以使用像md5hashing.net/hash这样的页面,它使用哈希匹配(字典表)来解码哈希。
多因素与多步骤身份验证
仍然有人将这两个术语互换使用,但作为安全专家,你必须知道它们的区别。
多因素认证意味着在身份验证过程中,您使用至少两种不同的因素。这包括原有的三种因素(我知道的、我拥有的、我生来的),以及研究人员正在引入的另外两种因素:我所在的地方(通过地理定位和地理围栏技术实现)和我最喜欢的,您所做的事(通过物联网设备实现)。
举个例子,您的银行可能会要求您向右移动您的手腕来进行认证。这一动作将通过您智能手表中的加速度计捕捉,并通过安全的 API 与银行共享这些数据。
使用被泄露密码的社会工程攻击
这是一个有趣的攻击,因为它不需要攻击者具备技术知识,这使得这种攻击成为非常普遍且危险的威胁。
在这里,攻击者从已发布的密码泄露中收集电子邮件/密码组合,并利用这些信息欺骗受害者相信自己早已被黑客攻击,而且黑客掌握了关于受害者的敏感信息。这类攻击有多个变种,其中一些是告诉受害者黑客已访问了他们的摄像头,并且掌握了受害者的私密视频/照片,或黑客已获得浏览历史,并威胁如果不支付某些费用,将发布受害者的“脏”浏览历史。

图 1.7 – 欺诈邮件示例
作为一名安全专家,当收到像这样的电子邮件时,您可能会觉得很有趣,但请记住,作为专业人士,您的使命是帮助他人避免成为这些攻击的受害者,从家人和朋友到同事,尤其是公司高层管理人员等高端目标。应对这些攻击的最佳方法是通过教育。事实上,用户教育是任何网络安全战略的关键支柱之一。这个话题如此重要,以至于我决定为您创建一个完整的章节!
小贴士
使用社交媒体作为工具,让别人知道这是个骗局。尽量每三个月在您的 LinkedIn、Facebook 和 Instagram 帐户上发布与这些攻击相关的内容。这个简单的举动可能会为您的朋友节省很多麻烦和金钱,同时帮助您提高社交声誉。
作为一名网络安全专家,您拥有巨大的能力,但也肩负着巨大的责任。
暴力破解攻击
密码攻击中最常见的一种是暴力破解攻击。目前最著名的应用程序是 John the reaper,您可以自定义攻击方式以减少暴露密码所需的时间。
在这些类型的攻击中,密码的复杂性(和大小)至关重要,让我通过一些数学证明这一点。
我们有两个变量:可能性空间(S)和密码长度(L)。在字母表中,我们有 26 个字符,这意味着我们的可能性空间是 26,但这只是考虑了其中的一种情况,因为如果我们使用小写字母和大写字母,可能性空间将增加到 26+26 = 52。
这意味着如果我们有一个 8 字符的密码(L),只包含小写字母(S),那么可能的组合数为SL,或者在这种情况下是268,大约有 2000 亿种组合。
你们中的一些人可能认为 2000 亿是一个巨大的猜测可能性,但现代计算机每秒可以猜测 1000 亿种组合,这意味着我们的 8 字符密码如果只有小写字母,可以在 2 秒内被破解。
但别担心,我们要做的只是通过以下方式增加可能性空间(S):
-
通过添加数字,密码空间(S)增加了 10。这相当于368,可以在 30 秒内被猜测出来。
-
通过添加特殊字符,密码空间(S)增加了 32。这相当于688,可以在 1.5 小时内被猜测出来。
-
通过添加大写字母,密码空间(S)也增加了 26。这相当于948,可以在 20 小时内被猜测出来。
所有这些数学证明了一个 8 字符的密码已不再安全。因此,为了被认为是安全的,密码至少应该包含 10 个字符,并包括上述所有内容。这些数学非常重要,特别是支持确定您组织密码策略的要求(并获得用户和高层的支持)。
提示
如果你想检查密码的强度,而不必做所有的数学计算,我推荐以下网站:www.grc.com/haystack.htm
字典攻击
这类似于暴力破解攻击,但不同之处在于它使用的是字典,其中包含最常见的密码。
你可以找到包含数百万个密码的字典。事实上,一些字典大到可以让记事本崩溃。因此,为了方便攻击者,大多数字典都按主题、地区、语言或来源(通常是密码泄露)进行排序。
如前所述,从攻击者的角度来看,这种攻击有所不同,但之前提供的相同技巧适用于这种类型的攻击。
如果您想看看字典的样子,可以在这里看到许多按多种因素排序的字典:www.md5this.com/tools/wordlists.html。
自我测试
看看这两个密码,想想哪个更安全,然后去上面的链接查看结果:
Lol********
C4b-6W@8#5
创建一个安全的密码
如果曾经有过永无休止的争论,那可能就是关于密码强度的争论。我的祖父曾说:避免谈论宗教、政治和足球,因为这些话题总是以争论结束,你会失去许多朋友。嗯,我认为“密码强度”的讨论也应该包括在这个列表中。
我记得曾经在一个来自世界各地的专家小组中讨论非常具有挑战性的议题,尽管我们有不同的看法,但我们能够就所有议题达成一致,只有一个例外:密码!
一些专家相信密码的长度(例如使用长短语),另一些则相信复杂度(他们希望密码是无法阅读的),还有一些则要求两者兼顾,但最具争议的话题是密码过期。主要有两个阵营——专制派和用户友好派。
专制者不关心用户体验,他们只想制定规则,然后让用户去弄清楚如何遵守(即使这意味着把密码写在键盘下的便签上)。
另一方面,用户友好的团队通过分析用户遵守某条规则而不采取不良做法的可行性,采用了一种更富有同理心的方法。
在这种情况下,你必须根据事实做出决策,而不是偏袒任何一方(数据永远不会说谎)。因此,为了制定一个防弹的密码过期策略,我建议你找到以下问题的答案:
-
我的听众技术背景如何?
-
他们在密码方面的教育程度如何?
-
你能根据用户角色应用分段吗?(特权用户每 90 天更换一次密码,而普通用户则每 180 天更换一次)。
-
我是否具备执行此策略的基础设施?
-
你能根据访问/使用的数据/系统进行分段吗?
-
他们是否有工具和培训来创建/存储/管理复杂密码?
此外,还有三条黄金规则可以帮助你提高组织内的密码安全性:
-
实施密码保险库:默认情况下,人们不信任将所有凭证存放在应用程序中。在这种情况下,你需要教育用户,向他们展示使用密码保险库的所有好处(从它比把密码写在键盘下的便签上更安全这一点开始)。
但不要走弯路,制定一个政策并强制大家执行。相反,应该以身作则,向大家展示你有多喜欢使用密码保险库,使用它有多简单,以及用一个点击就能登录所有应用的便利性。炫耀你为每个账户都设置了一个独特的 防弹 80 位密码,是的,每个账户的密码都不同。让他们知道,这不仅仅是为了公司使用,也是为了他们的个人生活,展示给他们你有多自信,确信你的男朋友永远猜不到你的密码,因为你永远不需要再贴纸条(永远不怕被偷看了),只需要一个点击,嗖!你就能连接到你的账户。你需要的只是一个密码保险库应用(有很多免费的甚至开源的选项)和一个主密码来解锁它(因为你只需要记住一个,确保这个是安全的)。记住,密码短语始终是一个不错的选择。
一旦人们看到这有多么简单,他们就会喜欢上它,并开始主动要求使用(所以,不是你去追着他们实施,而是他们来找你要)。如果你想降低成本,可以尝试使用 KeePass,它包含你所需要的一切,而且是免费且开源的。另一个选择是使用 LastPass;它们提供一个很好的免费版本,但也提供一些额外的选项,可能对你的组织有用,费用也非常低。
提示
要创建一个密码短语,可以尝试使用一个你永远不会忘记的句子,例如 我记得那天我在沃尔玛遇到我的女朋友,或者 我再也不会在快乐汉堡吃汉堡了。
-
一旦每个人都喜欢它,制定政策并建立执行机制:在实施任何执行机制之前,确保先制定、批准并发布政策。否则,你可能会因为 密码问题 收到很多抱怨和不必要的支持请求。
-
不要做统治者,要做领导者:与其制定一个没人理解、大家都讨厌的密码政策,不如创建一些与密码相关的培训或网络研讨会,讲解弱密码带来的危险和数据泄露的后果。如果时间允许,可以进行一些真实的演示,设置一台 Kali 机器,并用 John the reaper 演示如何在短时间内破解任何 8 位密码。记住:文档总比没有强,音频比文档好,视频比音频好,但最有效的还是实时演示。刚开始时,你可能会觉得这非常耗时,但根据经验,你投入在面对面培训和演示中的时间和精力,都是值得的。
一旦人们了解使用弱密码的后果以及你密码政策带来的优势,他们就不会将其视为负担,而是当作一个可以拯救他们工作的工具。
在企业级别管理密码
虽然前面的页面旨在帮助你提高密码管理技能,但在企业级管理密码时,仍然有一些额外的安全考虑需要遵循。现在,让我们来探索一下在管理这种环境时可能遇到的主要威胁。
哈希攻击
如前所述,密码不会以明文形式存储(嗯,至少不应该是),通常它们会以哈希值的形式存储。哈希通常被称为单向哈希函数,意味着它们是在数学上不可能创建一个反向函数来基于哈希值恢复明文的。
听起来很酷、聪明且安全,但其实并非如此!(我觉得黑客更聪明。)
破解这些密码,黑客使用一种叫做彩虹表的工具。这个概念非常简单。基本上,它是一个包含哈希/明文组合的数据库,可以用来确定给定哈希值对应的明文,因为一个单词或短语的哈希值始终是相同的。
彩虹表非常庞大(它们可能包含数十亿个组合),使得这种攻击非常危险。
提示
如果你想玩弄彩虹表,可以访问这个网站,在那里你可以下载一个大集合:crackstation.net/crackstation-wordlist-password-cracking-dictionary.htm。
不过,别担心!有一种方法可以防御彩虹表攻击;你只需要像做沙拉一样……加盐加胡椒!
防御解决方案 – 使用盐值和胡椒
尽管这个技术名字很有趣,但它实际上是一个非常强大的机制,用来防范彩虹表攻击,而且它比你想象的要简单。
盐值
这涉及在密码哈希之前,向密码中添加随机生成的文本。然后,这个盐值会保存在同一个密码数据库中,用于后续认证:
$Salt = random_bytes [$Salt]
$Hash = SHA [$password + $Salt]
为什么盐值应该是随机的? 如果盐值相同,攻击者就能识别出使用相同密码的用户,如下所示:
$Salt = random_bytes [$Salt]
$Bob_Psswd = [$password + $Salt] | Hash= 68586044d92547df605b
$Jake_Psswd = [$password + $Salt] | Hash= 68586044d92547df605b
但如果使用不同的(随机生成的)盐值,哈希值将完全不同,因此攻击者无法确定它们是否相同:
$BobSalt = random_bytes [$Salt]
$JakeSalt = random_bytes [$Salt]
$Bob_Psswd = [$password + $BobSalt] | Hash = 10db4775dc38f4
$Jake_Psswd = [$password + $JakeSalt] | Hash = dc74116ef9525h
所以,如前面的示例所示,即使 Bob 和 Jake 使用相同的密码,攻击者也无法确定,因为使用的盐值不同。
胡椒
如前所述,哈希值和盐值是存储在同一个数据库中的,因此,如果攻击者能够访问数据库,即使使用了盐值,哈希也可能会被泄露。
为了降低这种风险,我们可以再添加一串字符(就像盐一样),但这次这个值会保存在另一个地方,将这个新字符串变成黑客的秘密,因为即使主数据库被泄露,胡椒仍然是保密的:
$Pepper = I.am.the.Pepper
$BobSalt = random_bytes [$Salt]
$JakeSalt = random_bytes [$Salt]
$Bob_Psswd = [$password+$BobSalt+$Pepper] | Hash = h1k477g56
$Jake_Psswd = [$password+$JakeSalt+$Pepper] | Hash = o28l4115h
在前面的例子中,我们可以看到密码是如何基于三个变量(密码、盐值和加盐)组成的,这大大增加了破解密码的复杂性。
在实现方面,你可以选择将盐(salt)添加在密码前面或后面。重要的是它必须在创建哈希值之前添加。正如我的数学老师常说的:因数的顺序不改变结果。
此外,在遗留系统上实现动态盐值可能会很困难。在这种情况下,我强烈建议使用盐和加盐来提高系统的安全性。
盐的效率在于随机性,加盐的秘密在于保密性。
你可以在同一系统上使用相同的密码加盐(pepper),但我建议你为每个系统使用不同的加盐(如果一个系统被攻破,其他系统就不会受到威胁)。
额外内容
让我与您分享一些最新的研究成果,这些研究旨在解决密码问题(硬件和软件方面):
增强的密码认证
这是我和Kyndryl的副首席信息安全官隆达·奇尔德雷斯共同开发的一个非常有趣的系统,利用 USB 漏洞并将其转化为一种巧妙的密码问题解决方案。这里是完整专利申请披露的链接:patents.google.com/patent/US20200092282A1/en。
无线密码注入
这个想法来自我和我的朋友、安全专家约翰·费泽尔进行的一项研究,我们想通过实现真正即插即用的无线密码注入解决方案,将密码保险库带入一个新的层次。这个系统的优点在于它不需要安装任何特殊的驱动程序和固件,但仍能在任何操作系统上正常工作。你可以通过以下链接查看详情:patents.google.com/patent/US20190163893A1/en。
密码的键盘注入
这是对之前想法的改进版,我们增加了另一层安全性,并利用当前连接的键盘作为输入机制,像普通按键输入一样注入密码:patents.google.com/patent/US20200074069A1/en。
我们已经讨论了关于密码相关的主要风险以及如何从用户和基础设施的角度解决这些问题。现在是时候迈向下一个层次,看看我们如何根据相互连接的系统、方法和技术构建最佳的防御安全策略。
掌握深度防御
早期,人们依赖于周界防御,即构建一个虚拟的围栏,防止未经授权的人进入你的系统。

图 1.8 – 单层外围防御
然而,威胁环境已经发生了变化,我们也必须做出相应的调整!
虽然外围防御大多基于单一的保护层(通常是网络层),深度防御(DiD)则通过应用多个安全层将这一理念进一步扩展,每一层都提供一条新的防线来抵御攻击。
通常,这些层是独立的,每一层提供不同的安全机制,从而增强整体的安全性。这种独立性的好处在于,影响某一层的漏洞可能对其他层无关紧要。这相比于金字塔模型是一个巨大的优势,在金字塔模型中,如果底层受到影响,其余的层次也会随之崩溃。
然而,这种独立性也带来了操作复杂性的缺点。在这种情况下,管理所有不同的层(配置、测试、更新、维护)并非易事,但谁说我们的工作会轻松呢!
创建 DiD 模型时需要考虑的因素
大多数 DiD 模型是基于技术来创建层的;然而,如果你想成为 DiD 的高手,你还必须考虑以下两个非常重要的因素:人和过程。
提示
DiD 模型可以在宏观层面(整个组织)或微观层面(单一系统或技术)应用。这意味着一旦你掌握了这种方法,你可以用它来制定整体的安全策略,也可以用它来为你的 Web 应用程序创建安全策略。
现在,让我们详细分析这两个因素。
人员
人员通常被认为是网络安全中最大的威胁……他们确实是!我们说的不是罪犯,而是你的公司员工,他们负责许多安全漏洞,要么是由于不小心的错误,要么是被攻击者利用,借此获得对某些系统或数据的访问。
因此,在制定我们的防御策略时,我们必须考虑人为因素。忽视这一点,你的策略注定会失败。
你在这里的第一步是根据访问类型对公司员工进行细分。用户应该根据“需要知道/需要做”的原则来创建。这种员工细分应作为身份和管理过程的一部分进行,虽然刚开始时可能是一个耗时的过程,但最终我向你保证,这项投资是非常值得的。
管理员权限
一些公司开始采纳一种政策,即为所有员工提供对其工作计算机的管理员权限。其理由是与雇佣一个支持团队的巨大成本有关,这个团队负责每次员工需要安装软件、硬件、更新或插件时提供帮助。
但如果设备感染恶意软件后需要重新安装,成本会怎么样?如果安装了损坏的驱动程序,成本又如何?如果由于安装木马程序导致数据泄露,成本如何?安装未经授权或受限软件的法律成本又该如何计算?这些是你可以问高级管理层的问题,以防他们想要给予每个人管理员权限。记住,帮助你的组织理解安全始终高于可用性和用户体验是你的责任。
你是说这不应该做吗?不,我只是说,这需要从网络安全的角度进行仔细分析,以确保如果执行,所有适当的控制措施都已到位,以降低前面提到的风险。
流程
你必须深入了解你所负责保护的组织。你可以通过了解公司的所有流程(或至少是核心流程)来实现这一点。一旦你了解它们,就能更容易地识别出别人无法发现的漏洞和风险!
我理解作为技术人员,你可能讨厌流程以及它带来的(通常是过时的)文档,但相信我,如果你了解它们,你将为组织带来极大的价值,而这种价值是很少有人能够提供的。
另一个让你熟悉这些内容的原因是,因为你最终将需要创建你自己的流程。一个好的建议是将你的流程与组织的流程保持一致;这将帮助你减少风险,并弥补任何潜在的漏洞。
此外,我建议你从两个角度评估/分析这三大因素(技术、人员、和流程):内部和外部。
提示
我建议你先对你的技术、流程和员工类型进行盘点,然后评估与每个因素相关的风险(内部/外部),如下面的图示所示。

图 1.9 – 基于三大因素的风险评估矩阵
现在我们已经回顾了需要考虑的因素以及如何管理它们,是时候继续了解如何确定哪些资产将由我们的 DiD 模型进行保护,以及如何为它们优先排序。
资产识别
在理想的世界里,你会对整个组织施加强有力的防护,但正如你所知,这并不现实,因为安全越强,成本就越高。
因此,在继续之前,你必须分析你的系统和数据,并对它们进行分类,以便为每种类型的资产制定优先的防护策略。
提示
一旦你识别了不同的系统和数据,创建一个类似看板的板,其中列是安全等级(并有相应的成本),然后安排与相关的高层管理人员(如 CEO、CFO)开会,要求他们将不同的系统和数据放入所需的安全级别(列)。这不仅是支持预算请求的一个好工具,也有助于在委派每个系统/基础设施或数据集的安全级别责任时使用。
以下图示是一个类似看板的示例板,可以用来确定资产优先级(基于影响),同时支持向高层管理提出预算请求:

图 1.10 – 资产分类的示例看板
现在是时候创建你的 DiD 模型的安全层了。
分层防御
在这里,你将使用我们刚刚创建的资产优先级信息,根据你的资源开发最佳的分层模型。
关于是采用单一超级强控制还是多个良好的控制措施,目前存在一个公开辩论。
让我们看看一个示例场景的优缺点,以便你可以得出自己的结论。

图 1.11 – 单一强控制与多重控制方法
创建安全层有两种方式,一是通过控制的功能,二是通过技术,接下来会进行说明。
按控制类型或功能创建安全层
在这里,你根据控制的功能或类型来创建安全层。
这个方法的核心是将你试图保护的内容与适用的控制措施相关联。例如,在某些情况下,纠正性控制可能不相关,而在其他情况下,它应该成为优先事项。请记住,在安全领域,一切都需要根据业务量身定制。

图 1.12 – 通过控制功能实现的分层安全
图 1.12 显示了一个完整的分层模型,包含按功能分层的最常见控制措施。例如,使用电围栏来防止有人进入建筑物,摄像头系统来检测入侵者,保安人员来威慑潜在入侵者,生物识别认证或地理位置作为补偿更昂贵机制的替代方法,备份系统用于在灾难发生后执行恢复,以及一个“重启恢复”软件(如深度冻结软件)来修复给定系统上的任何问题或配置错误。
按技术创建安全层
在这里,你根据使用的技术创建控制层,尽管它们提供相同的功能。例如,你可以在一个关键系统上实现多种方法或技术来检测入侵者(IDS、审计、日志等)。

图 1.13 – 通过技术实现的分层安全
在前面的图示中,你可以看到如何根据技术创建分层的示例。例如,摄像头和传感器可能都是侦测控制,但它们使用不同的技术来实现这一点。当你想要增加对某个特定功能的关注时,这种模型非常有用,例如,实施多种技术来专注于侦测或预防。
小贴士
为了让事情更有趣,记住,层次还可以进一步定义为三类控制:管理控制、物理控制和技术控制。我知道你已经熟悉这些类别(所以不需要浪费笔墨解释它们),但我只是想提醒你,可以在同一层上添加来自这三类的组件。
哪种方法更好?
这取决于你的基础设施,因此,进行深入的环境分析是关键。
记住,这背后的逻辑是让攻击者更难突破,你可以通过这两种方法来实现。
分层安全模型的好处
实施分层安全方法有很多好处,图 1.14 突出显示了其中一些,供你考虑它们是否对你的防御性安全策略有益:

图 1.14 – 实施分层安全模型的好处
此外,高层管理人员也将从实施这种安全模型中受益,因为这使公司能够更好地分配网络安全资源。
小贴士
分层模型设计为独立工作,这意味着层与层之间没有通信。然而,最新的研究表明,连接各层之间的关系将改善系统,因为一个层级可能从另一个层级中学习,从而更好地防御即将到来的威胁。
请记住(就像安全领域中的其他一切一样),一个今天有效的分层模型可能在两年后就变得过时,因此你需要不断评估你的各个层级,以确定它们是否仍然提供所需的安全级别。
附加曲目
我知道你想看到最新和最先进的技术,所以这里有几个最近开发的系统,可以应用于分层安全模型。
移动设备功能禁用
这是我最近与我的朋友和大师级发明家Eric Rueger一起参与的一个非常有趣的项目(美国已获得专利)。这个项目的理念是根据时间、位置等多个因素,阻止在移动设备上执行多个系统。因此,这是一个最先进的系统,可以应用于模型的预防层或侦测层。以下是链接:patents.google.com/patent/US10594855B2/en。
基于用户的认知安全调整
如果你想看到一个关于如何将 AI 添加到预防层(并将你的分层模型提升到下一个级别)的实际例子,可以看看这项正在申请专利的技术,其中系统监控用户的情绪状态和注意力水平,以判断是否应自动锁定用户的计算机,以防止未经授权的访问或敏感信息的无意披露。在这项系统开发过程中,我有幸与人类历史上最具创造力的发明家之一Greg Boss合作:patents.google.com/patent/US20190180013A1。
比较蓝队和红队
蓝队是防御团队,负责制定旨在防止网络安全事件发生的政策、流程、方法和技术(这可能就是你)。
另一方面,红队是一个经过专业训练的团队,专门寻找漏洞。他们将利用自己的技能找到访问某个系统或数据的途径。
他们基本上会遵循攻击者的相同步骤,但与其将你的数据暴露或卖给最高出价者,他们会制作一份精美的报告,供你用来检测漏洞并制定修复策略。
一些大公司可能拥有自己的红队,但这非常昂贵,而且资源可能会被低效利用,因此大多数公司通常会定期雇佣红队来测试其基础设施并收集宝贵数据以进行改进。
就像网络安全中的许多其他话题一样,关于红队和渗透测试存在公开辩论,因此为了便于读者理解,渗透测试将被定义为红队执行的任务之一。
作为一名防御性安全专家,你必须了解与渗透测试相关的许多因素,例如测试类型、渗透测试服务及其好处。
渗透测试的类型
渗透测试是根据你在测试之前授予他们的知识和访问权限的级别进行分类的。类别如下:
黑盒测试
在这种类型的测试中,红队不会被提供任何关于目标的信息。这通常在测试整个基础设施以寻找全球性漏洞时使用。在这种情况下,红队必须从执行初步发现阶段开始,并跨越多个层次寻找任何易受攻击的点。
这种类型的测试更为通用,通常不涉及团队之间的合作。事实上,这通常作为某种审计执行,只有高级管理层知道测试的执行。这通常是为了进行真实的测试,而不让安全团队保持警觉。
这通常是三者中最复杂、资源消耗最重、最广泛的测试。
灰盒测试
在这里,您向红队提供有关目标的一些细节,同时隐藏其他信息。例如,您可能要求测试某个应用程序,并提供该应用程序的架构,但更详细的信息,如源代码和用户,将被隐藏。
白盒测试
在这种类型的测试中,您会向红队提供大量关于被测试系统/基础设施的数据,包括蓝图、用户、代码以及任何与被测试系统/基础设施相关的文档。
虽然这看起来是为红队简化工作,但这种类型更多的是关于蓝队和红队之间的协作环境,以进行更有针对性的测试。
渗透测试服务
您几乎可以测试任何东西;然而,以下是提供的最常见的渗透测试类型列表:
-
网络服务
-
数据库
-
Web 应用
-
Web 服务
-
API
-
无线网络
-
自带设备(BYOD)
-
VPN
-
社会工程
-
物理入侵
-
代码/应用
渗透测试的好处
许多组织仍然不愿意对其环境进行某种形式的渗透测试,所以让我与您分享一些好处,激励公司使用这个伟大的资产:
-
关于您的基础设施的外部反馈,包括弱点、漏洞和改进领域
-
在黑客利用之前关闭安全漏洞的机会
-
客观评估
-
支持您持续改进的举措
-
您辛勤工作的外部验证!!!
提示
雇佣专门的红队可能会很昂贵;然而,如果您的团队中有人具备进攻性技能,您可以利用这些经验进行小规模测试(如小型紫队)。
拥有紫队并不取代红队的需求,因为来自外部“公正”测试者的输入可以提供额外的见解和价值。
在雇佣红队时要小心,因为他们将处理公司非常敏感的信息。这里的规则是,您应该始终与一个您可以信任的合作伙伴合作。
让您的法律团队参与进来,并确保与红队签署保密和数据隐私合同。
总结
在本章中,我们回顾了一些非常有趣的攻击类型,包括撕裂攻击、SYN 洪泛攻击和多种 DNS 攻击类型,以及如何防御这些攻击。
我们还学习了如何更好地处理基于密码的攻击,不仅从用户的角度,还从企业的角度来看。此外,我们还学习了如何创建 DiD 模型,以及如何利用多层防护来保护您的数据。
最后,我们通过了解如何在组织中利用拥有(或雇佣)蓝队或红队的优势来结束本章。
现在,让我们进入下一章,在这一章中,我们将了解如何通过利用 NIST 网络安全框架来管理企业级风险。同时,我们还将看到如何创建世界一流的 BCP 和 DRP,以增强组织的可用性和生存能力。
进一步阅读
本书的设计重点是防御性安全;然而,如果你想了解更多关于进攻性安全的内容,可以查看这本关于进攻性安全团队(红队)所采用策略的书:www.packtpub.com/product/cybersecurity-attacks-red-team-strategies/9781838828868。
第二章:第二章: 管理威胁、漏洞和风险
“你永远无法消除所有风险——专注于识别最高风险并加以缓解或消除。”
– 迪安妮·约翰森 - 安全 IT 总监 | IBM
作为网络安全专业人士,你将不得不处理众多漏洞、威胁和风险。这三个术语通常是同义使用的;然而,它们非常不同,了解如何应对和管理它们非常重要。
现在,你需要理解没有系统是完全无风险的,你的基础设施和系统可能(且将会)随时发生故障。因此,你必须做好准备,确保在发生灾难时,能够确保你的业务继续(或恢复)运营。
在本章第二部分中,我们将讨论以下主要内容:
-
漏洞评估是什么以及如何创建一个漏洞评估
-
最常见的漏洞类型
-
USB HID 漏洞和设备概述
-
保持基础设施免受漏洞威胁的最佳机制
-
像专家一样管理网络安全风险
-
NIST 网络安全框架概述
-
创建一项有效的业务连续性计划(BCP)
-
实施一项最佳的灾难恢复计划(DRP)
技术要求
你可以通过使用带有互联网连接的设备来增强阅读效果,查阅提供的一些网络资源。然而,本章包含了完成学习所需的所有内容。
理解网络安全漏洞和威胁
所有系统、过程、基础设施和环境都有漏洞。这些漏洞通常是由于设计缺陷、bug、不良实现、缺乏更新以及其他攻击者(或威胁代理)利用的原因,从而导致他们能够访问你的系统和/或制造干扰。
问题不在于系统是否有漏洞,而是到底是谁先发现它们?
执行漏洞评估
作为一名网络安全专家,你必须不断寻找新的漏洞,以确保你的基础设施安全。
执行此搜索的过程叫做漏洞评估。
主要有两种方法可以实现这一目标。第一种是使用进攻性技术(如渗透测试),第二种则更像是基于识别基础设施中已知漏洞的防御性技术,具体方法是搜索与系统和产品相关的所有漏洞。
查找这些漏洞的最佳网站之一是常见漏洞与曝光(CVE)网站,网址为cve.mitre.org/。
本网站包含超过 130,000 个漏洞,这些漏洞几乎存在于所有主要系统中(包括软件和硬件)。
现在,问问自己,你是否检查过你的打印机是否存在漏洞? 好吧,这个页面上列出了超过 200 个与打印机相关的漏洞;其中一些与拒绝服务、远程代码执行、缓冲区溢出等有关。所以,如果你还没检查过你管理的打印机是否存在漏洞,现在就去做吧!
你或你的公司是否在 Joomla 上创建了网页? 如果是的话,你可能会惊讶地发现,那里列出了超过 1200 个与 Joomla 相关的漏洞,而这只是 Joomla 的漏洞,因为其他 CMS 软件还存在更多漏洞:

图 2.1 – Joomla 漏洞
如你所见,在图 2.1中,漏洞是按发现日期排序的。然而,在描述中,这些漏洞可能与旧版本(如版本 3.9)或新版本(如版本 5.2.8)相关。
提示
许多漏洞通过补丁或更新得到修复(这也是保持系统更新的重要原因)。然而,还有许多漏洞可能没有补丁,需要你对配置进行一些更改来消除漏洞。
现在,让我们回顾一下你需要遵循的过程,以像专业人士一样妥善管理你基础设施上的漏洞!
漏洞评估过程
每个公司都有自己独特的漏洞评估方法;然而,大多数公司遵循以下几个阶段。
漏洞识别
这一步是关于如何识别系统和网络中的漏洞。在这里,你可以使用一些知名工具,比如漏洞扫描器,甚至可以进行渗透测试,来进行有效的识别。
漏洞分析
一旦你发现了一个漏洞,就该分析它并尽可能收集关于它的信息。例如,你需要考虑以下问题:如果这个漏洞被利用对我的公司造成影响,成本会有多高?;会有多少人受到影响?;这个漏洞的来源是什么?。
执行根本原因分析(RCA)来查找漏洞的根本原因及其修复成本是非常常见的做法。
风险评估
这涉及执行风险评估,以根据概率和影响(定性和定量)来评估风险。但它也用于确定其他因素,如成本分析、缓解分析等。
漏洞修复
一旦你完成了所有分析,你必须继续实施最佳修复措施(或者,至少是高层管理选择的修复措施),以降低与漏洞相关的风险:

图 2.2 – 漏洞评估过程
请注意,这个过程是迭代的,因为任何给定的修复可能会在您的基础设施中引入一个新的漏洞。
您什么时候应该检查漏洞?
您必须时刻保持警惕,寻找新的漏洞;然而,有些事件需要您进行评估,以发现新的漏洞。以下是一些示例:
-
在购买任何设备、系统或软件之前:确保制造商不断发布针对已知漏洞的补丁。
-
每次获得新系统时:有时会在没有您同意的情况下获得新系统。在这种情况下,您需要确保在实施之前修复任何漏洞。
-
当收购新业务时:这是为了确保他们的安全政策与您的安全政策匹配。
-
当开设新的办公室/分支机构时:这是为了检查与可用性(或服务冗余)以及物理安全相关的漏洞。
-
当迁移到另一个物理位置时:这与前面的例子类似。您需要确保新地点不会增加任何与可用性和物理安全相关的新漏洞。
-
新承包商的合同:这是为了确保他们不会带来可能会为您的环境带来漏洞的设备;例如,受雇于贵公司执行工作的第三方不应使用不受支持的操作系统(如 Windows XP)。
现在,让我们深入回顾作为网络安全专业人员可能面临的最常见类型的漏洞。
漏洞类型
漏洞有很多种类型。然而,在这里,我将尝试总结出最重要的几种。
软件漏洞
错误、设计缺陷、后门和零日漏洞是您将面临的最常见软件漏洞。幸运的是,有一些工具专门用于搜索这些漏洞,我们将在 第十三章中更深入地回顾它们,漏洞评估工具。
用户漏洞
用户是任何组织中最脆弱的因素之一,原因有很多;例如,您可能会遇到使用弱密码的用户,使用相同密码的用户(在所有系统中,包括个人和工作系统),以及离开未加锁的系统的用户。等等。
然而,这非常复杂,因此我们将在 第四章中更详细地讨论这个漏洞,包括如何防范它,修补第 8 层。
物理漏洞
就好像你已经有很多事情要处理一样,你还需要检查与你的系统所在建筑物或校园相关的漏洞。例如,你需要确保建筑物不会受到某些天气条件的影响,这可能会干扰你的系统(如洪水或水漏)。此外,你还需要评估与物理访问系统相关的漏洞;我们将在 第九章 中更详细地讲解,深入探讨物理安全。
网络漏洞
你必须检查你的面向网络的设备和系统,看看别人能看到什么,并找出任何漏洞,这样你可以在别人利用它之前修补它。找出这些网络漏洞的方法有很多,我们将在本书中探索其中的许多。你可以利用的一个非常简单的方法是Google Hacking Database(GHDB)。这是一个 Google 搜索关键词(称为dorks)的汇编,使你能够利用 Google 搜索引擎发现网站和互联网连接设备上暴露的文档和信息,这些信息被 Google 索引。
有成千上万种 dork 可供你使用,用来查找你的网络资源中的漏洞,这些漏洞可能暴露敏感信息,如用户名、密码、目录、配置文件、表格、数据库、文档等。
你想了解更多关于 GHDB 的信息吗?
在这个页面上,你可以找到超过 5000 个现成的 dork 供你使用。我敢肯定,你会对这里找到的内容感到震惊:www.exploit-db.com/google-hacking-database。
有一个超级酷的应用程序,叫做Damn Vulnerable Web Application(DWWA),你可以用它来查看和探索受控环境中的网络漏洞。如果你想了解更多这个很棒的应用程序,可以跳到 第十二章,掌握 Web 应用安全。
物联网漏洞
物联网是一项蓬勃发展的技术,几乎所有公司在其基础设施中都有某种物联网实现。因此,分析所有物联网实现以检查漏洞非常重要。
有时,这些设备未经安全团队授权就被安装,主要风险是它们仍然使用默认凭证。所以,确保所有的物联网实现(即使只是一些小工具)都已正确配置。
有几个网站爬取互联网以寻找易受攻击的网页。你可以找到各种网站,范围从扫描互联网中带有默认密码的网络摄像头的页面(如 www.insecam.org)到扫描多个端口以查找暴露系统漏洞的更强大的页面。
最好的网站之一是www.shodan.io。这个搜索引擎允许你查找网站、物联网设备、网络摄像头、数据库、工业控制系统(ICSes)、路由器、网络设备等上的漏洞。通过快速搜索,你会惊讶于大量使用默认凭据的设备在网上存在:

图 2.3 – Shodan 的搜索类别
正如你在图 2.2中看到的,你甚至可以通过Shodan.io按类别进行搜索,找到易受攻击的设备、摄像头、数据库,甚至 ICS 系统(我们将在接下来的章节中更详细地审视它们)。
提示
你可以使用Shodan.io来查找你的网站、系统和暴露在互联网上的设备的漏洞。该搜索引擎允许你通过 URL、IP 地址、子网、设备类型、国家等进行搜索。
我将在第十章中通过许多例子扩展这个话题(包括如何利用物联网设备提高安全性),应用物联网安全。
SCADA/ICS 上的漏洞
如果你的公司从事任何类型的制造业;拥有智能建筑;使用智能系统来管理能源、废物和水资源;或者从事智能城市业务,那么他们很可能有一些 SCADA 系统。
这些系统至关重要,你需要确保它们得到保护,因为攻击这些系统的影响通常会对公司造成毁灭性后果。一个关于此类攻击影响的典型例子是Stuxnet。这个国家支持的攻击通过针对 SCADA 系统,成功破坏了一个核电站。
这些系统非常复杂,且根据供应商的不同,它们之间的差异可能很大,使得保护它们的任务变得相当复杂。然而,你可以采取一些步骤或最佳实践来保护这些系统:
-
如果可能,安排供应商进行的维护服务,并确保这些服务包括漏洞评估。
-
保持设备更新,安装最新的更新。
-
了解系统使用的协议,并寻找相关的漏洞。
-
删除或禁用系统上未使用的用户。
-
禁用你们组织未使用的功能,以减少风险和可能的漏洞数量。
-
如果未得到供应商批准,避免使用第三方插件。
-
如果不使用,禁用远程访问连接或移动应用程序。
-
禁用未使用的 API。
-
应用网络分段,将这些设备与其他面向网络的系统隔离开来。
-
限制对设备管理控制台的物理访问。
-
确保所有默认用户和密码都已更改为强密码。
如果你的组织没有处理这些系统的经验,最佳做法是雇佣第三方公司,为你的团队提供如何保护这些系统的培训,或者与他们签订合同以确保这些系统的安全。
供应商漏洞
记住,你的系统的可用性依赖于你的供应商,因此你需要分析它们,以揭示与这些供应商相关的任何潜在漏洞(例如,互联网服务提供商、云服务提供商、硬件提供商等)。
客户端漏洞
在某些情况下,你可能需要将你的系统连接到合作伙伴或客户的网络或基础设施;在这些情况下,你需要对这些外部系统进行详细的漏洞评估,以确保它们不会给你的基础设施带来额外的漏洞。
依赖关系
进行漏洞评估时需要考虑的一个非常重要的方面是识别我们的系统或基础设施的依赖关系,并分析这些依赖关系以揭示潜在的漏洞。一个明显的例子是,某个系统可能通过 API 连接消耗人工智能(例如聊天机器人),如果该连接中断,系统将无法正常工作或容易受到欺骗。
过程漏洞
假设你的公司没有一个明确的流程来处理员工离职的情况。在这种情况下,一位系统管理员可能只是禁用该用户(这会产生剩余风险),而另一位可能会删除该用户(这可能会成为问题,因为你没有留下该用户的可追溯性)。因此,这两种情况都可能引发问题。这就是为什么缺失、不完整或设计不当的身份与访问管理流程本身就是一个巨大的漏洞。
提示
开始漏洞评估可能是过程中的最困难部分,因为你可能不知道从哪里开始。在这里,我的建议是首先将漏洞类型列出作为类别,然后开始在这些领域寻找漏洞。这样做既能为你提供一个起点,又能帮助你避免遗漏整个类别的评估。
现在,是时候了解攻击者利用具有物理访问权限的系统进行攻击的最大漏洞之一了:USB HID 漏洞。
USB HID 漏洞
理想情况下,这个漏洞应该是漏洞类型部分的一个子主题。然而,我决定专门创建一个部分来讨论这些漏洞,因为它们是攻击者非常常用的、危险的漏洞,几乎存在于所有公司和基础设施中。因此,理解这些漏洞并准备好采取多种方法、系统、策略和技术来有效保护公司免受它们的侵害是至关重要的。
真实且危险的威胁
这个漏洞之所以如此相关,是因为它几乎存在于所有系统中,无论操作系统如何。实际上,你的所有系统(包括计算机、平板、笔记本,甚至服务器)都有这个漏洞的可能性:
“基于 USB HID 的漏洞被认为是有史以来最严重的 IT 威胁之一。”
– Rhonda Childress
其原因是,它利用了几乎所有系统中存在的两个因素:USB 连接和 HID 驱动程序。
另一个使这个威胁更具危险性(和相关性)的因素是所需硬件的价格。实际上,为了利用这个漏洞,你只需要一块配有 ATMEGA 32U4 芯片组的开发板,正如图 2.4所示,这种芯片组可以在几块便宜的开发板上找到(价格低于 5 美元):

图 2.4 – ATMEGA 32U4 开发板
现在,让我们深入了解这个攻击的技术细节及一些示例。
什么是 HID 驱动程序?
几乎所有系统都会允许人类输入(即与系统的交互),而这通常是通过鼠标或键盘等设备完成的。因此,为了简化我们的生活,所有操作系统中都创建并加载了一组通用驱动程序,以使几乎所有的键盘和鼠标都成为真正的即插即用设备。这对用户来说非常方便,直到它们被攻击者利用来进行击键攻击。
USB HID 攻击的开始
在担任系统管理员时,我的朋友和 Hak5 的创始人 Darren Kitchen 厌倦了反复输入相同的命令来修复设备。于是,他编程开发了一块开发板来模拟打字;从此,击键注入攻击诞生了。
这个攻击是如何工作的?
这个攻击非常简单;当恶意 USB 设备连接时,它会将自己呈现为一个 HID 设备(无论是键盘还是鼠标),由于 HID 设备默认被信任,这个恶意设备将能够完全访问目标系统并注入任何代码或命令。然而,由于这是一个低级别的攻击,注入击键所需的代码相对复杂,直到USB Rubber Ducky和Rubber Ducky 脚本的出现。
USB HID 攻击的类型
虽然USB Rubber Ducky是第一个利用这个漏洞的商业设备,但如今许多其他设备也能利用这个漏洞。在这里,我们将探索其中一些最著名的设备。
USB Rubber Ducky
“看起来像一个闪存驱动器——像键盘一样输入。”
几年前,Hak5 的 Darren Kitchen 介绍了USB Rubber Ducky,这是一款能够利用 USB 漏洞并允许你向目标计算机注入几乎任何有效载荷的 USB 设备:

图 2.5 – USB Rubber Ducky 规格
虽然这个工具是为系统管理员和渗透测试人员创建的,但该设备被攻击者使用的风险非常高:
“正如我们从经验中知道的,信任是难以建立却容易打破的。USB Rubber Ducky —— 以其闪存驱动器外观 —— 通过欺骗操作员让其认为它是无害的,从而破坏了信任。同样,通过模拟键盘,它欺骗了计算机,让它认为它是一个人类。简单的谎言在计算机系统设计上如此有效,因为计算机系统本质上是信任人类的——说实话,我不想生活在一个计算机不信任人类的世界里。”
– 达伦·基钦
USB Rubber Ducky 脚本
对渗透测试和系统管理员社区做出最大贡献之一的,就是 Ducky 脚本的引入,这是一种简单(且优雅)的语言,允许你使用任何文本编辑器为多种 恶意 USB HID 设备 编写有效载荷:

图 2.6 – Ducky 脚本示例
如你所见,在前面的截图中,创建 Ducky 脚本非常简单且直观。在这个示例中,你使用 REM 添加注释,然后添加一个 延时,延时为 3,000 毫秒,这是这类脚本中的良好实践,因为它在执行操作前等待 3 秒。这为 Windows 加载所有驱动程序并确保设备在执行攻击时准备就绪提供了足够的时间。
然后,它打开命令提示符(Windows + R)并添加一个小的延时(确保系统有足够的时间打开 运行 窗口)。接着,它注入一些 按键 来以特定参数打开程序。在这个示例中,我们以自定义的 Kiosk 模式(全屏)打开 Internet Explorer,然后打开一个模拟系统更新的页面,如下图所示(来自 Steam 的更新):

图 2.7 – 一个假更新屏幕
这是一个无害的示例,只会让用户产生一些恐慌,但没有造成实际的损害。然而,攻击者可以利用这种设备执行许多非常危险的攻击,比如将你的数据外泄到远程服务器、执行反向 shell、窃取用户凭证等等。
提示
你想了解更多关于 Ducky 脚本的信息吗?这里是官方 Git Wiki 的链接,你可以在这里学习如何创建自己的脚本,并查看许多示例,包括 DNS 投毒攻击、OSX 攻击等:github.com/hak5darren/USB-Rubber-Ducky/wiki。
虽然 USB Rubber Ducky 是第一个利用此漏洞的先锋设备,但也有许多其他设备同样利用 USB HID 漏洞。
Bash Bunny
Hak5 的 Bash Bunny 是世界上最先进的 USB 攻击平台之一。这个小巧而强大的 USB 设备使攻击者能够使用一个设备执行多种攻击。因此,虽然 USB 橡胶鸭只能注入按键,但 Bash Bunny 具有额外的功能,如 USB 以太网控制、大容量存储和串行控制台(本质上,该设备就是一个小型 Unix 主机)。更危险的是,Bash Bunny 允许攻击者将所有这些功能组合使用,使其成为对你基础设施的严重威胁。如果你想了解更多信息,请访问www.bashbunny.com。
WHID 注射器
之前的示例存在一个局限性,因为攻击需要预先加载到设备中,但如果你想远程注入有效载荷呢?嗯,这正是你可以通过WHID来实现的功能(github.com/whid-injector/WHID)。
WHID 基于廉价(但强大)的硬件,配合ESPloitV2软件,执行远程命令注入。为了让攻击者的操作更为简便,你可以使用一个应用程序来远程控制注入。这个应用程序可以在nethunter上找到,网址是store.nethunter.com/en/packages/whid.usb.injector/。
P4wnpi
这是一个非常酷的项目,使用树莓派 Zero(它是一个非常棒的物联网单板计算机)执行多种 USB HID 攻击:

图 2.8 – 带 USB A 端口的树莓派 Zero
使这个攻击非常危险的一个特点是,树莓派 Zero W内置了 Wi-Fi 功能,使攻击者能够远程执行操作,甚至将数据实时外泄到外部服务器。
重要提示
你想用支持物联网的树莓派来创建自己的网络安全设备吗?如果是的话,那么我会在第十章中向你展示如何做到这一点,应用物联网安全。
如果你想提升自己的网络安全技能并成为一名网络安全研究员,那么我强烈建议你使用物联网设备,如树莓派或ESP8266,进行自己的测试。
USB 鱼叉
你可能会认为连接一个 USB 驱动器可能非常可疑(这是真的),但这个问题可以通过一些社会工程技巧来解决。
然而,为了克服这个局限性,研究人员将一个BadUSB设备嵌入到充电电缆中,以伪装攻击并创造了这个新威胁——USB 鱼叉。
现在,每当你在公司看到一根 USB 电缆时,你可以开始变得多疑,因为即使是用来为 USB 风扇供电的电缆也可能是 USB 鱼叉。
易受攻击的 USB 加密狗
研究人员发现了许多 USB 加密狗中的漏洞,这些漏洞允许攻击者注入按键操作。这是一种更危险的情况,因为攻击者将利用一个合法的 USB HID 设备来执行攻击。请参考 CVE-2019-13052、CVE-2019-13053、CVE-2019-13054 和 CVE-2019-13055。
USB Samurai
简单来说,你可以将 WHID 的强大功能、USB Harpoon 的隐蔽性与 USB 加密狗的漏洞相结合,就能得到一个 USB Samurai!这是一种看起来像标准 USB 电缆的危险设备,但它允许攻击者向受害者的计算机注入远程按键(所有这些都在 $5 以下):

图 2.9 – USB Samurai 组件
图 2.9 显示了 USB Samurai 的基本组件:一根普通的 USB 类型 A 电缆和一个易受攻击的 USB 通用键盘加密狗。
基于智能手机的 USB HID 攻击
为了使 USB HID 漏洞更具危险性,攻击者现在可以利用智能手机的USB OTG 功能来执行 USB HID 攻击。
为了实现这一点,攻击者将使用Nethunter,这是一个针对 Android 设备(手机和平板)的 Kali Linux 发行版。要了解更多关于此攻击的信息,请访问官方仓库:github.com/offensive-security/kali-nethunter/wiki/NetHunter-HID-Attacks。
重要提示
如果攻击者熟悉 Rubber Ducky 攻击,可以使用 Nethunter 上的一款工具,名为 DuckHunter HID,它将允许攻击者快速轻松地将 USB Rubber Ducky 脚本转换为 NetHunter HID 攻击格式:www.kali.org/docs/nethunter/nethunter-duckhunter/。
甚至还有一个工具,攻击者可以在智能手机上执行,利用这一 HID 漏洞,这被称为BadUSB 中间人攻击。在这种攻击中,攻击者只需通过 USB OTG 电缆连接目标机器,就可以发起中间人攻击。
要了解更多信息,请参考:www.kali.org/docs/nethunter/nethunter-badusb/。
提示
在Nethunter上还有许多其他可用的攻击方式。你可以访问他们的官方网站以了解更多信息:www.kali.org/kali-linux-nethunter/。
如你所见,在我们展示的例子中,攻击者可以利用这一漏洞的可能性和选项太多了。因此,意识到这个漏洞是你有效防御它们的第一步。
虚假的安全感
我对公司未能意识到 USB HID 漏洞的危险感到震惊。事实上,大多数公司将面向外部客户的员工的 USB 端口完全暴露!更疯狂的是,我亲眼目睹了许多银行将客户服务代理的计算机放在桌面上,完全暴露了 USB 端口:

图 2.10 – 小型机箱 PC,面向客户的一侧暴露一个 USB 端口
因此,我决定与银行的 CTO 进行沟通,了解将客户接待员工的计算机 USB 端口暴露在桌面上(即电脑上)背后的原因(如果有的话)。他的回答令人震惊:"将电脑放在桌面上有利于维护,因为电脑会积累更少的灰尘。" 起初,我以为他在开玩笑,但在几秒钟的不适沉默后,我悲哀地意识到他并没有开玩笑。
我的下一个问题是询问他是否意识到这种行为所代表的风险,他的回答是:"不用担心 USB,它们被禁用了,所以如果有人插入 USB 驱动器也没有风险。" 然后,我意识到他的漏洞评估是基于 USB 大容量存储攻击,而不是针对 USB 按键攻击的。
知道那些电脑很可能存在 USB HID 攻击的漏洞后,我请求连接我的 USB 驱动器的许可,他笑着同意了(就像他知道我在浪费时间一样)。那时,我总是带着一个 USB Rubber Ducky,它上面有一个简单的脚本,可以执行两项简单任务:
-
将背景更改为看起来像是被病毒感染的图片。
-
杀死
explorer.exe,让桌面上的所有文件看起来都消失了。
这一切发生得非常迅速。起初,他似乎很震惊,然后看着我,在我有机会向他解释发生了什么之前,我就被踢出了银行!
问题在于,他对 USB 漏洞的理解不足,给了他一种虚假的安全感,这让他(以及银行)变得更容易受到 USB HID 攻击。
后来我发现,他实际上只是使用了 Windows 策略(如下面的截图所示)来阻止大容量存储 USB 驱动器。当然,这并不能保护他免受任何 USB HID 攻击:

图 2.11 – 禁用 Windows 系统上的大容量存储设备类别
为了理解为何会发生这种情况,我们需要了解 USB 协议是如何工作的。
理解 USB 协议
每次你连接一个 USB 设备时,首先,它会识别设备的速度。然后,它会获取设备描述符,这些描述符基本上有助于设备的识别。
其中一个描述符是 USB 类,它告诉计算机你正在连接什么类型的设备;例如,考虑以下情况:
-
类 01h 音频设备(如扬声器)
-
类 03h HID 设备(如鼠标、键盘或 Rubber Ducky 设备)
-
类 08h 大容量存储设备(如 USB 驱动器或外部硬盘)
这就是魔法发生的地方,因为根据银行的例子,他们当时防御的是类 08h 的设备,但所有类 03h 设备都能直接连接,而没有任何警告信息。
提示
如果你想了解更多关于 USB 协议的信息,建议你查看www.usb.org/sites/default/files/hid1_11.pdf。此文档详细解释了你需要了解的有关该协议如何工作以及它如何与主机计算机交互的所有内容。
因此,我们需要找到一种方法来保护我们的系统免受类 03h(即 USB HID 设备)的攻击。
防御 USB HID 攻击
到目前为止,你应该已经意识到(并且更有可能担心)USB HID 漏洞的危险。因此,现在是我给你一些工具、技术和方法的时刻,你可以实施它们来有效地防御你的基础设施免受这些攻击。
利用 Windows 安全日志
每次连接外部设备时,Windows 会生成一个安全事件日志条目,事件 ID 为6416(docs.microsoft.com/en-us/windows/security/threat-protection/auditing/event-6416)。
使用此方法,你可以查找攻击设备(如 Rubber Ducky)的痕迹,以检测任何攻击。
为了实现这一点,我们需要考虑到,大多数用于这些攻击的设备都基于两种微控制器:著名的atmega32u4(它出现在 Arduino Nano、Arduino Micro 和 Teensy 中)和小型的ATtiny8(它出现在 Digispark 和 Beetle USB 中)。
好消息是,这两款设备都是由同一家公司ATMEL生产的,这个信息非常关键,因为它可以帮助我们检测连接的设备是否是真正的键盘或是一个微小的恶意设备:
idVendor 0x03EB Atmel Corp.
idProduct 0x2FF4
iManufacturer 1 ATMEL AVR
iProduct 2 HID Keyboard
另一种选择是通过设备 ID进行搜索:
USB\ \VID_1B4F&PID_9208
为了自动化此过程,你还可以利用日志监控系统来搜索前述值并触发一些警报。
提示
请注意,所有这些值(设备 ID、供应商 ID 等)都可能被伪造。因此,虽然这是一种不错的防御措施,但需要配合其他方法,以保护你免受即便是最先进的攻击。
如前所述,尽管目前用于这些攻击的大多数设备是基于ATMEL的,但你也可能需要检查其他用于这些攻击的设备,比如使用 Broadcom CPU 的树莓派。
Windows Defender
你还可以使用 Windows Defender 来检测多种 USB HID 攻击。
由于这些攻击是基于脚本的,你可以利用它们的可预测性,通过事件序列来检测它们。
该代码非常简单;首先,它会监控新的 USB HID 设备连接。如果检测到连接,它将检查在接下来的x秒内是否有打开命令提示符或 PowerShell 窗口。如果是,可能是某人插入了一个恶意 USB(或者系统管理员急于打开命令提示符测试新键盘):
//Identify USB HID Devices
let MalPnPDevices =
MiscEvents
| where ActionType == "PnpDeviceConnected"
| extend parsed=parse_json(AdditionalFields)
| sort by EventTime desc nulls last
| where parsed.DeviceDescription == "HID Keyboard Device"
| project PluginTime=EventTime, ComputerName,parsed.ClassName, parsed.DeviceId, parsed.DeviceDescription, AdditionalFields;
//check if a cmd or powershell is executed in the next 10 seconds
ProcessCreationEvents
| where ProcessCommandLine contains "powershell" or
ProcessCommandLine startswith "cmd"
| project ProcessCommandLine, ComputerName, EventTime, ReportId, MachineId
| join kind=inner MalPnPDevices on ComputerName
| where (EventTime-PluginTime) between (0min..10s)
你还记得 WHID 设备吗?好吧,你可以添加一行代码,使用它们的设备 ID 来专门检测该设备:
| where DeviceId == @"USB\VID_1B4F&PID_9208\HIDFG"
请记住,这种防御机制是基于攻击的可预测性;然而,它也存在一些缺陷。例如,在提供的代码中,它会监听在接下来的 10 秒内是否有命令提示符窗口打开,但如果攻击者在脚本中添加了 11 秒的延迟,那么你就完蛋了。
如果你想了解更多关于使用 Windows Defender 高级威胁保护(ATP)的附加安全设置,请参考docs.microsoft.com/en-us/windows/security/threat-protection/device-control/control-usb-devices-using-intune。
DuckHunt
这是 Pedro Sosa 创建的一个非常酷的脚本,它通过非常巧妙的方式解决了前面提到的问题。基本上,他修改了自己开发的按键程序,在每次检测到按键后都会添加一个时间戳。
有了这些信息,你可以判断打字速度是否超过正常水平(比如,每秒输入 10 到 20 个字符)。然后,系统会将其标记为注入攻击,并阻止所有 USB HID 输入。
以下是 Ducky Script 攻击的示例:
C:\Users\Robotin>This is a scripted attack and now I can inject my payload at lightning speed…..HAHAHA
这是DuckHunt如何停止 Ducky Script(USB HID 注入)攻击的示例:
C:\Users\Robotin>This is a scri_
DuckHunt 有许多额外功能。如果你想了解更多,可以访问其官方站点:github.com/pmsosa/duckhunt。
USB 锁
这是一个非常基础的解决方案,通过设置一个锁机制来物理阻止新的 USB 设备连接。然而,这个设备有几个缺点,包括以下几点:
-
它的成本很高。
-
实施它需要大量的努力。
-
维护它需要大量的努力。
-
它不适合远程工作者或 BYOD(自带设备)。
-
这种方法不适合经常移动或出差的销售人员或用户:

图 2.12 – USB 锁机制示例
此外,正如你在图 2.12中看到的,使用这些设备的钥匙非常基础,使得大多数解决方案容易受到开锁攻击。
USB 阻止器
在对系统应用安全措施时,你需要确保所实施的解决方案不会影响系统的可用性,而这可能正是问题所在。
这款由技嘉提供的工具按设备类型封锁端口。这意味着,如果你选择封锁 HID 设备,你将无法使用 USB 鼠标和键盘,这可能是一个非常糟糕的主意。
保护免受易受攻击的 USB 加密狗威胁
这是一个非常严重的威胁。因此,首先,确保你的个人设备(甚至是你家人和朋友的设备)上没有易受攻击的 USB 加密狗。
另一方面,在公司层面,你可以采取以下步骤:
-
创建一个易受攻击设备的清单(也就是说,只需搜索一个易受攻击的 USB 加密狗就能获得最新清单)。
-
一些供应商发布了补丁来修复漏洞。然而,要确保所有连接的加密狗都已修补将非常困难,因此你在制定政策时应该考虑到这一点。
-
确保你的公司不购买易受攻击的设备。
-
检查公司资产中是否有易受攻击的设备,并进行修补或更换。
-
此外,制定(并分发)一项政策,限制员工在公司资产上使用易受攻击的设备(包括易受攻击设备和型号的清单)。
到现在为止,你应该已经清楚地理解了网络安全漏洞的概念。然而,识别漏洞只是游戏的第一步。现在,是时候继续深入了解如何管理、评估、响应并监控这些漏洞,从而提高我们基础设施的安全性。
管理网络安全风险
风险管理是一个非常有趣的话题,关于这个话题有成百上千本书籍和认证。然而,我不会给你提供大量让人不知所措的信息,而是会尝试总结所有关于风险管理的现有知识,将其适应于网络安全环境,并仅提供你在管理风险时需要的正确信息,帮助你像专业人士一样进行管理!
为了简化定义,我们将风险定义为在满足特定条件时会对系统或基础设施产生影响的事件。这些事件通常是由威胁(或威胁代理)触发的,利用了特定的漏洞。
现在,识别和分析该事件发生的影响及概率的过程称为风险管理。
所有系统和基础设施都存在多种相关风险,因此识别并尽早减轻这些风险至关重要。
管理风险的方法论和框架有很多,虽然大多数非常相似,但概念的名称略有不同;不过,我将专注于最被广泛认知的方法,以便让你更容易理解。
现在,让我们查看管理网络安全风险的四个步骤的详细信息(风险识别、风险评估、风险应对和风险监控),让您像专家一样管理网络安全风险。
风险识别
首先,您需要识别与您的基础设施或系统相关的风险。现在,我将分享一些有助于您完成此任务的技巧:
-
详细而广泛地列出您的资产:大多数时候,风险未被发现是因为未识别“幽灵”或遗留系统,因此,从彻底发现您的资产开始,确保所有基础设施和系统都在覆盖范围内是至关重要的。
-
新资产的持续发现:请记住,这是一个持续进行的任务,您需要定期扫描您的环境和网络,发现任何已添加到基础设施中的新设备。
-
资产评估:这里的一个好做法是评估您的资产,确定哪些对您的组织至关重要(即您的“皇冠珠宝”),以便为其防护投入更多的资金。这也有助于您在优先级排序和风险分析方面。
提示
不要单打独斗;寻求帮助和支持!您很难从自己的办公桌上列出所有的风险,因此,可以利用系统管理员、IT 人员和最终用户的经验,帮助您发现潜在的风险。
在此识别过程中,您需要创建一个风险登记册,这是一个包含所有已识别风险的数据库。有成百上千种模板可供使用,它们的大小和列数各不相同。然而,您也可以使用 Excel 创建自己的风险登记册,只需确保包括以下基本要素:
-
风险 ID:风险的唯一标识符。
-
描述:风险的清晰简洁描述。
-
风险拥有者:负责监控风险的人。
-
风险触发器:将风险转化为问题的事件。
-
风险类别:为了更好地管理所有风险,建议您创建风险分组,例如,物理访问、网络、软件、Web 应用等。
-
概率(定性):这里您可以使用 3 或 5 个等级(例如无关紧要、低、一般、高和关键)。
-
影响(定性):评估如果风险发生,给业务带来的影响。
-
风险应对:描述您采取了哪种应对措施来减少风险的发生概率和/或影响(例如减轻、转移等):

图 2.13 – 风险登记册示例
还有许多其他领域可以包括,比如风险来源,在其中您可以指定风险是来自内部还是外部威胁(无论是人为的还是环境的)。
现在,您已经识别出风险,接下来需要对其进行评估。
风险评估
顾名思义,这一步是关于评估风险的发生概率和业务影响。
有两种方式可以进行这种类型的评估:定性和定量。
定量分析
让我们停顿一下,让我问你一个问题:
如果你有一个价值 50 万美元的资产,你会投资 7.5 万美元来保护这个资产吗?
这是一个棘手的问题,因为无论你的回答是“是”还是“否”,真正重要的是你是否用数字来支持你的回答,因为这将告诉你是否能获得该预算。
好消息是,你可以使用几种工具和方法来获得这些数字。然而,更好的消息是,你可以使用三个简单的公式来收集这些数字。
首先,你需要确定如果风险发生,资产的价值。其次,你还需要确定有多少资产将受到影响。举例来说,假设在地震情况下,你公司数据中心的 25%受到影响,如果数据中心的价值为 10 万美元,那么地震造成的损失将是 2.5 万美元。这个可以通过以下公式来表达:
单一损失预期(SLE)= 资产价值 * 暴露因子
然而,如果你试图确定每年该投入多少资金来应对该风险,那么你还需要进行两个额外的计算:
-
确定该风险在每 12 个月内发生的可能性,其中 1 意味着每年一次,而每 5 年一次则等于 1/5(0.2)。得到的值称为年化发生率(ARO)。
-
现在你已经知道了风险的成本和风险发生的概率(每 12 个月一次),你可以将这两个值相乘,来确定每年的平均风险成本:年损失预期(ALE)= SLE * ARO。
重要提示
还记得我刚才的棘手问题吗?现在,你可以利用之前的公式来确定在什么情况下投资 7.5 万美元用于修复或控制措施是合理的(例如,你不希望采取的风险响应措施比风险发生的成本还要昂贵)。
现在,让我们来看一下如何通过文字而不是数字来对风险进行分类,这是一种更简单、更快速的分析方法。
定性分析
这是一种更主观的分析,因为它基于专家(或专家组)的意见,他们根据一个等级来提供评分。通常,这些等级分为 3 个或 5 个级别,但有些公司使用自定义的值。
最常见的做法是使用 5 x 5 矩阵,将概率和影响关联起来,从而得出风险的平均关键性。如你所见,在下表中,一个低概率但高影响的风险将被视为中等风险,而一个高概率且中等影响的风险将被视为重大风险:

图 2.14 – 5 x 5 风险矩阵
相关性值(轻微、中等、重大或严重)将用于对风险进行排名。
如前所述,这是一个主观评估。因此,一个好的做法是分析不同小组,以收集他们的意见,因为这可能有助于减少结果的偏差。
风险应对
在这个阶段,你已经了解了风险,并根据发生的概率和商业影响对其进行了优先级排序。现在,是时候确定应对这些风险的最佳机制、策略或控制方法,以便让你的生活更轻松。应对措施可以分为四类:
-
减轻:这是最常见的应对措施;事实上,“减轻”一词常常与风险应对同义使用,因为它是应对风险时考虑的默认行为。减轻是通过应用一种控制措施、系统、机制或策略来减少风险的概率或影响,使其降到一个可接受的水平。减轻的例子包括安装生物识别访问控制、安装入侵防御系统以及在发布系统前进行安全测试。
-
转移:有时,缓解措施要么太昂贵,要么难以实施(由于缺乏知识或资源)。在这种情况下,你可能想将风险转移给第三方。一个典型的例子是购买保险(以恢复设备费用)或将服务外包给第三方(例如,有时将服务器托管在安全的数据中心比将这些安全措施应用于自己的数据中心要便宜)。
-
规避:现在,假设有一个面向客户的新应用,具有漂亮的 GUI 界面。然而,你通过研究发现该系统存在多个未修复的漏洞,这些漏洞可能会暴露客户数据。在这种情况下,处理这个风险的最佳方法是规避购买该系统。
-
接受:这是最不推荐的选项,应该仅在其他三种选项不适用时作为最后的手段使用。例如,如果某人访问旧版服务器的风险非常低,且影响也非常低,因为它是一个测试服务器,托管的数据不敏感,而且缓解成本为$100,000,那么你可能会选择接受这个风险,并将预算用于支持更关键风险的应对。
重要提示
我们之前讨论了为硬件购买保险;然而,你也可以为其他无形资产投保,例如数据丢失,甚至可以涵盖一些其他风险,如数据泄露或由此产生的责任。
现在,让我们查看该过程的最后一步,通常被忽视,但它是确保风险始终保持最新并持续管理的关键。
风险监控
风险管理应该是一个迭代的过程,这最后一步旨在确保风险始终被识别、评估并处理。一个被评估为轻微的风险可能随着时间的推移变得严重,因此响应也应根据这种变化进行调整。
NIST 网络安全框架
NIST 网络安全框架的设计旨在帮助网络安全专业人士更好地评估和提升其识别、保护、检测、响应和恢复网络攻击的能力。该框架基于以下五个领域。
识别
这里的目标是了解我们的环境,包括我们的资产、业务环境、治理、风险管理策略等。
正如你可能已经注意到的,资产识别在网络安全中至关重要。然而,我想强调的是,尽管这看起来显而易见,但许多公司因未能充分了解和意识到自己的基础设施、系统和设备而遭受攻击。
保护
现在你已经了解了你的环境,接下来就是保护它。框架提出了以下机制(这些自解释,因此无需深入探讨):
-
访问控制
-
意识与培训
-
数据安全
-
信息保护过程和程序
-
维护
-
防护技术
检测
会有许多情况,攻击者能够绕过你的防护系统和层级,因此,在这些情况下,你应该能够检测到这些威胁。为此,框架建议采取以下措施:
-
检测异常和事件:及时检测所有恶意活动,包括与之相关的潜在影响。
-
安全持续监控:保持对 IT 系统和资产的监控,以识别任何事件以及防护措施的有效性(或弱点)。
-
检测过程:确保你开发、更新并共享所有旨在检测网络安全事件的过程和程序。
响应
该领域是关于对特定网络安全事件采取适当行动的应用:
-
响应规划:确保你已建立所有流程和程序,以确保能够及时有效地响应网络安全事件。
-
沟通:这是一个关键的(通常被忽视的)任务,涉及如何与内部和外部利益相关者沟通任何网络安全事件。
-
分析:这是对响应进行分析,以衡量其效果。
-
缓解:这指的是旨在减轻网络安全事件影响的活动。
-
改进:这利用从经验中获得的教训来支持持续改进的模型。
恢复
这个领域涉及到为恢复受网络安全事件影响的业务能力和服务所需的活动:
-
恢复计划:所有计划事件都是必要的,以确保受影响的系统和资产能够及时恢复。
-
改进:这指的是基于从经验中获得的教训对所有计划事件进行改进。
-
沟通:这涉及管理与受影响系统相关的内部和外部利益相关者的沟通(例如,供应商、提供商、受害者等)。
前四个领域与我们在风险管理过程中回顾的内容非常相似,因此不需要展开。然而,最后一个领域非常有趣且重要,因为所有公司都应该为应对灾难做好准备,并确保在灾难发生后业务的连续性,这也是我们将在下一部分中回顾的内容。
创建有效的业务连续性计划(BCP)
问题不在于灾难是否会发生,甚至不在于它何时发生,而在于当它发生时你是否准备好了。
从本质上讲,人类往往认为负面情况会发生在别人身上,而不是自己身上。这样思考的问题在于,即使他们知道其他公司在遭遇网络攻击后失去了一切的历史,只有少数公司会投资于确保在网络事件后业务连续性的计划。
公司创建BCP的三大驱动因素如下:
-
那些基于政府或国际机构的监管要求
-
客户的合同要求
-
对 BCP 价值的自我认知
现在,我知道获得资金和资源来创建有效的业务连续性计划(BCP)有多么困难,因此这里有一些市场研究专家(如 Gartner 集团、美国华盛顿国家档案和记录管理局、美国联邦应急管理局(FEMA)、彭博社和德克萨斯大学)收集的关键点,强调了公司在遭受安全攻击后未能拥有有效的连续性计划所面临的后果:
-
93%的公司在数据中心丧失超过 10 天后,在灾难发生一年内申请了破产。
-
94%的公司在遭受灾难性数据丢失后无法生存——其中 43%永远不再开门,51%会在两年内关闭。
-
50%的磁带备份恢复失败。
-
那些在灾难发生后无法在 10 天内恢复运营的公司,很难生存下来。
-
在灾难发生后,40%到 60%的小型企业永远不会重新开门。
此外,让我分享一些关于大公司业务连续性计划(BCP)的额外统计数据:

图 2.15 – BCP 统计数据
数字不骗人:你可以利用这些数字来突显全球网络安全形势,以获得高层管理人员和资助人的支持和资源,来创建/维护你的 BCP/DRP。
现在,创建 BCP 的第一步是深入了解公司(即其流程、部门、层级、职能和角色),以及任何潜在中断如何影响公司继续开展核心业务的能力;这就是所谓的业务影响分析(BIA)。
创建业务影响分析(BIA)
再次强调,互联网上有很多模板可以用来创建 BIA。其中一些非常复杂,可能对中型公司来说有些过于繁琐。另一方面,也有非常简易的模板,适合小到中型公司,但对于大公司来说,它们可能不够详细或具体。然而,重要的并不是模板,而是如何正确填写它。我们来回顾一下创建世界级 BIA 所需理解的所有概念。
任务关键职能
所有流程都很重要;然而,你需要识别哪些是支持性流程,哪些是运营业务所必需的核心流程。例如,如果你的公司制造汽车,那么制造流程是核心流程,必须保持正常运转,以免造成经济损失。相比之下,还有其他支持性职能,例如会计,尽管它们也很重要,但如果该流程中断,其影响可能不如核心流程那样严重。
关键系统识别
你必须识别对公司至关重要的系统。例如,电子邮件服务器对公司来说非常重要,但即使电子邮件服务器宕机,公司仍然可能继续运营核心业务。然而,另一方面,如果你的公司是做线上服装销售的,那么每当网页宕机,你的公司都会在每一分钟(或每一秒钟)中失去客户和收入。
恢复时间目标(RTO)
RTO 代表公司在遭受灾难后,必须花费的时间来恢复那些流程、活动或操作。
定义 RTO 并非易事,因为高层管理人员总是希望将其设定为接近零,但最终 RTO 越低,相关成本越高。因此,在定义这个数字时要现实,避免做出不切实际的决策。
请记住,一些高管可能会试图寻找整个公司的总体 RTO。然而,你应该在更低层级定义 RTO(按流程、活动、部门或任务),因为这样有助于你识别差距或需要更多资源支持的点。例如,灾难发生后恢复制造线的 RTO 必须低于恢复邮件服务的 RTO。在下面的表格中,你可以看到如何将服务映射到所管理数据的关键性,并对应的 RTO 和 RPO:

图 2.16 – 按照数据的关键性划分的 RPO/RTO
现在,让我们看看另一个重要的指标,恢复点目标(RPO)。
恢复点目标(RPO)
这指的是灾难后可以接受的最大数据丢失量。换句话说,就是在灾难发生后需要恢复多少数据。然而,问题在于;即使我们谈论的是数据,这些数据并不是按大小来衡量的,而是按时间来衡量的,因此并不是恢复多少比特的数据,而是恢复到哪个时间点的数据。例如,如果你有一个邮件服务器,那么丢失过去一小时收到的邮件可能是可以接受的,因此,RPO 为 1 小时是可以的。相比之下,如果丢失 1 小时的支付记录,那就可能不可接受。在这种情况下,RPO 应该在 1 到 10 秒之间。在下面的图表中,你可以看到 RPO 和 RTO 之间的关系:

图 2.17 – RPO 和 RTO 的示例
这两个指标是基于停机时间和数据丢失的。然而,还有一个重要的指标可以用来确定系统的可靠性,那就是通过衡量系统预期的停机频率:平均故障间隔时间(MTBF)。
平均故障间隔时间(MTBF)
该指标通常由制造商用于确定产品的平均生命周期;然而,当你想为替换故障的旧系统进行投资辩护时,这个指标非常有用。例如,假设你有 20 个无线接入点,它们是在同一天安装的。然后,你会发现,第一个在 200 天后故障,第二个在 400 天后故障,第三个在 600 天后故障。这意味着在 1,200 天内,发生了三次故障,所以,通过除以 3,你可以得到这些无线接入点的 MTBF 为 400 天。
重要提示
如果你负责网络安全,那么你有责任检测到故障系统,并提供替代方案在它们造成重大灾难之前进行更换。这是因为如果该系统导致了停机,所有的责任都会归咎于你。所以,务必保持主动!
另一个有用的指标是确定执行特定维护活动所需的平均时间,例如重启服务器或更换硬件。这一点非常重要,因为你可以在未来利用这个时间,更好地预测该活动所需的时间。这个指标被称为平均修复时间(MTTR)。
平均修复时间(MTTR)
正如其名称所示,这指的是在系统或设备发生故障后,恢复、更换或修复所需的预估时间。这可以是你的团队修复所需的时间(内部修复),也可以是供应商根据给定的 SLA 修复或更换所需的时间。MTTR 与设备缺失对业务造成的影响相关。例如,更换终端用户笔记本电脑的硬盘可能需要 3 天(收集硬盘信息、购买硬盘、安装硬盘),而更换服务器硬盘可能优先级更高,MTTR 可能只有 1 小时(即收到警报,确定部件,使用本地库存更换部件)。
可用性
你还在疑惑了解 MTBF 和 MTTR 的价值吗?除了前面提到的好处,你还可以用它们来计算服务的可用性。
这是一个非常有趣的指标,你可以用它向上级管理层报告系统的状态,并为之前和未来的投资提供依据。例如,假设你的网页服务器在过去 400 天内故障了两次(MTBF = 200 天),而 MTTR 为 3 小时(MTTR = 0.125 天)。因此,如果设备每 200 天发生一次故障,且修复时间为 0.125 天,那么可用性就等于200 / (200 + 0.125),这意味着,在这种情况下,我们的网页服务器可用性为99.9375%。
可用性 = MTBF / (MTBF + MTTR)
那么,99.9375%是否足够好?嗯,这取决于你的业务需求。然而,数据中心使用等级方法来确定它们的可用性水平,因此你可以将这些值作为参考点:
-
Tier 1:99.671%的可用性(这相当于每年 28.8 小时的停机时间)。
-
Tier 2:99.741%的可用性(这相当于每年 22 小时的停机时间)。
-
Tier 3:99.982%的可用性(这相当于每年 1.6 小时的停机时间)。
-
Tier 4:99.995%的可用性(这相当于每年 26.3 分钟的停机时间)。
提示
你在寻找一种客观支持是否选择内部托管解决方案还是第三方托管的方法吗?嗯,你可以分析当前的可用性,并与供应商提供的可用性进行对比,从而决定哪种解决方案最适合你的业务。
增强基础设施可用性的一个好方法是找出那些可能危及系统和基础设施正常运行的设备。这些设备被称为单点故障。
单点故障
如前所述,增强系统和基础设施可用性的一个关键方面是识别可能影响系统正常运行时间的关键设备。识别后,必须确保这些系统具有最高级别的安全性,以降低与之相关的风险,正如你可能猜到的,这些设备的 MTBF 和 MTTR 应为最低。
此外,你需要采取必要的措施,确保为那些单点故障设备提供冗余,以避免非计划的停机时间:

图 2.18 – 单点故障示例
图 2.18 是一个网络设备作为单点故障的常见示例。
谁创建 BIA?
BIA 的创建是一个共同的努力,部门或单位的每个负责人负责评估其组织并创建 BIA。然而,应该有一个人负责领导和协调它们的创建,并提供有关如何创建的指导和支持。根据公司结构,通常由风险经理或 BCP 经理负责这一任务。然而,如果你的组织没有这个角色,我建议你接手,因为最终,最能受益的人将是你。
业务连续性规划(BCP)
这是通向终结之路的指南!
BCP 的目标是拥有一套可以减少破坏性事件影响的政策、流程、程序、机制和工具,随时可以启用。现在,让我们来看看创建 BCP 需要做哪些工作。
确定范围和目标
一个好的计划是一个定义明确的计划。因此,我们将从为一个好的 BCP 奠定基础开始:
-
范围:确定 BCP 的范围(例如,部门级、公司级、国家级等)。
-
目标:根据公司指导方针突出 BCP 的目标。
-
假设:添加任何可能对读者有用的相关假设。
-
文档所有者:概述文档的所有者。
-
文档版本:概述文档的当前版本。
-
分发列表:概述该文档应分发给谁。
-
识别关键利益相关者:列出利益相关者及其角色和职责。
风险评估
你不需要创建另一个风险评估,而是利用现有的风险评估作为 BCP 的输入之一;只需确保它包含以下内容:
-
风险描述:确保列出的风险包括明确的描述,便于 IT 团队外的人理解。
-
剩余风险和次要风险:列出任何剩余或次要风险。
-
风险来源:确保按来源对风险进行分类(例如,环境、人为等)。
业务影响分析
我们已经知道如何创建 BIA(因此无需再次审查)。然而,关于应该先创建哪个,BCP 还是 BIA,仍有很多争议(这类似于“先有鸡还是先有蛋”的困境)。
专家的普遍共识是,最好先创建 BIA,因为它是 BCP 的输入。另一种方法是同时进行这两项工作;然而,同时完成这两项工作所需的努力可能是巨大的。
业务连续性策略
这可能是 BCP 中最重要的部分,因为它包含了所有支持业务连续性的策略、流程、程序及其他相关信息:
-
流程和程序的定义:定义所有的流程和程序,确保在网络事件或服务中断后业务的连续性。
-
团队责任:确定与业务连续性相关的不同团队的角色和责任。
-
法律和法规要求:列出所有适用的法律和法规,以及在网络事件发生时的相关影响。
-
预防控制和缓解措施:提及现有的控制措施和缓解措施,确保业务的连续性。
-
触发定义:概述何时触发控制措施和缓解措施,以避免业务中断。
-
备用站点 (数据):在主系统发生中断时,列出所有与备用站点相关的信息。
-
替代地点 (员工):在服务中断的情况下,包含所有与备用地点相关的信息,用于转移业务操作。
-
替代提供者和采购:在当前提供者出现问题时,提供可用的商品和服务替代供应商名单。
员工安全
每个公司的优先事项始终应该是员工的安全,因此作为一种最佳实践,BCP 必须至少包括以下内容:
-
撤离计划:与公司地点的撤离计划相关的所有信息
-
紧急工具包:与紧急工具包相关的信息(例如,工具包的可用性、位置、内容、有效期等)
-
角色和责任:应急响应团队的角色和责任
-
紧急联系人:应急响应团队成员的联系信息
通信
在发生网络安全事件时,通信管理是公司应对事件时最重要的方面之一。缺乏良好的规划可能会损害所有组织最宝贵的资产之一:其声誉和品牌。因此,确保你的计划中至少包括以下内容:
-
内部沟通:这是关于如何在发生网络事件时管理沟通的指导方针。
-
利益相关者通讯:这是关于如何在发生网络事件时管理与公司利益相关者通讯的指南。
-
媒体通讯:这是关于如何在发生网络事件时管理与外部实体(如媒体、社交媒体渠道等)通讯的指南。
测试和评审
一家公司可能会投入大量资源来制定业务连续性计划(BCP)。这个计划可能看起来很棒,老板可能也很喜欢,但你怎么知道它是否能有效呢?在这里,你需要考虑以下几点:
-
测试指南:BCP 将如何进行测试以及如何衡量测试结果。
-
测试计划:确定何时进行测试(例如,测试频率)或什么事件会触发测试。
-
测试经理:谁将负责测试?
更新和维护
风险变化和威胁不断演变,因此 BCP 也应不断演进。因此,确保在计划中包括这一部分,以保持计划的相关性和更新:
-
更新政策:概述如何、何时、由谁负责更新这个 BCP。
-
修订历史:包括 BCP 每个版本变更的版本历史。
如果你包括了所有前面的步骤,那么你将拥有一个非常详细且强大的 BCP,帮助你确保公司在服务中断或网络事件发生后能够生存下来。下图展示了 IT 服务中断或停机的主要原因:

图 2.19 – 常见的停机原因
但如果 BCP 失败了会怎样呢?比如,假如电力发生故障怎么办?如果备用站点无法访问怎么办?那将是灾难性的,你需要对此做好准备。你可以通过拥有灾难恢复计划(DRP)来做到这一点。
实施一流的 DRP
你对 DRP 和 BCP 的范围感到困惑吗?别担心,因为这很常见。事实上,快速搜索这个话题会发现,甚至连作者们对于这两个术语的界限也没有统一意见;不过,让我尽量简单地解释清楚。
BCP 和 DRP 之间的区别如下:
-
DRP 可以被视为整个 BCP 的一个子集。
-
DRP 是关于在灾难发生时恢复关键服务器(反应性)。
-
BCP 是为了防止业务停机(主动性)。
-
BCP 与业务相关(流程),而 DRP 更与 IT 相关(系统和数据)。
-
BCP 可以在正常运营期间应用,以防止中断,而 DRP 只有在发生灾难时才会执行。
现在我们已经了解了这两者的区别,接下来让我们继续学习如何创建一个高效的 DRP。
创建 DRP
下面是制定 DRP 时必须包括的内容概述:
-
范围:在这里,你必须定义 DRP 的范围。通常,公司会创建一个整体的 DRP,但有时你会发现创建分段式 DRP 是有益的;例如,一个针对系统,一个针对网络,另一个针对数据。
-
假设:识别与此 DRP 相关的所有假设。一个常见的假设示例是,某些事项已经包含在 BCP 中(如备份、冗余和故障转移)。
-
启动标准:确定哪些触发因素表明一个事件是灾难。例如,如果发生停电,且缓解策略(如备用发电机)无法正常工作。
-
场景和应对策略:在这里,你需要包括一组可以视为灾难的场景,并概述如何通过缓解措施来恢复业务运营。例如,本地服务器宕机,而云上的备用服务器不可访问。
创新思维!事实上,考虑一些不寻常的场景,比如大流行或战争(即使它们可能永远不会发生),比不考虑这些情况并受到影响要好。在下图中,你可以查看一些灾难的例子来源:

图 2.20 – 灾难可能的触发因素
-
灾难恢复需求:发生灾难时需要哪些资源?例如,这可能包括技术需求、操作需求、沟通需求、备份需求、冗余需求、文档需求、法规需求以及客户需求。
-
灾难恢复程序:如果发生灾难,应该遵循哪些程序?例如,可能包括沟通管理、远程访问程序、访问控制(包括物理和逻辑访问)等。
-
角色与职责:如果发生灾难,谁负责或负责任务(即谁负责网络?谁负责服务器?谁负责 VoIP?)。
实施灾难恢复计划(DRP)
如果你不知道如何实施 DRP,它是没有用的。那么,让我们来看看一些实施 DRP 时的最佳实践:
-
确保你有多个供应商(包括一些合同或协议),以便在灾难发生时需要服务时能得到支持。例如,确保你有协议(以及设备),以便在备用供应商宕机时从其他 ISP 获得服务。正如我奶奶所说,"不要把所有的鸡蛋放在同一个篮子里。"
-
定期审查与备份供应商的合同和协议,因为他们的服务可能会随着时间发生变化,你可能无法得到所需的服务。
-
确保你有恢复顺序,以便根据业务影响(RTO)确定首先恢复哪些系统。
-
记住,恢复站点的成本会根据服务类型(例如热站点、温站点或冷站点)而有所不同,因此请确保合理分配它们以降低成本(您不想在热站点上托管测试服务器)。
-
分析您的供应商的供应商。我记得有一次,DRP 中提到如果次要 ISP 发生故障,就切换到 ISP X。我们在测试中发现,ISP X 将服务外包给了我们的次要 ISP。这意味着次要 ISP 的基础设施出现问题时,也会影响到 ISP X,使得我们的 DRP 失效。
-
执行定期的 DRP 测试,以验证其有效性。
-
执行压力测试,以验证所采取的行动是否能够支持所需的人数或服务。例如,在测试过程中,您可能会检查能否连接到次要服务器,但该服务器是否能提供所需的性能水平?它能接受您恢复业务所需的连接数量吗?
-
执行安全测试,以确保提出的 DRP 能够达到最低可接受的安全水平。
-
如果您有多个地点,请从所有地点测试访问次要服务器/系统的能力(您需要确保您的员工即使在哥斯达黎加的海滩上工作,也能访问次要系统/服务器)。
-
测试次要系统(在 DRP 中提出的)的耐用性,并在不同季节和长时间段内进行测试。例如,您可能会测试卫星互联网连接,在晴天时可能工作正常,但在阴天或暴风雨时可能无法提供所需的服务水平。
-
在发布 DRP 之前,获取必要的批准(来自 CEO、CTO 和 CFO)。CTO 的批准至关重要,以确保他们同意技术决策,CEO 的批准至关重要,以确保 DRP 有效地覆盖业务,CFO 的批准确保您有足够的预算来实施和执行该计划。
总结
在这一章中,我们涵盖了许多非常有趣且重要的话题,这些内容可以应用到您的防御策略中。
首先,我们学习了如何创建漏洞评估,包括最常见漏洞类型的概述,以帮助您创建最佳评估。然后,我们扩展到了网络防御的核心方面之一:风险管理。在这里,我们学习了如何管理网络安全风险,并且还研究了网络安全领域最著名的框架之一:NIST 网络安全框架。
此外,正如在上一章中所讨论的,可用性是网络安全中的核心原则之一。因此,为了避免停机,我们学习了如何创建 BCP,其中深入探讨了其最重要的组件:BIA 和 DRP。
我们还学习了一个最常见且最危险的漏洞背后的细节,那就是著名(或臭名昭著)的 USB HID 漏洞。在这里,我们了解了利用这一漏洞的最常见攻击途径,以及我们可以用来防止此类攻击的工具和技术。
在下一章节,我们将进一步扩展这一内容,展示与网络安全中最薄弱环节——用户相关的所有漏洞,以及你可以利用的所有机制、工具和技术来修补用户漏洞。
进一步阅读
-
这是国家标准与技术研究院(NIST)的官方网站,你可以在这里查看 NIST 网络安全框架的最新版本:
www.nist.gov/cyberframework。 -
在这里,你可以看到最新最强大的网络安全工具和小工具,帮助你进行漏洞评估:
hak5.org/。 -
一些网站展示了脆弱的 USB 加密狗,但大多数网站只展示了来自同一品牌的设备。在这种情况下,维基百科有最好的脆弱 USB 加密狗汇总,包括多个品牌:
en.wikipedia.org/wiki/Logitech_Unifying_receiver。 -
如果你想查看另一种风险管理方法,我建议你查看英国政府的《橙皮书》:
www.gov.uk/government/publications/orange-book。 -
这是曼彻斯特市政府提供的一个非常好的 BIA 模板:
www.manchester.gov.uk/downloads/download/5700/mbcf_business_impact_analysis_template。 -
这是曼彻斯特市政府提供的一份详细的 BCP 模板:
www.manchester.gov.uk/downloads/download/5701/mbcf_business_continuity_plan_template。 -
这是一个非常有趣的 BCP 模板,专门为小型企业设计:
www.manchester.gov.uk/downloads/download/5792/business_continuity_guidance_to_support_small_businesses。 -
你想创建自己的 USB HID 漏洞防护解决方案吗?如果是,那么我建议你查阅这份文档,以深入了解 USB 协议(包括描述符、类和更多内容):
www.ftdichip.com/Support/Documents/TechnicalNotes/TN_113_Simplified%20Description%20of%20USB%20Device%20Enumeration.pdf。
第三章:第三章:理解政策、程序、合规性和审计
"所有行业都面临着需要拥有网络安全领域专家的迫切需求;而当前的现实已经表明市场上这种人才的缺口。这意味着我们有机会在这个领域进行专业化,并帮助各行业减轻当前和未来的网络安全相关风险。"
– Joel González Saldivar – 人力资源和技能发展专家,墨西哥
政策、程序、合规性和审计是对技术专家来说可能听起来很枯燥的话题。然而,在网络安全领域,它们至关重要。
事实上,政策和程序是所有组织网络安全战略和态势的支柱,而合规性和审计是确保它们得到遵守的最佳机制;因此,这些是所有网络安全专业人员必须解决的重要话题。
你还需要一个工具来衡量你的网络安全水平,因为这将帮助你了解当前的状况、目标以及达成目标的路径。帮助你实现这一目标的最佳工具是网络安全成熟度模型(CMM)。
本章将涵盖以下内容:
-
理解网络安全政策和程序的价值和重要性
-
实施创建、更新、分发、推广、执行(CUDSE)方法来创建和管理网络安全政策和程序
-
理解合规性的重要性以及如何确保始终保持一致
-
了解不同类型的审计以及如何有效地管理它们。
-
优秀 CMM 的好处、特点和结构
-
最佳 CMM 概览:企业网络安全成熟度模型(ECM2)
创建世界级的网络安全政策和程序
当我们从事网络安全工作时,通常会考虑它的技术方面:如何保护我们的网络、如何开发更好的代码、如何提升韧性等等。然而,还有一层非常重要的支持它们的基础,它是企业级安全的支柱:网络安全政策和程序。
然而,创建这些并非易事,而且大多数人并未接受过这方面的训练。实际上,作为 IT 专业人员,我们习惯于按照教程或步骤来安装新系统或服务器,但并没有类似的教程来创建网络安全政策和程序。
因此,为了让这项任务尽可能简单,我将向你展示CUDSE 方法(www.cudse.com),该方法已被全球多家公司成功使用,作为创建一流网络安全政策和程序的指导方针。
网络安全政策
防御性安全的主要目标是确保你的数据和系统安全(可用、保密和完整)。
为此,我们实施系统(例如入侵防御系统(IPS)和入侵检测系统(IDS))、策略(例如深度防御(DiD)策略)以及计划(例如业务连续性计划(BCP)和灾难恢复计划(DRP));然而,你还需要创建将管理你基础设施周围所有因素的规则。
这些规则可以与系统相关(例如访问政策)、与用户相关(例如密码政策)或与数据相关(例如隐私政策)。
重要的是要记住,所有的政策都必须为每个公司量身定制。实际上,有些情况下,公司可能会根据地理位置有不同的政策,这些政策通常由文化、当地法律、法规和市场驱动。
然而,有些政策几乎是标准的,并且在大多数组织中都有出现。以下图例展示了一些这样的例子:

图 3.1 – 政策与程序的关系
提示
如果你需要帮助开始创建你的政策,可以从互联网上下载模板并将其作为指南;例如,以下是系统管理员、审计、网络和安全(SANS)研究所提供的一个良好资源库:www.sans.org/information-security-policy/。然而,正如前面提到的,你需要确保创建符合你所在组织、文化和当地法规的政策。
网络安全程序
程序是逐步指导用户如何实现确保遵守特定政策的结果的指令。
通常,策略包含(或引用)多个旨在指导用户如何执行任务以遵守政策的程序。下图说明了政策与程序之间的关系:

图 3.2 – 政策与程序的关系
例如,一个身份与访问管理(IAM)策略可能会引用以下程序:
-
如何从Active Directory(AD)中删除用户
-
如何删除禁用的 ID
-
如何归档访问日志
-
如何提升 UNIX 服务器上的权限
-
如何提升 Windows 服务器上的权限
-
用户通知程序
那些隐形的层通常被网络安全专业人员忽视;然而,投入时间、知识和资源,确保它们得到创建、更新、分发、传播和执行,是至关重要的。
CUDSE 方法
网络安全中的一个常见错误是缺乏关于如何制定政策和程序的明确指南。
这可能是因为我们不喜欢处理非技术性事务(似乎很无聊),因为似乎没有人关心政策或程序,或者仅仅因为这是一个被遗忘的话题,几乎没有哪本网络安全书籍提到它。
因此,为了填补这个空白,我设计了CUDSE 方法(www.cudse.com),它涵盖了你在创建网络安全政策和程序时需要考虑的所有重要方面。现在,让我们来看看这个方法。
创建
首先,你需要确保创建有意义的政策,这些政策对你和你的组织都有意义,为了实现这一点,你需要遵循以下简单规则:
- 易于理解:人们讨厌阅读政策的原因是它们似乎是为了让人觉得枯燥复杂而写的。因此,相反,应该用简单的语言写出来,使其更吸引读者。简洁明了,简短易懂。如以下表格所示,一项不好的政策是复杂的,使用了很多技术术语(这些术语对大多数用户来说既不相关又让人困惑),没有提供如何遵守的清晰指南,并且提到了一个未知的资源(没有提供链接)。另一方面,一项好的政策是清晰的,简洁地说明了它解决的问题,并提供了一个明确的方式来解决问题并遵守政策:

图 3.3 – 好政策和坏政策的例子
-
易于实施:确保你所写的政策可以实施和执行,否则你就是在浪费时间。一个好的建议是与你的人力资源(HR)部门密切合作,确保所有政策都能被执行,并且没有与地方性法规、法律或权利发生冲突。
-
集成:正如你所知,技术需要集成以弥合任何可能的漏洞,政策也不例外。它们需要智能地集成,以确保没有漏洞可以绕过它们。例如,如下图所示,你可能有多个政策,它们一起构成了你防御性安全的基础:

图 3.4 – 政策集成
-
包容和合作:记住,你不是孤军作战。事实上,如果你一个人坐在办公桌前编写所有政策,那你将犯一个严重的错误。相反,应该与公司内的各个部门或领域共同制定这些指南。这将帮助你制定更好的政策,并获得相关人员的支持。如前所述,人力资源部门是你在这一努力中的最大盟友之一。
-
使用傻瓜式的例子:使用人们容易理解和关联的例子,来阐明你要表达的观点。一个好的方法是使用做与不做表格,如下所示:

图 3.5 – 防呆政策示例
- 获取批准:找出在下一步之前,哪些人需要审查和批准这些政策。通常,人力资源或法务部门可以帮助你识别需要审查和批准你这些“酷”政策的个人、团队或小组。
更新
就像你保持服务器的更新(以防范新的威胁)一样,你也必须做到这一点,确保政策的更新。
但这更具挑战性,因为这不仅仅是添加一个检查项,确保你的政策每天更新;相反,你需要确定一个时间点,对每一项政策进行审查和分析,以确保它们在当前威胁环境下仍然具有相关性(通常,年度审查是可以接受的)。
然而,有些事件可能会触发政策的提前审查,具体如下:
-
对公司政策的修改
-
收购新公司
-
新的法律和规定
-
在新地区开设业务/办公室
小贴士
确保所有对政策和程序的更新和修订都在文档的版本历史中得到了妥善追踪。
分发
一个常见的错误是,政策一旦创建并分发后,就被遗弃在一个几乎无人知晓的位置。我曾见过这样的情况,连首席信息安全官(CISO)都不知道这些政策的具体位置,因此,确保以有序的方式将网络安全政策分发给所有员工是非常重要的。
正如律师和网络安全专家罗伯托·莱梅特所确认的,"如果没有证明政策已正确共享或分发,就无法执行违反政策的处罚或制裁"。
因此,这不仅仅是分发问题,还包括确保员工确认已收到政策。
小贴士
在线勾选一个复选框是获取用户确认的一种非常简单且在法律上可执行的方式。但是,始终与法务部门核实,以确保遵守公司政策以及当地的法规和法律。
现在,你需要制定一个分发策略,这可以像定义何时需要分发(或重新分发)政策那样简单。以下是一些示例场景:
-
在政策创建或更新时
-
在新员工入职时
-
作为年度必修培训的一部分
-
当某人变更当前角色时
社交化
一些公司仅仅将政策分发出去,并没有进一步的后续活动。然而,这远远不够!
要成功,你需要确保这些政策及其相关程序成为组织文化的一部分。
这并不容易实现,但一旦政策成为组织文化的一部分,大家就会自然而然地支持和执行这些政策。
此外,这也将帮助您确保新员工遵守政策或更快地接受政策。例如,如果每个人即使只是短暂离开,也锁定计算机,那么新员工即使没有阅读政策,也会自然而然地这样做。
提示
正如您可能已经猜到的那样,将网络安全政策作为组织文化的一部分,将使您能够显著降低政策培训和教育的未来成本。
这里有一些提示可以帮助您完成这一步骤:
-
开展持续的教育宣传活动,包括培训、传单、电子邮件等。
-
识别影响力者并指定他们为某项政策的倡导者(以帮助推广合规性)。
-
获得高层管理的支持,并请求他们支持传达网络安全政策的重要性。
-
获得人力资源的支持并请求他们支持传达不遵守网络安全政策的后果。
强制执行
作为政策的所有者,您必须确定谁负责确保政策的执行,并负责在违规情况下施加制裁。
在大多数情况下,您将是唯一能够访问和了解可能检测到任何违反此类政策的工具的人,因此您必须定义一个程序,说明您将如何处理这些互动(通常与高层管理、人力资源和法务部门)。
另一种强制执行的方法是利用一些技术工具——例如,您可以在 Active Directory 上强制执行密码策略,在电子邮件上强制进行加密等。
另一种——不太技术化的方式是更新公司模板,以确保用户不会忘记填写一些强制性字段——例如,在所有公司模板中包含脚注,以确保数据分类得到正确标记(公开、私密、机密和受限)。
理解和实现合规性
公司可能需要遵守多种法律和法规,以规定数据的存储、管理和处理方式。与其他法律一样,未能遵守可能导致罚款或其他法律后果,可能最终导致企业关闭,因此这些问题需要非常认真对待。
法规类型
在我们看如何实现合规性之前,让我们看看基于来源的法规类型。
国家法规
这些是政府制定的法律和法规,用于规范私营公司如何存储、管理和处理数据。
这些法规可能会很棘手,因为它们可能保护公司所在国家的个人,而不考虑公司的位置,因此您还需要了解与用户或客户地理位置相关的法规。
区域法规
这些法规与国家法规非常相似,但它们适用于多个国家。这些国家通常通过某些国际合作条约联系在一起,如由欧盟(EU)制定的通用数据保护条例(GDPR)。
GDPR
一个著名的地区性法规例子是 GDPR,其标志如图所示:

图 3.6 – 代表 GDPR 标志的欧盟旗帜
这是欧盟关于数据保护和隐私的法规,主要目的是让个人掌控自己的数据,以及公司如何处理这些数据。
这一法规很复杂,因为它也适用于那些管理欧盟公民数据的欧盟以外的公司。
尽管关于遵守这一法规所需成本有很多批评,部分专家将其视为一种法律机制,旨在鼓励公司提高网络安全水平并防止个人信息滥用。
另一个遵守的好理由是与之相关的天文数字罚款。以英国航空公司为例,由于不当的安全措施导致大量客户信息泄露,他们不得不支付超过 2 亿 美元(USD)的罚款。
提示
在某些情况下,地区性或国际性法规优于地方性法规,因此建议与法律部门合作,仔细分析这些法规。
市场/行业法规
一些与特定市场或行业相关的法规是非常严格的,并且可能适用于供应商和供应商。因此,了解你的业务以确保遵守这些规定是至关重要的。
如果你的公司处于服务行业,遵守这些法规可能是一个不错的策略,因为这是吸引顶级客户的好方法。
这里列出了这些法规的一些示例:
-
1996 年健康保险流通与责任法案(HIPAA)
-
萨班斯-奥克斯利法案(SOX)2002 年版
-
支付卡行业数据安全标准(PCI DSS)
客户法规
一些客户可能要求他们的服务提供商遵守一套法规,才能与其做生意。大多数情况下,这些法规是之前提到的法规(国家、地区或市场)的子集,公司通过这些法规确保其提供商在环境中具有一定的安全性。因此,虽然你的组织可能没有法律义务遵守这些法规,但为了与这些客户保持业务关系,仍然必须遵守。
内部法规
大型国际公司可能会有自己的网络安全法规,旨在保持各个部门和地区的一定安全水平。
这些法规与公司政策非常相似,但大型企业更倾向于使用术语法规,特别是在它们在不同国家有大规模运营的情况下。这个术语在特许经营中也广泛使用,以确保每个特许经营者与其内部的网络安全法规保持一致。
提示
创建一个矩阵,列出适用于您基础设施的法规,以确保随时将其放在您的视线中,并确保在制定安全策略和政策时考虑到它们(参见图 3.5的示例)。
达到合规性
正如前文所述,实现合规性是一项非常复杂的任务,可能需要大量的时间和资源投入。然而,您可以提供一些明确的激励措施,以便向高级管理层提供理由,证明在合规性方面的投资是合理的,如下图所示:

图 3.7 – 达到外部法规合规性的好处
这些要点应该足够强大,以确保高层管理层的支持(实际上,只需第一个要点就足够了)。现在,让我们专注于一些您可以应用以达到大多数法规合规性的良好实践。
制定计划
坦率地说,合规性是一项非常复杂的任务,因此在这种情况下,处理这种痛苦的最佳方式是花一些时间进行规划。请记住,合规性有二元结果——您要么合规,要么不合规;正如我爷爷过去常说的:如果你必须做,那你最好做对!
现在,不要把规划看作是浪费时间的行为,而是把它视为确保您有清晰路径以达到所需合规水平的工具。
为了尽可能简单化,我在这里总结了您需要包含以创建一个优秀合规性计划的项目:
-
标题:将由此计划涵盖的法规名称。
-
利益相关者:与此法规相关的人员姓名,例如人力资源经理、法律顾问、首席财务官(CFO)等。
-
法规详细信息:符合该法规所需的详细要求清单,例如加密要求、数据处理要求等。
-
处罚和制裁:在这里,您需要列出与每项法规相关的所有处罚和制裁。此外,请记住,这主要是一个法律问题,因此您必须与您的法律部门合作,以正确创建计划的此部分。
-
范围:法规的行动范围。这可以通过地理位置、行业等来定义。
-
影响:将受到此法规影响的系统、服务器、服务、数据和任何其他 IT 组件的详细清单。同时,请确保包括所有者的姓名,以便随时掌握。
-
相关日期:在这里,你需要添加两组不同的日期——首先是关于法规生效日期的日期,其次是你计划遵守这些法规的日期。
一计划还是两计划?
通常,你会为合规创建一个单一计划,但如果你在一家大型组织工作,或者公司需要遵守过多的法规,那么制定多个计划可能是个好主意。一种好的选择是根据之前解释的法规类型将其分组,并为每个组创建一个计划。
创建合规团队
如我在本书中已经提到的,一个优秀的网络安全专业人士不是做所有事情的人,而是知道如何完成任务的人。
因此,你需要学会与其他专业人士合作,以实现你的目标。
一个好的做法是建立支持团队——在这种情况下——建立一个合规团队,帮助你更快、更好地推动事情的发展。
现在,这不仅仅是随便询问谁愿意加入团队;更重要的是选择一些对该法规有兴趣的人员。例如,电子商务(销售)部门可能是支付卡行业(PCI)认证的理想利益相关者,而人力资源、法律和医疗部门则是符合 HIPAA 的理想利益相关者。
利用现有的信息
你可以利用企业信息——如业务影响分析(BIA)或风险评估——来确定当前可以用来遵守特定法规的努力。
如我们在第二章中提到的,管理威胁、漏洞和风险,风险评估是一个迭代过程,这一审查可能会导致对先前指定的风险应对措施进行更改——例如,一个公司决定接受的风险,在处理合规性时,可能需要进行修复,因为接受该风险不是一个合适的应对措施。
审查当前的控制措施
记住——我们需要更聪明地工作,而不是更辛苦地工作,而变得更聪明的一种方式是利用当前的系统和控制措施来实现新的目标。
对当前的控制措施进行清单盘点,并将其与法规进行关联,确定哪些控制措施可以用于遵守该法规。
你会发现,很多时候,你只需要对当前的系统进行一些调整,就能与法规对齐。
将合规要求与网络安全政策对齐
并非所有法规都可以通过系统来解决,因为有许多法规与用户有关,在这些情况下,你需要的是政策。
然而,如前所述,你希望保持政策的简洁,因此尽量利用现有的网络安全政策,而不是制定新的政策。
我知道在某些情况下,您可能需要创建新的政策,但这仅会在您确认当前政策不适用时发生。
一个好的解决方案是创建一个政策矩阵,如下表所示,您可以在其中将现有的政策与适用的法规进行比对:

图 3.8 – 网络安全政策矩阵
这样的矩阵将帮助您轻松识别需要根据法规变动做出的政策调整,或者确认如果更新政策不会对合规性产生影响。
建立验证合规性的机制
到目前为止,我们已经开发了一个框架,以确保您符合任何给定的规定,但这不是一次性的工作。合规性是需要持续维护的,因此您需要建立机制,确保自己不仅现在合规,而且未来也能保持合规。
用于测试和验证合规性的机制被称为审计。
探索、创建和管理审计
到目前为止,我们已经审查了政策、规定等概念,还有一个非常棒的防御安全策略:深度防御;然而,所有这些政策、系统、策略和控制措施都需要经过测试,以确保它们能够提供所需的结果,并且已经得到实施和遵循。
简单来说,审计是一个测试一组政策、规定或要求合规性水平的过程。
审计可以是内部的或外部的,接下来我们快速看一下两者的区别。
内部网络安全审计
通常,这些审计是由组织设计的,目的是确保其系统、用户和数据符合一系列政策和规定。
大型企业可能会进行公司范围的审计,将数据安全纳入审计内容。
在大多数情况下,企业审计员直接向 C 级管理层报告,以确保其结果尽可能客观。
由于这些审计的可见性,建议您对自己的系统进行内部(部门级)网络安全审计,以确保您的环境是审计准备就绪的。
如下图所示,您可能会有部门级的审计(Wintel 团队;UNIX 团队;IAM 团队),然后是组织级的审计(网络;开发;支持),覆盖这两者将确保您的 IT 部门保持在审计准备就绪状态:

图 3.9 – 内部审计结构
如果您的公司没有进行审计,那么您必须创建自己的安全审计,因为这是确保您的政策和控制措施到位并得到遵循的最佳机制之一。
外部网络安全审计
在许多情况下,公司需要由第三方进行审计,以验证其是否符合某项法律或规定。
也有一些情况,企业可能希望第三方验证网络安全政策是否得到遵循。
提示
你必须确保进行审计的公司不是为你提供某些网络安全服务的公司,因为这样可能会造成利益冲突,并影响审计结果的中立性和客观性。
在某些情况下,第三方会提前宣布审计时间,以便你有时间准备所需的证据(如日志、报告等),但在其他情况下,审计员可能会突然出现,直接检查合规性,要求访问服务器,验证物理访问权限等。
通常,审计结果(称为发现)会提供给 C 级管理层,然后层层下发给你,这突显了始终保持环境随时可审计的重要性。
审计员
关于网络安全审计员是否应该是网络安全专家,存在很大的争论。然而,这取决于审计的目标。
如果首席执行官(CEO)希望基于检查清单进行基本的政策审计,那么我认为没有必要聘请网络安全专业人员。另一方面,如果审计的目标是对组织的数据安全级别进行实际测试,那么我认为网络安全专业人员是必须的。
既然我们已经看过了两种审计类型(内部审计和外部审计),接下来我们来看一下在审计过程中,系统和数据需要如何管理的最佳实践。
审计期间的数据管理
你需要特别注意在审计过程中如何管理数据和系统。
通常建议将基础设施的任何变更—暂停 进行—以避免在审计期间产生影响。此外,在审计过程中有一些特定事项需要考虑,这些事项根据你是审计员还是被审计者(即系统所有者)而有所不同。
作为被审计者
在这种情况下,你将负责提供审计员所需的所有数据和访问权限。
然而,给第三方(甚至是外部人员)提供这种级别的访问权限是非常危险的,因此我整理了以下提示,可能有助于你降低风险:
-
始终在有人接触你的系统和数据之前进行备份。这非常重要,因为它可以让你在审计过程中如果数据意外损坏(或修改/删除)时迅速恢复。
-
在授予审计员访问权限时,请使用最小权限原则(PoLP)。
-
避免为审计目的提供外部访问权限。相反,要求审计员现场进行审计以减少风险。
-
确保遵守数据保留政策,以确保所有必要的日志在审计期间都可以提供。
此外,确保你与人力资源和法律部门确认,确保外部审计员签署所有必要的文档,以减少数据外泄的风险(例如签署保密协议(NDA)、保密条款等)。
作为审计员
审计员有着巨大的责任,因为他们发现的结果可能会带来法律、经济或职业上的后果。因此,作为审计员,你不仅要遵守高标准的道德规范,还要遵循技术标准,以确保所收集的数据没有被篡改。以下是最佳实践:
-
在收集证据时遵循最佳实践。一个好的例子是在提取文件前先对文件进行哈希处理。这样,你可以证明你所拥有的数据没有被篡改。
-
如果你预见到任何利益冲突——例如,与正在审计的公司 CISO 有家庭关系——那么在开始前要提出,避免审计结果受到质疑。
-
有时,你可能会发现一些错误,通过简单地勾选复选框就能解决,但作为审计员,你的工作是报告而不是修复,所以不要掉入应用快速修复的诱惑。
-
记住,你的访问可能会受到监控,因此不要滥用你的访问权限。即使是访问那些在审计中并非严格必要的文件夹或文件,也可能导致你和公司面临罚款或法律诉讼,因此请记住:能力越大,责任越大。
一些公司使用通用审计员来执行所有类型的审计(包括安全审计)。然而,没有基本网络安全知识的审计员可能会忽视某些情况,或者容易被欺骗,因此最佳实践是网络安全审计必须由至少具备基本网络安全知识的审计员进行。
网络安全审计类型
你可以审计几乎任何内容;然而,这并不意味着你要在审计上浪费时间和资源,接下来是网络安全领域中最常见的审计类型列表。
系统审计
这些审计通常旨在测试你的服务器在网络安全政策下的合规性水平。大多数时候,这些审计是按操作系统分段进行的,因此你可能会有针对 Wintel、UNIX、Red Hat 等系统的审计。
根据审计范围,这也可能包括以下内容:IAM(身份和访问管理)、密码和数据保留。
政策审计
这通常是一次广泛的审计,旨在测试公司所有网络安全政策的合规性水平。
IAM 审计
这次审计的目的是确保所有 IAM 流程都与给定的政策或规定保持一致。这可能包括用户的创建、禁用用户、删除用户等。
数据处理审计
这是最复杂的审计之一,因为数据可以与多个因素相关,这些因素可能影响与之相关的法规或政策——例如,数据所有者、数据位置、数据分类、数据用途等等。
国际法规如 HIPAA、PCI 和 GDPR 高度关注数据审计。
网络审计
这通常与渗透测试(pentesting)相关,因为它旨在测试网络的合规性水平,许多时候,您需要进行渗透测试来成功审计网络的合规性水平。
为此目的最常用的工具是Nmap和Wireshark(这两个工具将在第八章,提升您的网络防御技能中介绍)。其他工具—如Nessus、开放漏洞评估系统(OpenVAS)、Acunetix、SolarWinds和ManageEngine—也常用于这些类型的审计。
以下截图显示了 Nessus 界面:

图 3.10 – Nessus 界面
此外,这些工具还可以作为一种低成本、方便的解决方案,用于测试我们的基础设施是否存在特定威胁或漏洞,如Spectre Meltdown,或确定我们是否符合某个特定标准,如 PCI DDS。
物理访问审计
该审计是关于测试所有与物理访问相关的机制和控制,这不仅仅是关于服务器房间的物理访问,而是控制和限制进入公司大楼的所有系统。
实际上,物理安全(我们将在第九章,深入探讨物理安全中深入讨论)必须是防御策略的核心,因为相关的风险(例如,在第二章中审查的通用串行总线(USB)漏洞,管理威胁、漏洞与风险)可能对公司造成灾难性的影响。
此外,入侵者可能会接触到最脆弱的资产——用户,并可能通过与他们交谈获取有价值的信息(我们将在第四章,修补第 8 层中详细了解这种社交工程攻击)。
注
社交网络的最大黑客攻击之一是针对 Twitter 的攻击,攻击者利用社交工程技术对 Twitter 的一些员工进行攻击,成功侵入了排名前 100 的账户(拥有超过 200 万粉丝的影响者)。
代码审计
这些审计可以集中于多个因素,例如:
-
漏洞识别
-
审计代码的功能性
-
审计代码的安全性(确保应用了最佳实践)
-
遵循给定的开发框架(如软件开发生命周期(SDLC)和敏捷开发)
-
一般最佳实践(如注释和缩进)
-
版本管理
-
安全代码库和部署规则
有一种常见的误解认为这些审计是专门应用于软件开发公司的;然而,如果公司修改了他们的某些应用程序,那么代码审计仍然适用。
密码合规性审计
大多数现代系统都具有确保用户密码符合公司政策的工具;然而,一些遗留系统缺乏这种功能,因此可能允许用户选择不合规的密码。
另一个风险是,特权账户(如 root)可能能够绕过这些限制,并在其他用户账户上设置不合规的密码。
此外,设备使用默认密码的风险也存在(这在网络设备和物联网(IoT)设备中非常常见)。
因此,许多公司投资于至少每年一次的系统审查(包括服务器、网络设备、物联网设备等),以确保所有密码都符合当前的密码政策。
什么触发审计?
有几个因素可能会触发审计——例如,外部审计通常非常昂贵,因此只有在像 PCI 这样的法规要求下才会进行。
内部(公司)审计也很昂贵,因为需要投入大量资源,因此这些审计通常由高层管理人员根据预算安排。
现在,你可能会想:是否有一种机制可以让我测试我的环境,既简单又快捷,而且还能让我知道自己在安全方面的现状,并且如何实现下一阶段的目标?
是的——这叫做网络安全成熟度模型。
应用 CMM
CMM 的主要思想是为任何组织提供一个标准化机制,以执行自我评估其网络安全水平。
它们被全球许多组织使用和实施,从大型跨国公司到小型企业,每个组织都可以利用实施 CMM 所带来的所有优势。
CMM 的目标
CMM 是一个很好的工具,可以让网络安全专家实现以下三个目标:
-
通过使用标准化机制,确定给定公司网络安全的水平。
-
根据公司目标(或规定),确定预期的网络安全水平(基于标准化机制)。
-
从第 1 点到第 2 点的明确路径。
一个好的 CMM 的特征
一个好的 CMM 需要具备以下特点:
-
易于实施:我们不想要复杂的国际标准化组织(ISO)系统;我们需要一个可以自我解释并且易于遵循的系统,这样组织就可以利用自己的资源来实施它。
-
全面的网络安全视角:一个好的 CMM 不仅仅是评估服务器和网络,还应该评估所有可能影响整体网络安全态势的组件——例如,人力资源(公司是否有适当的纪律程序?)或供应商(控制项;服务水平协议(SLA);处罚)。
-
可定制:您应该能够根据业务需求轻松调整它。这意味着您可以添加或删除部分,而不会影响评估的最终结果。
-
可扩展:一个好的 CMM 应该能够适用于小公司,也适用于大型跨国公司。
-
可适应性强:它应该能够适应任何行业、任何需求和任何地区。
-
明确定义的等级:CMM 必须在所有领域中具有相同的等级(评分),以确保结果是现实的,并且可以成功地作为基准使用。
有几种 CMM 可供选择——其中一些是专有的(仅供某些公司内部使用);一些是私有的(需要先支付才能查看,我认为这不是一个好主意);还有一些是公开的(这些是最好的,因为通常它们是开放的,并且会收到社区的反馈)。
好的 CMM 结构
一个好的 CMM 必须是模块化的,这样实施它的公司可以添加或删除部分而不影响最终结果——例如,并非所有公司都有开发人员,因此要求没有开发人员的公司填写这些部分仅仅为了完成模型是没有意义的。
领域和控制项
在实施 CMM 时,负责该工作的 IT 人员(假设是分析师)将评估多个被称为控制项的内容。
为了简化实施过程(包括结果分析),这些控制项应该与其他相关控制项进行逻辑分组。这些组称为领域。
如下表所示,一个好的 CMM 评估了其他对您的网络安全策略有直接影响的领域——例如,人力资源(HR):

图 3.11 – ECM2 的领域和控制项
ECM2是模块化的,它包含 14 个领域的全面列表,您可以从中选择与您的组织相关的领域。
成熟度等级
现在,您已经按领域对控制项进行了排序,接下来是评估它们。评估应使用一个清晰定义每个级别的量表。最常见的评估量表有 3 级、5 级和+7 级量表。
3 级量表可能过于简化,提供的评分和改进空间非常有限,因此这不是最好的选择。
另一方面,+7 级量表可能过于复杂,难以评估、分析和报告,而且由于 CMM 的目标之一是易于实施,因此这也不是一个好的选择。
然而,5 级量表被认为是最好的标准,因为它可以让您准确地评估控制或领域,而不必进行不必要的复杂化。
下表展示了所有组件如何在 CMM 的评估页面上汇聚。这是基于企业网络安全成熟度模型(www.ecm2.info),您可以看到使用此模型评估公司网络安全水平将是多么简单:

图 3.12 – 企业网络安全成熟度模型
在这里,您可以看到我们正在评估一个与职责分离相关的控制,该控制属于与网络安全相关的公司组织领域,您需要选择五个级别中真正代表您公司当前实际情况的那个。
结果分析
使用ECM2进行结果分析也是一项非常简单的任务。一旦您完成了对所有相关控制和领域的评估,您将获得三个不同的报告,如下所示:
-
按控制:当您希望在某一领域支持您的预算申请时,这非常有用——例如,缺乏 IAM 系统以及没有系统带来的风险。
-
按领域:这非常容易计算;基本上,领域的等级等于最低控制的级别。例如,如果您的网络安全政策非常好(4 级),但公司缺乏分发它们的计划(0 级),那么网络安全政策领域的整体评级就是 0。这样的结果在帮助您定义需要投资预算的薄弱区域时非常有用(与其让两个控制项处于 4 级,两个处于 1 级,不如让所有控制项都处于 2 级)。
-
按公司:这个结果通常用于向公司高层(C 级)报告整体网络安全水平。同样,这对于证明改善任何领域的预算申请特别有用。
下图展示了公司所展示的结果示例。请注意,您可以多么轻松地确定公司在访问控制和网络安全方面的重投资,同时也能看到一些其他关键组件需要关注,并应在下一个预算中优先考虑:

图 3.13 – ECM2 实施的图形结果
我知道你在想什么,没错:ECM2 的结果是您在请求网络安全预算时可以利用的一个好工具,也可以用来支持您的数字和未来投资。
CMM 的优势
现在,让我总结一下实施 ECM2 的一些额外好处。
以下是管理方面的优势:
-
清晰了解公司/组织在网络安全方面的实际状况。
-
更好地理解网络安全最佳实践。
-
结果可以作为一个很好的基准工具。
-
易于识别网络安全风险。
-
提供对公司风险场景和暴露水平的可见性。
-
支持对网络安全项目的投资。
以下是财务上的优势:
-
帮助你制定更好的(更智能的)网络安全预算
-
帮助你识别需要投资的关键领域,以改善你的网络安全计划
-
帮助你识别网络安全项目的投资回报(ROI)
以下是操作性优势:
-
智能分配网络安全资源
-
提供清晰的指南,以理解网络安全中最脆弱的领域
-
减少与网络安全任务相关的资源和努力的浪费
-
提供更好的理解公司网络安全战略的方式
-
有助于在组织内部推动网络安全文化
小贴士
想了解更多关于 ECM2 的内容吗?如果是,访问www.ecm2.info。
总结
到现在为止,你应该已经了解了拥有网络安全政策和程序的重要性,以及投入时间和资源来创建它们的必要性。
你学习了如何运用 CUDSE 方法来像专家一样创建和管理网络安全政策和程序!然后,你扩展了合规性的知识,并学习了如何实现和管理它。
然而,保持合规需要评估,因此你还扩展了对不同类型审计的知识,并学习了如何应对它们。
但由于审计过程复杂且昂贵,你了解了一种出色的工具,通过实施 ECM2,可以更快速、更简便且更有效地进行网络安全自我评估。
在下一章中,我们将看到一系列系统、工具和技术来应对任何 IT 基础设施中最具挑战性、最复杂和最脆弱的一层:第 8 层,也就是用户层!
进一步阅读
以下是一些额外的资源,你可以用来增加对本章主题的了解:
-
如果你想了解更多关于 CUDSE 方法的信息,或希望为开发未来版本做出贡献,请访问此网站:www.cudse.com
-
想了解更多关于 ECM2 的信息,或探索在未来版本和修订中合作的机会,请访问此网站:www.ecm2.info
第四章:第四章:修补第 8 层
“网络安全措施通常侧重于应对来自组织外部的威胁,而不是来自组织内部不可靠个人的威胁。然而,内部威胁如今对关键基础设施造成了数百万的损失。”
– 里卡多·加佐利 – IT 主管
用户无疑是网络安全中最脆弱的因素。事实上,最近的一项研究显示,超过 50%的攻击是由内部人员引起的,无论是偶然(不小心的用户)还是故意(恶意内部人员)。
一个常见的错误是准备好网络安全专家应对服务器和网络等技术挑战,而没有准备好应对与人为因素相关的所有风险(如不小心的用户和恶意内部人员)。事实上,许多人认为管理用户比处理系统更为复杂,因为最终,你不能仅仅通过修补他们来解决问题!
因此,管理用户是一门艺术;在本章中,我将向您展示所有针对用户的不同攻击方式,以及如何掌握多种技术、方法和工具来防止这些攻击。
在本章中,我们将讨论以下主要内容:
-
理解第 8 层 – 内部威胁
-
精通社会工程学艺术
-
防御社会工程学技术
-
防御社会工程学攻击(修补第 8 层)
理解第 8 层 – 内部威胁
如您所知,用户也被称为第 8 层(这是一种笑话),因为他们位于 7 层 OSI 模型的顶部。
另一种更专业的称呼用户的方法是内部人员。这些内部人员是一个严重的威胁,因为他们已经进入了网络;因此,我们许多用于防止用户访问网络的防御系统和机制将不适用于他们。
现在,我们将讨论在制定网络安全策略时需要考虑的不同类型的用户。
不小心的用户
根据 Ponemon 研究所的一项研究,大约 24%的数据泄露是由于无意的人为错误造成的。我们称这些为无意错误,因为它们通常是用户的失误,而用户并没有故意对数据或系统造成伤害。
许多人认为这些事件很少发生,或者带来的影响很小。然而,正如您在以下图表中看到的,Ponemon 研究所的一项研究显示了一个非常不同的局面:

图 4.1 – 内部威胁的成本
我将总结由不小心用户引起的最常见错误或失误,如下所示:
-
使用弱密码
-
在系统间重复使用密码
-
对个人系统使用相同的密码
-
对网络安全政策的缺乏理解
-
滥用或滥用特权账户
-
未经监控的设备
-
数据处理不当
-
安装未经授权的软件
-
无意中破坏系统
-
粗心的互联网浏览
-
使用免费的或开放的 Wi-Fi
-
“先点击再思考”(即电子邮件附件或链接中的内容)
-
无意中泄露敏感信息
如前所述,这些是无辜的错误,用户并无伤害公司的意图。然而,还有另一类威胁是用户有动机进行攻击,这些用户被称为恶意内部人员,我们接下来将讨论这一点。
恶意内部人员
首先,让我们试着了解是什么类型的动机可能导致员工转变为恶意内部人员:
-
外部攻击者提供数据或执行行动以换取金钱的提议
-
缺乏网络安全法规和公司制裁
-
缺乏控制措施
-
权力集中
-
管理不善
-
绩效评估差
-
与公司政策、战略及同事的分歧
-
裁员
下图展示了恶意内部人员与无意用户在动机上的差异:

图 4.2 – 内部威胁的类型
正如你在图 4.2中看到的,理解这些动机将帮助你与管理层合作,制定策略以防止用户转变为恶意内部人员。此外,实施培训和教育策略将是你防止无意用户犯错的最佳盟友。
如何识别恶意内部人员?
下面是一些行为或行动,可以帮助你在为时已晚之前识别恶意内部人员:
-
下载大量数据(或数据库转储)
-
非工作时间访问系统和信息
-
权限提升
-
在没有业务需求的情况下下载敏感信息
-
未按照既定流程和控制创建账户
-
向未知外部地址上传数据的增加
-
重复请求访问敏感系统或数据
-
请求公司网络安全政策的例外
-
外部存储设备使用增加
-
电子邮件中出现异常附件(无论是附件大小还是文件数量)
-
执行黑客工具的证据或迹象
-
个人设备意外或增加连接到公司网络
如果你认为自己不会遇到恶意内部人员,那么请再想一想。 inc.com 发布的一项研究显示,几乎五分之一的员工愿意将他们的密码卖给外部攻击者,正如你在图 4.3中看到的,他们会以非常低的价格这样做:

图 4.3 – 公司密码的价值
现在你已经知道这是一种严重的威胁,让我们考虑一些可以采取的措施,以减少与这些恶意内部人员相关的风险的概率和影响。
保护你的基础设施免受恶意内部人员的攻击
让我们看看你可以实施的工具、系统和策略,以防范这一威胁。
职责分离
这是你作为防御性安全策略的一部分,必须进行的核心活动之一,且它基于两个主要的行动或活动:
-
第一个是关于识别你基础设施上最关键的任务。在这里,你需要问自己:哪些人类行为(如果由恶意内部人员执行)会对系统和数据造成重大影响?
-
第二步,一旦识别出这些活动,你需要设置控制措施,以确保一个人无法单独执行这些任务。
职责分离的重要性
研究人员一致认为,如果实施职责分离,社交媒体平台(例如 2020 年的 Twitter 黑客事件)可能会避免遭受最大的黑客攻击。
现在,让我们来看一些如何利用并实施此策略的例子。
职责分离的例子
如你在图 4.2中所见,允许系统管理员创建特权账户可能会使恶意内部人员有机会发起危险的攻击。相反,你必须建立一些系统和流程来制定新用户创建流程,这需要多个小组的参与,从而降低攻击的可能性。
在下面的例子中,你可以看到一个流程,在这个流程中,系统管理员必须创建一个包含请求的工单。然后,该请求会发送到审批流程中,批准后会发送到身份管理访问(IAM)团队,以完成该请求。
请注意,通过帮助台过滤所有通信(双向通信)是防止恶意内部人员与负责创建账户的人员直接通信的有效方式,这大大增强了此方法的安全性:

图 4.4 – 职责分离
另一个很好的例子与备份相关,因为恶意内部人员可能知道删除某些文件不会造成任何伤害。因为这些文件可以从备份中恢复,而在这种情况下,他们会针对备份进行攻击,以防止任何恢复尝试。
为了防止这一危险场景,你可以使用职责分离来确保单一用户无法删除这些备份,因为有一个流程来执行该操作(由政策、流程支持,并由系统强制执行)。
邮箱的使用
当实施职责分离时,恶意内部人员可能会试图说服或让他人采取某些行动以帮助实施攻击。
为了避免这种情况,你可以使用邮箱来进行高度敏感团队之间的沟通,比如审批人、帮助台、IAM 团队等。这样可以避免暴露这些职位上人员的身份,防止直接的说服或勒索尝试:

图 4.5 – 使用邮箱
正如你在图 4.5中看到的那样,即使有直接的支持团队沟通渠道(这在小公司中很常见),恶意的内部人员也无法确定是谁在处理请求。
职位轮换
另一种好的做法是 IT 支持人员的职位轮换。这包括制定一项政策,要求 IT 人员定期轮换角色。这需要实施交叉培训、指导和技能发展计划,这些对于 IT 人员也是激励性的。
这一简单的政策为你的防御安全策略带来一些额外的优势,包括以下几点:
-
减少停机风险:你必须确保有经过培训的人,以避免由于缺乏对某项技术的了解而带来的风险。例如,"哦,我们得等到下周,因为玛丽亚不在,她是唯一一个懂 DB2 的人。"
-
减少欺诈风险:当一个人长期停留在同一角色时,他们可能能够掩盖自己的痕迹(如果有非法活动的话)。然而,如果不断轮换他们,就有合理的概率让新的人发现一些“异常”,进而揭露非法活动。
-
减少攻击的影响:通过缩短一个人担任同一职位的时间,也会减少一个人进行非法活动的时间;因此,攻击(对数据和系统的影响)也会降低。
强制休假
这基于与职位轮换相同的原理,并且可以作为检测和制止欺诈的手段。其工作原理非常简单:首先,已知从事欺诈的内部人员往往会因害怕被发现而变得偏执。因此,他们会避免休假,以防有人发现他们的恶意活动。
此外,比较新管理员与之前的管理员(现在正在休假)之间的活动差异也很容易,这可能会揭示恶意活动:

图 4.6 – 通过强制休假检测恶意活动
图 4.6展示了一个场景,其中一个特权用户每周下载超过4GB 的数据(这被视为正常),直到该人被迫休假,带宽使用量下降了超过 400%,这证实该用户从事了未经授权的企业带宽使用。
日志的分析与关联
未处理的数据可能不会触发任何警报,但正如之前示例所展示的,当它得到适当关联时,可能会显示出非常有趣的信息。
日志是一座金矿;不过,你需要深入挖掘才能发现有价值的信息。收集这些信息的最基本方法之一是通过关联用户和系统之间的数据,识别出异常情况。
此外,在进行分析时,你需要确定哪些事件高于或低于平均水平,这些才是你需要进一步调查的对象。
此外,还有许多系统可以自动分析日志。因此,除了给你一些品牌和名称外,我将向你展示那些能帮助你实现这一目标的工具类型,这样你就可以搜索并找到更适合你组织的解决方案。此外,我建议你寻找利用机器学习算法的替代方案,以便提高检测效率并减少误报。
系统如下:
-
行为分析系统
-
威胁情报
-
异常检测
-
预测性警报
然而,我希望你明白,没有这些系统并不是浪费宝贵数据的借口。实际上,我记得有一个非常有趣的场景,通过分析多个日志,我们发现了一名系统管理员非法使用公司资产进行“比特币挖矿”。
我们是如何发现的?
通过简单地检查日志,我们发现多个系统和非生产服务器从晚上 10 点到凌晨 4 点正常开启,唯一目的是进行比特币挖矿。此外,这些日志包含了所需的详细信息,不仅能够识别相关用户,还包含了追究相关处罚和制裁所需的证据。
警报
识别恶意内部人员的另一种有效方法是设置监控,当用户禁用某个网络安全系统时,系统会发出警报。
这一方法在那些为所有员工提供管理员权限的公司中特别有用,因为他们认为可以绕过安全机制(如禁用防病毒软件或防火墙);然而,他们不知道的是,你已经领先了一步。
重要说明
有多种方式可以防止用户禁用某些安全功能;然而,并非所有公司或 IT 部门都具备相应的工具、知识或兴趣去执行这些操作,因此学习如何应对这些场景非常重要。
现在,让我们来看一个在 IT 部门中非常常见的例子,这对于安全来说其实是一个非常糟糕的做法。
共享凭证
默认情况下,最佳实践要求在你的基础设施中不应允许共享凭证。然而,如果确实存在共享凭证的情况,你需要设置额外的控制措施,如多因素认证(MFA)、基于角色的访问控制(RBAC)和特权访问管理(PAM)。
PAM 通过将共享凭证锁定到只能由经过认证的员工账户访问的存储库中(以确保可追溯性)。一旦系统管理员使用了凭证,该凭证会重置,以供下一位员工使用。虽然 PAM 解决了共享账户的问题,但它的实施成本非常高:

图 4.7 – 一个 PAM 系统示例
上述图示为 PAM 系统的示例,展示了每个用户如何登录到一个集中的系统(以确保可追溯性),然后从该系统向服务器注入共享账户。
审计
这一话题已经在第三章《理解政策、程序、合规性与审计》中详细讲解过;然而,我想强调的是,审计是检测恶意内部人员最有效的方式之一,因此请确保你的基础设施定期接受审计(无论是内部审计还是外部审计)。
网络安全政策
如在第三章《理解政策、程序、合规性与审计》中所讨论的那样,政策需要明确界定并传达。此外,这些政策必须包含相应的制裁措施,以应对任何违反行为。这些制裁措施是一个有效的机制,用于劝阻恶意内部人员,这也是确保所有员工都了解你们的网络安全政策如此重要的原因。
我们已经讨论了两种类型的内部人员:无意用户和恶意内部人员。然而,还有一种攻击方式。在这种攻击中,外部人员将利用影响力和心理操控的力量,说服或诱导员工执行一系列旨在破坏系统或收集/修改敏感数据的行为。这种技术被称为社会工程学,我们接下来将讨论这一内容。
掌握社会工程学的艺术
社会工程学是安全领域中最引人入胜的话题之一。事实上,许多专家将社会工程学定义为一门艺术:一种需要高度社交技巧的艺术,使攻击者能够进入受害者的心智,收集个人信息,甚至说服受害者执行有利于攻击者的特定行为。
这就像是黑客攻击人类大脑,读取用户数据或注入指令让人类执行特定操作。
正如我之前提到的,这是一个非常激动人心且重要的话题,因此我会尽量简要总结。
重要提示
作为防御安全领域的专业人士,你必须掌握这一话题,因为你对其运作的理解越深入,你就能越好地防御它。
现在,让我们看看那些旨在欺骗用户的攻击。此外,请记住,尽管并非所有作者都同意将这些攻击归类为社会工程的类型,但事实是,这些攻击与社会工程攻击共享相同的概念和策略。
社会工程周期
攻击者可以使用许多技术来执行社会工程攻击,但这些技术需要按照以下方式进行协调,以提高攻击的效率:
-
信息收集:首先,攻击者将尽可能多地收集关于目标个人或组织的信息。攻击者了解的组织信息越多,成功的机会就越大。例如,攻击者非常关注了解组织结构、流程和程序,以作为下一步的输入。
-
svchostWindows 进程出现在任务管理器中:![图 4.8 – 在 Windows 上运行的 SVCHOST]()
图 4.8 – 在 Windows 上运行的 SVCHOST
当然,攻击者知道这样的过程总是存在的,因此当用户发现它时,这将成为合法化攻击者的方式,从而赢得完全信任,并为下一步铺平道路。
-
影响受害者:在获得用户信任后,攻击者可以操控受害者提供一些机密信息(如用户名和密码)或执行某些操作(如重置密码、打开终端或打开网页)。
-
执行攻击:到此为止,攻击者可能已经获得有效凭证、完全的远程控制计算机权限,并且有多种方式可以执行最终的攻击(例如删除、修改或复制机密数据、访问某个系统等)。
-
抹除痕迹:一旦攻击完成,攻击者可能会想要掩盖自己的痕迹,以避免被发现和起诉,同时保留对系统和数据的长时间访问权限:

图 4.9 – 社会工程生命周期
现在,让我们快速看看攻击者用来成功发起社会工程攻击的一些技术。
社会工程技术
下面是一些攻击者可以使用的技术,以发起社会工程攻击:
-
冒充:攻击者常用的一种技术是冒充他人;例如,冒充具有权威的人、拥有权力的人,或者代表信誉良好的公司或组织的人。
这通常用于获得受害者的信任,以便获取信息或让受害者执行某些操作。
一些最常见的冒充行为包括冒充 IT 人员、政府代表、银行员工或信誉良好的企业。
-
恐惧:攻击者可以利用恐惧来迫使用户遵从某个行为。例如,想象一封邮件内容如下:
"你的电脑已感染病毒,点击这里扫描,以防止电脑被阻止并被公司网络列入黑名单。"
-
互惠原则:攻击者会做一些看似对受害者有利的事情。这样,受害者就容易遵从攻击者的请求(提供某些信息或执行某些操作),以回报这个好意。
-
利用用户贪婪:这将利用人类的基本弱点,例如:
"你赢得了一个邮轮假期,点击这里领取你的奖品!"
-
利用用户好奇心:在这种情况下,攻击者可能会在目标附近丢弃一些恶意 USB 驱动器,希望有员工会捡起来并插入电脑。攻击者可能会在 USB 上贴上标签,如“我的图片”或“机密”,以增加好奇心的程度,从而提高攻击的有效性。
作为一个有趣的事实,大多数资料来源认为Stuxnet(破坏伊朗核计划的病毒)是通过感染的 USB 驱动器传播的。
-
社会验证:另一种策略是使用社会验证来推动受害者。例如,攻击者可能会告诉你,“这已经由其他系统管理员测试过了,” 以给你一种安全感,因为其他人已经进行了类似操作。
-
技术验证:攻击者可以使用技术术语来混淆受害者。通常,这与其他技巧(如紧迫感和恐惧)结合使用。图 4.8 是这种技巧应用的一个很好的例子。
-
权威人物:攻击者可能会冒充权威人物来迫使你遵从某个要求。在某些情况下,攻击者可能不会冒充那个人,而是声称他们是在代表权威人物行动。例如,"如果你不安装此软件,将会提交给佐藤先生处理。" 请注意,在这个例子中,他们使用了名字(佐藤先生)而不是头衔(首席执行官),这是一种攻击者使用的技巧。
-
稀缺性:在这种情况下,攻击者会让受害者认为,如果不迅速采取行动,用户(受害者)可能会失去一个潜在的奖励。例如,假设收到一封来自 IT 部门的电子邮件,内容如下:
"我们有 20 台新的 MacBook 用来升级旧电脑;点击这里填写表格。记住只有 20 台笔记本电脑,并且它们将提供给前 20 个完成表格的人(先到先得)。"
-
紧迫感:这种经典骗局可能会这样说:
"如果你在 30 分钟内不重置密码,你的电脑将被从网络中封锁。"
"你的电脑已感染病毒,点击这里立即处理,以免信息被盗。"
图 4.10 描述了社交工程攻击的整个流程以及攻击者使用的策略:

图 4.10 – 一个社交工程攻击示例
到目前为止,你已经了解了攻击的流程和攻击者用来获得用户信任并执行攻击的技巧。
现在,到了我们了解最常见的社交工程攻击类型的时刻,这些攻击中使用了这些技巧。
社交工程攻击的类型
在这里,我将总结一些基于社交工程技巧的最常见攻击。
网络钓鱼(Phishing)
正如你可能已经知道的,这个概念非常简单。攻击者会发送一封伪造的邮件,试图冒充一个有信誉的人或公司。为了增加成功的几率,攻击者会首先试图说服受害者邮件是合法的(通过使用公司标志或冒充电子邮件账户或域名),然后请求用户采取某些行动,通常是访问一个链接或打开附件中的 PDF 文件。
接下来,让我们看看一些示例。
每个人都梦想着免费的钱,而攻击者知道这一点。为了利用人类这种欲望,攻击者会冒充一家想要转账给你的公司,但声称因为号码错误未能成功转账。然后,为了能获得这笔钱,你只需打开一个无害的 PDF 文件,当然,这个文件里面会包含各种病毒,从键盘记录器到致命的勒索病毒。
在图 4.11中,我们突出显示了常见的攻击特征,帮助你识别这些类型的攻击:

图 4.11 – 一个“免费钱”网络钓鱼示例
现在,几乎每个人都在网上购物,你期待收到包裹的概率非常高,因此攻击者利用这一点,毫不犹豫地发送这些钓鱼邮件,希望任何正在期待真正包裹的人都会掉入陷阱。
如图 4.12所示,攻击者会冒充一个著名的快递公司,但仍然有几个项目可以帮助你确认这是一封钓鱼邮件。
第一个(看起来很明显)特征是地址来自 Hotmail。
第二个特征是你的电子邮件没有列在收件人字段中。
第三个特征是使用了通用的问候语。不过,最重要的一点是关于链接的。
在这里,你可以将鼠标悬停在链接上,查看它指向的地址。在这个示例中,很明显这个链接并没有指向真正的 DHL 域名:

图 4.12 – 一个包裹递送的钓鱼邮件示例
正如你所知道的,攻击手段通常会随着防御机制的进化而演变,所以,让我们来看看一些从钓鱼攻击中演变出来的社交工程变种。
短信钓鱼(SMishing)
这个攻击与钓鱼攻击有相同的特征,唯一的区别是它是通过短消息服务(SMS)进行分发的。
虽然这听起来像是一个小小的变化,但这实际上是最危险的攻击途径之一,因为用户通常不会将旧短信与病毒联系在一起,所以他们往往信任这些信息并陷入陷阱。如果贵公司有自带设备(BYOD)政策,那么你必须执行以下操作:
教育用户了解这种类型的威胁。
禁用短信中的超链接功能。
现在,让我们看一下图 4.13,向你展示如何轻松识别这些威胁:

图 4.13 – 一种 SMishing 攻击示例
-
大多数时候,攻击者会使用一个容易识别和屏蔽的随机号码。然而,在更精心设计的攻击中,攻击者可能会使用一些工具(如BurnerApp和SpoofCard)来伪造来电显示,冒充更可信的号码。
-
另一个共同的因素是紧迫感,促使受害者执行请求的操作。
-
另一个共同的因素是利用恐惧,让用户相信如果不执行请求的操作,某些坏事就会发生。
-
如前所述,这里的主要攻击途径是将受害者引导到一个恶意网站,该网站可能会窃取你的凭证、感染你的设备或两者兼有。
-
在一种可能的场景中,攻击者会购买一个看起来像原始域名的域名;然而,在其他情况下,攻击者会使用链接缩短器来掩盖网站名称。
网络钓鱼
这是一种定向攻击,攻击者首先对受害者和公司进行深入的研究。然后,攻击者会利用所有这些知识创建一个定制化的钓鱼攻击。
通常,这些类型的攻击是针对高价值目标,如管理人员、财务人员或系统管理员(因为他们的管理凭证具有较高的价值)。
现在,让我们分析一个真实的网络钓鱼攻击示例(如图 4.14所示):

图 4.14 – 一种网络钓鱼攻击示例
从之前的截图中,我们可以解读出以下内容:
-
大多数时候,攻击者会使用一个非常相似的域名来欺骗受害者。正如你所看到的,在这个例子中,在更精心设计的攻击中,网站可能看起来合法。然而,如果你仔细观察,你会发现公司名称只是攻击者域名的一个子域。
-
攻击者使用一个引人注目的主题,但也带有一些紧迫感(以防攻击被发现)。
-
邮件将通过使用真实姓名和职称来正确地发送给受害者(在某些情况下,攻击者甚至会使用昵称来减少怀疑,使其听起来更熟悉)。
-
将使用一个诱饵来吸引受害者的注意,并说服他们打开恶意文件。
-
使用了紧迫感,促使用户执行请求的操作(例如,打开附件),而无需与管理层或其他员工进一步确认,这样他们可以识别出这可能是一次潜在的攻击。
-
再次,貌似无害的 PDF 将是攻击者最终执行攻击的入口(例如,安装特定的勒索病毒、打开后门或安装键盘记录器)。
电话钓鱼
也称为电话引诱或电话诈骗,电话钓鱼是一种基于攻击者与受害者之间电话对话的网络钓鱼攻击,攻击者试图说服受害者执行一系列操作或不小心透露某些机密信息。
从攻击者的角度来看,这是最复杂的攻击之一,因为它要求攻击者掌握我们之前提到的大部分社会工程学概念。
然而,攻击者也可以增强一些这些技巧,以确保受害者的配合。例如,攻击者可以打电话给帮助台,要求重置密码,并请求客服代表通过电话提供密码。如果客服拒绝请求,攻击者可以威胁客服代表称他们即将签署一笔价值数百万的交易,如果不提供密码,交易将无法完成,客服代表将承担责任。这个简单的伎俩确认了为什么这种攻击是经验丰富的社会工程师首选的机制。
网络钓鱼数据
网络钓鱼是最常见的社会工程攻击类型。事实上,Verizon 2019 年数据泄露调查报告显示,超过 30% 的已确认数据泄露与网络钓鱼攻击相关。另一方面,电话钓鱼攻击的全球损失估计为 460 亿美元。
正如你所看到的,攻击者擅长找到新的、巧妙的方式来扩展或演变他们的攻击,因此你必须保持最新,以揭示可能影响员工的任何新的潜在网络钓鱼变种。
恐吓软件
恐吓软件基于欺骗受害者,使其认为计算机已感染病毒,而实际上计算机是正常的。攻击者的目的是说服受害者安装杀毒软件来删除这些病毒,但杀毒软件是假的。
这种攻击有两种主要变种。第一种是基于“免费杀毒软件”,但实际上这是一种病毒,“为其他病毒打开了大门”。
另一种变种是基于向你出售“杀毒软件”,该软件声称“移除”一些根本不存在的病毒(因此,它本质上是诈骗)。
通常,这种攻击会以几种方式出现,例如:
-
来自恶意网站的弹窗
-
一个合法网站的附加组件(例如,YouTube)
-
一个将在 Windows 启动时执行的脚本
-
一个假的杀毒程序:

图 4.15 – 恐吓软件示例
这种类型的威胁在几年前非常流行(也就是在 Windows XP 时代);然而,现如今,它们已经不那么常见,尽管如此,依然具有危险性。
然而,近年来,这种威胁似乎转移到了另一个平台,现在它们开始针对智能手机用户。
如你在图 4.16中所见,攻击非常相似。为了防止这种情况,Play 商店不断封禁这些应用程序;然而,它们总是以另一种名称重新出现:

图 4.16 – 智能手机上的恐吓软件
防止这种威胁出现在公司工作站上的一种方法是限制安装第三方应用程序的权限(这是我们将在防御社交工程攻击部分中讨论的主题)。这种限制也适用于智能手机,且必须强制执行,如果公司允许员工使用智能手机访问其系统(BYOD 政策)。
实现这一目标的一个好方法是利用Android Business,它使公司能够创建一个虚拟环境,在该环境中,企业可以应用更多的控制措施来保护数据,并控制谁可以访问他们的网络、系统和数据。
更多信息,请访问他们的官方网站 www.android.com/enterprise/。
此外,部署广告拦截器是一个不错的主意。这可以在三个层面上进行:
-
本地工作站上
-
使用公司防火墙
-
使用 DNS
创建你自己的 DNS 广告拦截器
在第十章,应用物联网安全中,我将向你展示如何使用树莓派以不到 50 美元的成本创建你自己的广告拦截器DNS。
尽管恐吓软件在以前版本的 Windows 中非常流行,但这种攻击仍然与保护你的基础设施相关,且同样关乎保护人们的财产。
诱饵攻击
这主要是一种攻击者用来利用受害者好奇心并将其引入陷阱的技术。在这种情况下,攻击者的主要目标是让受害者访问一个虚假或伪造的网页,打开一个被感染的文件,在假页面上提供他们的凭证,或者下载木马病毒。
以下图表展示了一些诱饵攻击的例子:

图 4.17 – 常见诱饵攻击示例
还有一个子类型,称为点击诱饵,它主要集中在呈现非常有趣的虚假新闻,目的是希望用户点击。大多数情况下,点击诱饵用于生成流量或通过广告赚取收入;然而,也有一些情况,它们被用来通过恶意软件感染系统。
肩窥
这听起来可能很基础,但许多信息就是通过这种简单的方法泄露的。本质上,它涉及到站在受害者身后,收集敏感信息,如用户名、密码等。
通常这种行为是由外部人员进行的,因此建立一个强有力的物理安全系统对于防止这种攻击至关重要。
对于经常出差的员工,另一个建议是使用隐私屏幕,以防止他人窥视你的屏幕。此外,使用密码库也能降低这一风险,因为密码不需要输入,因此也不会有泄露的风险。
尾随攻击(Tailgating)
既然我们提到了物理安全,那么现在就该谈谈尾随攻击(tailgating)。
这是攻击者用来获得对受限区域物理访问权限的最常见方法之一。
在这种情况下,攻击者会利用人类具有的礼貌或友好特征,在你身后的人进门时保持门打开。
攻击者非常有创意,很多时候,他们会拿着一个大披萨盒子或几杯美味的咖啡,作为不使用证件进入大楼的借口,希望一个“好人”(也就是一个无意的用户)帮忙为他们开门。
除了用户培训的应用之外,抵御这种类型威胁的最佳方式是使用额外的验证机制,如摄像头来检测外部人员。事实上,现在摄像头可以通过其他机制来检测外部人员,超越了人脸识别。这些机制包括运动模式、用户计数(如果两个人进入,但系统只读取了一个证件)、分析(基于不寻常路径的检测)等。
垃圾桶潜水
最著名的黑客之一,凯文·米特尼克,实际上是第一个出现在 FBI 通缉名单上的黑客,他让这一战术变得广为人知(这一点在他的书中有很好的解释)。
他评论道,他通过简单地在公司垃圾桶中寻找未碎纸的机密文件,获得了大量的信息。在某些情况下,攻击者可能会幸运地找到敏感信息,例如用户凭证;但在其他情况下,攻击者会利用这些信息收集关于公司的重要资料,这些资料可以成功地用来执行其他攻击(例如冒充)。
为了避免这种攻击,你必须制定数据分类和管理政策,明确规定以下内容:
-
不同类型的文档(如敏感、机密、公开等)
-
每种文档类型的适当处置方式
-
物理文档的适当处置方式(例如笔记、书籍、便签等)
当用户在办公室时,这些政策更容易执行。然而,随着越来越多的用户现在在家工作,你必须采取额外的机制来确保这些政策得到遵守,并且你的用户拥有适当的工具来执行这些政策。例如,向有敏感信息的用户提供碎纸机,或者限制在家打印敏感文件。
权衡交换
这是一种非常有趣的攻击,攻击者免费为受害者提供一些好处。
一个经典的例子是,攻击者冒充与某个开放工单相关的 IT 人员打电话给某公司的员工。正如您在以下示例中看到的那样,受害者很可能会“利用”电话来解决问题,而实际上,是攻击者会利用他们:

图 4.18 – 一种交换攻击
防止这种攻击的最佳方法是实施(并传达)一项关于 IT 支持的政策,该政策包括以下内容:
-
IT 绝不会从外部或阻止显示的号码给您打电话(如果可能的话,请为所有 IT 呼叫分配一个友好的号码,如 114)。
-
IT 人员绝对不会要求您的密码。
-
永远不要通过电话、电子邮件或短信提供您的密码:绝对不要。
另一个好主意是建立一个双向验证回拨机制。这意味着如果用户接到 IT 的电话,则用户必须回拨(使用官方帮助台号码)。此回拨将作为 IT 人员和员工的第二验证方法。
社交媒体勒索
这是正在发生的最新攻击之一。在这种攻击中,攻击者将应用多种技术来访问公司的社交网络(即 Facebook、Instagram 和 WhatsApp)。攻击者将确保他们更改所有恢复帐户的机制,因此尽管您可以联系社交媒体公司恢复访问,但您的攻击者在问题解决之前将可以访问帐户,这可能需要几个小时甚至几天。攻击者知道许多公司不会冒险将其社交帐户留在攻击者控制之下(因为这会损害品牌、客户和关注者),因此攻击者要求支付一些费用(通常是比特币)才会将帐户归还给您的公司。
这里有一些防止这种危险攻击的建议:
-
始终使用多因素身份验证。
-
使用强密码。这些类型的帐户应该由密码保险库管理,那么为什么要羞怯呢?使用最大长度,使用特殊字符,并使其免受字典或暴力攻击。
-
确保每个密码都是唯一的。
-
经常更改密码(至少每 3 个月一次)。这将由密码管理器管理,所需的工作仅仅是每年两次点击四次。
-
将访问这些帐户的人数减到最低,以降低风险。
此外,确保管理这些帐户的人员(如社交媒体经理)在网络安全方面接受了良好的培训(以防止这些类型的攻击)。
敲诈
在这种情况下,攻击者会试图说服受害者他们的电脑或智能手机被黑客入侵,并且如果在 10 小时内不满足攻击者的要求,某些私人或敏感信息将会被公开(当然,他们会利用紧迫感战术)。
正如你在图 4.19中看到的,一种方法是告诉受害者他们的电脑被黑了,并且为了证明这一点,攻击者会在邮件中粘贴受害者的密码:

图 4.19 – 一封敲诈邮件
如果攻击者知道密码,这是否意味着他们真的入侵了受害者的账户?
绝对不是!
在这种情况下,攻击者利用之前数据泄露中的信息,寻找电子邮件/密码配对,并将其用于攻击。
因此,虽然大多数时候提供的密码是旧密码,受害者会认出这是他们的密码,因此很可能会陷入这一骗局。
防止这种攻击的最佳方法是发起一项活动,向员工解释攻击者如何获取你的旧密码。你可以采取以下措施:
-
简要解释什么是数据泄露,并提供一些最近大公司数据泄露的例子(例如,LinkedIn 的数据泄露、Yahoo 的数据泄露等)。
-
请他们检查是否在这些泄露事件中,自己的账户信息被泄露。有几个网站可以进行检查,但并非所有网站都可信。如图 4.19所示,最受信任/使用最广泛的网站之一是
haveibeenpwned.com/。该网站会显示你的电子邮件出现在什么数据泄露事件中,帮助你进一步保护这些账户。 -
如果账户出现在已知的数据泄露事件中,请提供一份行动清单,例如,修改密码,确保永不使用相似或变种密码,启用多因素认证(MFA),或者删除账户(如果不再使用):

图 4.20 – 一个检查泄露凭证的网站
到目前为止,你应该已经了解了社交工程攻击中使用的策略,以及最常见的攻击类型。
我们已经介绍了一些防御技术,现在是时候学习适用于所有此类攻击的额外最佳实践,这些最佳实践将帮助你减少与这些威胁相关的风险。
防御社交工程攻击(修补第 8 层)
“公司在防火墙、加密和安全接入设备上花费数百万美元,而这笔钱是浪费的,因为这些措施并没有解决安全链中最弱的一环:使用、管理、操作和负责包含受保护信息的计算机系统的人。”
– 凯文·米特尼克
让我们学习如何有效地保护公司免受这些威胁。
制定你的培训策略
如你所知,修补是防御性安全策略中最重要的策略之一,这个策略同样可以通过教育和培训应用于人。因此,你必须投入时间和其他资源,以确保拥有强有力的培训策略。
让我们来看一下在制定培训策略时需要考虑的关键点:
-
根据公司文化、威胁环境以及公司所管理的数据类型进行个性化定制。
-
对于小型公司,可以创建一个培训课程覆盖所有员工;然而,中型到大型公司和企业必须有不同类型的定制培训。这些培训可以根据员工类型、组织级别、管理的数据或数据访问权限进行划分。
-
定义交付方式(例如,现场培训、网络研讨会、视频、动画、基于网页的互动学习等)。
-
定义培训的频率。
-
定义“通过”培训的成功标准,例如,在最终评估中得分至少为 80%。
-
定义一个奖励机制;例如,提供一个可以分享到社交媒体的数字徽章。
-
获得人力资源部门和高级管理层的支持,使培训成为强制性的。
提示
使培训尽可能互动,使用最新的真实案例,涵盖所有内容(不要假设某个话题过于基础而不包含在内),并以我们刚刚回顾的攻击列表为基础,确保覆盖所有主要攻击向量。
你需要说服高层管理人员,公司在网络安全教育上的支出不是花费,而是投资于保障最脆弱的网络安全因素。
管理员权限
这是一个有争议的话题,因为关于是否为所有员工提供管理员权限是否为良好实践尚无共识。然而,从安全角度来看,毫无疑问,为所有员工提供管理员权限会增加你的威胁面。
因此,你应该始终推动避免为所有用户提供管理员权限;然而,如果公司决定为所有员工授予管理员权限,那么你需要采取以下对策:
-
定义一个明确的软件安装政策。
-
创建可安装应用程序的白名单和黑名单。
-
如果可能,创建一个存储白名单软件的仓库(这样可以减少用户安装被破解版本软件的风险)。
-
如果在公司工作站上安装了黑名单软件,请设置警报。
实施强有力的 BYOD 政策
如果允许员工使用个人设备工作,请确保制定强有力的 BYOD 政策。
此外,这项政策必须得到系统和软件的支持,以便强制执行。
执行随机的社会工程学攻击活动
评估用户对社交工程攻击的准备程度或暴露程度的最佳方法是通过实际控制的攻击来测试他们。
以下是你可以采取的方法:
-
设置你的环境:购买一个你将用来发起攻击的域名。寻找与真正的攻击者可能使用的名字相似的域名,例如 support-companyname.com。
-
每个周期测试一次攻击:首先,你需要定义周期,例如每三个月、六个月或一年。例如,2020 年初进行钓鱼攻击,2020 年底进行诱饵攻击,2021 年初进行交换条件攻击,2021 年底进行勒索攻击。
-
分析结果:这并非要追究员工的责任并把他们列入“耻辱榜”。而是要收集情报,以便为未来的培训和教育确定改进的领域。
-
设置奖励:你可以为那些发现攻击并通过正确渠道向网络安全团队报告的员工设置奖励系统。
奖励不总是与金钱相关
你还可以利用免费的福利,比如数字徽章、名人墙、月度最佳安全员工(你可能想用更吸引人的名字,比如“网络安全摇滚明星”)、一个月的优先停车位等。
-
公告和沟通:你可能不希望通过提前通知来破坏评估的效果。然而,在评估结束后发送一份通知是个好主意,这样大家就能了解到这些类型的活动,也能分享一些相关的数字(例如,有多少人受到了攻击,潜在的损失等)。
为了避免服务中断,我们建议将这些活动推广给随机选中的一部分员工(根据公司的规模,这个比例可能是 10%到 60%的员工)。此外,你还需要确保这些随机选中的员工包括公司各个部门的人员(例如,人力资源、销售和 IT)。
总结
在本章中,你学习了关于用户的所有内容,包括他们如何影响你的防御性安全策略,他们的漏洞,以及针对他们的各种攻击方式,同时也包括你可以采取的所有策略来减少这些风险。
本章极为重要,因为通过保护这一攻击向量,你将大幅度减少针对你的基础设施、系统和数据的攻击范围。
现在,准备好迎接下一个激动人心的章节,在这个章节中我们将深入探讨更多技术性的内容。在接下来的章节中,你将学习到最佳的渗透测试工具、取证技术、网络技术以及其他许多你需要掌握的技术,以便制定最佳的防御性安全策略。
进一步阅读
这是《2020 年内部威胁的成本》的完整报告:
www.ibm.com/security/digital-assets/services/cost-of-insider-threats/#/。
第五章:第五章: 网络安全技术与工具
“数字化转型提供了巨大的机会,可以降低成本并提高生产力,但如果在没有加强防御安全的情况下进行,可能会导致灾难。”
– Roberto Sasso – 技术研究俱乐部创始人兼主席
网络安全工具成千上万,仅仅了解它们的基础就需要几百年,因此为了节省宝贵的时间,我们将为你提供一些关于最佳网络安全系统、方法、技术和工具的见解,帮助你充分利用它们。
此外,我们还将回顾一个必备硬件设备,帮助你将安全意识提升到一个新的高度。
此外,你将更好地理解什么是高级持续性威胁(APT),如何防范它们,并且如何利用威胁情报保持领先于犯罪分子。
最后,你将理解批判性思维在网络安全中的重要性,并通过一个真实案例,了解网络安全威胁如何转化为 IT 解决方案。
在本章中,我们将讨论以下主题:
-
网络安全的网络工具和技术
-
渗透测试工具和方法
-
应用法医工具和方法
-
应对 APT
-
利用安全威胁情报
-
将威胁转化为解决方案
技术要求
为了充分利用本章内容,你需要安装 Kali Linux。这样,你就可以使用我们将要概述的工具。Kali Linux 非常轻量,因此几乎可以在任何一台带有互联网连接的旧电脑上安装。
另一种选择是使用虚拟机,但在这种情况下,你可能需要调整一些设置(特别是网络设置),以确保所有工具按预期工作。
所有图像,包括虚拟机的预构建虚拟图像,都可以在这里找到:www.kali.org/downloads/。
我们还将回顾卓越的WiFi Pineapple,拥有它将帮助你将本章的经验和知识提升到一个新的水平。
想了解更多关于这个必备渗透测试工具的信息,请访问shop.hak5.org/products/wifi-pineapple。
网络安全的高级无线工具
作为防御安全的专家,我们需要了解并理解最新工具的工作原理。无论它们是作为进攻性工具开发的,你都需要学会如何利用它们。让我们从一些最新和最酷的无线工具开始了解。
防御无线攻击
无线网络是目前最常用的连接方式,因此它们成为了网络犯罪分子的主要目标。因此,你需要领先一步,确保无线安全是你网络安全战略的核心部分。
在第八章《增强网络防御技能》中,有一个完整的部分专门讲解网络工具。然而,在这里,我们将看看一些在无线攻击中最重要的工具,以便你能领先于攻击者,并据此规划你的防御策略。
无所不能的 WiFi Pineapple
这是审计 Wi-Fi 网络时必备的工具。这个工具由Hak5在 2008 年创建,可能是全球最知名的硬件渗透测试工具——也许是因为这个小盒子的强大功能,易用性,或者它在单一设备上包含的各种工具。
提示
Hak5 的天才们投入了大量精力,不断更新这个工具以跟上最新的 Wi-Fi 审计工具(例如,MarkV 收到了 22 次固件更新)。然而,到了某个阶段,硬件必须升级才能包括新的工具(并在速度、范围等方面改善现有工具)。因此,考虑到 WiFi Pineapple 的多个版本,我们决定尽量使本节内容通用,以尽可能涵盖大多数 WiFi Pineapple 版本中可用的工具。
现在,让我们来看看这个神奇工具的一些功能。
恶意接入点
你是否曾注意到,当你第一次连接到你喜欢的咖啡馆的无线网络后,你的智能手机会自动连接到该咖啡馆的无线网络?
这个功能本是为了改善用户体验,但它也带来了严重的安全漏洞。
为了利用这个漏洞,攻击者需要模仿其中一个受信任的 Wi-Fi 接入点(AP),让受害者的设备自动连接到它。但问题是,攻击者如何知道受害者设备上受信任网络的名称呢?好吧,聪明的攻击就在这里开始了。
首先,让我们看看这个攻击背后的理论和概念。
当你的设备(如笔记本电脑、智能手机等)打开 Wi-Fi 并且没有连接到任何网络时,它会广播探针请求帧(PRFs),其中包含设备信任的 SSID 列表。这些帧会被 AP 捕获,AP 会查看这些帧,并检查其 SSID 是否在列表中;如果在,它就会启动连接过程:

图 5.1 – 探针请求/响应结构
这个设备的魔力(或恶意)在于,它利用了探针请求没有加密的事实,捕获这些请求并读取受信任和开放的 SSID 列表。
然后,设备会自动创建一个开放的 AP(没有密码),并使用一个受信任且开放的 SSID 名称。此时,受害者的设备将立即连接到该 AP。
现在,受害者的设备已经连接到恶意接入点,攻击者可以执行多种攻击,包括著名的中间人攻击,这一点将在第八章中详细讨论,增强你的网络防御技能。
提示
记住,你对将要被用来攻击你的工具了解得越多,你就越能做好准备,减少这些攻击的概率和影响。
让我们稍作停顿,思考一下这种攻击的危险,并分析你如何利用这些信息来支持你的防御安全策略。
你可以通过更新两项政策来降低这种风险的可能性:BYOD 政策和网络政策。在这种情况下,只需要确保包含以下内容:
旅行时必须关闭 Wi-Fi,仅在安全地点(如办公室、家中、安全的酒店连接等)启用 Wi-Fi。
正如我们在第四章中看到的,修补第 8 层,培训是防御安全中最基础和有效的工具之一,你可以利用像WiFi Pineapple这样的优秀工具使你的培训更具吸引力,同时提高对这种攻击潜在影响的意识。
提示
你可以通过每年开展安全活动来提高意识,例如网络安全周。在这里,你可以利用这个酷炫的工具展示那些攻击向量是现实的、易于实施的,并且对你的个人和职业数据、系统以及设备造成毁灭性影响。
此外,请记住,大多数用户认为这种类型的攻击不会发生在他们身上(因为它看起来太复杂了),但是当他们看到这种攻击是多么容易实施时,他们会更愿意接受你所制定的任何政策或策略来防范这种攻击,从而将你的用户从面临网络安全威胁的状态转变为防御安全的代理人。
识别你基础设施中的未授权接入点(AP)。
WiFi Pineapple 有一个非常酷的模块,叫做Recon。这是一个非常简洁的界面,让你看到看不见的东西。因为它会展示你关于你基础设施中的 Wi-Fi(AP 和设备)正在发生的事情的信息。
让我们来探索你可以在这里收集到的宝贵信息:
-
关于 SSID 的信息(广播或隐藏)。
-
接入点(AP)的 MAC 地址。
-
安全类型(WPA、WPE、混合模式等)。
-
关于是否启用了 WPS 的信息。
-
接入点(AP)使用的 Wi-Fi 频道。
-
信号强度。
-
每个接入点(AP)连接的客户端。
-
客户端信息,包括 MAC 地址和制造商名称(通过动态分析 MAC 地址的前三个八位字节获取)。
-
你还可以发现那些未连接到任何接入点的客户端(包括物联网设备、扬声器、摄像头等)。
现在,你可以利用所有这些数据执行以下防御措施:
-
检测未授权的接入点(AP)。
-
检测伪造的 AP(通过隐藏 SSID 混淆)。
-
检测违反网络安全策略的行为,这些行为涉及 AP 所需的安全性。
-
检测脆弱的 AP(如安全类型弱或启用了 WPS)。
-
检测由于饱和或特定 Wi-Fi 通道的利用导致的性能问题或来自其他系统的干扰。
-
确定因设备连接到不应连接的 AP 或连接了未经授权设备的 AP 而产生的漏洞。
-
检测另一个 WiFi Pineapple 执行的潜在攻击。
-
检测你基础设施中未经授权的设备。
提示
正如本节所示,你可以利用这款设备创建你自己的低成本 Wi-Fi 监控工具,根据你的需求进行定制,并迅速部署。
此外,您可以对这些 AP 点执行一些操作,包括以下内容:
-
将 SSID 添加到 PineAP 池:这将使 WiFi Pineapple 开始模仿所选的 SSID。如前所述,这是一个很棒的工具,你可以在活动中利用它来 提高意识,展示攻击者如何轻松地执行这种攻击,因此需要遵循相关政策、方法、系统和工具来防止此类攻击。
-
将 SSID 或客户端添加到过滤器:在执行 渗透测试 或 审计 时,这非常有用,确保只有一组选定的设备或 AP 能够连接到你的 WiFi Pineapple。
-
802.11协议。它通过假装是 AP,并向已连接的设备发送命令,让它们立即断开与 AP 的连接。这在你需要让所有设备立即断开与特定 AP 的连接时非常有用。在这种情况下,你可以通过点击鼠标轻松完成,而不是逐一寻找每个设备的拥有者并要求他们断开连接,从而减少暴露于潜在威胁的时间。
-
捕获 WPA 握手:这是另一个很棒的工具,可以帮助在网络安全研讨会上提高意识,展示攻击者是如何执行攻击的。
提示
人们不信任他们看不见的东西,这一点在安全领域尤为适用。很多人对那些他们从未看到的攻击并不在意,因为这些攻击看起来遥远、不相关或不可能。因此,向他们展示攻击是如何执行的以及攻击者执行这些攻击的简单性,是提高意识的最佳方式,同时也能提升整个组织的网络安全水平。
关于 WiFi Pineapple 模块的另一个酷炫功能是,它们的 GUI 可以配置且具有响应性,因此你可以使用 GUI 并通过智能手机随时管理你的 Wi-Fi 监控工具!
-
附加功能:WiFi Pineapple Mark VII 具有一个非常酷的功能,可以让我们使用 3D 地图可视化数据,您可以以一种非常酷的方式直观地看到 AP 和已连接的设备:

图 5.2 – WiFi Pineapple Mark VII 的 3D 地图可视化
这是版本1.0.0的一个特性,虽然被认为是实验性的,但预计在即将发布的版本中会增加一些额外的选项和功能,请保持关注!
其他 Pineapple 审计和测试工具
你想测试你的用户对 Wi-Fi 攻击的脆弱性吗?或者你也许想测试你的用户是否理解了你精心设计的网络安全培训?
无论如何,你可以利用PineAP创建一个虚假的 SSID,取一个吸引眼球的名字,比如Free Wi-Fi, Free Game,然后观察哪些设备掉进陷阱并连接上去。
提示
除了对公司和企业来说是一个很好的工具外,咨询师也可以利用它向用户展示其漏洞,并为多种网络安全服务打开大门(如培训、制定防御安全策略等)。
你也是开发者吗?如果是的话,我们应该看看如何通过新功能提升 WiFi Pineapple。
扩展设备的功能
你可以通过这个硬件做很多事情,因此 WiFi Pineapple 的创作者决定开放他们的设备进行社区协作,以便你作为用户,可以利用这些模块并通过几次点击将它们添加到你的设备中:

图 5.3 – 向 WiFi Pineapple Mark VII 添加社区模块
如果你是开发者,我建议你访问这个链接,因为通过为 WiFi Pineapple 开发模块,你可以获得很多福利:shop.hak5.org/pages/developer-program。
现在你了解了这些强大的 Wi-Fi 工具(硬件和软件),是时候继续探讨另一个令人兴奋的话题:渗透测试。
渗透测试工具和方法
许多人误以为渗透测试 = 网络测试,这是一个巨大的错误。
作为防御安全的专家,你需要以整体的方式推动你的防御策略,涵盖所有可能影响你基础设施的参与者、因素和行动。
因此,在本节中,我们将探讨你需要利用的所有不同工具和方法,以创建最全面、最强大的网络安全策略。
Metasploit 框架
Metasploit 被认为是一个利用框架,这意味着它是一套强大的工具和实用程序包,你可以利用它来测试你的基础设施。
它包括多种工具,可用于以下目的:
-
信息收集(被动和主动)
-
漏洞扫描
-
利用
-
后渗透
-
还有许多其他附加模块,包括一些帮助攻击者掩盖痕迹的模块
本书的目的是不专注于攻击部分,但了解这个工具的基础知识对你来说会非常有价值。因此,我们将在第十五章中详细介绍这一部分,利用渗透测试进行防御性安全。
社会工程工具包
这是一个非常强大的工具包,主要被攻击者使用;然而,你也可以利用这个工具来开发以下内容:
-
意识提升活动。
-
改进的培训。
-
真实的实验室。
-
评估用户对特定攻击的易受攻击性。
提示
如前所述,展示员工对某一攻击的易受攻击性(例如,证明 60%的员工将他们的凭证输入到一个假页面上)是获得高层管理支持和预算的好方法。
如下截图所示,社会工程工具包(SET)是一个一体化工具包,包含了你创建真实而引人入胜的意识提升活动所需的所有工具:

图 5.4 – 社会工程工具包 (SET) 的主菜单
现在,让我们来看一下这些工具的最重要方面:
-
钓鱼攻击向量:这是一个很好的工具,可以用来测试你的员工是否容易受到钓鱼攻击。在这里,你可以制作尽可能真实的消息。此外,该工具还允许你根据需要加入恶意负载。
如果你想将此测试提升到更高的层次,你甚至可以伪造电子邮件地址,挑战更技术化的团队。
如下截图所示,该工具为你提供了创建自动化攻击的选项。你甚至可以根据多种选项进行定制:

图 5.5 – SET 钓鱼模块
-
网络攻击:在这里,你有多种选择可以尝试。最常见的是网站克隆,系统会克隆一个常访问的网站(例如社交媒体网站)。然后,当用户访问该网站时,会被重定向到一个假网站,在那里你可以完全控制,注入恶意代码并收集用户凭证。
收集凭证是一个非常危险的任务——实际上,建议不要保存用户凭证。相反,一旦用户输入凭证,按钮会显示一条消息,说明这是一次网络安全测试,并指出通过这种方法未收集这些凭证,用户凭证可能会被他人利用。
提示
绝不要在没有法律部门书面授权的情况下收集凭证。因为你需要证明公司知道你正在执行的活动(特别是如果你是第三方承包商进行此测试),同时也需要法律团队的参与,以确保符合相关法规或法律。
此外,除了注入恶意代码,你还可以创建一些无害的 HTML,告诉用户这只是一次安全测试,但下次可能会是真正的攻击。这个技术有助于提高用户的安全意识。
如下图所示,你还可以利用其他攻击机制,如HTML 攻击(HTAs)、网页劫持攻击等:

图 5.6 – SET 网络攻击模块
-
autorun.inf文件将在设备(USB、DVD、CD)插入时自动执行。在这里,你可以购买一款便宜的 USB 并将该工具加载其中,以判断员工在多大程度上容易掉入这个陷阱。
由于这种攻击需要投资必要的硬件,因此建议在目标人群中进行测试,比如公司高管,以确定他们插入未知 USB 设备的可能性:

图 5.7 – 可用于感染性媒体生成器(SET)的有效载荷
-
二维码攻击:这是一个非常有趣的攻击路径。使用这个工具,攻击者可以利用二维码将用户重定向到感染站点。因此,攻击者可以在目标办公室附近发布带有二维码的广告,以感染一些设备。
例如,你可以放置一些假广告,提供你的二维码。这个二维码会将用户重定向到你的 HTML 页面。该 HTML 页面会通知用户这是一种攻击技术,但此次是安全的。此时,你可以提供一个链接,其中包含关于该话题的额外培训材料。
现在让我们看看 exe2hex。
exe2hex
这是一个非常有趣的工具,可以帮助将二进制文件编码为 ASCII 文本格式,从而简化将文件传输到目标计算机的过程。它帮助攻击者绕过你的许多安全控制。
然后,攻击者将利用 Windows 中的两个内置工具(debug.exe 和 PowerShell)将文本转换为可执行文件并执行攻击。
绕过大多数安全控制并将恶意文件放置到目标计算机中的能力非常可怕。然而,好消息是,有一种简单的方法可以防止这种攻击路径。
如前所述,这种攻击利用两个内置工具来完成其执行。debug.exe 在当前 Windows 系统中并未包含,所以除非你使用的是不受支持的 Windows 版本,否则不必担心这个问题(如果你确实在计算机上使用了不受支持的 Windows 版本,这将是尽快迁移该机器的另一个原因)。
另一个工具是 PowerShell,正如你所知道的,它可以被多种攻击利用。所以,这里推荐禁用 Windows 系统上的 PowerShell。
如果你有一个大型基础设施,你甚至可以在Active Directory上通过组策略对象(GPO)来进行此操作。此外,你还可以创建一个 GPO 来启用对超级管理员组的 PowerShell 访问(如果需要的话)。
市场上有许多其他的渗透测试工具,但由于渗透测试是由进攻性安全专家来处理的,我们的目标只是提供一个简要的回顾,以便你熟悉这些工具。现在,是时候谈论我们的下一个激动人心的话题——法医分析了。
申请法医工具和方法
有时,管理层或人力资源部门会要求你从指定的计算机中收集一些数据作为证据,因为某些程序、政策、法律或法规被违反了。
因此,你需要手头有多种工具,以便以最完整的方式执行这项任务,首先是为了保持你的中立性,其次是因为你可能正在处理最终可能进入法庭的证据。那么,让我们从理解如何管理证据的最佳实践开始。
处理证据
在处理数字证据时,数据完整性是关键,它能够证明证据在任何方式下都没有被篡改。
达到这一点的最佳方式是使用哈希,因为即使是最小的更改也会使哈希值发生变化。然而,如果哈希值保持不变,那么你就可以 100%确定文件没有被修改。
如下图所示,只需将第一个字母改为大写,哈希值就会发生完全不同的变化:

图 5.8 – .txt 文件的哈希值
如果你需要对多个文件或文件夹进行哈希计算,你可以将它们压缩成 ZIP 文件,或将它们添加到 ISO 镜像中,然后对该镜像文件应用哈希值。
如果你想玩哈希值,你可以下载HashCalc,这是一款轻量级的工具,允许你使用多种哈希算法生成哈希值。
法医工具
让我们来看看你可以用来执行与法医相关任务的最常见工具。
Kali Linux 法医模式
如果你需要从计算机中收集数据,使用Kali Linux 法医模式是一个很好的方法。
这是一个可启动的 Kali 版本,预装了所有必要的法医工具,允许你在不需要安装任何东西到硬盘上的情况下收集信息,确保硬盘在执行法医任务时保持未修改。
如下图所示,这个实时版本在所有 Kali Linux 发行版中都有提供:

图 5.9 – 启动 Kali Linux 法医模式
现在,让我们来看看 Autopsy(尸检工具)。
Autopsy(尸检工具)
这是一个必备的法医平台。
这个平台包含在 Kali Linux 中,但也可以在 Windows 上使用,配备了你在调查过程中可能需要的所有工具。
使用这个工具你可以收集到大量有用的信息;以下是一些例子:
-
源机器的操作系统
-
操作系统安装数据
-
操作系统的注册所有者
-
计算机名称
-
运行时间
-
用户账户数量
-
上次登录数据
-
网络卡列表
-
机器的 IP 和 MAC 地址
-
安装了黑客软件的痕迹
-
电子邮件客户端
-
电子邮件地址(网页)
-
SMTP 账户
-
已删除的文件
-
已知病毒的痕迹
-
网站历史、书签和 cookies
-
图片的 EXIF 数据
-
文件的地理位置/地理标签
如 图 5.9 所示,Autopsy 在 Windows 上的图形界面非常简洁直观:

图 5.10 – Autopsy Windows 界面
现在,让我们来看一下 Binwalk。
Binwalk
这个工具非常适合寻找固件镜像中的嵌入文件或代码。
如果你需要查找瓦片、压缩文件、固件头、Linux 内核、引导加载程序等的签名,这尤其有用。
如下截图所示,有许多可用选项可以自定义扫描,使其成为一个非常多功能的工具:

图 5.11 – Binwalk 选项
现在,让我们来看一下 bulk-extractor。
bulk-extractor
这是一个有趣的工具,它包含在 Kali Linux 套件中,可以从文件中提取多种信息,包括以下内容:
-
信用卡信息
-
URL
-
电子邮件地址
如果你需要扫描文件(甚至整个计算机)来查找敏感信息,检测或防止可能的数据泄漏,这非常有用。
另一个很酷的功能是,这个工具允许你基于已扫描的数据创建一个常见单词列表,然后将其转换为字典攻击的输入。
提示
如果你有一个密码检查引擎,那么你可以使用这个字典列表作为自定义词典输入,以防止用户选择相关的密码,从而消除这一漏洞。
该工具还可以将信息呈现为直方图,便于你轻松识别常见的电子邮件地址、域名等。
恢复已删除的文件
我们都知道当一个重要文件被错误删除时的感受。毫无疑问,很多时候人们会来找你帮忙,因此,如果你想成为某人的英雄,那你最好随时准备好这个工具。
在 Kali Linux 上,你可以使用 Foremost 根据文件的头部、尾部和内部数据结构来恢复已删除的文件。
如下截图所示,该工具有很多参数可以用来改善恢复过程:

图 5.12 – Foremost 命令
这个工具本应默认安装在 Kali Linux 上。然而,如果你找不到它,只需使用以下命令来安装:
sudo apt-get install foremost
如果你使用 Windows,你可以使用著名的 Recuva。这个工具(它有一个基本的免费版本)在恢复最近删除的文件时非常有效。
这是因为当你在 Windows 中删除文档时,实际上只是删除了其指针,但数据仍然保留在硬盘上。所以,这种类型的软件会搜索硬盘上的文件,然后重建 Windows 索引表,使文件在操作系统中重新出现。然而,为了提高计算机的速度,数据会写入硬盘上的第一个可用位置。因此,你越频繁地使用计算机,想要恢复的数据被另一个文件覆盖的风险就越大。
现在,让我们了解一下可能是最复杂的攻击向量:APT。
处理 APT 攻击
本书涵盖的战术旨在保护您的基础设施免受最常见的攻击和威胁向量。然而,还有一种威胁我们尚未涉及——由于其复杂性,这种攻击被认为得到政府和各种组织的支持。这种攻击被称为 APT。
在这种类型的攻击中,攻击者使用各种战术、技术和资源,在较长时间内持续访问系统,以干扰或监视特定的系统集合,从而实现特定目标,以下是一些示例:
-
偷窃知识产权或商业机密。
-
获取持续流动的敏感信息。
-
破坏特定的基础设施、系统或流程。
-
转移资金。
正如我们之前提到的,这些攻击非常有组织,通常由协调一致的团队执行,主要目标不是获得访问权限,而是保持不被发现,这意味着一些操作会慢慢执行,以避免触发某些触发器,从而暴露他们的存在。
为了实现这一目标,攻击者通常会遵循五个阶段:
-
发现:在这里,攻击者会尽可能多地收集受害者及其员工、供应商、合作伙伴等的信息。
这一阶段通常包括技术研究活动(使用识别工具执行)和物理研究活动,例如翻垃圾箱、物理位置识别、社会工程学等。
-
渗透:这个阶段是关于获取系统和基础设施的访问权限。正如我们之前提到的,在这种类型的攻击中,攻击者会使用定制化的攻击方法来防止被发现(此处不允许脚本小子)。零日漏洞的利用在这里非常常见。
-
扩展:在这里,攻击者试图获得额外系统的访问权限(横向移动)或提升当前系统的权限。
在此阶段,攻击者会留下一些后门,以确保在被捕的情况下可以继续访问。
-
提取:一旦攻击者穿越了基础设施并确定了目标信息,下一步就是开始提取数据。
在这里,攻击者会使用先进的方法(如 DNS 隧道)来窃取所需的信息。
-
转移:我们曾见过非常复杂且协调的攻击,利用另一种攻击方式(如 DDoS)掩盖真实的攻击,并将资源转移到应对这种攻击上,同时让真实的攻击保持未被发现。
脚本小子
这是指那些对网络安全了解有限、唯一技能是运行脚本的攻击者(即使不理解脚本在做什么,有时甚至让他们的设备被感染)。
现在,让我们来学习如何防御这些类型的威胁。
防御技术
能够应用我们所学的所有防御技术将减少 ATP 发生的可能性。然而,让我们来看一下你可以应用的一些具体技术来防止 ATP:
-
监控流量(进出)以检测渗透或外泄的线索。
-
增加多因素认证的应用。
-
分析日志以检测妥协模式。
-
保持良好的身份和访问管理策略,并确保删除未使用或已禁用的用户。
-
在日志上设置监控,以检测篡改尝试(在这种类型的攻击中,日志可能会被删除,以防止追踪)。
-
使用蜜罐来检测并迷惑攻击者(我们将在第十章《应用物联网安全》中向你展示如何创建自己的蜜罐)。
好消息是,我们也有先进的系统和工具可以用来对抗犯罪分子,其中之一就是威胁情报。接下来我们将探讨这一点。
利用安全威胁情报
简单的 Google 搜索会告诉你,威胁情报有许多不同的定义,因此,为了简化问题,我们将其定义为收集、分析和理解威胁、威胁行为者及其攻击行为模式。
简单来说,威胁情报是基于相关数据创建知识(情报)。
有几种解决方案可供选择,其中大多数是作为服务提供的,第三方供应商为你提供这些知识的访问权限,通常按月收费。
现在,让我们进入下一个部分,了解什么是威胁情报。
威胁情报 101
攻击者以与他人共享攻击数据而著称,这样做会增加你成为受害者的风险。
但有了威胁情报,我们可以取得更好的结果,因为它是关于共享与攻击相关的数据,并对这些数据进行智能分析。这有助于创造可以被他人用来防御类似攻击的知识。
现在,公司正在利用认知技术分析数据并创造洞察。然而,这些认知系统的效果取决于它们所接受的训练,因此,在寻找威胁情报解决方案时,公司的研究能力和该领域的专业知识应当是你考虑的两个最重要因素。
关于数据流,虽然不同供应商的做法各不相同,一些使用私有数据集,而另一些则提倡与开放社区共享数据,以创建更大的数据池,从而改善其系统的输入方式。
下图展示了威胁情报系统所使用的一些数据输入的示例:

图 5.13 – 威胁情报输入
实施威胁情报
威胁情报的输出通常作为输入,用来改进多个网络安全系统和流程。以下是一些示例:
-
改进网络安全系统:一些工具,如 IPS、IDS 和防火墙,提供了摄取威胁情报数据的选项,以改进威胁的检测方式。
-
事件响应:威胁情报是事件响应团队的一个重要工具,它可以帮助减少误报、提升技能、改善分析流程并缩短响应时间。
-
安全运营中心(SOCs):通过将这些新知识带入团队,SOC 可以利用并应用从威胁情报中收集到的所有知识,显著提高所有必要的指标。
这种方法的最大优势之一是,它帮助 SOC 保持相关性,紧跟最新的威胁和可用的修复措施。
-
风险分析:你的团队可以利用威胁情报数据进行更好的风险分析,不仅帮助识别新风险,还能调整和更新已识别风险的概率和影响。
此外,你还可以利用这些信息来创建新的风险响应和缓解策略。
现在,在我们结束本章之前,让我们看一个如何利用你的专业知识分析一些安全漏洞并将其转化为解决方案的例子。归根结底,掌握的意义不仅仅是重复书中的内容,而是利用这些知识创造新的事物。
将威胁转化为解决方案
正如你在本书中看到的,攻击者可以使用许多黑客工具来攻击你的基础设施。然而,作为防御安全的专家,你需要利用这些威胁并将它们为自己所用——用对手的武器反击他们。
让我们看一个例子。记得我们在第二章中回顾的 USB HID 漏洞吗?管理威胁、漏洞和风险?好吧,让我给你展示这些漏洞是如何被利用来创建一个解决方案,从而解决另一个网络安全问题:密码!
首先,我们从一个大家熟知的密码问题开始。
问题
目前,你可以使用密码管理器将密码注入到操作系统中的应用程序,但你不能用它来注入密码以登录计算机。因此,为了登录操作系统,你必须打开密码管理器应用程序,读取密码,然后手动输入,这不仅是糟糕的用户体验,还存在泄露的风险。有一种解决方案可以让你注入密码,但这种解决方案需要在操作系统上安装一个应用程序,所以这并不是一个真正的即插即用解决方案。而且,系统管理员需要登录各种服务器,所以他们需要一种真正的即插即用解决方案,并且能够在所有操作系统上工作,这样该解决方案才能在整个基础设施中使用。
解决方案
在这里,我们可以利用 USB HID 驱动程序的功能(那些犯罪分子用来进行 USB 攻击的驱动程序),创建一个独特的即插即用解决方案,使系统管理员可以在任何服务器上登录,无论操作系统是什么,而无需事先安装任何软件,从而使其成为一个高价值且易于实现的解决方案。
现在,系统管理员可以轻松使用超安全密码(最多 250 个字符),因为只需按一下按钮,密码就会安全地传输到服务器。
如果你想了解更多关于这个专利的信息,请访问以下链接:
patents.google.com/patent/US10762188B2
我希望这个例子能激励你重新审视漏洞,但以不同的心态开始思考。开始思考的不仅仅是如何防止它们,还要思考如何将它们作为一种创新的防御解决方案加以利用。
总结
在这一章节中,你学习了如何将最强大的黑客设备之一(WIFI Pineapple)融入到你的防御安全策略中,以及如何保护自己免受利用该设备进行的最新攻击。
此外,你还了解了渗透测试和取证的一些内容,以及在这些领域中使用的最佳工具,以便你可以将它们加以利用。
然后,你了解了可能是网络安全中最危险的威胁——臭名昭著的 APT,并且更重要的是,如何保护你的基础设施免受这些威胁。
现在,到了进入下一章节的时候了,在这一章节,你将成为保护 Windows 基础设施(Windows 服务器、补丁管理、Active Directory、端点安全等)方面的大师。
在这里,你将接触到 Windows 服务器的最佳加固策略,包括创建你自己的加固检查表!
进一步阅读
想了解更多关于 Kali Linux 工具的信息吗?那这里就是你需要去的地方。在这里,你将找到 Kali Linux 上预装的所有工具,并按类型分类:tools.kali.org/tools-listing。
在这里,你可以查看最新的 WiFi Pineapple 版本,以及相关文档、社区和支持:shop.hak5.org/products/wifi-pineapple。
如果你想了解更多关于 Metasploit 的信息,包括最新版本、不同版本类型、文档、社区,甚至参与该项目的开发,请访问 www.metasploit.com/。
第二部分:应用防御性安全
本节将通过了解最常见的攻击方式及其防御方法,帮助你成为防御性安全的专家,从孤立的终端到分布式物联网设备和网络,再到 Web 应用。
本节包含以下章节:
-
第六章,保护 Windows 基础设施
-
第七章,强化 Unix 服务器
-
第八章,提升你的网络防御技能
-
第九章,深入物理安全
-
第十章,应用物联网安全
-
第十一章,云上的安全开发与部署
-
第十二章,掌握 Web 应用安全
第六章:第六章:保护 Windows 基础设施
"作为一名发明家和研究人员,我意识到一个组织的易受攻击程度取决于基础设施是如何实施、管理和设计的。"
– Sarbajit Rakshit,IBM 大师发明家
几乎所有公司在其基础设施中都有 Windows 系统,无论是作为工作站、服务器还是目录服务。因此,要精通网络安全的艺术,您需要了解应用哪些策略、技术和工具,以及如何和何时应用它们来达到所需的安全级别。
要达成这些目标,我们将涵盖以下主要主题:
-
如何在 Windows 服务器上应用最佳的加固策略
-
创建您自己的 Windows 服务器加固检查表
-
设计世界级的补丁策略
-
关于 Windows 系统的所有不同类型补丁的概述
-
关于Active Directory(AD)的最佳网络安全实践
-
一个关于端点安全最佳实践的指南
-
概述如何利用加密来保护您的数据安全
技术要求
对于本章节,没有硬性要求;但是,如果能访问到 Windows 10 的机器来测试我们在本书中将要涵盖的一些概念(如补丁、加密、策略等),将会很有用。
应用 Windows 加固
没有什么是不可能被突破的;只要足够困难,就会使攻击者转而选择其他目标。
正如您所知,加固是一个用来保护特定服务器免受攻击的所有技术的花哨名字。虽然加固并非百分百安全的解决方案,但其目的是将服务器的安全性提高到可接受的水平,以防范大多数攻击。
通常情况下,一个正确加固的服务器应该能够抵御所有脚本化或自动化的攻击。
通常有两种方式可以应用加固,如以下所述:
-
由一个独立团队(信息技术(IT)基础设施)应用
-
另一个由安全团队(您)应用
让我们看看在由基础设施团队执行加固时,您的责任是什么。
由基础设施团队进行加固
在这种情况下,加固是由另一个团队执行的;但是,您可能仍需负责确保服务器安全,因此在这种情况下,您至少需要执行以下操作:
-
为团队提供最低加固要求的检查表。
-
定期进行审核,确保服务器具备最低的加固要求。
让我们看看如何创建一份全面的加固检查表,您可以提供给基础设施团队,以确保至少执行了必需的最低步骤。
创建一个加固检查表
加固检查表将受到多个因素的影响,包括公司风险承受能力、网络安全政策和适用的法规。在这里,我们将回顾创建最终Windows 加固检查表所需的最常见项目。
无论由谁负责执行 Windows 加固,本检查表将包含确保 Windows 服务器具有基本保护的基本项目。
现在让我们看看加固检查表的必需元素。
支持的操作系统版本
这是一个非常重要的因素,因为尽管较新版本的 Windows 引入了许多安全功能,例如 Windows Server 2019 中引入的 Windows Defender 高级威胁防护(ATP),但旧版本的安全性较低,因此你应尽量鼓励在新构建的服务器上使用较新版本。
以下是应包含在检查表本节中的一些规则:
-
切勿允许不受支持的 Windows 服务器版本出现在你的基础设施中。
-
保持服务器基础设施的清单,其中应包括支持结束日期。
-
制定计划,在未来的支持结束服务器的支持结束日期生效前至少一年开始迁移。
-
制定一项政策,要求所有服务器在投入生产前必须包括所有更新、补丁和服务包。
如果由于预算不足而无法升级服务器,建议创建一份风险信,列出将旧服务器保留在基础设施中的所有网络安全风险(包括相关成本),并将其提交给高层管理人员。这样,他们将为新服务器提供预算或接受风险,在这种情况下,你的后盾就有保障。
Windows 服务和功能
Windows 服务器有一组默认的服务,这些服务会在启动时自动启动。虽然许多这些服务是操作系统正常运行所必需的,但其中一些是可选的,并且可能存在潜在的安全漏洞。
尽管新版本只加载最低限度的必需服务,旧的操作系统服务器版本可能需要额外的调整以禁用一些非必要服务。
以下是关于此主题应包含在检查表中的一些项目:
-
请要求每位服务器所有者创建启用的服务清单,并为每个特定服务提供理由。
-
请要求服务器所有者至少每季度验证一次服务,以确保未使用的服务被禁用。
-
请要求服务器所有者创建一份风险证明信,如果运行的任何服务在公司网络安全政策中被列为高风险。
以下截图展示了一个示例的理由清单:

图 6.1 – 服务理由清单
此外,还需考虑到 Windows 服务以特定用户的安全上下文运行(本地系统、本地服务或网络服务账户)。然而,对于应用程序和用户服务,建议设置特定账户(本地或在 AD 中),以最小权限处理这些服务。
端口和协议
与服务类似,端口和协议应保持在最低限度,以减少潜在的攻击面。
检查清单项包括以下内容:
-
请每位服务器管理员创建一份开放端口列表(包括说明)。
-
请服务器管理员至少每季度验证一次开放端口,以确保所有开放端口都在使用中。
-
请要求服务器管理员创建一份风险说明信,以防任何开放端口在公司网络安全政策中被列为高风险。
犯罪分子常用的一种技术是扫描端口,因此,遵循这些简单步骤将大大增强服务器的安全性。
用户管理
也称为身份与访问管理(IAM),通常由一个独立的团队处理,该团队按照 IAM 流程创建、删除和禁用用户标识符(ID)。
以下是我们检查清单的相关要点:
-
所有用户管理应由 IAM 团队创建。
-
所有本地用户必须由 IAM 团队创建。
-
所有服务器管理员必须遵循 IAM 流程(创建、删除、禁用和更新用户账户)。
-
所有账户必须有相关人员作为负责人。
-
账户应根据最小权限原则(PoLP)创建。
-
密码策略必须由系统(服务器或 Active Directory)强制执行。
-
防止用户禁用用户帐户控制(UAC)。
-
阻止微软账户登录。
-
阻止访客账户。
-
账户锁定必须与当前网络安全政策对齐。如以下截图所示,这是在 Windows 本地组策略编辑器中配置的:

图 6.2 – 锁定策略:Windows 组策略编辑器
-
禁用默认的管理员账户(此账户因禁用账户锁定,容易遭受暴力破解攻击)。
-
限制使用空白密码的用户。
其他事项将在应用安全到 AD部分中讨论。
监控
你需要随时保持对基础设施的控制,监控和日志在需要进行取证时至关重要。因此,有一些重要项应包括在我们的检查清单中,具体内容如下:
-
确保所有服务器都启用了日志。
-
确保公司监控系统在所有生产服务器上加载并运行。
请查看以下截图:

图 6.3 – 审核策略:Windows 组策略编辑器
如前所示,可以在 Windows 的高级审计策略配置文件夹中访问这些设置,以进行配置和验证(审计)。
清单的额外考虑事项
-
如果可用,确保控制流保护(CFG)和数据执行防护(DEP)已开启。通常,它们默认是开启的,但你可以通过以下步骤检查状态:
-
进入Windows Defender 安全中心。
-
点击应用和浏览器控制。
-
选择漏洞保护设置。
-
进入系统设置,你会看到控制流保护(CFG)和数据执行防护(DEP)的选项,如下图所示:
-

图 6.4 – Windows 嵌入式漏洞保护
-
在服务器上请求一个强大的杀毒解决方案(这可以是第三方解决方案或 Windows Defender)。
-
启用Windows AppLocker。
-
确保基本输入输出系统(BIOS)受到密码保护。
-
启用安全启动。
-
所有卷应为 NTFS 格式(不允许使用 FAT 格式)。
-
禁用将未加密的密码发送到第三方服务消息块(SMB)服务器。
-
仅允许在LAN Manager认证级别使用NTLMv2,拒绝使用LM和NTLM。
-
配置Microsoft 网络服务器以始终对通信进行数字签名。
-
确保匿名 SID/名称转换已禁用。
-
应禁用SAM 账户和共享的匿名枚举。
-
不允许匿名访问共享驱动器。
-
如果可用,启用基于云的保护,如Microsoft 操作管理套件(OMS)。
-
确保启用了加密(加密文件系统(EFS)或BitLocker)。
-
如果服务器托管一些虚拟机(VM),确保启用了虚拟机可信平台模块(TPM),因为它将支持高级安全技术,如BitLocker 驱动器加密。
现在,是时候看看如何创建一个企业级的补丁管理策略了。
创建补丁管理策略
你有多少次听过,“如果系统能够正确打补丁,这次攻击是可以防止的”?而这些攻击的成本从数百万美元到破产不等,那么问题是:为什么这种情况仍然发生?
好吧,答案是补丁管理并不像看起来那么简单。
补丁管理的复杂性
让我们来看看与补丁管理相关的最常见的复杂因素。
传统系统
几乎所有公司都有一定程度的传统系统在生产中。大多数时候,这是因为某些应用程序只设计在特定的操作系统上运行,迁移到支持的操作系统可能会引发兼容性问题,因此公司决定接受这个风险。
问题在于,在这些情况下,你可能会遇到一些不受支持的操作系统(甚至应用程序、服务和协议),这会给你的基础设施带来额外的风险。
补丁遗留系统的建议如下:
-
进行测试,确定是否可以迁移到受支持的操作系统。
-
研究可以替代这些遗留应用程序的其他系统。
-
如果前两个选项不可行,那么确保系统已安装最新的可用更新(补丁和热修复)。
-
从系统中删除所有不必要的应用程序。
-
将启用的端口减少到应用程序所需的最小值,并禁用其余端口。
-
禁用所有未使用的服务。
-
禁用所有未使用的启动应用程序。
-
禁用远程桌面(RDP)。
-
避免让这些服务器面向互联网,如果需要,应用额外的安全机制,如要求虚拟私人网络(VPN)进行连接。
-
安排定期维护(至少每季度一次),以检查服务器状态。
此外,定期验证你的服务器环境(至少每年两次)也是一种良好的做法,以确保哪些服务器仍在使用(并删除任何幽灵或未使用的服务器)。
依赖关系和兼容性问题
大多数应用程序有很多依赖项,如 .NET Framework、Java 运行时环境(JRE)、PHP:超文本预处理器(PHP)等,这意味着为了正确运行这些应用程序,你需要在操作系统中安装并运行这些框架。
大多数情况下,这些框架具有向后兼容性,意味着它们也会支持为旧框架创建的应用程序。然而,这并非总是如此,在某些情况下,你需要保留旧框架才能保持你的遗留应用程序运行。
在这种情况下,建议采取以下措施:
-
评估是否有较新的应用程序可以替代遗留应用程序。
-
评估、记录并向高层管理人员展示这些风险,以便他们决定是否愿意接受这些风险。
-
评估该应用程序管理的数据,并以此为输入来确定风险的影响。
-
如果涉及较高的风险,查找已知漏洞(与该版本的依赖项相关,访问
cve.mitre.org/),以确定并应用解决方法来降低攻击风险。 -
将机器隔离,仅用于托管该应用程序,以减少风险范围。
现在,是时候展示如何开始创建你的补丁策略了。
任务分配(补丁角色和分配)
在大多数公司中,补丁更新由 IT 基础设施团队执行。然而,在网络安全方面,你可能负责确保所有服务器都已正确打补丁,因此这里有一些建议,确保你与基础设施团队之间的顺利协作:
-
一起合作制定补丁时间表。
-
创建一个RACI 矩阵,以确定谁负责、谁有责任、谁被咨询以及谁需要了解服务器上的更新安装和部署。
-
建立一个流程来请求紧急的补丁和热修复。
-
创建一个通讯计划,包含整个 IT 团队的联系信息。
-
创建一个责任矩阵,包含所有有关服务器和支持它们的团队的相关信息。您可以在以下截图中查看责任矩阵的示例:

图 6.5 – 操作系统支持责任矩阵
前面的操作系统支持责任矩阵有五列;不过,您可以根据需要扩展它,以包含所有相关信息。
还请确保定义清楚谁负责更新这些文档,它们将被存储在哪里,以及多久更新一次。
补丁的分发和部署
在小型基础架构中,这可能是一项简单的任务,但当您有多个服务器集群,且有成千上万台运行多种操作系统的服务器时,这就变得非常复杂。
虽然此任务通常由平台团队执行,但您理解它的工作原理至关重要,原因如下:
-
在某些情况下,您将需要负责管理更新。
-
这些知识将帮助您更好地根据情况调整您的防御策略。
现在,让我们来看看如何部署更新。
Windows Server 更新服务
Windows Server 更新服务(WSUS)使您能够通过管理控制台管理和分发最新的 Microsoft 产品更新。
基本上,WSUS 服务器将使您能够执行以下操作:
-
集中管理更新
-
更新管理自动化
您可以在以下截图中查看可用的不同服务器角色概述:

图 6.6 – 将 WSUS 安装为 Windows 服务器角色
如前面的截图所示,WSUS 是一个内置的服务器角色。一个有趣的事实是,您可以在基础架构中拥有任意数量的 WSUS 服务器,但至少有一台需要连接到Microsoft Update以获取可用的更新信息(这称为上游服务器)。
提示
请记住,还有许多由第三方提供的其他替代补丁管理工具,如 SolarWinds Patch Manager、AutoPatcher、Kaseya VSA、ManageEngine Patch Connect Plus、Ivanti PatchLink 等。
WSUS 有两个主要界面,一个是通过 PowerShell 的命令行界面(CLI),另一个是内置的可视化界面,如下图所示,它提供了大量有关要在您的基础架构中部署的更新的信息、这些更新的分类等:

图 6.7 – WSUS 图形用户界面(GUI)
现在,部署更新并不像单击一下那么简单。实际上,为了避免中断,公司有一套规则,旨在避免在修补过程中中断某些服务的风险。这个过程叫做变更管理。
变更管理过程
大型企业无法冒险让其业务因补丁安装失败而导致服务器崩溃,从而造成数百万美元的损失。相反,它们有一套组织良好的变更管理过程,明确规定了何时可以进行服务器维护。
根据公司情况,这些维护窗口可能是每月或每季度一次,通常计划在一个时间限定的期间内执行,并包括一个恢复时间(TTR)窗口,以便在出现问题时恢复系统到原始状态。
操作系统更新通常会在这些维护窗口期间安装,因此,您需要熟悉变更管理过程,以确保关键更新能够在即将到来的维护窗口内安装。
补丁类型
让我们来回顾一下适用于基于 Windows 系统的不同类型更新。
请考虑到,为了帮助您优先部署,它们会根据重要性(从网络安全角度来看)进行分类。
分类为关键(意味着必须尽快安装)、必需(必须在下次修补窗口优先安装)和次要(可选更新)。这些更新在此处有更详细的说明:
-
更新:修复一个被认为是非关键的问题,例如一个非安全相关的错误。由于缺少此更新不会影响服务器的性能或安全性,因此这些更新被视为次要更新。
-
关键更新:这旨在修复一个特定的非安全相关的错误。通常,这类更新会发布给大量用户。即使这与安全无关,它也可能修复一些与性能和稳定性相关的问题,因此应被视为关键更新。
-
定义更新:这通常是包含产品定义数据库添加内容的软件更新。如以下截图所示,这些定义数据库通常用于防止恶意代码、钓鱼网站或垃圾邮件带来的攻击:

图 6.8 – Windows 定义更新
由于其中一些可能会防止已知的安全攻击向量,它们被认为是关键更新。
-
安全更新:此更新旨在修复一个与产品相关的安全漏洞。
通常,这些漏洞会根据严重性被评定为关键、重要、中等或低级,如 Microsoft 安全公告中所示。
提示
Windows 安全更新带有两个重要文档,提供关于漏洞的详细信息。它们分别是安全公告和Microsoft 知识库文章,并且提供了关于修复漏洞的非常有用的见解。
-
驱动程序:有时,Windows 会提供更新其内置驱动程序(基本驱动程序)的目录,以改善或修复某些功能。如以下截图所示,这些更新有时被操作系统视为可选驱动程序,因为它们可能不适用于所有用户:

图 6.9 – Windows 驱动程序更新
考虑到缺少此更新不会危及系统的完整性或当前功能,因此它们被视为次要。
-
功能包:新产品功能,在即将发布的完整产品之前分发给用户。由于这些更新与新功能相关,而不是为了防止或修复某个问题或错误,因此它们被认为是次要更新。
-
以下是功能更新在 Windows 上的截图:

图 6.10 – Windows 功能更新
如前面的截图所示,当功能更新安装后,会有一个链接,您可以查看该更新中包含的新功能的详细信息。
-
服务包:微软在发布系统更新方面做得非常好,但这意味着随着时间推移,对于某个操作系统可能会有大量更新可用。因此,一旦有一定数量经过测试的热修复、更新、安全更新和关键更新,它们就会被打包成一个服务包。
服务包可能还包含其他更新,包括客户要求的设计更改或功能。
服务包是操作系统的重大更新,因此强烈建议先在测试环境中进行测试,然后再大规模部署到生产服务器中。
由于它们包含了确保操作系统稳定性和安全性的关键更新,因此它们被认为是关键更新。
-
更新累积包/月度累积包:一个集合了热修复、安保更新、关键更新和更新的包,便于部署。这基本上是服务包的缩小版。更新累积包通常是基于相同功能的汇编,而月度累积包是根据更新发布的月份来编排的。由于它们包含了确保操作系统稳定性和安全性的关键更新,因此被认为是关键的。
现在你已经掌握了所有关于 Windows 更新的知识,是时候进入下一个话题,了解如何保护 AD了。
应用安全性到 AD
尽管没有关于保护 AD 的官方指南或标准,以下是可以帮助你增强 AD 服务器安全性的行业最佳实践汇编:
-
切勿在域控制器上安装额外的软件、角色或服务。
-
永远不要在域控制器上创建本地用户(用户管理必须在域控制器上谨慎处理)。
-
确保根据 PoLP 创建账户。
-
保持 AD 权限账户的记录(列表),包括所有者、权限以及与账户相关的其他数据(以防止幽灵账户)。
提示
幽灵账户是指那些所有权或使用情况不明确的账户。虽然在小型基础设施中这可能不是问题,但在大型环境中,如果没有遵循最佳实践,可能会有数十个这样的账户,这对你的基础设施构成重大风险。
-
不应使用 AD 权限账户登录工作站(这会增加账户被攻破的风险)。
-
避免将 AD 权限账户保持为禁用状态(最佳实践是如果权限账户不再使用,应该将其删除)。
-
所有日志都应启用。
-
必须优先在域服务器上安装安全更新。
-
如前所述,最新版本的 Windows Server 通常包含一组新的安全功能,因此在可能的情况下,使用最新版本的 Windows Server 来托管域控制器。
-
尽可能启用多因素认证(MFA)。
-
定期审查(审核)AD 权限账户。
提示
必须特别保护 AD 中三个内建组,它们在目录中拥有最高权限(企业管理员、域管理员和管理员)。
-
定期备份。
-
通过配置故障转移集群确保高可用性(HA)。你可以在
docs.microsoft.com/en-us/windows-server/failover-clustering/failover-clustering-overview上阅读更多内容。 -
避免永久性地加入高权限组。相反,只在需要时授予临时成员资格。
-
在创建自定义组时,请确保使用特定且易于理解的名称——例如,IT-Helpdesk而不是Group-x031。
-
必须禁用 SMB 版本 1。可以通过 Windows 注册表禁用,或者如以下截图所示,也可以通过启用/禁用 Windows 功能的 GUI 来禁用/验证:

图 6.11 – Windows 功能
此外,大多数组织需要在另一台计算机上执行 AD 的管理任务——例如,IT 支持人员执行密码重置,或网络管理员进行域名系统(DNS)更改。
这些系统被称为安全管理主机,接下来我们将探讨必须应用于这些系统的一些安全最佳实践。
保护管理主机
如前所述,安全管理主机是指可以使用权限账户在 AD 中执行管理任务的系统(工作站或服务器)。
这里是一些关于如何将这些系统配置为安全平台的最佳实践:
-
在这些系统中启用多因素认证(MFA)。
-
审查这些系统的物理安全性,以确保它们处于安全区域内。
-
限制权限并防止安装任何额外的软件。
-
避免在这些系统上安装和使用电子邮件。
-
微软甚至建议避免在这些系统上安装 Office。
-
它们必须运行受支持并完全修补的操作系统。
-
应该禁用通用串行总线(USB)端口。
-
在可能的情况下,必须移除或断开媒体读取器(数字视频光盘(DVD)、标清(SD)等)。
-
必须禁用自动运行。
-
确保安全管理主机的安全功能与域控制器相同。
-
必须禁用互联网浏览功能。
此外,在可能的情况下,使用虚拟机(VM)作为安全的管理主机。首先,虚拟机在不使用时可以轻松关闭;其次,你可以配置它们在每次使用后恢复到默认快照,以保持系统的干净。
Windows Server 安全文档
在这里,你可以找到关于操作系统内置的多个保护层的额外文档(包括视频),这些保护层可以帮助防止安全漏洞和恶意攻击,并确保数据和基础设施的安全:docs.microsoft.com/en-us/windows-server/security/security-and-assurance。
现在,您已经学习了有关Windows Server 安全性的所有知识,是时候开始了解如何增强您基础设施中所有Windows 工作站的安全性了。
掌握终端安全
我们回顾的许多服务器最佳实践同样适用于工作站,因此我们不再重复它们,而是来看看一些特别适用于工作站的额外安全机制和工具。
Windows 更新
我们已经讨论了补丁更新操作系统的重要性;然而,我想强调的是,你可以利用 WSUS 来向工作站分发更新。以下是微软提供的一个详细的分步指南,教你如何配置它:docs.microsoft.com/en-us/windows/deployment/update/waas-manage-updates-wsus。
为什么迁移到 Windows 10?
如前所述,有许多理由保持系统运行最新版本的操作系统,但在这里,我们将重点介绍一些额外的考虑因素,解释为什么迁移到 Windows 10 是一个好主意。
Windows 作为一种服务
过去,微软每隔几年发布一个新版本的 Windows,这给 IT 专业人员在规划和部署方面带来了一些挑战。
现在,新的 Windows 10 是基于一个名为“Windows 即服务”(Windows as a Service)的概念创建的,这意味着微软将不再创建新的 Windows 版本(如 Windows 11),而是通过两种发布类型持续提供 Windows 10 的更新:功能更新,每年两次增加新功能,以及质量更新,每月至少提供一次安全和可靠性修复。
因此,采用这种新方法,微软计划简化 IT 专业人员的工作,并为其客户保持一致的 Windows 10 使用体验,同时确保系统具备最新的安全功能和更新。
若需了解有关这一新模型的更多信息,请访问官方站点:docs.microsoft.com/en-us/windows/deployment/update/waas-overview。
Windows 10 安全选项
有许多安全策略设置,允许你配置 Windows 10 机器的行为。这些设置可以在本地配置,或在组策略对象(GPO)中配置,应用于所有受该 GPO 管控的设备。
熟悉这些策略设置并根据组织的安全政策进行调整非常关键。在这里,你可以找到所有安全策略设置的列表,包含简要描述以及推荐的设置:docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/security-options。
物理安全
物理安全是终端安全最重要的方面之一,因此在这里,我们将探讨一些你需要实施的最基本的建议,以确保系统的安全。
如在第二章中提到的,管理威胁、漏洞和风险,大多数计算机当前都存在与 USB 端口相关的漏洞,因为它们利用了计算机对人机接口设备(HID)设备(如键盘和鼠标)的固有信任。因此,我们需要确保USB 端口无法被外部用户物理接触(主要针对客户服务角色或其他面向客户的角色的用户)。
此外,必须实施多种机制以防止计算机被盗,我们将在第九章中深入讨论,物理安全的深度探讨。
杀毒软件解决方案
这是一个基本的网络安全组件,你应该已经了解,因此无需花费太多时间在这一部分。相反,让我们简要总结一些关于使用杀毒软件解决方案的规则,如下所示:
-
在整个组织中使用相同的杀毒软件解决方案。
-
防止安装额外的杀毒软件解决方案(使用技术性和管理性控制)。
-
防止禁用或卸载企业级防病毒解决方案。尽可能地,此操作应当触发警报,通知 IT 安全团队和管理层(这作为一种非常有效的威慑手段)。
-
将 Windows Defender 视为一个出色的企业级防病毒解决方案。
-
始终保持自动更新开启(唯一的例外是当你通过内部服务器管理更新的部署时)。
提示
管理控制是所有基于规则、政策和法规的控制。通常,它们通过审计、处罚或人力资源(HR)行动来执行。另一方面,技术控制是所有通过使用技术组件(如入侵防御系统(IPS)、入侵检测系统(IDS)、防火墙和防病毒解决方案)来跟踪和执行的控制。
请记住,没有完美的防病毒解决方案。我认为,随着时间的推移,你会有自己的偏好,这些偏好也可能基于需求;例如,你可能喜欢某个防病毒解决方案用于个人使用,但可能会对企业使用有不同的偏好(因为有高级工具,如部署选项、警报和管理员控制台)。
Windows Defender 防火墙
启用Windows Defender 防火墙是一个好主意,因为它作为额外的安全层。正如前面提到的防病毒解决方案,你必须实施一些管理控制和技术控制,防止并检测是否有人禁用它。
如下截图所示,你可以在每台工作站上本地配置防火墙,或通过组策略进行管理。此外,你还可以看到它根据连接的网络具有不同的配置文件。

图 6.12 – Windows 防火墙配置
另一个常见问题是,当出现网络问题时,IT 帮助台可能会暂时禁用 Windows Defender 防火墙作为临时解决方法;然而,你需要与他们制定一个政策,防止这种做法,鼓励他们进行根本原因分析(RCA),以确定问题的真实原因,同时不影响设备的安全性。
应用控制
在这里,你可能会面临两种选择:要么移除用户安装应用的权限,要么实施技术控制来监控用户安装的应用。两种选择各有优缺点——例如,从安全角度来看,限制用户权限可能是最简单的方法;然而,这会显著增加与用户因业务需求而需要安装应用的帮助台工单数量。另一方面,如果你授予所有用户管理员权限,则在安全性方面的风险会更高,你必须通过实施额外的安全控制来减轻这种风险。
URL 过滤
你可以应用统一资源定位符(URL)过滤器来防止用户访问危险网站或可能影响网络带宽的网站。即使这听起来像个笑话,很多员工在连接到公司网络时会访问流媒体网站或应用观看电影,因此也需要防止这种情况,因为首先,大多数免费流媒体网站充满了恶意软件,其次,这可能会影响网络的可用性和带宽。
垃圾邮件过滤
我知道这非常基础,但既然这也非常重要,请记住,除了在邮件服务器上进行配置外,你还可以通过使用大多数邮件客户端中包含的垃圾邮件过滤器来增加额外的安全层。
此外,你还可以创建一些规则来防止其他电子邮件攻击。例如,如下图所示,你可以配置你的电子邮件自动标记外部邮件(例如,通过在邮件标题中添加EXTERNAL一词)。这个简单的动作将有助于防止伪造和钓鱼攻击。

图 6.13 – 自动标记外部邮件
例如,你可以通过在 Office 365 或 Exchange 服务器中创建一个规则来轻松实现这一点。你只需要创建一个新规则,选择将其应用于所有来自外部组织的邮件,选择应用对象,选择操作(在此案例中,对邮件应用免责声明),然后就完成了!相信我,这些非常简单的步骤将为你节省很多麻烦。
面向客户的系统
根据你的业务需求,可能会有一些系统需要外部用户访问(例如,供用户进行一些自助操作的计算机)。这些系统必须与网络隔离(如果可能,使用独立的互联网连接)。但是,它们也必须是安全的,以保护客户免受攻击。在这里,最好的建议是安装能够在系统重启后恢复到初始状态的软件(例如 Deep Freeze)。为了提高安全性(例如,在金融机构中),你可以在每个用户使用系统后进行回滚。
此外,这些计算机的外壳(根据国家的不同,它们可能被称为CPU、机箱等)必须与用户隔离,用户只能访问键盘、屏幕和鼠标(以防止连接如键盘记录器等危险设备)。
备份
你必须确保为用户提供一个已预安装并在所有工作站上配置的备份解决方案。
此外,你需要确保至少每年进行一次教育活动,向用户宣传备份的重要性、可用的工具以及不被批准使用的工具。
这非常重要,原因有二:首先,你需要确保所有用户都有可用的备份解决方案,以便在灾难发生时保持文件的安全副本;其次,你必须防止用户使用不安全的备份机制——例如,未经批准的云解决方案或外部 USB 驱动器。
提示
无论你做了多少次安全意识宣传活动——可以放心的是,如果有人丢失了数据(因为没有备份),你将是第一个被责备的人。所以,为了防止这种情况发生,你必须确保备份政策明确说明:定期执行备份并进行测试是用户的责任。你还可以补充:如果出现错误,用户有责任通过官方(预定的)渠道报告给 IT 安全部门。
用户
我们专门花了整个第四章,补丁层 8,来讨论用户;然而,我们还需要考虑一些额外的步骤,涉及到用户可能引入的漏洞,具体如下:
-
用户个人设备:你需要实施必要的技术和管理控制,防止用户的个人设备(包括物联网(IoT)设备)连接到你的公司网络。
-
外设:任何连接到你基础设施的额外设备都代表着额外的风险,因此,为了防范这些风险,你必须限制在公司终端上使用个人外设。从打印机到 USB 键盘,它们都可能构成安全漏洞,因此在公司环境中必须限制其使用和安装。这可以通过明确的用户政策和一些技术控制来实现,以防止或警告在安装个人外设时发生的情况。
数据安全
被盗的笔记本电脑可以很容易替换;然而,敏感企业信息的泄露,如知识产权或商业机密,可能对公司致命,在某些情况下甚至可能导致破产。因此,确保数据安全应当是你的优先任务,加密数据是一个很好的方法。
利用加密
作为第一步,你需要了解适用的法规和法律,以确定是否对你的组织(或其中某一部分)有特定的加密要求。例如,以下截图展示了支付卡行业数据安全标准(PCI DSS)和健康保险流通与问责法案(HIPAA)之间的不同加密要求:

图 6.14 – PCI 和 HIPAA 加密要求
然而,你不应该仅仅根据合规要求来制定加密政策。相反,你应当根据以下考虑因素,制定一个强健的加密政策:
-
实施全盘加密(例如,BitLocker)。
-
实施电子邮件加密。
-
实施文件级加密(用于敏感数据)。
-
加密备份。
-
创建宣传活动,展示加密的重要性,以及为何它必须在所有层面(数据静态、传输中等)应用。
-
在你的自带设备(BYOD)政策中,要求加密作为一项要求。
-
通过实施 VPN 加密传输中的数据。
-
确保在你的网页上实施安全套接字层(SSL)来加密数据。
-
确保你的通信工具(包括企业聊天)启用了点对点(P2P)加密。
-
实施密钥管理解决方案(如Azure 密钥保管库)以保护云应用程序和服务使用的加密密钥和密钥。
基于 Windows 的系统内置了加密硬盘的选项。此外,Windows 10 的高级版本还提供了一个名为BitLocker的工具,用于配置加密设置(包括整个硬盘加密)。
配置 BitLocker
要启用它,只需在 Windows 启动菜单的搜索框中输入Manage BitLocker,即可访问管理控制台,在其中可以开启或关闭Windows BitLocker。
某些版本的 Windows(如家庭版)可能没有Windows BitLocker;相反,它们会提供一个简化的设备加密系统。要启用此功能,你需要进入开始 | 设置 | 更新与安全 | 设备加密。如果没有列出此项,则表示该版本的 Windows 不支持设备加密。
总结
在本章中,我们学习了有关 Windows 服务器的最佳实践和策略,以及何时应用它们。之后,你学习了如何为 Windows 服务器创建加固检查表,这对我们和负责服务器管理的团队将具有极大的价值。
此外,我们回顾了 Windows 系统的所有不同类型的补丁及其在网络安全方面的重要性。然后,你学习了如何创建补丁策略以确保基础设施的安全。我们还回顾了大量的最佳实践,以保持你的 AD 安全。
最后,我们查看了保持 Windows 工作站安全的最重要实践,包括如何利用加密提高整体基础设施的安全性。
现在,你已经掌握了 Windows 安全的各个方面,是时候了解如何加固 Unix 服务器,所有相关内容将在下一章讲解。
第七章:第七章:加固 Unix 服务器
“加固的服务器极大地减少了攻击面,从而最小化了暴露于威胁的风险。它有助于摆脱较弱的默认设置并符合合规要求。”
– Faraz Ahmad,IT 安全顾问
如果你习惯了管理Windows 系统和服务器,那么管理基于Unix 的系统和服务器可能会变得非常复杂。但别担心,我们会从基础开始,让你可以轻松跟随本章内容。
在这里,我们将覆盖大多数 Unix 系统(包括Linux)中使用的命令。尽管不同的 Unix 系统可能存在一些差异,本章中的结构和示例应该适用于最常见的 Unix 系统(包括 Linux)。
在本章中,我们将涵盖以下主要内容:
-
Unix 服务的完整指南(它们如何工作以及如何管理它们)
-
在 Unix 系统上权限是如何工作的
-
详细概述 Unix 系统中不同类型的权限(文件、文件夹、用户等)
-
使用
umask进行高级权限配置 -
通过使用访问控制来增强你的防御性安全
-
管理访问控制列表
-
使用iptables配置基于主机的防火墙
-
利用日志文件的最佳实践
技术要求
对于本章,强烈建议你使用类 Unix 系统(如Kali Linux、Debian、Ubuntu 等)。本章包含大量截图,以便你能够看到所用命令的输出。然而,如果你能在阅读本书的同时自己测试这些命令,将会非常有价值。
一个非常好的选择是创建一个虚拟机(VM),这样你就可以通过 Kali 在你的电脑上轻松运行它。实际上,你会在本章末尾找到 Kali Linux 下载页面的链接。在那里,你可以下载一个预配置的虚拟机,准备在你喜欢的虚拟化软件(VirtualBox、VMware 等)中打开。
保护 Unix 服务
服务是后台运行的应用程序,执行或支持基本的操作系统(OS)任务。还有一些与应用程序或服务相关的服务,比如Apache、结构化查询语言(SQL)、超文本预处理器(PHP)、远程过程调用(RPC) 等。
许多服务默认加载并启用。然而,每个启用并运行的服务都代表一个潜在的漏洞,需要考虑和管理。
因此,为了减少这些风险,让我们回顾一些与 Unix 服务相关的最佳实践(以及一些额外的服务器设置注意事项)。
定义服务器的目的
Linux 服务器应该专门用于单一目的。例如,打印服务器、FTP、Web 服务器等。这个简单的任务将使加固工作变得更容易。
过去,拥有专用服务器是昂贵且难以获得的。然而,借助云技术,创建和管理每个目的的专用服务器变得非常容易,且不会在成本上产生显著增加。
安全启动配置
现在你已经定义了服务器的用途,下一步是通过移除所有不必要的应用程序、功能和协议来安全地配置操作系统,以避免不必要的风险。
这也将减少补丁工作的难度,因为需要补丁和加固的应用程序会减少,同时减少攻击面。
管理服务
第一步是确定哪些服务正在运行,以及它们的当前状态。
为此,我们可以执行以下命令:
service --status-all
此命令将运行 init 脚本,显示服务列表及其关联的状态。状态以括号表示,其中 [ + ] 表示服务正在运行,[ - ] 表示服务已停止,[ ? ] 表示对于没有返回状态的服务,返回 ?。
如下图所示,像 SQL 和 蓝牙 这样的服务并不是必需的,因此它们目前被禁用:

图 7.1 – 已安装服务列表
要获取有关服务的更多信息,可以在 /etc/init.d 中找到每个服务的 init 脚本。
例如,下面的图展示了 MySQL init 脚本的信息。这些信息在确定服务是否必要时非常有用:

图 7.2 – MySQL init 脚本
此外,该脚本通常支持 start 和 stop 命令来更改服务的状态。例如,我们可以使用以下命令来启动 ssh 服务:
service ssh start
以下图展示了 ssh 服务是如何运行的,我们如何成功停止它,并且如何通过 status 命令进行验证:

图 7.3 – 停止运行的进程
请注意,status 命令还会提供一些其他有趣的信息,如进程的运行时间、端口、PID、内存使用情况等。
在 systemd 初始化中管理服务
另一种管理服务的方法是使用 systemd,通过以下命令(我们将以 mysql 服务为例):
-
检查服务的状态(
mysql):inactive), while *Figure 7.5* shows the output when the service is active (running):

图 7.4 – mysql 服务状态
-
启动服务(
mysql):mysql service is now running:

图 7.5 – 正在运行的服务
-
重启服务(
mysql):systemctl restart mysql -
检查服务是否配置为在下次启动时自动启动(
mysql):systemctl is-enabled mysql -
启用
mysql服务在启动时运行:systemctl enabled mysql -
禁用
mysql服务在启动时运行:systemctl disabled mysql -
检查
mysql服务是否处于活动状态:systemctl is-active mysql
请记住,systemd 在大多数 Unix 发行版中都存在,但如果系统中没有此项,您将看到以下错误:
systemctl is not installed
systemctl: command not found
现在,让我们来看一下如何使用 systemd 删除服务。
在 systemd 启动过程中删除服务
现在,让我们来看一些额外的命令来删除服务:
-
停止服务(
mysql):systemctl stop mysql -
禁用服务(
mysql):systemctl disable mysql -
删除服务(
mysql):rm /etc/systemd/system/mysql -
重新加载
systemd:systemctl daemon-reload -
运行
systemd:Systemctl reset-failed
下图展示了如何启用和禁用开机启动服务,以及如何检查当前状态:

图 7.6 – 启用/禁用服务
现在你知道如何管理服务,接下来我们将讨论一个非常有趣的话题:Unix 上权限如何工作以及如何以安全的方式管理它们。
应用安全的文件权限
Unix 系统有一种独特的权限管理方式,这与 Windows 系统非常不同,因此让我们从 Unix 系统中权限的基本工作原理开始。
理解所有权和权限
Unix 系统有三种文件/文件夹所有权级别,可以通过 ls -l 命令查看。
如下图所示,命令显示了大量信息,例如硬链接、谁创建了文件、文件大小、最后修改时间、文件或文件夹的名称,最重要的部分是ls的权限:

图 7.7 – 文件长格式列出结果(ls -l)
现在,让我们看一下权限部分,如下图所示。第一部分是文件类型(在此示例中,我们使用 d 表示目录或文件夹)。
其他类型如下:
-
-: 普通文件,具有不同的扩展名,如.txt、.php、.sh、.py等 -
l: 符号链接(或软链接或软连接) -
c:char文件类型 -
b: 块设备文件

图 7.8 – Unix 上的权限
然后我们有权限。这里有三个字母(加一个特殊字符)来表示三种不同用户类型(用户、组、其他)的权限(读取、写入、执行或禁用):
-
用户: 是文件或文件夹的所有者或创建者。默认情况下,这表示谁创建了文件,但可以进行修改。
-
组: 显示指定组中用户的权限(如 图 7.7 所示)。
-
其他: 指定不属于文件所有者(用户)和指定组的其他用户的权限。
权限示例
如前节所示,类 Unix 系统有四种权限类型:
-
读取: 用户可以打开文件。
-
写入: 用户可以修改文件内容。
-
执行: 用户可以从 shell 执行或运行文件。
-
禁用: 没有权限。
为了更好地理解这一点,看看权限是如何应用的:
-
---:无权限 -
--x:仅执行权限 -
-w-:仅写入权限 -
-wx:写入和执行权限 -
r--:读取权限 -
r-x:读取和执行权限 -
rw-:读取和写入权限 -
rwx:读取、写入和执行权限
现在,让我们看看不同用户的权限是什么样的:
-
rwxr-xr-x:用户可以读取、写入和执行,组和其他用户只能读取和执行。 -
rwxr-xr—:用户可以读取、写入和执行,组可以读取和执行,其他用户只能读取。
记住,在分配权限时,你必须遵循最小权限原则(PoLP)。
数字模式下的权限(八进制表示)
Unix 系统有一个非常有趣的特点,就是权限也可以用数字表示,这使得系统可以使用数学来计算权限。为此,系统为每个权限分配了一个值:
-
4 -
2 -
1
下图表示如何在数字模式下计算权限时将值相加:

图 7.9 – 数字模式下的权限
根据前面的表格,权限现在看起来是这样的:
-
0 (
---):无权限 -
1 (
--x):仅执行权限 -
2 (
-w-):仅写入权限 -
3 (
-wx):写入和执行权限 -
4 (
r--):读取权限 -
5 (
r-x):读取和执行权限 -
6 (
rw-):读取和写入权限 -
7 (
rwx):读取、写入和执行权限
随着时间的推移,使用数字可能会更方便。然而,你必须熟悉这两种权限表示方式,因为一些命令可能会输入其中之一。
默认权限
在创建文件时,Unix 系统会将当前的默认权限分配给新创建的文件,作为数据安全专家,你必须理解这些权限是如何分配的。然而,你还必须了解如何定制这些设置,以防你需要对新创建的文件应用更严格的权限。
我们可以使用ls -l {file_name}命令查看文件的权限,但是为了查看默认权限,让我们使用touch {file_name}命令创建一个新文件,然后使用之前的ls -l命令查看系统默认分配的权限。
我们在下图中创建了一个示例,展示了我们系统中一个文件的默认权限。在这个例子中,默认权限如下:
-
用户(kali):读取和写入
-
组(kali):读取
-
其他用户:读取

图 7.10 – 无执行权限的文件
你可以通过命令来熟悉 Unix 系统(创建文件、删除刚创建的文件、列出权限等),你也可以通过转换来更熟悉数字模式。例如,你可以使用图 7.10中显示的权限,并通过图 7.9中的表格将其转换为数字模式。这将给你这些权限的数字表示,644。
小贴士
你是否注意到有一种情况,即root甚至没有执行(x)权限?如果有,不要惊慌,这很正常,可能只是表示该文件不是可执行文件。
以下图示例所示,这是一个由root拥有且没有执行权限的文件。正如所解释的那样,这是预期中的情况,因为日志文件不是可执行文件:

图 7.11 – 没有执行权限的文件
到目前为止,我们已经看到了如何应用权限到文件上。现在,是时候了解权限在目录(文件夹)中的作用了。
目录(文件夹)中的权限
在 Unix 系统中,文件和目录是分别管理的,这意味着默认权限是分别配置的。因此,请记住这一点,因为如果两者没有正确配置,这可能会构成安全漏洞。
如下图所示,我们创建了一个mkdir {directory_name}目录,然后使用ls -ld命令查看系统为该目录分配的默认权限:

图 7.12 – Unix 系统中文件夹的权限
如你所见,文件夹的权限与应用于文件的默认权限非常不同。让我们来做个对比。
我当前在文件上的默认权限(rw-r--r--)如下:
-
用户(kali):读取和写入
-
组(kali):读取
-
其他:读取
我当前在目录上的默认权限(rwxr-xr-x)如下:
-
用户(kali):读取、写入和执行
-
组(kali):读取和执行
-
其他:读取和执行
另一个需要澄清的重要事项是,目录的权限与文件略有不同:
-
读取:用户可以列出目录内容。
-
写入:用户可以在目录中删除或创建文件。
-
执行:用户可以访问目录。
如果一个用户没有访问文件夹的权限,但对文件夹内的文件有完全访问权限,会发生什么情况?
仅仅保护文件夹而不保护其中的文件不是最佳做法,因为用户仍然可以通过硬链接访问文件。因此,作为最佳做法,始终对文件夹及其内部的文件应用适当的权限。
使用 umask 更改默认权限
我们可以使用umask命令来改变文件和文件夹的默认权限。
如下图所示,你可以输入umask命令,它会告诉你当前会话的umask值:

图 7.13 – 检查默认权限和 umask
但是,022意味着什么呢?
为了回答这个问题,让我们先回顾一下基础知识。Unix 系统有两个默认权限:文件的666(意味着每个人都可以读取和写入),以及目录的777(意味着每个人都有读取、写入和执行权限)。但是,为了应用这个umask,我们只需要从默认值中减去022,结果大致如下:
文件权限:
666 - 022 = 644
基于图 7.9,644等于rw-r--r--。
如下图所示,文件的默认权限正是这样:

图 7.14 – 文件的默认权限
目录权限:
777 - 022 = 755
基于图 7.9,755等于rwxr-xr-x
下图确认了目录的默认权限755等于rwxr-xr-x:

图 7.15 – 目录的默认权限
现在,改变umask值非常简单。只需输入umask命令和新的值。
例如,如果你想添加一个更严格的值,可以使用umask 0027,这将提供以下结果:
文件权限:
666 - 027 = 640
基于图 7.9,640等于rw-r--r--。
结果是,默认情况下,其他人将无法访问这些文件。
目录权限:
777 - 027 = 750
基于图 7.9,750 等于 rwxr-x---。
结果是,默认情况下,其他人将无法访问或列出目录的内容,如下图所示:

图 7.16 – 权限拒绝错误
请注意,对于前面提到的图 7.16,kali用户不是文件的创建者,并且不属于该组,因此被视为其他人。
提示
使用此命令时需要非常小心,因为它可能会使系统暴露。例如,你绝不应使用umask 000,因为它会为所有新创建的文件和文件夹授予完全权限(rwx)给每个人。
权限层级
在 Unix 中,权限更具体的优先级高于权限较少的。
这意味着用户的权限优先于组的权限,而用户和组的权限又优先于其他人的权限。
这可能有点混淆,所以为了简化这一点,让我们看一下下面的示例。在那里,您可以看到我们创建了一个目录(akira),并使用默认的rwxr-xr-x权限,然后我们使用chmod 077将用户的权限从rwx(完全访问)更改为---(无访问):

图 7.17 – Unix 权限的优先级
现在,目录权限是---rwxrwx。这非常有趣,因为组和其他用户具有完全访问权限,但用户(创建目录的用户)没有列出或访问文件的权限。
因此,这意味着由于权限层级(优先级),除了拥有者外,所有人都可以访问这个目录。
比较目录权限
可能有某些情况,您需要比较两个目录的权限,以查找可能导致安全漏洞的不一致之处:

图 7.18 – 比较文件夹权限
如前图所示,您可以使用ls -ld {directory1 directory2}命令查看比较结果。在这种情况下,我们可以看到权限不相同,这可能需要进行调整,以防止未经授权的访问。
修改单个文件的权限和所有权
在 Unix 上更改权限非常简单。这里,您可以使用chmod命令,后跟新的数字权限,如图 7.17所示,在那里我们将akira目录的权限更改为700,等同于rwx----。
命令语法如下:
chmod {new_permissions} file_name
您还可以使用chown命令来更改文件的所有权。
命令语法如下:
chown {new_owner} file_name
最后,我们还可以通过使用chgrp命令来更改文件的所属组。
命令语法如下:
chgrp {new_group} file_name
另一个有趣的命令是chattr,它使用户能够更改文件的一组属性。要查看更多关于此命令可以更改的所有属性的信息,请访问 manpages.org/chattr。
查找不需要的权限的有用命令
可能有某些情况,您需要检查权限以确定它们是否按预期应用,或者是否需要纠正(限制)某些权限,以维护文件的安全性。
以下是一些有用的命令列表,您可以利用它们来执行这项重要任务:
-
查找其他用户可读的所有文件:显示当前目录中所有其他用户可读的文件。许多文件位于隐藏目录中,通常无害。然而,如果此列表中出现任何机密或敏感文件(如 SSH 密钥),则必须修改权限以确保数据的机密性:
find . -perm /004 -type f -print0 | xargs -0 ls -l -
查找所有以任何方式对其他用户可访问的文件:这将显示您主目录中所有对其他用户具有读取、写入或执行权限的文件。这对于大致了解其他用户可以访问您主目录中的哪些文件以及在必要时采取限制措施非常有用:
find ~ -perm /007 -type f -print0 | xargs -0 ls -l -
查找所有可由其他用户写入的文件:显示指定目录中所有可由其他用户写入的文件。
此列表中的所有文件必须仔细分析,以确定是否需要允许其他用户写入。如果不需要,则必须调整权限,以防止影响数据的完整性:
find /{directory_name} -perm /002 -type f -print0 | xargs -0 ls -l -
查找所有用户或组可执行,且其他用户可写的文件:显示主目录中所有既可由其他用户写入,又可由文件所有者的用户或组执行的文件。
如果您发现一个文件可以被其他用户执行,那么您必须分析是否有对此行为的有效例外。如果没有,则需要立即更改文件权限,以防止影响文件的完整性和可用性:
find ~ -perm -102 -type f -print0 | xargs -0 ls -l # User find ~ -perm -012 -type f -print0 | xargs -0 ls -l # Group -
查找所有不属于特定组的文件:显示当前工作目录中所有不属于指定组的文件:
find . -not -group {group_name} -type f -print0 | xargs -0 ls -l -
查找所有由特定组拥有的文件:显示在您的主目录中由指定组拥有的所有文件:
find ~ -group {group_name} -type f -print0 | xargs -0 ls -l
现在,您已经成为 Unix 系统权限管理的高手,让我们看看如何通过利用访问控制列表(ACL)来扩展所有这些知识,从而增强 Unix 服务器的安全性。
通过改善访问控制来增强服务器的保护
ACL使 Unix 管理员能够对权限进行详细的微调,这些微调可能是之前部分命令无法实现的。因此,让我们探索如何使用 ACL,这样您就可以利用它们来增强权限的应用和管理。
查看 ACL
首先,您可以使用getfacl {file_name}命令查看指定文件的 ACL。
以下图示例显示了一个具有和不具有 ACL 的文件。请注意,当文件具有 ACL 时,它会增加一行,显示指定用户在 ACL 上的权限,在本例中为cesar用户及其相关权限(rwx):

图 7.19 – getfacl命令的视图
您也可以通过执行长列表命令(ls –l)来识别文件是否具有 ACL:

图 7.20 – 带有 ACL 的文件列表
上图显示了bravo文件的权限末尾有一个+符号,这表示该文件具有 ACL。
管理 ACL
要为文件设置 ACL,您可以使用setfacl命令。
在以下示例中,我们展示了一个命令的语法,其中我们希望为bravo文件创建一个 ACL,为cesar用户提供rwx权限:
setfacl -m u:cesar:rwx bravo
你还可以通过使用g(组)而不是u(用户)来为组创建 ACL。在以下示例中,你可以看到我们是如何为bravo文件创建 ACL 以添加读取和写入权限给managers组的:
setfacl -m g:managers:rw bravo
现在,让我们进一步探索setfacl命令的更多用途。
目录上的默认 ACL
在为目录创建默认 ACL 时,目录中创建的任何文件也会自动继承该默认 ACL。
为此,我们将使用相同的setfacl命令,但会使用一些不同的参数。在此示例中,我们为bravito文件夹创建一个默认 ACL,以便为cesar提供读取权限:
setfacl -m default:u:cesar:r bravito
下图展示了如何让bravisimo文件从我们刚为bravito目录创建的默认 ACL 中继承cesar的权限:

图 7.21 – 目录上的默认 ACL
现在,让我们看看你如何使用这个命令来移除一个 ACL。
移除 ACL
要移除特定的 ACL,使用相同的setfacl命令,但将-m参数替换为–x:
setfacl -x u:cesar bravisimo
下图展示了如何成功地移除cesar用户的 ACL:

图 7.22 – 移除用户的 ACL
然而,你可能会注意到mask仍然存在,因此 ACL 并没有完全移除。
如图 7.23所示,要完全移除bravo文件的 ACL,你需要使用以下命令:
setfacl -b bravo
此外,在下图中,注意到在执行此命令后,权限末尾的+符号也被移除了(参见ls -l命令的结果):

图 7.23 – 完全移除文件的 ACL
此外,你还可以看到,在使用getfacl命令检查 ACL 时,mask已经不再显示。
增强的访问控制
还有其他一些系统通过实施安全策略来增强访问控制。其中之一就是著名的SELinux。
SELinux 的访问控制由加载到系统内核中的一组策略决定,这些策略启用了改进的安全机制,防止粗心的用户或行为不当的应用程序更改权限。
SELinux的安装、配置和设置可能会因 Unix 的不同版本而有所不同,因此,在这种情况下,最好通过访问其官方网站selinuxproject.org/page/Main_Page来查看你所使用的 Unix 系统的具体设置。
好的,现在你已经是管理 Unix 权限的专家了,接下来是时候看看如何利用主机防火墙来增强 Unix 机器的安全性。
配置基于主机的防火墙
我们都熟悉防火墙作为设备,用来调节进出网络的流量,防止恶意代码或攻击的进入,同时防止数据泄露。
基于主机的防火墙是可以在操作系统级别激活的防火墙规则,从而为系统应用进出网络流量的保护。
主机防火墙的一个特点是它们是针对每个系统配置的,在需要时提供更高的灵活性。
有几个用于 Unix 系统的基于主机的防火墙,如 iptables,firewalld,netfilter,ipfw 等。
理解 iptables
iptables 用于在 Linux 内核中设置、维护和查看 IPv4 和 IPv6 包过滤规则表。
要理解 iptables,首先需要理解它的组成部分。
链
链是为特定任务定义的一组规则。
iptables 使用三组规则(链)来管理流量:输入链,输出链 和 转发链:
-
输入链:这些是应用于从网络到本地主机的传入流量的规则。
-
输出链:这些是应用于从本地主机到网络的出站流量的规则。
-
转发链:这些是应用于既不由主机发出也不指向主机的数据包的规则。它们是主机仅仅进行路由的数据包。
策略
iptables 使用三种策略或操作:接受,丢弃 和 拒绝:
-
接受:接受流量并将其传递给应用程序或系统进行处理。
-
丢弃:阻止流量,不进行处理。
-
拒绝:类似于丢弃,但会向主机发送一个错误返回,说明该数据包被阻止。
提示
iptables 中的规则是从上到下检查的。所以,在创建和插入规则时要小心,避免意外绕过。
好的,够多的理论了,接下来看看如何配置它们。
配置 iptables
我们需要通过以下命令来检查当前的 iptables 配置:
sudo iptables -L
在运行此命令时,我们可以看到三条链(INPUT,FORWARD,和OUTPUT),但如以下图所示,默认情况下没有预定义规则:

图 7.24 – 默认 iptables 配置
现在,让我们探讨一下前述图形中显示的每一列的含义:
-
target:定义要执行的操作(或策略)(ACCEPT,DROP,REJECT)。 -
prot:决定该规则应用于哪个协议。 -
source:数据包的源地址。 -
destination:数据包的目的地址。
如你在图 7.24中看到的,所有链(INPUT,FORWARD,和OUTPUT)的默认策略是ACCEPT。所以,让我们来探讨如何更改它。
更改默认策略
你可以通过以下命令轻松更改所有链(INPUT、FORWARD 和 OUTPUT)的默认策略,将更严格的权限应用于特定链:
sudo iptables -P FORWARD DROP
下图显示了命令的结果,现在你可以看到FORWARD链的默认权限是DROP:

图 7.25 – 默认的 iptables
现在是时候查看如何使用 iptables 阻止传入流量了。
使用 iptables 阻止传入流量
假设你识别出了一个已知进行 DDOS 攻击的 IP 地址(14.14.14.14)。
我们可以通过以下命令轻松地阻止来自该 IP 地址的所有传入流量:
sudo iptables -A INPUT -s 14.14.14.14 -j DROP
现在,让我们来看看这个命令的参数:
-
-A:用于将规则附加到链的末尾(你可以使用-I将规则附加到链的顶部)。 -
-s:指定数据包的源(在本例中是攻击者的 IP 地址)。 -
-j:指定要应用于数据包的操作或策略。

图 7.26 – 使用 iptables 阻止传入流量
上图显示了在 iptables 上创建的新规则。
使用 iptables 将 IP 地址列入白名单
我们还可以使用 iptables 通过以下命令列出白名单或接受来自指定来源的流量:
sudo iptables -I INPUT -s 192.168.1.14 -j ACCEPT
下图显示了前述命令的结果,以及-I参数如何将规则放在链的顶部:

图 7.27 – 使用 iptables 列出白名单地址
现在,让我们看看如何从 iptables 中删除策略。
从 iptables 中删除所有策略
有很多情况,你可能需要从 iptables 中删除所有策略,例如,如果你继承了一台新服务器,当前的规则很混乱,你希望使用自己的超级安全规则。或者,也许你只是想清除你写书时造成的所有混乱。好消息是,使用以下命令,完成这项操作非常简单:
sudo iptables -F
现在,正如下图所示,iptables 已被刷新,看起来像新的一样:

图 7.28 – 刷新 iptables 规则
刷新 iptables 也是在遇到网络问题时常见的故障排除步骤。然而,你必须设置所需的控制措施,以避免不加选择地执行此操作。此外,对 iptables 的任何更改都应记录并获得安全分析师的批准,以确保其他安全机制已被替代。
你在图 7.28 中注意到什么了吗?
我敢肯定你注意到了——这条命令只是移除了你创建的策略,但没有改变我们之前建立的FORWARD链的默认值(我们将其从ACCEPT改为DROP)。所以,刷新 iptables 时,确保你关注这一点。
现在,让我们看看如何使用 iptables 来防范一些威胁。
使用 iptables 进行 SSH 暴力破解保护
你可以使用以下 iptables 规则来阻止那些在X秒内尝试超过给定数量 SSH 连接的 IP 地址。以下是一个示例,若在 45 秒内有超过八次 SSH 连接,则阻止该 IP 地址:
iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --set
iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --update --seconds 45 --hitcount 8 -j DROP
请注意,第一个命令用于跟踪在端口22(SSH)上进入的新连接,而第二个命令则告诉 iptables 丢弃来自特定 IP 地址的包,该地址在 45 秒内发送了八个或更多请求。
注意
如果你想将这两条规则插入到INPUT链的顶部(以便在其他规则之前触发它们),请使用-I代替-A作为第一个参数。
另一个好的选择是使用白名单,因为它允许你允许一个或多个 IP 访问你的服务器,同时丢弃其他所有访问。
这是使用此技术的命令:
iptables -I INPUT -p tcp -s 10.10.10.10,192.168.1.14 --dport ssh -j ACCEPT
iptables -I INPUT -p tcp --dport ssh -j DROP
上面的例子将仅允许来自这两个 IP 地址的 SSH 连接,同时阻止来自其他任何 IP 地址的访问。
使用 iptables 防范端口扫描
有多种方法可以用 iptables 防范端口扫描,然而,这是我最喜欢的一种:
iptables -N PORT-PROTECT
iptables -A PORT-PROTECT -p tcp --syn -m limit --limit 2000/hour -j RETURN
iptables -A PORT-PROTECT -m limit --limit 200/hour -j LOG --log-prefix "DROPPED Port scan: "
iptables -A PORT-PROTECT -j DROP
iptables -A INPUT -p tcp --syn -j PORT-PROTECT
在这个例子中,我们假设没有合理的理由让一个主机在 1 小时内发送200 SYN请求,因此我们可以将此作为安全触发参数。然而,你可以根据自己的判断调整这个数字。
你可以使用 iptables 做很多其他事情,比如为特定端口实施规则以删除给定规则。你可以探索这些选项并根据需要配置 iptables。
最佳实践是定期检查 iptables,以确认设置未被更改。一个常见的错误是系统所有者或管理员可能在网络故障排除过程中删除了一些规则。在这种情况下,必须调查根本原因以修复问题。如果必须删除或禁用 iptables 规则,那么你需要确保另一个控制、政策或系统已经设置好,以弥补由于删除 iptables 规则所带来的潜在安全漏洞。
日志的高级管理
正如你所知道的,日志是对给定系统、操作系统或应用程序上活动或操作的记录。它们在调查过程中非常重要,帮助确定停机时间或其他事件的可能原因。
最佳实践指出,所有日志必须启用,以确保你能追踪系统中发生的所有事情。记住,日志是审计或取证分析中的主要信息来源,因此,你需要确保它们可以随时供查阅。
此外,现如今存储成本非常低,所以你很难为禁用日志以节省空间提供合理的理由。
另一个好习惯是将所有日志集中存储在外部设备上,这样在系统完全故障或硬盘崩溃的情况下,你仍然能够恢复日志。此外,攻击者通常会通过删除日志来掩盖自己的痕迹,但拥有日志的外部副本将使攻击者更难删除其痕迹(因为攻击者还需要侵入备份或集中存储日志的其他系统)。
利用日志
安全信息与事件管理(SIEM)系统可以收集并利用所有这些日志(数据),并经过一定的训练、配置和关联后,将这些数据转化为有用的安全洞察(信息和知识)。
这些系统的价值在于它们可以分析来自日志的大量数据(通常是被浪费的),以发现模式并揭示漏洞。它们甚至有能力检测正在进行的攻击(包括高级持续威胁)。
SIEM 系统的另一个好功能是,它们可以帮助你轻松找到已知的攻击迹象,例如以下迹象:
-
在同一小时内重复失败的登录尝试,每隔
X天发生一次 -
异常数量的登录尝试
-
从未知地址在异常时间进行的登录
-
不明地址尝试在多个系统上登录
-
使用默认凭证进行的登录尝试(
admin/admin)
同时,记住你还可以收集来自其他设备的日志,例如路由器、代理服务器和防火墙。这些日志非常重要,因为其中一些可以帮助你检测一些难以发现的攻击,比如被感染的僵尸机器进行加密货币挖矿、DDOS 攻击等。
你还可以从一些物联网(IoT)设备和SCADA系统中收集有价值的信息。这些可以提供早期警报,因为防护较差的系统通常是犯罪分子进入你基础设施的入口。及时发现这一点,可能帮助你防止他们访问你基础设施中的更有价值的资产和数据。
总结
恭喜你!你现在已经是 Unix 服务器安全的高手了,让我告诉你为什么。
首先,你学习了所有关于Unix 服务的内容,包括它们如何工作以及如何管理它们。
我们还以非常顺畅且简单的方式介绍了一个复杂的主题,Unix 权限,包括如何使用八进制表示法来处理这些权限。
然后,我们还了解了 Unix 系统中不同的权限类型,以及如何正确管理它们。
此外,我们回顾了如何利用umask进行默认权限的高级配置。
你还学习了如何通过利用访问控制来增强系统的安全性,并且学会了如何配置它们。
最后,你还学习了什么是基于主机的防火墙,以及如何使用iptables来配置它。
现在,拿一杯咖啡,做好准备,因为在下一章节中,你将掌握保护网络所需的所有技能。
进一步阅读
-
如果你想了解更多关于 SELinux 的内容,可以访问其官方代码库:
github.com/SELinuxProject/selinux。 -
想要了解更多关于 iptable 配置的信息,你可以查看以下书籍:
help.ubuntu.com/community/IptablesHowTo。 -
在这里,你可以免费下载 Kali Linux 的最新版本:
www.kali.org/downloads/。
第八章:第八章: 提升你的网络防御技能
“数字经济和知识社会依赖于在网络空间中流动的大量数据,这些数据使得系统、人类与企业之间能够互动。因此,连接的人类的未来依赖于电信网络的投资、韧性和网络安全。”
– 路易斯·阿德里安·萨拉萨尔,前哥斯达黎加科学技术与电信部长
网络安全策略的基础应建立在对网络中传输数据的了解之上。
你会对流经你网络的大量开销感到惊讶。
但最重要的是,你会对即使在你不使用网络时,网络中流动的数据量感到惊讶。程序请求更新、程序向其服务器发送编码数据(这是我们在安装像 TikTok 和 Facebook 这样的社交媒体应用时同意的),还有许多其他原因,都是这种持续数据流动的根源。
现在,让我们来看看本章等待你探索的精彩内容:
-
理解网络攻击的各个阶段。
-
深入探索你防御安全工具箱中最好的工具之一:Nmap。
-
一系列引导实例,帮助你获得Nmap的实操经验。
-
走进无线网络上最大安全漏洞和弱点。
-
我们将为无线用户创建一份行业最佳的安全指南。
-
我们还将回顾另一个优秀的网络分析工具:强大的 Wireshark。
-
我们将研究一些易受攻击的协议,以及一些引导演示,展示如果这些协议在使用中,攻击者如何轻松捕获敏感数据。
-
你还将学习关于IPS和IDS的基础知识,它们的相似性与差异,并快速了解最好的免费 IPS 和 IDS。
-
此外,本章还有一个附加内容——没错,就是附加内容!——你将学会如何通过 Telnet 玩复古游戏、参观古老的虚拟博物馆,甚至免费观看 ASCII 电影。
技术要求
为了最大限度地利用本章内容,你需要安装 Kali Linux。这样,你可以玩转我们将要介绍的工具。
Kali Linux 非常轻便,所以你几乎可以在任何有互联网连接的老旧电脑上安装它。
另一个选择是使用虚拟机,但那时你可能需要调整一些设置(尤其是网络设置),以确保所有工具能够按预期工作。
所有的图像,包括为虚拟机预建的虚拟镜像,都可以在这里找到:www.kali.org/downloads/。
使用网络映射的主力工具——Nmap
首先,让我们从理解网络映射工具的重要性开始。
网络攻击通常由五个阶段组成,其中第二阶段的核心是网络映射,也称为扫描。为了更好地理解这一点,让我们快速浏览一下网络攻击的五个阶段。
网络攻击的阶段
这些阶段并不是作为攻击者必须遵循的一套最佳实践创建的;相反,它们是由网络安全专业人士设计的,用于对攻击者在进行网络攻击时最有可能遵循的常见步骤进行分类。
让我通过讲述一个攻击者的故事来解释这些阶段,故事中的攻击者想要从一家名为Bravix的虚构公司获取一些数据。
第一阶段 – 侦察
首先,攻击者需要获取一些关于 Bravix 的基本信息,如网页名称、安全类型、基本结构、使用的网络服务等。此外,攻击者还可能希望获得公司其他公开的信息,如公司位置以及关于员工的信息,这些都可以在后续的定向社交工程攻击中使用。
通常,所有数据都是通过简单的 Google 搜索等公共来源手动收集的。
第二阶段 – 扫描
现在攻击者已经知道了与 Bravix 相关的网页(bravix.com、store.bravix.com和mail.bravix.com),是时候扫描它们以收集更多将在攻击过程中使用的技术信息了:
-
操作系统版本。
-
IP 地址。
-
使用的网络服务。
-
开放端口。
-
内容管理系统(CMS)的版本。如今大多数网页都使用 CMS 作为平台来运行它们的网页。
如前所述,这一阶段比前一阶段更具技术性,攻击者将利用漏洞扫描器和网络扫描器等工具来收集这些数据(我们很快就会看到)。
第三阶段 – 获取访问权限
拥有所有这些信息后,攻击者可以确定受害者网页(或网络资源)中的漏洞,并利用它们来获取数据。
第四阶段 – 维持访问
这是一个可选阶段,通常在更复杂的攻击中执行,攻击者希望从受害者那里收集更多数据;然而,在这个例子中,攻击者可能只从 Bravix 的网络服务器上获取所需的信息并离开。
第五阶段 – 掩盖或删除踪迹
当然,这次入侵是非法的,因此为了避免监禁,攻击者将尽力删除任何可能作为此犯罪证据的日志,以清除任何数据外泄的痕迹。
以下图显示了网络攻击的五个阶段;然而,非常重要的一点是,这些阶段并不总是按顺序进行,事实上,它们很多时候是重叠的。例如,攻击者可能从第一阶段开始就通过使用 VPN 来掩盖自己的踪迹,以避免被发现:

图 8.1 – 网络攻击的阶段
好的;基于我们刚刚学到的内容,我们可以确定扫描阶段的重要性,因为攻击者在这里收集的信息越多,攻击的风险就越高。
因此,让我们理解如何利用攻击者可能用来攻击我们的相同工具,主动保护我们的系统免受攻击。
Nmap
Nmap 是网络发现和安全审计的必备工具,允许我们执行以下操作:
-
对我们的网络进行清单盘点。
-
收集服务或主机的正常运行时间数据。
-
确定给定网络上的主机。
-
确定这些主机提供(或启用)的服务。
-
确定所述主机的操作系统版本。
-
确定使用的任何数据包过滤器或防火墙。
基本上,Nmap 利用 IP 数据包收集所有这些数据,并通过命令行界面或名为 Zenmap 的 GUI 清晰地呈现这些信息。
Nmap 适用于大多数操作系统,包括 Windows、Linux 和 macOS,并可以从nmap.org/免费下载。
警告
在许多国家,没有得到所有者书面授权扫描某人的系统或网络是非法的,因此在进一步操作之前,确保你只对那些你被授权的系统进行这些扫描。
好消息是,如果你想测试自己的知识,或者仅仅是想通过 Nmap 进行练习,你可以使用 Nmap 背后的人们慷慨创建的一个系统,供教育用途。该页面为scanme.nmap.org/。
现在,让我们通过在测试服务器上执行基本的nmap命令来看看这如何工作:
nmap scanme.nmap.org
如图 8.2所示,基本命令提供了关于服务器的非常有价值的信息。
在这里,你可以看到哪些端口是开放的,以及与每个端口关联的服务。
在审计你的基础设施以确认仅打开必要的端口和服务时,这非常有用。如果发现不一致,应该立即采取措施修复漏洞,防止坏人发现它。

图 8.2 – nmap 基本输出
现在,通过添加-A参数,让我们变得更加激进:
nmap -A scanme.nmap.org
如图 8.3所示,-A参数为我们提供了一些额外且有用的信息,例如以下内容:
-
端口上运行的服务的名称和版本:这是一个非常重要的审计工具,它能让你轻松识别过时且易受攻击的服务,从而可以联系服务器所有者尽快进行修补。此外,根据漏洞的严重性(例如,可能危及整个基础设施的非常旧的版本),你可以制定政策,如果服务在X天内没有修复,那么该服务器将被从网络中移除。这不仅可以保护你的基础设施免受暴露的服务影响,还能向系统管理员施加压力,确保他们尽快修复相关服务。
-
操作系统版本:这将帮助你确定你的基础设施中是否存在不受支持的操作系统。

图 8.3 – nmap -A 输出
如前所述,Nmap 是一个非常适合审计的工具,你可能需要将这些结果发送给服务器所有者,以便他们采取行动。好消息是,你可以使用这个简单的命令将 nmap 结果导出到 .txt 文件中,这样你就可以轻松地将其作为附件发送给服务器所有者:
nmap -A scanme.nmap.org >> server_audit.txt
如下图所示,前面提到的 nmap 命令生成了一个名为 server_audit.txt 的文档,并将其保存在你的工作目录中,准备将其包含在审计结果中:

图 8.4 – nmap 结果导出到 .txt 文件
你还可以通过使用 IP 范围来定位网络的特定部分。例如,以下命令将扫描从192.168.0.1到192.168.0.100的所有 IP:
nmap -A -v 192.168.0.1-100
请注意,我们还包括了 -v(表示详细)参数,它会输出有关扫描过程的更多信息。
提示
默认情况下,Nmap扫描 1,000 个端口,但你可以通过使用如 -F(快速扫描较少的端口)、-p(指定要扫描的端口)或 -r(按连续顺序扫描所有端口)等参数来增加、减少或指定端口数量。
你可以使用更多的参数来与 nmap 一起使用。要探索它们,只需键入以下命令:
nmap --help
但还有更多! nmap 支持社区创建的脚本来增强其功能,具体内容将在下一节中讲解。
Nmap 脚本
让我们回顾一下你可以在防御性安全中利用的一些最佳 nmap 脚本。
vulners
这个脚本会让你的生活更轻松。它将提供所有 Nmap 扫描的结果。
什么是 CVE?
在 第二章 中,管理威胁、漏洞和风险,我们谈到了一个寻找漏洞的最佳地点:CVE 网站,网址为 cve.mitre.org/。
这个神奇的脚本叫做 vulners,你可以在以下链接找到它:github.com/vulnersCom/nmap-vulners。
这个脚本默认加载到标准Nmap 脚本引擎(NSE)库中,因此无需额外安装。
命令结构非常简单,下面让我们来解释一下:
nmap -sV --script vulners [--script-args mincvss=<arg_val>] <target>
首先,我们使用标准的 nmap 命令,然后使用 -sV 参数,因为脚本需要版本信息才能正确收集 CVE。
然后,我们使用--script {script_name}参数来调用该脚本。
我们可以选择使用 mincvss 脚本参数来限制结果为 CVE 分数大于提供的值。示例如下:
nmap -sV --script vulners scanme.nmap.org
现在,脚本将查找与该 nmap 结果相关的所有 CVE。请注意,脚本使用一个超过 250 GB 的巨大数据库,因此扫描可能需要几分钟才能完成。
下图显示了与服务器上运行的 Apache 版本相关的大量漏洞列表:

图 8.5 – vulners 脚本结果
还请注意,脚本提供了一个关于 CVE 的网页链接,方便你进一步了解漏洞的详细信息。
如前所述,你可以使用>> {file_name}选项,将前一个命令的结果导出到.txt文件中,这样更方便发送给服务器所有者(以便尽快修复漏洞)。另外,将文件导出为.txt格式也是为审计保留证据的好方法。
vulscan
这是另一个非常酷的脚本,它将根据在nmap结果中找到的版本,搜索相关的漏洞。
默认情况下,脚本会在以下数据库中查找漏洞:
-
scipvuldb.csv -
vuldb.com -
cve.csv -
cve.mitre.org -
securityfocus.csv -
www.securityfocus.com/bid/ -
xforce.csv -
exchange.xforce.ibmcloud.com/ -
expliotdb.csv -
www.exploit-db.com -
openvas.csv -
www.openvas.org -
securitytracker.csv -
www.securitytracker.com(已停止维护) -
osvdb.csv -
www.osvdb.org(已停止维护)
不幸的是,默认情况下没有加载此脚本。不过不用担心,以下是在 Kali Linux 中轻松安装它的步骤:
-
导航到
nmap的scripts目录:cd /usr/share/nmap/scripts/ -
创建一个目录来安装文件:
sudo mkdir vulscan -
访问目录:
cd vulscan -
安装文件:
git clone https://github.com/scipag/vulscan scipag_vulscan sudo ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan/scipag_vulscan -
安装完成后,运行该脚本非常简单:
nmap -sV –script vulscan/scipag_vulscan/vulscan.nse scanme.nmap.org
在这种情况下,如下图所示,脚本未在这些数据库中找到与当前 OpenSSH 版本相关的漏洞:

图 8.6 – vulscan 脚本结果
此脚本还可以针对其他数据库运行。为此,只需添加以下参数:
--script-args vulscandb=your_own_database
如前所述,nmap 的一个酷功能是你可以创建自己的脚本。
如果你想了解更多关于如何创建脚本的知识,我强烈推荐Paulino Calderon的《Mastering the Nmap Scripting Engine》一书,由Packt出版。
提高无线网络的保护
为了更好地解释这一点,我们将此部分分为两部分。
在第一部分,我们将深入探讨最危险的无线网络漏洞,这是你需要知道的。
第二部分将重点关注用户,因此它基本上是一个用户指南,帮助他们在使用家庭无线连接时保持安全。记住,这类指南是减少基础设施和数据最大风险的最佳选择,即不小心的用户。
无线网络漏洞
如前所述,我们将在这里讨论代表无线网络顶级漏洞的协议、特性和实践。由于最近远程办公用户的增加,本指南将涵盖影响企业和家庭系统的漏洞。
Wi-Fi 保护设置(WPS)– 问题
这是安全性与可用性(或便利性)之间权衡的完美例子。原因是WPS的创建是为了让非技术用户更容易将智能电视、游戏机和笔记本电脑等新设备连接到网络。
问题在于该协议极为不安全,存在多个漏洞,降低了网络的安全性。
WPS 有两种主要的实现方式:一种是基于 PIN 码,另一种被称为按键控制(PBC)。
PBC实现包括两种方法。一种方法是通过按下两台设备上的 WPS 按钮来启动,如图 8.7所示。通常,你需要先按下 Wi-Fi 上的 WPS 按钮,然后按下设备上的 WPS 按钮来建立连接。

图 8.7 – 按下按钮进行 WPS 连接
还有一种混合模式,在这种模式下,你需要先在设备上打开一个应用程序以扫描 WPS 启用的设备,然后按下路由器上的 WPS 按钮来建立连接,如图 8.8所示。
一些路由器还提供通过路由器的网页接口触发 WPS 的选项,但这个选项仅在少数型号中可用,而且使用的人很少(因为它缺乏解决方案的可用性部分)。

图 8.8 – WPS 混合连接模式
另一种 WPS 实现方式是使用PIN 码,这种方式比起你那超长且安全的密码,记起来要容易得多。
但等等……如果我们还要启用不安全的 PIN 访问,那拥有一个超级安全的密码又有什么意义呢?这就像有一个超级安全的百万美元大门,但你却可以通过一扇开着的窗户轻松绕过。
为什么 PIN 方法不安全?
PIN 码是一个 8 位数字,这意味着它的熵(可能的密码组合数)相比于包含大小写字母的字母数字密码非常小,从而大大降低了安全性。事实上,使用现代破解引擎,攻击者可以在不到 8 小时的时间内破解一个 8 位数字的 PIN 码。
但这并不是 WPS 中唯一存在的漏洞。研究人员还发现了加密协议中的几个漏洞。其中之一与 PIN 码的一些数字是校验和(可以计算)有关,这减少了破解密码所需的时间。
另一个漏洞与协议验证 PIN 码的机制有关,这个过程叫做密码舞,其中验证步骤之一没有被正确加密,导致攻击者能够轻松获取 PIN 码。
此外,研究人员还发现了路由器的 MAC 地址和/或序列号之间的某些关联,攻击者可以基于这些值计算 PIN 码。

图 8.9 – WPS 数据贴在路由器背面
如前图所示,这些值可以在路由器背面的贴纸上找到,但攻击者可以通过利用探测请求包的漏洞远程收集它们。由于这些请求包是未加密并由路由器广播的,因此任何人都可以接收并读取它们,而且它们可能包含 MAC 地址以及序列号。如果你想了解更多关于探测请求漏洞的内容,请参阅第五章,网络安全技术与工具,在网络安全高级无线工具部分下。
WPS – 解决方案
你可能会惊讶地发现,大多数路由器默认启用 WPS,因此你家里可能已经存在这个漏洞,却未曾察觉。
所以,这里最好的建议是完全禁用 WPS(逐步操作说明会在无线网络用户安全指南部分提供)。
如果出于某种原因,你需要启用 WPS,那么可以保持PCB 启用,并确保你禁用 PIN 选项(因为它更容易受到攻击)。
同时确保你更新路由器的固件,以确保你的路由器包含最新的 WPS 修复和安全更新。
有一些旧版路由器不允许你禁用 WPS。在这些情况下,你有两个选择:
-
更新路由器固件,看看新的更新是否提供禁用 WPS 的选项。
-
立即更换你的路由器。
现在,我们来看一个鲜为人知的无线功能,它可能会给你的网络带来一些安全漏洞:通用即插即用(UPnP)。
UPnP – 问题
UPnP的创建初衷是为了简化用户操作,它允许设备之间在同一网络中共享数据。
问题在于,这一功能最初是为在家庭网络中共享数据而设计的,通常共享的设备是受信任的设备,因此 UPnP 不进行身份验证,攻击者知道如何利用这一点。
UPnP 的其中一个功能是端口转发,攻击者可以利用这一漏洞控制计算机,并将其作为 DDoS 攻击中的代理。这就是著名的Mirai攻击中的情况,该攻击使用此技术防止安全系统识别指挥和控制服务器,因为全球数千台被感染的机器被用作“僵尸”机器与真实的指挥和控制服务器之间的代理。
利用 UPnP 漏洞的其他恶意木马实例包括银行木马Pinkslipbot,也被称为QakBot或QBot。这些木马非常危险,因为它们使用键盘记录器来捕获按键并将财务信息和凭证发送到远程指挥控制服务器。
UPnP - 解决方案
保护这些漏洞的最佳方法是禁用 UPnP(详细步骤将在无线网络用户安全指南部分提供)。然而,如果你真的需要 UPnP(以提升某设备的体验),那么你必须遵循以下这些建议:
-
检查你的路由器型号在网上,并确认制造商是否发布了最新的 UPnP 相关漏洞补丁。事实上,在 2020 年底,研究人员发现了一种叫做CallStranger的漏洞,攻击者可以利用这个漏洞从你的系统中窃取数据;因此,如果你需要启用 UPnP,你必须持续检查漏洞,并确保修补它们。要查找当前漏洞的列表,请访问
cve.mitre.org。 -
过滤所有尝试使用 UPnP 的外部流量。
-
监控网络流量,发现 UPnP 的滥用情况。
你在办公室可能有很多技术和管理控制措施来保护你的无线网络,但在家工作的用户呢?他们在家中的无线连接是否有相同级别的安全性?
这应该是你主要关注的事项,因为现在甚至大部分用户可能都在家工作,因此,制定并分发清晰的指导方针(管理控制)给用户,确保他们拥有可接受的安全级别,从而避免对商业数据和系统的额外风险,是至关重要的。
无线网络用户安全指南
作为组织的安全负责人,你必须为用户提供指导,减少攻击风险。
考虑到大多数用户通过 Wi-Fi 连接互联网,那么为你来说,创建一份无线网络使用最佳实践手册并分发给所有员工,将是一个很好的主意。
提示
此外,请记住,这里关键是确保所有用户都熟悉这些指导方针,因此一些好的建议是,创建图文并茂的资料通过邮件分享,或者制作一些有趣的视频吸引人们关注这个活动。此外,你还可以指定一些有影响力的员工作为安全冠军,帮助你将这些策略传播给所有员工。
大多数安全设置是在 Wi-Fi 路由器上配置的,因此让我们首先展示如何登录到 Wi-Fi 的管理控制台。
访问你的路由器
这是访问路由器设置所需的五个简单步骤:
-
打开 Google,输入你的路由器名称(品牌和型号)和短语
admin password。例如,Linksys E1200 admin password。 -
然后点击制造商提供的相关链接(在这种情况下是 linksys.com)。
-
如下图所示,链接将我们带到制造商的支持页面,确认该路由器的默认用户名和密码是
admin/admin:![Figure 8.10 – 默认的管理员用户名和密码]()
图 8.10 – 默认的管理员用户名和密码
-
要访问路由器,您只需要在互联网浏览器中输入路由器的 IP 地址。在这种情况下,支持页面提到了默认的 IP 地址;然而,这个地址可能会改变。但别担心,以下步骤可以很简单地确认:
a. 按下
+ R 启动 cmd并按 Enter 打开命令提示符。b. 在命令提示符中,键入
ipconfig并按 Enter。c. 然后查找名为
192.168.0.1的值:![Figure 8.11 – 路由器的 IP 地址]()
图 8.11 – 路由器的 IP 地址
-
一旦您在浏览器中输入 IP 地址,它应该会提示您输入登录页面,要求您提供凭证。在这个例子中,用户名和密码都是
admin。提示
所有的网页界面都是不同的(取决于制造商),但信息应该是相同的,因此请花一些时间探索界面并熟悉它。Linksys 提供了一个模拟器,您可以使用它来熟悉界面,链接为
ui.linksys.com/E1200/1.0.00/。
现在,让我们看看您需要更改哪些属性,以使无线路由器更加安全。
管理员密码
如您刚才看到的,路由器的密码可能非常弱(并且是众所周知的),所以第一步就是通过更改密码来保护路由器。根据路由器的不同,这个选项可能会出现在一个名为 管理、安全、登录 或 用户 的标签下。
提示 – 使用密码短语
密码越长,攻击者破解的难度就越大,因此使用一个您可以轻松记住的短语作为密码,例如 I.Love.my.wife.since.2014,或者像 I.am.sure.I.will.get.my.masters.in.2021 这样激励性的短语。当然,这些只是示例,您可以创建一个具有至少 25 个字符、独一无二的密码。像其他任何密码一样,使用特殊字符、俚语和流行短语更好,因为这样您的密码能够抵御暴力破解和字典攻击。
管理员用户
攻击者知道,连接路由器的默认用户名通常是 admin,然而某些路由器允许您更改该用户名。所以,如果您有这个选项,强烈建议您更改用户名,因为这将防止大多数攻击,因为它们将针对一个不存在的用户。
无线密码
如前一节所述,建议为您的无线网络使用强密码(长密码)。另外,好的做法是至少每 6 个月更换一次密码。
无线安全(安全模式)
这里有三个加密选项:WEP(极不安全)、WPA(有漏洞)、WPA2(推荐)。
无线网络名称(SSID)
默认情况下,SSID 可能是你无线路由器的品牌加上一些随机数字。这不仅丑陋,而且危险,因为每个人都能知道你的路由器型号,这样攻击它就会更容易。所以,第一步是,将你的 SSID 名称更改为你喜欢的名称。同时避免在 SSID 中使用你自己的名字,因为这可能会让你成为更容易的攻击目标。因此,像Harper Family这样的 SSID 应该避免使用。
提示 – 2.4 GHz 和 5 GHz
大多数现代路由器具有两个频段(2.4 GHz 和 5 GHz),在大多数情况下,你需要将它们配置成两个不同的路由器(即不同的 SSID、不同的安全模式、不同的密码、不同的客户账号等)。因此,请确保两个网络上的所有设置相同,以避免在其中一个网络中留下漏洞。
客户账号
假设你的邻居需要连接你的 Wi-Fi 一分钟来发送一封紧急邮件。这意味着你需要透露你的超级安全密码,但现在密码已经保存在他们的设备上,他们可以随时连接。现在,如果你改变密码以避免这种情况,那就意味着你必须在所有设备上重新输入新密码。因此,为了避免所有这些麻烦,你可以启用客户账号。客户账号允许你为外部人员创建账户,这有很多优点,包括以下几点:
-
它们可以临时启用,然后禁用以防止进一步访问。
-
你可以随时更改密码,而不会影响其他设备。
-
由于你可以将其用作临时账户,因此每次使用时都可以创建一个新密码,使得破解几乎不可能。
远程访问
一些路由器提供远程访问管理控制台的选项(通过互联网)。这非常不安全,因为它为攻击者提供了访问你路由器(进而访问你的网络和数据)的途径。因此,始终禁用远程访问功能。
禁用 WPS(包括按钮和 PIN 版本)
如前一节所述,WPS 是一个高度脆弱的协议,必须禁用(并且通常默认启用)。
这样做非常简单——只需在路由器上找到WPS 设置(如下图所示),然后点击禁用 WPS:

图 8.12 – WPS 设置
禁用 UPnP
类似于 WPS,UPnP 是高度脆弱的,最糟糕的是它在大多数路由器上默认启用,因此为了防止这种漏洞,强烈建议禁用它,如下图所示:

图 8.13 – UPnP 设置
Fing 应用
Fing 是一款移动应用程序,它可以让你查看所有连接到你网络的设备。
这是一个很好的工具,可以确认是否有未经授权的用户连接到你的网络,如果有,立即更改路由器密码。
如 图 8.14 所示,Fing 提供了许多关于连接设备的有用信息,如下所示:
-
设备名称
-
设备类型
-
设备型号
-
IP 地址
-
制造商或品牌

图 8.14 – Fing 应用
使用 NFC 标签
另一个很酷的想法是,你可以使用 NFC 卡 来存储你的无线设置,这样你就不需要输入你的安全(长)密码,只需将标签靠近手机,它就会自动连接到你的 Wi-Fi。
这种方法的另一个优点是,你不需要记住密码,这样你就可以使用像这样的超安全密码短语:
ds9e-sd4SDF-#ta+Dua-43v3r00-#D/#ef#sfM.?$-#iD2#l¡GE.#d-9#a
正如你在本指南中看到的,一旦你掌握了路由器的正确知识,保护你的无线网络就变得非常简单。
现在,让我们来看看最著名的网络安全工具之一:Wireshark。
介绍 Wireshark
Wireshark 是用于监控和保护网络的最佳网络安全工具之一。
本章旨在向你概述该工具以及你可以用它实现的主要功能。然而,如果你想深入了解 Wireshark,可以阅读 Lisa Bock 编写的《Learn Wireshark》一书,该书由 Packt 出版,内容超过 400 页,充满了有助于你成为该工具专家的知识。
Wireshark 的主要特点是能够收集通过给定网络适配器传输的所有网络流量,并 解码 捕获的比特为人类可读的格式。这是通过使用解码器或分析器实现的,这些解码器和分析器由社区不断更新。
Wireshark 可以安装在任何操作系统上,但如你所知,它在 Kali Linux 上预装,因此在这个示例中,我们将使用 Kali 上的版本,当前版本是 3.2.7。
开始捕获第一个数据包的第一步是 选择我们想要“监听”的网卡。如以下图所示,Wireshark 启动页面已经显示了可用的网卡,以便我们可以轻松选择一个并开始捕获数据包:

图 8.15 – Wireshark 初始界面
然而,如果你有多个网卡(接口),可能会让你困惑,不知道该选择哪个。
这里的技巧是点击 Interfaces,它会显示一个窗口,提供有关所有网络接口的详细信息。从那里,你可以通过查看流量列来确定哪个是你的活动接口。
如果流量栏没有活动,那么只需 ping 一个服务器,例如,ping www.google.com,如下面的图所示,你将开始看到流量栏在你活动的网络接口上移动。在这种情况下,我们可以确定我们的活动网络接口是eth0,因此我们可以点击它,然后点击开始来开始捕获数据包:

图 8.16 – Wireshark 上的活动接口
好的,现在我们开始监控,让我们看看打开网页时会发生什么。
提示
大多数网页都有大量广告,这会使扫描结果非常嘈杂,因此为了避免所有噪音,我们将打开一个大学的网页作为本示例。此外,使用 Kali 的虚拟机非常好,因为它没有 Windows 系统所带来的网络负担(如果你在 Windows 机器上运行 Wireshark,即使你理论上没有使用网络,也会看到很多数据包)。
以下图展示了我们对一个网页进行扫描的结果,帮助你熟悉工具的输出并更好地理解它们:

图 8.17 – Wireshark 扫描结果
让我们从分析前面图形顶部的输出开始。你会看到,第一个数据包是你的计算机向 DNS 服务器请求网页 IP 地址。在这里,例如,你可以验证请求是否发送到了所需的 DNS 服务器——在我们的例子中,它请求的是8.8.8.8(Google 的 DNS)。如果你发现请求是发往另一个 DNS,那么你可能遇到了 DNS 攻击,攻击者可能会将你的流量重定向到恶意网站。
一旦我们从 DNS 服务器获取到 IP 地址,就会开始看到一些基本的 TCP 数据包交换。之后,我们收到一些 HTTP 数据包(这基本上就是我们请求的网页),最后,我们看到一些 TLS 数据包,这意味着网页是通过 SSL 证书加密的(HTTPS)。
提示
你可以通过点击列名来轻松按列对结果进行排序。例如,你可以点击协议标签,按协议对捕获的所有数据包进行排序。
好的,现在让我们回顾一下利用 Wireshark 增强安全性的一些更高级的方式。
查找使用不安全协议的用户
正如你所知道的,用户总是会找到创造性的方法绕过你的管理和技术控制。在这种情况下,使用像 Wireshark 这样的监控工具是发现并阻止这些不法分子的好方法。
Telnet 漏洞
Telnet 是一种用于机器间通信的旧版客户端/服务器协议。
问题在于它没有提供加密,因此所有通信都会以明文形式传输。
由于这个风险,Telnet(包括服务器和客户端)在大多数系统中默认被禁用,包括 Windows 系统和 Kali Linux。
因此,由于这一风险,你必须确保你已具备所有技术和管理控制措施,以防止使用 Telnet 进行服务器登录和通信。
好消息是,你可以通过 Wireshark 轻松检测是否有人使用 Telnet,只需通过协议过滤结果即可。
实时捕获 Telnet 数据
要执行此示例,我们首先需要使用以下命令在 Kali Linux 上安装 Telnet 客户端:
sudo apt-get install telnet
现在,Telnet 客户端已安装,我们可以连接到 Telnet 服务器,在本示例中我们将使用一个开放的(且有趣的)Telnet 服务器。
等等,你不是说 Telnet 不安全吗?
是的,Telnet 服务器和 Telnet 通信存在多个漏洞,然而安装 Telnet 客户端并不代表系统存在漏洞。
让我们回到 Wireshark,设置它以捕获所有 Telnet 数据,这是一项非常简单的任务。如下面的图所示,你只需在 过滤器 栏中输入 telnet,就能实时查看所有 Telnet 连接:

图 8.18 – Wireshark 过滤器字段
现在,让我们导航到一个测试 Telnet 服务器并创建一个账户,看看我们能否捕获到它。
要做到这一点,只需在我们的 Kali Linux 上打开一个终端,并输入以下命令以访问 Telnet 服务器:
telnet telehack.com
如下图所示,我们现在已连接到 telehack Telnet 服务器:

图 8.19 – 与 telehack.com 服务器建立的 Telnet 连接
现在,让我们回到 Wireshark 看看我们捕获了什么。
结果非常有趣,正如 图 8.20 中所强调的,我们成功地以明文捕获了 Telnet 服务器发送的所有信息(这与我们在 图 8.19 的命令行中看到的信息相同)。

图 8.20 – 捕获 Telnet 数据包
所以,我们已经证明了 Telnet 通信不安全,并且很容易被捕获。现在,让我们看看是否也能捕获一些登录详情。
为了实现这一目标,让我们使用 login 命令创建一个账户。然后系统会要求输入用户名,我们需要回复 Y 以确认创建新账户(见 图 8.21)。

图 8.21 – 在 Telnet 服务器上创建账户
现在,如下图所示,系统会要求输入密码,我们输入一个随机密码并按 Enter 键完成账户创建:

图 8.22 – 通过 Telnet 设置密码
好的,现在让我们回到 Wireshark,看看它是否捕获了我们刚刚在服务器上创建的密码。
你可能会注意到有太多的包,有时看起来每个字母都对应一个包。但不用担心 – 为了让我们的生活更轻松,Wireshark 提供了一个叫做 TCP 流 的选项,它以非常友好的方式展示所有数据。要访问该选项,只需右键点击其中一个数据包并选择 Follow | TCP Stream(如以下图所示):

图 8.23 – Wireshark 中的 TCP 流选项
现在,Wireshark 会展示一个像 图 8.24 中的窗口,显示客户端和服务器之间的所有通信。我们可以有效地看到密码以 明文 形式展示。

图 8.24 – 密码以明文形式被捕获
挑战
尝试在 SSH 连接上做同样的练习。那样你会注意到,所有包含数据的包都会被加密,因此信息是安全的。
在进入下一节之前,让我们休息一下,向你展示如何利用刚刚安装的 Telnet 客户端 来玩得开心(也许还可以给一些朋友留下深刻印象)。
奖励(玩 Telnet)
目前有很多有趣的 Telnet 服务器供你探索(没有风险)。它们有三种类型:
-
Muds:老式游戏
-
公告板系统 (BBSes):一种古老的信息共享系统(Facebook 的史前祖先?)
-
Talkers:配置为 讲述 特定话题的服务器,如讲笑话(聊天机器人的失落祖父)
现在,这里为你整理了一些有趣的 Telnet 服务器,你可以通过连接它们来玩得开心(只要记住,你输入的所有内容都可能被捕获,因此如果你创建了一个用户,使用一个虚拟密码):
-
星际大战 ASCII 动画(如果 Netflix 崩溃了):
telnet towel.blinkenlights.nl 23

图 8.25 – 通过 Telnet 玩《星际大战》电影
-
NASA JPL HORIZONS 太阳系数据:
telnet horizons.jpl.nasa.gov 6775 -
通过 Telnet 获取天气:
telnet rainmaker.wunderground.com 3000 -
Telehack (我们在前面的示例中使用的那个,被认为是一个互联网博物馆):
telnet telehack.com 23 -
Achaea, 梦想中的神圣之地(游戏):
telnet achaea.com -
免费国际象棋游戏:
telnet freechess.org 5000
以下图像展示了一种非常酷的复古方式来玩国际象棋… 酷!

图 8.26 – Telnet 国际象棋游戏
好了,今天的游戏就到这里,接下来我们继续学习其他不安全的协议。
FTP、HTTP 和其他未加密的流量
Telnet 不是唯一的不安全协议 – 其他未加密的协议,如 FTP 和 HTTP,也会发送未加密的数据,容易被捕获。
如下图所示,在登录 FTP 服务器时,用户名和密码以明文形式发送:

图 8.27 – FTP 用户名和密码以明文形式被捕获
因此,确保你在组织内推广使用更安全的协议,如安全 FTP(SFTP)和安全 HTTP(HTTPS)。
用于防御安全的 Wireshark
现在你已经了解了 Wireshark 的基础知识,接下来让我们看看如何在你的防御性安全角色中利用 Wireshark。
意识提升活动
正如你刚刚看到的,之前的示例是向用户和系统管理员展示不遵循政策并使用不安全的渠道传输敏感信息(例如用户名和密码)的危险的一个非常好的方式。
通过在公司的年度网络安全周等活动中向员工进行这种现场演示,有助于减少许多风险,同时将这些用户从安全对立者转变为安全推广者。
另一种传递方式是通过制作前面演示的录像,并将其分发给你的团队,作为员工必须完成的年度网络安全强制培训的一部分。
高级网络审计
Wireshark 使你能够对网络进行深入分析,以帮助你实现以下目标:
-
合规审计
-
内部安全审计
-
性能分析
-
网络风险评估
-
恶意流量分析
-
漏洞评估
-
数据外泄识别
-
网络加固分析
这些任务可以由内部的网络安全专业人员或服务提供商(第三方公司或外部网络安全专家)来执行。
咨询工作
Wireshark 是一个非常好的工具,可以供独立顾问使用,提供基于数据的建议,帮助公司改善其数据、系统和网络的安全性。
网络故障排除
尽管你可能不是直接负责故障排除,但了解在许多情况下,网络专家会使用 Wireshark 来排除网络问题,如延迟、可用性和稳定性,是非常重要的。
提示
Wireshark 不是入侵检测系统(IDS),这意味着它不会在入侵者访问你的网络时发出警报,但它是调查入侵事件的一个极好工具。
不用担心,在下一部分我们将介绍入侵检测系统(IDSes)和入侵防御系统(IPSes)的基础知识,甚至对比它们之间的差异。
使用 IPS/IDS
在这一部分,我们将解释IDS和IPS是什么,提供这些系统的一些示例,并考虑这两种相似技术之间的差异。
什么是 IDS?
IDS是一种被动监控解决方案,用于检测网络中的不良入侵。
一旦检测到入侵,IDS 会向安全分析员发送警报,以便进一步调查和处理(如以下图所示):

图 8.28 – IDS 示意图
就部署而言,入侵检测系统(IDS)可以在主机级别(HIDS)或网络级别(NIDS)进行部署。
有两种主要的 IDS 引擎,一种基于签名(例如经典的杀毒软件使用签名数据库来检测恶意软件),另一种是基于异常的,通过检测偏离既定模式的行为来识别入侵。在后者类别中,还有一些系统利用认知计算来增强这些模式的识别与识别能力。
什么是 IPS?
IPS是一种主动系统,可以防止未经授权的用户访问你的网络。
如下图所示,IPS 会自动阻止任何可能被认为是对你的网络构成威胁的流量:

图 8.29 – IPS 表示
在部署和 IPS 的后台(引擎)方面,这些与 IDS 提到的非常相似。
免费 IDS/IPS
没有理由不使用 IDS/IPS——事实上,这里有一些免费的 IDS/IPS,你可以在你的基础设施中实现。
Snort
可能是最著名的 IPS/IDS,Snort 的引擎主要基于签名。该系统附带一组基本的策略,但你可以通过创建自己的策略来扩展它。
你还可以将 Snort 与 Wireshark 集成,为 Wireshark 提供警报功能。
Snort 支持 Windows、Fedora、CentOS、FreeBSD 和 Kali Linux。
如需更多信息,请访问www.snort.org/。
Security Onion
这是一个 Linux 发行版,包含 IPS 和 IDS 引擎,并使用 OSSEC 进行基于主机的 IDS/IPS,使用 Snort 和 Suricata 进行基于网络的 IDS/IPS。
如需更多信息,请访问他们的 GitHub 仓库:github.com/Security-Onion-Solutions/security-onion。
IPS 与 IDS
下图突出显示了 IPS 和 IDS 之间的主要区别,以及它们的某些共同特征:

图 8.30 – IDS 与 IPS 的区别
大多数专家一致认为,每个系统是互补的,因此最佳的实施方式是并行部署它们,以增强你的网络安全性。
总结
在本章中,我们首先回顾了网络攻击的不同阶段。然后,我们学习了如何使用 Nmap 检查基础设施中的漏洞,并使攻击的扫描阶段对攻击者更具挑战性。
然后我们回顾了最常见的 Wi-Fi 漏洞及其解决方法。此外,我们还学习了如何创建 Wi-Fi 用户安全指南,以减少使用无线网络时的风险。这是你可以利用的一个重要资产,有助于支持你的网络安全策略并教育用户。
在那之后,我们转向了一个更技术性的主题,学习了如何使用 Wireshark来发现漏洞,甚至做了几个实验,实时查看攻击者如何在你使用不安全协议时捕获你的数据(包括密码)。
最后,我们通过对 IDS 和 IPS 的概述来结束了这次网络安全之旅,讲解了它们是什么,提供了一些例子,并进行了它们之间的比较,帮助你更好地理解这两项技术的区别。
现在,做好准备,因为在下一章我们将学习关于物理安全你需要知道的一切,它的相关威胁,以及如何掌握防御技巧(工具、系统和方法)来保护自己免受这些威胁。
第九章:第九章:深入探讨物理安全
"拥有正确的工具和几秒钟的物理访问权限,一切都不再受控制……"
– 达伦·基钦 – Hak5 创始人
物理安全常常被忽视,作为网络安全专业人士,我们通常回避这项责任。然而,事实是,物理安全漏洞可能暴露我们的系统,这对我们的基础设施和数据构成了巨大的风险。
因此,在本章中你将学习到在物理安全方面最危险的漏洞,同时也会了解一套控制措施和方法,用以降低这些风险。
这里是我们将在本章中涵盖的主题的详细信息:
-
深入探讨物理安全中最危险的工具和攻击,包括以下内容:强大的 LAN Turtle、隐秘的 Plunder Bug LAN Tap、危险的 Packet Squirrel、便携式 Shark Jack、令人惊叹的 Screen Crab、先进的 Key Croc 以及其他 USB 威胁
-
探讨与设备盗窃相关的风险和成本(以及为何你必须防止这种情况发生)
-
物理控制类型的定义
-
与访问控制相关的最佳实践列表
-
一项非常酷的访客控制技术概述——自动过期的徽章
-
介绍你在物理安全方面最强大的盟友:清洁桌面政策
-
对进行物理安全审计时最佳实践的回顾
技术要求
你不需要额外的软件或硬件来享受本章内容,然而,如果你能够测试我们在这里回顾的设备,以便更熟悉它们,那将是很棒的(你越了解敌人的工具,就能越好地防御它们)。
所以,这里是一个链接,你可以在该网页找到本章中列出的多数设备:hak5.org/。
理解物理安全及其相关威胁
我们经常投入大量时间来保护我们的虚拟环境,然而,一名拥有物理访问权限的攻击者可以轻松绕过许多安全机制和系统,从而轻松访问我们的系统和数据。
因此,熟悉与你的组织可能面临的最常见的物理安全漏洞或威胁将对你有很大帮助。
强大的 LAN Turtle
这个看似无害的物件使攻击者能够在单一设备上进行远程访问工具包和中间人攻击。该设备看起来像是一个通用的 USB 转以太网适配器,所以一旦连接,它会很难被察觉。
这个攻击非常简单但巧妙。如图所示,设备位于目标计算机和网络之间,使攻击者能够对网络和计算机执行多个远程攻击:

图 9.1 – LAN Turtle 攻击
为了执行攻击,攻击者可以通过SSH连接到 LAN Turtle,选择并执行多个预配置的攻击。

图 9.2 – LAN Turtle 模块
如前图所示,LAN Turtle 配备了一套强大的预加载模块,允许攻击者设置反向 shell 实现持久的远程访问,执行 DNS 欺骗攻击,执行 Metasploit 有效负载等!
隐秘的 Plunder Bug LAN Tap
LAN Tap 是一个非常小(但功能强大)的设备,它使攻击者能够捕获所有经过网络的包。
它配有 USB Type-C 连接,能够实时下载所有*.pcap文件到智能手机中,供后续分析。
pcap 文件
这是用于捕获网络流量的文件格式,被pcap文件等嗅探工具广泛使用,这使得这种类型的攻击更加危险。
如下图所示,攻击者可以悄无声息地将该设备连接在两个端点之间,记录所有通过电缆的活动,这突显了在网络中避免此类威胁的强大物理安全性的重要性:

图 9.3 – Plunder Bug LAN Tap
此外,攻击者还可以使用数据包分析工具,如 Wireshark,实时分析这些数据包。
危险的 Packet Squirrel
这个小巧且强大的小工具具有与著名的 LAN Turtle 类似的功能——远程访问、中间人攻击、数据包嗅探、安全隧道和网络侦察。主要的区别在于硬件(接口和外观),如下面的图所示,以及软件(模块与有效负载),下文将详细解释:

图 9.4 – LAN Turtle 与 Packet Squirrel 硬件对比
让我们详细了解这些区别:
模块通过空中下载到设备,并且自带配置界面。
有效负载通过手动或通过更新器应用程序下载到设备中,作为一个或多个文本文件。配置有效负载的过程包括编辑文本文件并更改值。多个有效负载可以携带并分配给一个开关按钮,但一次只能运行一个有效负载。
便携式 Shark Jack
这是一个超级便携的网络攻击工具,允许攻击者连接到网络端口,并即时运行高级侦察、数据外泄、攻击和自动化有效负载。
开箱即用,它配备了一个超快速的nmap有效负载,提供快速简便的网络侦察功能。它使用一种非常简单的脚本语言,再加上攻击/武装开关,这使得这个工具对你的网络安全构成严重威胁。
下图展示了Shark Jack硬件特性,同时也让你了解它的便携性,以及攻击者如何轻松携带并连接该设备:

图 9.5 – Shark Jack 硬件
但更厉害的是——Shark Jack 配备了一个基于云的远程访问工具,攻击者可以利用它实时获取数据!
令人惊叹的屏幕螃蟹
这可能是有史以来 最酷的黑客设备之一。这基本上是一个 HDMI 中间人攻击 设备,它会实时传送受害者机器的视频流。
这意味着(如图 9.6所示),一个具有物理访问权限的攻击者可以将该设备连接到 HDMI 投影仪,并获取屏幕上显示的所有机密信息。这使他们能够捕获如客户数据、合同、投标、公司机密、知识产权等信息:

图 9.6 – 屏幕螃蟹攻击
如果房间没有互联网连接,设备配备了 micro-SD 卡槽,可以将录音或截图保存到此卡槽中,如下图所示:

图 9.7 – 屏幕螃蟹硬件
从防御安全的角度来看,值得注意的一点是,这个设备需要电源才能工作(可以通过 USB 提供电源),因此,在会议室中固定设备(如显示器和电视)上阻止 USB 端口的使用,可能是降低此类环境风险的良好做法。
高级 Key Croc
基于硬件的键盘记录器可能是最常见的物理网络攻击示例。硬件键盘记录器非常紧凑,容易连接和伪装,使其成为一种极其危险的威胁。
但还有一个更危险的设备叫做Key Croc——更危险的原因是,这个强大的键盘记录器拥有以下特性:
-
人机接口设备 (HID) 仿真
-
预定的 HID 按键注入
-
HID 按键注入的远程提交
-
一个监听器,在执行预定动作时触发按键操作
-
能够几乎实时地将数据发送到云端
-
执行有效负载(来自大量现有有效负载的库)
-
通过 SSH 实现远程访问
-
配备 Metasploit 执行远程攻击和漏洞利用
-
通过按一个按钮将其转换为 USB 存储设备

图 9.8 – 关键 Croc
如前图所示,该设备具有非常强大的硬件(四核处理器、512MB RAM 和 8GB 内存),如果连接到任何企业系统或计算机,将构成巨大的安全威胁。
USB 威胁
如在第二章中所见,管理威胁、漏洞和风险,许多恶意 USB HID 设备在连接后可以用于执行多种攻击。
正如该章节中提到的,大多数计算机系统易受这些攻击,因为它们利用了HID 驱动程序的固有信任,因此大多数防病毒系统甚至 USB 操作系统限制都无法检测到这些攻击(因为这些限制适用于大容量存储设备,而非 HID 设备)。
这些 USB 设备的一些示例如下:
-
USB Rubber Ducky
-
Bash Bunny
-
O.MG 键盘记录器电缆

图 9.9 – Bash Bunny
在第二章中,管理威胁、漏洞和风险,我们学到了如何保护环境免受这些USB 威胁。不过,让我们做一个简短的回顾:
-
使用Windows Defender检测 USB HID 威胁。
-
实施脚本检测脚本攻击(例如DuckHunt)。
-
安装USB 物理阻断器以防止 USB 设备连接。
-
创建专有软件,根据 USB 描述符或元数据(如制造商、型号、类型等)来阻止可疑的 USB 设备。
-
避免在客户服务机器上暴露 USB 端口(外部人员可以轻松接触)。
但在所有这些机制之上,最好的保护措施是防止外部人员进入受控的公司空间(例如会议室、工位、办公室等)。我们将在下一节中介绍这些物理保护机制——物理安全机制。
设备盗窃
有时在进行高级风险分析时,非技术团队可能只考虑替换被攻破设备的成本,因此在简单分析中,他们可能会决定不投资于物理安全,因为其成本高于设备替换成本。然而,在这些情况下,你需要向他们展示,这不仅仅是设备(硬件)的价值问题,还涉及到其他更昂贵的相关风险。这些风险可能包括以下几个方面:
-
丢失设备数据的成本(由于缺少最新备份)
-
暴露机密数据的成本
-
暴露客户数据的成本
-
对服务可用性的影响(例如,如果设备正在托管系统,或者系统管理员可能暂时失去支持生产系统的能力)
-
对交付日期的影响(一些项目交付物或代码与设备一同丢失)
-
设置设备的成本(使用某些特定工具设置设备可能会带来额外的成本,包括 IT 人员所需的时间和设备所有者的生产力损失)
-
易受离线破解攻击的影响(攻击者可以对被窃取的设备进行离线攻击,这些攻击速度更快且更容易)

图 9.10 – 在线与离线密码破解时间
如前图所示,在线和离线密码破解时间差异显著,这将把攻击场景从不可行变为现实。
环境风险
提醒一下,您需要确保系统、服务器和备份受到环境风险(如飓风、洪水、地震等)可能带来的威胁的保护。
现在,让我们了解一些可以用来提高公司物理安全性的机制和工具。
物理安全机制
有多种机制和控制手段可以用来降低与物理安全相关的风险,通常它们分为以下几类:
-
侦探:这些是用来检测入侵的控制手段——例如,安全摄像头、警报、运动传感器等。
-
预防性:这些控制手段旨在防止某人进入安全或受限区域——例如,围栏、徽章控制门、密码控制门、人脸识别系统等。
-
威慑:这些是用来阻止攻击者进入受限区域的控制手段——例如,保安、警报,或者如下一图所示的多种控制手段的组合:

图 9.11 – 威慑控制样本
现在,让我们回顾一些技术来增强我们的物理安全性:
- 访问控制:以下是与访问控制相关的一些最佳实践:

图 9.12 – 与访问控制相关的最佳实践
- 访客访问控制 – 自动失效徽章:这是一种非常有趣的技术,用于安全管理访客。

图 9.13 – 自动失效徽章样本
该技术基于一种特殊的纸张,经过 24 小时后会显示单词VOID,以使徽章失效,如图 9.13所示。
这将防止某人使用过期的徽章进入,因其会明确显示该徽章已经失效。
提示
避免使用通用徽章访问建筑物的所有区域。相反,像 IT 机房这样的敏感区域应有不同的访问机制——例如,不同的徽章、键盘、 biometrics 或这些的组合。
现在是时候看看一些额外的提示和好做法,帮助你成为物理安全的高手了。
精通物理安全
如前所见,物理安全中的主要安全机制基于防止未经授权的用户获取系统的物理访问权限。
然而,你可以利用一些额外的机制来增强你的物理防御安全性。这些额外的机制和策略将在以下章节中讨论。
清洁桌面政策
这项政策不是关于清除桌面上的灰尘和食物,而是关于限制员工在工作站上可以留下的无人看管物品。以下是一些需要考虑的例子:
-
文件柜在用户不在桌面时必须始终锁好。
-
不得将文件、笔记或其他数据源放在桌面上无人看管。
-
不得将可移动设备(如 USB 驱动器)单独放置(无论是连接还是断开连接于计算机)。
-
不得将敏感的个人信息(SPI)或个人身份信息(PII)放置在桌面上无人看管。

图 9.14 – 清洁桌面政策示例
这项政策对你和公司都非常重要,因为它作为一层额外的安全防护,防止外部攻击者入侵。事实上,成功实施此政策的公司,还能减少其他公司风险,例如入侵、盗窃等。
提示
这些政策必须配合人力资源部门的严厉制裁,以确保每个人都在遵守。此外,如果你指派审计员进行每日检查,这项政策最终将成为组织文化的一部分。
就所有权和实施而言,最佳做法是由人力资源部门负责实施并拥有此政策,因为他们可能拥有更多的资源来确保该政策在整个公司内的正确执行。然而,请记住,你可能需要成为主要的推广者,以确保政策最初得以制定。
物理安全审计
这个机制通常会被忽视,但它应该是你防御策略的重要组成部分。
现在,让我们回顾一下物理安全审计的最佳实践:

图 9.15 – 物理安全审计的最佳实践
一些公司可能将这些审计作为年度审计的一部分进行。然而,并非所有公司都有预算来执行这一点,因此在这种情况下,建议选择一组志愿者来担任物理安全审计员。你只需要确保他们经过培训,知道如何执行安全审计,并且对相关政策有深入理解。此外,由于这些不是正式的审计,你可以更频繁地进行,例如每周五或每个月的最后一个星期一,等等。
此外,正如在第三章《理解政策、程序、合规性与审计》中提到的那样,在推出任何类型的审计之前,你需要确保获得高级管理层、人力资源和法律部门的批准。
总结
在本章中,你学到了许多关于攻击者如果获得物理访问权限后,可能用来攻击你的基础设施和系统的最新、最先进的设备。
这些知识将帮助你更好地理解当前的威胁环境,你也将能够轻松识别这些设备,并在对你的基础设施和数据造成重大影响之前将其移除。
事实上,我知道每次你进入会议室时,第一件事就是查看投影仪,确保周围没有屏幕蟹。
此外,所有这些知识将帮助你创建更好的技术和管理控制措施,以改善你的物理安全性,并增强整体防御安全策略。
此外,你也学到了物理审计的价值,现在你可以实施或强制执行它们,或者如果你还没有执行,可以开始实施。
现在,为下章做准备,我们将探讨如何保护物联网(IoT)设备的激动人心的世界,并学习如何将这些设备转换为下一代防御性安全工具。
进一步阅读
如果你想了解更多关于我们刚刚回顾的那些惊人的工具(如 LAN Turtle、Plunder Bug、Packet Squirrel、Shark Jack、Screen Crab 和 Key Croc),那么只需访问以下链接:docs.hak5.org/hc/en-us。
第十章:第十章:应用物联网安全
"你不会把汽车钥匙放在引擎盖上——如果物联网设备没有安全保护,你就把自己暴露在与可能的恶意方共享数据所带来的风险中"
– Lisa De Luca,知名物联网发明者及 Wayfair 技术公司客户情报负责人。
物联网(IoT)设备变得非常流行,因为它们可以让我们的生活更便捷。此外,它们的成本使其在消费市场上非常有吸引力。然而,这些廉价设备为渴望利用它们来利用漏洞的网络犯罪分子带来了许多机会。
因此,在本章中,您将学习如何领先于犯罪分子。您还将学会如何利用这些技术来创建您自己的网络安全工具,例如:
-
您自己的设备,用于检测恶意接入点
-
使用 Raspberry Pi 的防火墙和入侵检测系统
-
低于 10 美元的强大蜜罐
-
一种用于监控您的网络服务和网络的物联网设备
-
使用 Raspberry Pi 的互联网广告拦截器
现在,让我们看看本章将涵盖的主要内容:
-
物联网简介, 及其在工业和家庭应用中的风险。
-
物联网设备上的前 10 大漏洞清单。
-
探索最流行的物联网网络技术,包括:LoRaWAN、Sigfox、ZigBee 等。
-
一个关于安全机制的回顾 以及改进物联网设备安全性的最佳实践。
-
关于如何利用低成本物联网设备创建您自己的防御性安全工具的完整指南。
-
此外,作为额外奖励,本章还将告诉您未经授权的物联网设备的危险,以及如何检测它们。
技术要求
本章节没有技术要求。不过,我们强烈建议您购买一台 Raspberry Pi(3 型或更高型号),这样您可以进行实验,并创建一些您将在本章中看到的防御性安全工具。
了解物联网
让我们先定义物联网为一组能够连接到互联网以共享数据和资源的设备。
一些示例可能是您的智能手表或智能电视(是的,他们喜欢把智能这个词加在物联网设备上),但您办公室里的许多其他设备,例如复印机、打印机,甚至咖啡机,都可能是需要在允许连接到互联网之前进行漏洞分析的物联网设备。以下是一些物联网设备的示例:

图 10.1 – 物联网设备示例
企业正在意识到将设备连接到互联网的好处。这些好处包括增加新功能和收集有关客户使用或习惯的数据(这对于改进未来的产品非常有用)。此外,企业还可以通过设备共享服务、数据或功能,创建互联生态系统,大大提升用户体验。
但这些实施方式也带来了许多风险,您必须了解并理解这些风险,以便制定策略来有效地进行防护。
风险
大多数物联网设备是为了增强用户体验而创建的。然而,在许多情况下,这些设备并不是设计时就考虑到安全的。这可能会对您的网络和数据构成风险。
让我们来看一下两种主要的物联网实施方式以及每种方式相关的风险。
工业物联网
工业物联网环境中的主要风险如下:
-
传感器数据丢失
-
来自传感器的数据损坏
-
干扰传感器
-
工业间谍活动
-
设备劫持
-
修改数据以导致服务中断(机器或生产厂)
-
修改数据以导致经济损失(作物损失)
智能家居
智能家居环境中的主要风险如下:
-
网络入侵。
-
个人或敏感数据的泄露。
-
设备可用作僵尸网络发起分布式拒绝服务(DDoS)攻击。
-
设备的远程访问/控制。
-
禁用或绕过安全系统。
-
隐私问题(摄像头、麦克风等)。
下图展示了攻击者如何劫持您的物联网设备的示例。

图 10.2 – 物联网智能家居的威胁环境
现在,让我们来看一下可能引发这些风险的最常见漏洞。
漏洞
物联网市场的大部分竞争围绕着成本展开。因此,企业需要降低成本,有时这意味着缺乏安全性测试,甚至缺乏设备的基本安全设置。
因此,已经有成百上千个物联网设备连接到互联网,而设备的所有者甚至没有意识到它们的漏洞。
现在,让我们来看一下物联网设备中发现的十大漏洞:

图 10.3 – 物联网十大漏洞
现在,让我们来看一下物联网设备常用的网络协议及其相关的优缺点、风险和漏洞。
了解物联网网络技术
虽然一些物联网实现使用 Wi-Fi,但事实上 Wi-Fi 有几个局限性,特别是在能耗和网络覆盖(范围)方面。因此,已经开发出一套新技术来克服这一局限性,将覆盖范围提高到 10 公里。
现在,让我们来看看一些物联网网络技术及其相关的漏洞。
LoRaWAN
LoRaWAN,也叫LoRa,是一个用于实现低功耗广域网络(LPWANs)的开放标准。
这项技术的主要优势之一是能够以非常低的功耗传输长距离(超过 10 公里)的数据。这使得 LoRa 成为连接物联网设备和传感器的绝佳选择。此外,正如下图所示,LoRa 设备非常小巧。这对原型制作(甚至是集成到生产系统中)非常有利:

图 10.4 – LoRa 发送器和接收器
所以,长距离覆盖和小型设备(低功耗)看起来是实现物联网网络的完美解决方案,但如果计划在基础设施中使用这些类型的网络,还需要考虑多种漏洞。
LoRaWAN 安全漏洞
按设计,LoRa 非常安全。事实上,认证和加密是强制性的。然而,如果实施不当,设备和网络仍然可能受到攻击。
因此,寻找LoRaWAN CertifiedCM设备非常重要,以确保设备已通过标准测试并按预期工作。
以下是这些设备报告的一些漏洞列表:
-
一些设备可能预置了硬编码的加密密钥。
-
一些设备可能使用容易猜测的加密密钥,例如
AppKey = 设备标识符 + 应用标识符,或AppKey = 应用标识符 + 设备标识符。 -
易受到拒绝服务攻击(Denial-of-Service)的影响。
-
易受到确认(ACK)欺骗攻击的影响。
-
易受到重放攻击的影响。
-
此外,LoRa 存在两个 CVE 漏洞:
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-4060和cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-28349。
请记住,新的 CVE 每天都会上传,因此在任何实现之前都要始终检查它们。
Zigbee
Zigbee 是由 Zigbee 联盟开发的个人区域网络(PANs)标准,旨在为短距离应用(如传感器之间的通信)提供低成本、低功耗的无线通信解决方案。
重要提示
为什么物联网通信协议安全重要?2017 年,一组研究人员通过利用 Zigbee 智能灯泡实现的漏洞,成功入侵网络并注入恶意软件。
Zigbee 安全漏洞
Zigbee 网络上最常见的漏洞包括以下几点:
-
它们容易受到通过信号干扰进行的可用性攻击(由于使用的频段,这种攻击很容易实现)。
-
安全性基于密钥交换的保密性,因此它们容易受到在修复密钥过程中嗅探网络的攻击。
-
一些系统不支持更换已泄露的密钥,因此一旦密钥泄露,就无法更换密钥以阻止入侵者。
-
相关的其他产品漏洞可以在以下网址找到:
cve.mitre.org/cgi-bin/cvekey.cgi?keyword=zigbee。
下图显示了 Zigbee 模块:

图 10.5 – Zigbee 模块
请记住,我们在此解释的是标准特性和漏洞。然而,我们强烈建议您在实施之前先熟悉这项技术。
好的一点是,这些设备的成本非常低,因此您可以轻松制作自己的原型(借助如 Arduino 或 Raspberry Pi 之类的原型板)来确定最适合您的物联网实现的网络。
Sigfox
Sigfox被开发用于每天发送少量消息,这样可以将成本和功耗保持在最低水平。使用这项技术,您每天最多可以发送 140 条消息(上行消息 12 字节,下行消息 8 字节)。
这在通过低成本远距离传输传感器数据时尤其有用。
这项技术正在广泛流行,正如你在图 10.6中所看到的,Sigfox 正在全球范围内被实现:

图 10.6 – Sigfox 覆盖地图
Sigfox 安全漏洞
Sigfox 网络最常见的漏洞如下:
-
由于带宽低,某些通信可能未加密发送。这给传输的数据带来了风险。
-
它们容易受到通过信号干扰进行的可用性攻击(由于使用的频段,这种攻击容易实现)。
现在,让我们来看看一个在一些物联网实现中被采用的著名协议。我们说的就是蓝牙。
蓝牙
由于其普及,蓝牙成为物联网制造商的一个有趣选择,因为它成本低且易于与其他设备集成。
还有一个版本叫做蓝牙低能耗(BLE)。它对于物联网实现来说更为理想,因为其功耗非常低。
蓝牙安全漏洞
BLE 包括 128 位加密和身份验证。这是安全性中的两个重要机制。然而,仍然存在一些与 BLE 相关的漏洞:
-
设备在可发现模式下容易受到多种攻击,因此只应在设置时使用,并在设置后关闭。然而,一些设备默认开启可发现模式,并且不提供更改选项。这种设备(通常是非常低成本的物联网设备)应该避免使用。
-
CVE 网站上列出了一些关于 BLE 的漏洞。然而,大多数漏洞与制造商的实现不当有关,而不是协议本身的问题。请参阅以下网址:
cve.mitre.org/cgi-bin/cvekey.cgi?keyword=ble。
2020 年,一位网络安全专家利用大规模蓝牙漏洞,仅用 90 秒就黑入了一辆特斯拉 Model X。
还有其他技术,如NFC,也用于物联网实现中以交换数据或触发动作。这些技术也需要进行分析,以确保它们不会对我们的数据或设备构成威胁。
安全考虑事项
如我们刚才所见,许多这些协议为物联网网络提供了足够的安全机制。然而,大多数发现的漏洞与实现不当有关。因此,物联网设备的整体安全考虑事项如下:
-
在购买物联网设备之前,始终进行研究,因为它可能存在安全实现不良或协议版本过时的问题。
-
执行功能分析,以确定在速度、带宽和距离方面最适合你的选项(如图 10.7所示)。
-
确保所有实现都由专家进行,以避免安全漏洞。
-
注意低成本设备和传感器,因为它们可能缺乏加密或其他安全机制(以降低成本)。
-
将物联网网络与企业网络隔离,以避免对主基础设施带来额外风险。
以下图表显示了物联网网络协议的比较:

图 10.7 – 物联网网络协议比较
如图 10.7所示,没有一种适用于所有的解决方案。相反,每种技术都有其优缺点,需要进行评估,以确定哪种解决方案最适合你。记住,可用性是你在制定网络安全战略时需要评估的因素之一。因此,你还需要考虑哪种技术能提供更高的保真度,并降低丢包或断开连接的风险。
提高物联网安全性
现在,让我们分析一些可以应用于提高物联网设备安全性的额外机制和最佳实践。
默认密码
安装时更改所有物联网设备的默认密码。
此外,确保为这些设备选择非常强的密码,密码应包含以下特性:
-
15 个字符长。
-
字母(大小写)、数字和特殊字符。
-
避免使用常见词汇(也称为字典词汇),如国家名称、月份名称等。
-
每年至少更改一次家庭设备的密码,每季度更改一次商业设备的密码。
-
使用密码管理器来安全且轻松地管理这些密码。
然而,使用超级密码并不足够。你还应该混淆用户名,以使攻击者更加难以破解。我们可以通过更改默认用户来做到这一点。
默认用户
默认用户如管理员很容易被攻击者猜到,因此更改这些默认设置会让攻击者更难以攻击。
禁用不必要的功能
如果物联网设备启用了远程连接到管理员面板或类似 Telnet 等脆弱服务的选项,则你必须禁用它们。
不安全的系统
在购买任何物联网设备之前,你必须在网上检查已知的漏洞(例如,以下网址:cve.mitre.org/)。
如果漏洞得以解决(例如,公司发布了补丁),那么说明制造商重视安全性。然而,如果漏洞没有得到制造商的解决,那么你应该寻找替代品,而不是将一个脆弱的设备添加到你的网络中。
重要提示
2020 年,一组研究人员使用Shodan.io查找脆弱的打印机,并利用脚本强制这些脆弱的打印机打印一份打印机安全指南。
此外,在 2018 年,超过 50,000 台打印机开始打印一条支持 YouTuber 的信息,成为又一次成功的大规模打印机攻击(见图 10.8):

图 10.8 – 50,000 台脆弱打印机打印的信件
这种攻击相对无害。然而,试想如果攻击者发送了一个命令,让 50,000 台打印机打印《堂吉诃德》的副本。那么我们就会谈到 5000 万页的影响(这可真是非常多)。
启用的服务和端口
物联网设备可能默认启用了多个服务和端口。因此,你必须定义哪些服务应该具有互联网访问权限,哪些服务应该仅限局域网使用。
例如,你可能希望网络打印机可以访问互联网进行更新,但如果不使用的话,应该禁用远程管理访问和网络打印机服务(大多数情况下,局域网打印机就足够了)。
数据存储
检查设备上保存了什么类型的数据以及这些数据应用了什么类型的安全保护。如果数据在存储时没有进行安全加密,那么要么禁用数据保存功能,要么创建一个持续删除所有数据的流程。
安全设置
如前所述,避免将设备以默认设置添加到网络中,因为这可能成为攻击者的目标。
物理设置
确保这些设备无法被未经授权的人访问,因为攻击者可以按下重置按钮以启用默认登录,并访问系统。
分离网络
始终保持物联网设备在私人网络中是一种良好的做法。这确保了物联网设备无法访问任何敏感文件。
现在,让我们谈谈物联网设备的好处,以及你如何利用它们创建一些非常酷的项目,来增强你的网络、办公室、系统、数据,甚至是你的房子的安全性。
使用物联网设备创建网络安全硬件
树莓派是目前最著名的物联网设备之一,用于创建原型。
事实上,互联网上有成百上千个很酷的项目,你可以用这个强大的设备来创建。
如图 10.9所示,树莓派是一个非常强大的设备,具备大量的计算能力,配备了你需要的所有端口,并且还配有一些 I/O 引脚,可以轻松连接多个模块和传感器。
目前有两个主要版本:普通的树莓派(当前为第 4 版)和树莓派零。这是树莓派的迷你版,便于携带且功耗极低。这对于一些项目来说非常合适:

图 10.9 – 树莓派版本比较
互联网上许多树莓派项目与针对网络和系统的网络武器有关。然而,好消息是,也有许多与防御安全相关的酷项目,你可以利用这些项目的低成本和易于实现,但更重要的是,因为你在创建这些项目时可以获得很多乐趣。所以,让我们来看看这个用树莓派打造的防御安全项目的精彩合集。
检测流氓接入点
流氓接入点是对我们网络、系统和数据的巨大威胁。
它们基本上是恶意的接入点,旨在模仿你原来的接入点并执行多种攻击。
威胁
流氓接入点是对你的基础设施和数据的巨大威胁,因为它可以用来发起多种危险攻击,例如以下几种:
-
中间人攻击
-
断开认证攻击
-
探测请求监视器
-
拦截、检查、修改和重放 Web 流量
-
凭证收集
-
DHCP 饿死攻击
-
Windows 更新攻击
-
ARP 欺骗
-
DNS 监控
-
DNS 欺骗
因此,正如你所看到的,流氓接入点可以对你的基础设施造成巨大的破坏。幸运的是,过去这些攻击并不常见,因为如图 10.10所示,要悄无声息地走私执行这些攻击所需的所有硬件是非常困难的:

图 10.10 – 老式和新型流氓接入点比较
坏消息是,现在攻击者可以使用一个口袋大小的树莓派作为平台来发起这些类型的攻击。由于体积小、功耗低,它可以在攻击者的口袋里保持物理上不被察觉。
为了执行这些类型的攻击,攻击者可以利用互联网上提供的多种工具,比如Wifiphisher(github.com/wifiphisher/wifiphisher),或者一个名为Wifipumpkin3的框架。您可以通过以下网址找到它:github.com/P0cL4bs/wifipumpkin3。
请参阅以下图示:

图 10.11 – WiFi-Pumpkin 之前的 GUI 版本(已废弃)
如图 10.11所示,这些工具非常易于使用。这可能会导致攻击数量增加,因为这些攻击可以被脚本小子(那些知识有限、喜欢执行基于简单教程的攻击的攻击者)执行。
解决方案
有一些来自思科(Cisco)和惠普(HP)的商业解决方案,但这些解决方案非常昂贵,几乎不可能被小型和中型企业采购。
但有个好消息。 来自哥斯达黎加 Cenfotec 大学的一组聪明的发明家和网络安全专家使用了攻击者所使用的相同技术,开发出一种低成本解决方案,可以在您的基础设施中找到恶意接入点。这个解决方案被称为Rpi-AWAPS:

图 10.12 – Rpi-AWAPS 的分析与控制系统
想要了解更多关于这个令人难以置信的项目,请访问以下链接:
重要提示
将威胁转化为解决方案:这些大师和发明家创建的解决方案是独一无二的,因为他们将一种攻击性武器转化为了解决方案,这就是网络安全创新的巅峰。此外,这个出色的工具已经在网上发布,因此任何人都可以以非常低的成本进行复制。如果您喜欢这个工具,请通过上述链接给作者留言——他们会很感激的!
请记住,目前该项目的实现是西班牙语版本,但团队正在开发一个英文版的系统。
树莓派防火墙和入侵检测系统
另一种利用低成本物联网设备的酷炫方式是通过使用树莓派创建低成本防火墙或入侵检测系统。
实现这一目标有多种方法,虽然这不是企业级的解决方案,但它将为预算紧张、几乎没有网络安全预算的小型公司提供额外的保护。以下是一些您可以参考的例子:
我们还可以利用树莓派创建更专业的安全系统,针对一些特定系统,如SCADA。
工业控制系统(SCADA)的防御性安全系统
还有一些实现方案利用树莓派提升工业控制系统的安全性。以下是一个例子:www.acadpubl.eu/hub/2018-118-21/articles/21e/66.pdf。
树莓派有几种类型,因此即使前面的一些链接指向的是特定版本的树莓派,你仍然可以在最新版本的树莓派上运行它。你的树莓派甚至可能比链接中提到的版本运行得更好(在速度、容量、空间、能耗等方面)。
安全的 USB 到 USB 复制机
这是一个非常有趣的树莓派实现,旨在减少连接感染的 USB 设备的风险。
想象一下,你正在参加一个会议,有人通过 USB 设备给你提供一些需要的文件。你知道将它连接到你的计算机是有风险的,但你还能做什么呢?
这个解决方案叫做CIRCLean。该系统基于由卢森堡计算机事件响应中心(CIRCL)设计的树莓派,用来扫描 USB 设备并在安全地将其余内容移动到新 USB 设备之前,禁用一些可疑文件。
这里是他们的官方网站,供你了解更多有关此项目的信息:
请参考下图:

图 10.13 – CIRCLean 的逐步操作指南
请注意,图 10.13是如何通过逐步的方式描述系统功能的。
创建一个$10 蜜罐
我们都知道蜜罐的重要性。然而,市场上一些解决方案价格偏高。那么,一个价格低于一杯咖啡的蜜罐解决方案如何呢?这听起来肯定很有吸引力。好了,我的朋友,这完全可以通过树莓派实现。
实际上,有几种蜜罐解决方案可以安装在你的小(但强大的)新朋友——树莓派上。
OpenCanary
Thinkst Canary是一个非常棒的蜜罐设备,但不幸的是,并非每个人都能购买它。好消息是,你可以通过免费的OpenCanary软件获得其最重要的功能。
你可以轻松地定制一个便宜的树莓派来作为这个令人惊叹的系统的主机。
OpenCanary 允许你原生伪造以下服务:
-
SSH
-
FTP
-
Git
-
HTTP
-
MSSQL
-
MySQL
-
Telnet
-
SNMP
-
VNC
-
还有更多!
每当有人登录到 OpenCanary 服务器时,你都会通过电子邮件即时收到关于该活动的通知(如图 10.14所示)。
现在,由于这是一个蜜罐,并且没有人应该登录它,所以你知道每次登录都是一次黑客攻击尝试:

图 10.14 – 入侵警报 – OpenCanary
项目的官方网站可以在以下网址找到:opencanary.readthedocs.io/en/latest/。
Cowrie
另一个选项是Cowrie。Cowrie 是一个中到高交互的 SSH 和 Telnet 蜜罐,旨在记录暴力破解攻击以及攻击者执行的 shell 交互。它可以在 Python 中模拟 Unix 系统或充当 SSH 和 Telnet 代理。
它呈现了一个完全虚拟化的文件系统,攻击者可以使用大多数命令和二进制文件。所有操作都会被记录,包括攻击者使用的所有工具(工具包、木马、用户名、密码,甚至他们的位置)。
你可以访问他们的网站,网址如下:github.com/cowrie/cowrie。
SNARE
一个更小的选项是超级下一代先进反应蜜罐(SNARE)。这个Web 应用蜜罐将帮助你吸引并追踪来自互联网野外区域的大量恶意行为者。
这种类型的蜜罐允许你托管一个页面,同时能够看到该页面上发生的所有流量和活动。
官方网站可以在以下网址找到:github.com/mushorg/snare。
Web 应用和网络的高级监控
Nagios Core是一个开源系统,提供网络和应用程序监控。它监控主机和服务,并在发生任何错误时发送警报(并且当服务恢复在线时也会发送警报)。
Nagios Core 包括以下功能:
-
监控网络服务(SMTP、POP3、HTTP、NNTP、PING)。
-
监控资源(CPU 负载、磁盘使用情况等)。
-
通知和警报(通过电子邮件、寻呼机或用户定义的方式)。
-
提供网络状态、通知、错误历史、日志等的 Web 界面。
好消息是,有一个专门为物联网设备(包括树莓派)创建的免费版本,叫做NEMS,正如你在图 10.15中看到的,界面非常酷:

图 10.15 – NEMS 运行在树莓派上
这是该特殊树莓派版本的网站链接:nemslinux.com/download/nagios-for-raspberry-pi-4.php。
创建一个互联网广告拦截器
互联网广告不仅令人烦恼——它们还有许多其他问题:
-
高带宽消耗
-
点击诱饵
-
诈骗
-
恶意软件
好消息是,你可以使用Pi-hole。这是一个很棒的广告拦截器,可以使用树莓派保护整个网络免受广告干扰。
项目页面可以在此找到:pi-hole.net/。
访问控制和物理安全系统
您还可以利用多种 IoT 设备,基于多种技术,如以下示例,创建用于访问控制和物理安全的廉价设备:
-
运动检测
-
人脸识别
-
电子邮件警报
-
警报和更多功能
正如您在图 10.15中所见,您可以使用多种 IoT 设备进行此类项目,例如加载有Motion Eye OS的树莓派,或者更便宜的设备如ESP8266或ESP32:

图 10.16 – Raspberry Pi Zero、Orange Pi 和 ESP32
您已经学到了如何使用这些工具创建/开发所有酷炫的安全项目。然而,这些设备落入错误的手中(包括无意的用户),可能会对公司的数据和系统构成重大风险,因此这里是一个特别收录,扩展了这个话题。
特别收录 – 了解未经授权的 IoT 设备的危险
另一个安全风险与连接到您的网络的未经授权的 IoT 设备有关。在这种情况下,一个无意的用户可能会天真地将 IoT 设备连接到您的网络。这可能给您的网络带来很多安全风险。
因此,您必须建立一个系统来检测网络中的这些未经授权设备。
检测未经授权的 IoT 设备
检测连接到您网络的未经授权的 IoT 设备的简单方法是检查连接到您网络的设备的制造商。
您可以使用名为Kismet的软件轻松实现这一点。正如您在图 10.17中所见,使用 Kismet 可以扫描网络上的设备并查看设备的制造商,从而帮助您检测诸如树莓派、Alexa、Google Home、Amazon Echo 等未经授权的设备:

图 10.17 – 使用 Kismet 检查制造商名称
此工具已经安装在 Kali Linux 上。有关更多信息,请访问以下网址:tools.kali.org/wireless-attacks/kismet。
检测树莓派
还有一些工具可以用来识别特定的 IoT 设备。例如,您可以使用名为Raspberry Pi Finder的软件(由Adafruit开发),它提供了一个非常干净和易于使用的界面,以确定是否连接了树莓派到您的网络上:

图 10.18 – Raspberry Pi Finder
此工具的另一个酷炫功能是,它可以在 Windows、Mac 和 Linux 上使用。有关更多信息,您可以访问它们的官方网站:
还有一个工具可以帮助你识别网络中的树莓派。巧合的是,这个工具与前者同名,但由另一位开发者伊万·X开发。这个工具可以通过以下链接找到:ivanx.com/raspberrypi/。
禁用不明的树莓派设备
如果你在检测到树莓派之后想更进一步,那么你可以使用一个叫做RPI Hunter的工具。这个工具能帮助你找出树莓派是否连接到你的网络,并发送多个有效载荷来禁用该设备。
要了解更多关于这个工具的信息,请访问以下链接:
github.com/BusesCanFly/rpi-hunter
总结
本章我们覆盖了很多信息。
首先,你了解了物联网设备、它们的相关风险和漏洞,以及如何解决这些问题。
然后,你将熟悉所有不同类型的物联网网络技术及其相关的漏洞。
但最棒的是,你学会了如何将这些物联网设备(大多数人认为它们是威胁)作为强大的工具,部署到你的防御性安全工具库中。
现在,是时候进入另一个非常有趣且当今非常相关的话题:云安全(如何在云中安全地部署和开发应用程序)。
进一步阅读
-
如果你想了解更多关于所有可用的树莓派型号和其他酷炫的项目,可以访问他们的网站:
www.raspberrypi.org/。 -
如果你对学习更多关于 LoRa 网络的内容感兴趣,可以访问他们的网站:
lora-alliance.org/。 -
要了解更多关于 Zigbee 的信息,可以访问以下网站:
zigbeealliance.org/。 -
如果你想了解更多关于 Sigfox 的内容,可以访问他们的官方网站:
www.sigfox.com。
第十一章:第十一章:云端安全开发与部署
"网络安全对我们支持云和服务管理工作至关重要。实际上,对抗网络威胁的高效率和速度是至关重要的差异化因素。"
– Kyndryl 的海湾和黎凡特地区基础设施服务经理 Dario Sarmiento
如今,大多数公司都将其 IT 环境托管在云上,因为通常意味着更高的正常运行时间、更强的韧性、更快的部署、更低的风险,甚至更好的安全标准。
然而,这种向云端的迁移也带来了多样的风险和漏洞,需要评估以确保基础设施的安全。
因此,在本章中,我们将首先讨论不同类型的云和数据(以及如何保护它们)。
接下来,我们将通过审视如何使您的Kubernetes实施更加安全来深入技术细节。
另外,我们将讨论一些加固云数据库的最佳实践,并讨论监控云基础设施的最佳系统。
以下是本章将涵盖的主要主题:
-
云应用的安全部署和实施
-
保护 Kubernetes 和 API
-
强化数据库服务
-
测试您的云安全性
技术要求
本章无需技术要求,但您可以创建免费帐户以测试我们将要审查的一些工具。此外,大多数云服务提供免费试用(层),您可以利用这些试用来实践这些概念。
云应用的安全部署和实施
几乎所有公司至少部分业务运行在云端。然而,每家公司都是独特的,他们对云服务的实施可能是不同云模型的混合,下面将详细解释。
云模型的安全性
云模型分为三种类型:软件即服务(Software as a Service,SaaS)、平台即服务(Platform as a Service,PaaS)和基础设施即服务(Infrastructure as a Service,IaaS)。每种模型都与其他模型有很大不同,因此需要应用不同的安全措施。因此,让我们从快速介绍三种云环境类型开始,以更好地理解我们要保护的内容。
软件即服务(Software as a Service,SaaS)
这基本上是加载在云上并且用户可以通过网络界面轻松访问的软件。以下是一些例子:
-
像Gmail和Outlook这样的基于网络的电子邮件
-
像基于网络的计费系统或票务系统这样的网络工具
-
像Office 365或Google Workspace这样的基于网络的生产力应用程序
平台即服务(Platform as a Service,PaaS)
这为开发者提供了一个创建自己应用的平台。以下是一些例子:
-
容器,如Docker和Kubernetes
-
软件开发代码库和版本控制系统,例如GitHub
-
基于云的平台,如Windows Azure
基础设施即服务(IaaS)
这为系统管理员创建自己的系统和基础设施提供了基础架构。一些示例如下:
-
亚马逊云服务(AWS)
-
DigitalOcean
-
Rackspace
在这些云环境中,安全责任由云用户和云提供商共同承担。
以下图突出显示了根据使用的云类型,谁负责实施某些安全机制:

图 11.1 – 云安全责任
现在,让我们看看在云环境中应该如何管理数据安全。
云中的数据安全
在云环境中,数据有三种类型(或状态):静态数据、传输中的数据和使用中的数据(内存)。因此,你需要确保无论数据处于什么状态,都始终保持安全。那么,让我们来看一下如何确保在所有不同状态下保护数据的最佳实践。
保护静态数据
静态数据基本上是存储在你的云或云系统中的所有数据。确保静态数据的最佳方法是使用加密,然而,加密的应用方式在不同类型的云中有所不同,如下图所示:

图 11.2 – 基于云类型的加密实现
请注意,对于PaaS和SaaS,静态数据的加密主要由服务提供商管理。因此,在选择云服务提供商之前,你必须与他们确认是否为静态数据提供某种加密(记住,这也包括备份数据)。
保护传输中的数据
传输中的数据基本上是所有端点之间的数据流(从你的机器到云及反向)。保护这些数据会更加复杂,因为它通常需要云提供商与用户之间的一些协调。
例如,为 SaaS 保护传输中的数据通常通过使用安全的传输协议来实现,例如SSL(HTTPS)。如下面的图所示,HTTPS 通过加密传输中的数据来防止中间人攻击:

图 11.3 – 安全的 SSL 连接与 HTTP
为 PaaS 保护传输中的数据通常要求用户在云端执行一些配置,并在计算机上使用一些安全设置(例如,使用安全 API 在终端和云之间传输数据)。如以下图所示,使用 API 密钥可确保端到端加密,确保终端设备与 PaaS 之间的通信安全:

图 11.4 – 云中安全 API 密钥实现示例
为 IaaS 保护传输中的数据通常由用户完成,通过设置安全的通道连接到云中的系统和基础设施,例如,使用SSH。
下图显示了 PuTTY 的图形界面,它是最著名的SSH 客户端,可以用来确保与你的云服务器的通信是安全的:

图 11.5 – PuTTY SSH 客户端
现在,让我们来看一下通常被忽视但非常重要的安全状态:使用中的数据。
保护使用中的数据
使用中的数据基本上是存储在随机存取内存(RAM)中的信息。过去,这些数据并不被认为是脆弱的,但攻击者发现了从内存中提取信息的方法,因此,确保有机制来保护这些数据变得非常重要。
保护此类数据的主要方式是在操作系统层面,通过确保服务器和应用程序安装最新的安全更新,以防止内存泄漏。
SaaS 用户可以采取一些机制来减少这些攻击的风险,例如:
-
不使用时关闭云会话。
-
从网页工具注销(而不是仅仅关闭浏览器)。
PaaS 用户可以应用与 SaaS 用户相同的最佳实践,并确保他们使用平台的最新版本,避免使用那些已知有漏洞可能导致内存泄漏的平台。
IaaS 用户需要进一步遵循以下最佳实践:
-
安装操作系统的最新版本。
-
定期更新操作系统的补丁。
-
保持所有软件更新(特别是安全更新)。
-
从服务器中删除任何易受攻击的软件。
我们刚刚介绍了云安全的基础知识。现在是时候深入探讨如何在使用 Kubernetes 时增强安全性了。
保护 Kubernetes 和 API
Kubernetes 是部署云应用程序最常用的平台之一。由于其流行性,了解如何保护 Kubernetes 是非常重要的,以增强云环境的安全性。
云原生安全
为了更好地理解 Kubernetes 安全与云安全的关系,让我们来看一下下面的图,它解释了云原生系统的四个 C的分层模型:

图 11.6 – 云原生安全的四个 C
如前图所示,这是基于深度防御(DiD)模型的分层模型,旨在增强基于云的开发安全性。
防御的第一道防线是云本身(这是我们刚刚讲过的主题),然而,你可能还需要考虑与每个云提供商相关的特定方面,因此,最佳做法是查看云提供商的页面,了解他们的安全能力。
作为附加信息,以下图提供了主要云服务提供商的安全页面链接:

图 11.7 – 云服务提供商的安全链接
您也可以在进一步阅读部分找到这些链接。现在,下一层是集群(在本例中是 Kubernetes),让我们深入探讨保护 Kubernetes 的最佳实践。
控制对 Kubernetes API 的访问
在这里,建议对所有应用程序编程接口(API)流量使用传输层安全性(TLS),并确保身份验证、授权和准入控制已正确启用和配置。
控制对 kubelet 的访问
对kubelet HTTPS 端点的请求(未被其他配置的身份验证方法拒绝)默认被视为匿名请求。
因此,最佳实践是在生产集群上启用身份验证和授权,以防止任何安全风险。
防止容器加载不需要的内核模块
攻击者可以通过创建合适类型的套接字来加载内核模块,从而使攻击者能够利用管理员认为未被使用的内核模式漏洞。
为了防止这种情况,您可以从节点中卸载这些模块,或通过创建类似 /etc/modprobe.d/kubernetes-blacklist.conf 的文件并添加如下内容来将它们列入黑名单:
blacklist dccp
blacklist sctp
如果您想了解更多有关此命令的信息,请访问以下网站:access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/blacklisting_a_module。
限制对 etcd 的访问
必须限制对etcd的访问,因为这相当于给予集群的 root 权限。因此,以下是防止未经授权访问 etcd 的两项建议:
-
使用来自 API 服务器到 etcd 服务器的强密码。所谓强密码是指一个超级长且复杂的密码,您可以通过密码管理工具创建和管理它。我见过很多人为此创建 12 位数的密码,这是有意义的,因为它们将存储在密码管理器中,因此可以尽情创建尽可能长和强的密码。
-
为非主节点组件使用独立的 etcd 实例。
此外,考虑到 etcd 的敏感性,另一项最佳安全实践是仅 API 应该有权访问它,并且只授权那些必须访问 etcd 的节点。
避免在生产环境中使用 alpha 或 beta 功能
您可能会发现 Kubernetes 有一些非常酷的功能,处于 alpha 或 beta 阶段。在这种情况下,建议等到这些功能最终版发布后再使用它们。
Alpha 或 Beta 版本的功能可能存在尚未解决的安全漏洞,可能会危及整个集群。值得一提的是,这条建议实际上适用于所有软件和硬件(不仅仅是 Kubernetes)。
第三方集成
与之前的建议类似,第三方集成可能听起来非常吸引人,提供了你想要实现的功能,但与任何其他集成一样,在将这些集成安装到生产环境之前,你需要先进行测试。
同时,记得始终在互联网上搜索有关该集成的信息,看看其他人是怎么说的。兼容性问题、漏洞甚至崩溃是你在遇到这些问题之前,能在互联网上发现并防止它们的事情。
现在,云原生系统安全的四个组成部分中的另外两个是代码和容器,通常由开发者负责。然而,作为网络安全专业人员,确保开发团队至少遵循某种安全代码开发框架,以减少云环境中的风险,会是一个不错的做法。
硬化数据库服务
获取对数据库的访问权限可能是攻击者最渴望的目标。
这不仅仅是因为他们能够访问的数据,更因为通过获取这些数据库的访问权限,攻击者可能会访问其他系统,创建新用户,等等。
现在,你需要考虑的是,当谈到数据库时,我们讨论的是一个庞大的领域,每个系统和技术可能都有自己的硬化步骤。因此,最好理解那些适用于大多数数据库的最佳实践,正如这里所展示的:
-
必须始终启用诸如加密和审计等基本安全设置,确保其始终处于开启状态。
-
使用高级工具来监控、检测并拒绝对数据的访问(如果可能,寻找包含 AI 组件的新解决方案,以增强入侵检测)。
-
管理员账户(例如DBA账户)必须使用更强的密码标准(如果可能的话,使用 60 个字符以上的密码并使用密码管理器)。
-
始终应用基本的安全政策,例如最小权限原则 (PoLP)和职能分离(它们在第三章,理解政策、程序、合规性和审计中有详细解释)。
-
数据库隔离有助于你更好地控制数据和相关的控制措施。例如,可以根据合规性控制将数据库进行隔离。
-
始终确定数据是内部访问还是外部访问,并适当应用控制措施。
-
分析并在可能的情况下,利用云服务提供商提供的安全功能。
-
分析并在可能的情况下,利用数据库开发者提供的安全功能。
-
利用合规标准来提高数据库的安全性,即使你不需要遵守它们(例如,PCI-DSS)。
-
避免在测试环境中使用客户数据。
-
在可能的情况下,使用策略管理器来强制执行安全策略。
-
使用增强解决方案(如Google Secret Manager)来存储敏感信息,如 API 密钥、密码、证书等。
此外,以下是一些链接,供您参考,帮助您了解如何加固某些特定数据库引擎:
-
MySQL 安全性:
dev.mysql.com/doc/refman/5.7/en/security-against-attack.html -
PostgreSQL 安全性:
-
SQL Server 安全性:
docs.microsoft.com/en-us/sql/relational-databases/security/securing-sql-server?view=sql-server-ver15 -
Oracle 数据库安全性:
docs.oracle.com/cd/B28359_01/network.111/b28531/guidelines.htm#DBSEG009 -
MongoDB 安全性检查清单:
-
Redis 安全性:
-
Google Cloud Storage 最佳实践:
现在,您已经了解了如何保护云环境,接下来可以查看一些可以帮助您测试云安全性的工具。
测试您的云安全性
正如您可能已经知道的那样,所有的防御性安全措施必须经过测试,以确认已实施的控制是否有效,还要检测是否存在任何可能被攻击者利用的漏洞。
因此,在本节中,我们将探讨一些最佳工具,这些工具可以帮助您监控云的可用性和漏洞情况,以确认您的控制措施是否有效,并判断它们是否符合相关法规要求。
Azure 安全中心
Azure 安全中心是使用微软云服务的必备工具,因为它能让您评估所有云资源的安全状态,包括服务器、存储、SQL、网络、应用程序和工作负载。
如下图所示,您可以在此查看您的安全状态,并通过使用 Azure 安全评分建议来改善安全性:

图 11.8 – Azure 安全中心
此外,Azure 安全中心使您能够查看与各种监管要求的合规性,并执行持续的评估和报告,以简化合规过程。
Amazon CloudWatch
Amazon CloudWatch监控云应用,并将数据转换为度量指标和事件,以便更好地展示 AWS 资源、应用和服务的可见性。
此外,你还可以检测异常行为、配置警报、执行自动化操作等。

图 11.9 – Amazon CloudWatch 的功能
如前图所示,Amazon CloudWatch是一个出色的工具,可以增强 AWS 资源的监控和可用性。
AppDynamics
被Cisco于 2017 年收购的AppDynamics提供基于云的监控服务,用于评估应用性能。
如下图所示,该工具被创建用以支持即使是复杂的环境:

图 11.10 – AppDynamics
该工具还具有应用安全监控功能,可以帮助你更快地发现漏洞和安全隐患。
Nessus 漏洞扫描器
Nessus 漏洞扫描器被许多人认为是最完整的漏洞扫描器。如下图所示,Nessus 使你能够运行多个预配置的扫描,从而简化操作:

图 11.11 – Nessus 扫描模板
此外,你还可以配置自己的高级扫描来查找特定的漏洞。
甚至还有一个有限的免费版本,你可以用来测试此扫描工具的强大功能。
若想获取更多信息,可以访问他们的网站:es-la.tenable.com/products/nessus。
InsightVM
InsightVM是由Rapid7开发的工具,可用于评估云端和虚拟基础设施,找出漏洞并进行精确的风险评估。
如下图所示,默认仪表板提供了大量信息,帮助你了解当前的漏洞情况。例如,仪表板可以作为基础设施中不受支持的服务器的可视化提醒:

图 11.12 – InsightVM 默认仪表板
该工具的另一个优势是,你还可以用它来监控云外的其他系统,使你能拥有一个一体化的安全仪表板。
Intruder
Intruder是一个漏洞扫描工具,帮助你通过检查超过 10,000 个漏洞和安全检查来评估你的云环境状态。如图所示,图形用户界面非常直观,能够在一个仪表板中呈现所有有用数据。
此外,它还提供了根据漏洞的严重性对其进行排序的选项,让你始终能保持关注。

图 11.13 – Intruder 图形用户界面
还有许多其他性能监控工具以及漏洞扫描器,你可以查看它们,这些工具有各自独特的特点和功能:OpenVAS、Qualys Cloud Platform、AlienVault USM、Alibaba Website Threat Inspector、Amazon Inspector、Orca Security、Trend Micro Cloud One,等等。
很遗憾,这一章已经结束,但好消息是,如果你想了解更多关于OpenVAS的信息,可以跳转到第十三章,漏洞评估工具,在这一章中,你将有一个完整的章节,专门讲解如何更好地使用这个强大的工具。
总结
在本章中,我们涵盖了大量有用的信息,帮助你更好地理解与安全云实施相关的各个方面。
我们了解了不同类型的云及其相关的安全性,也看到了如何保护 Kubernetes。最后,我们展示了数据库安全的一些基础知识以及评估云安全的各种工具(在坏人之前)。
但我们还没有结束。在下一章,我们将进一步深入探讨这一主题,学习如何通过 Web 应用程序掌握安全实施。
进一步阅读
以下是每个云服务提供商提供的最佳安全实践链接:
第十二章:第十二章:掌握 Web 应用安全
“Web 应用无处不在,攻击者如今投入大量精力了解它们的攻击面并利用它们的漏洞。我们则需要做同样的事。”
– 克里斯蒂安·罗德里格斯,攻防安全认证专家(OSCP)|攻防安全 Web 专家(OSWE)
的确,我们必须保护我们的 Web 应用,这也是我们创建这个超级激动人心的章节的原因,您将在其中获得所有知识,掌握确保 Web 应用安全所需的技能。首先,我们将向您展示别人可能知道关于您的网站或 Web 应用的多少信息,以及隐匿所有这些公共信息的重要性。
接下来,我们将进入更技术性的内容,并向您介绍 Web 应用最常见的攻击之一:跨站脚本攻击(XSS)。之后,本章其余部分将非常技术性和实践性。
我们将从一步步的指南开始,教您安装两个必备的网络安全工具,如下所示:
-
非常脆弱的 Web 应用(DVWA)
-
Burp Suite
DVWA 是一个很棒的工具,它为您提供了一个安全的虚拟环境,您可以在其中测试甚至熟悉 Web 应用上的多种漏洞。
另一方面,Burp Suite 是一个出色的工具,可以实时测试给定的 Web 应用。
一旦我们配置好两个工具,就会进行一个实验,向您展示如何针对以下两种攻击测试 Web 应用:
-
结构化查询语言(SQL)注入攻击
-
暴力破解攻击
总结一下,这一章我们将涵盖的主要内容如下:
-
收集关于您的网站/ Web 应用的信息
-
利用 DVWA
-
概述 Web 应用最常见的攻击
-
使用 Burp Suite
-
在 DVWA 上的 SQL 注入攻击
-
对 Web 应用密码进行暴力破解
技术要求
为了充分利用本章的内容,建议安装带有 Kali Linux 的虚拟机(VM)以便顺利进行实验。
我们还将使用两个工具,DVWA 和 Burp Suite,但我们会涵盖它们的安装和配置方法,所以不用担心这个问题。
收集关于您的网站/ Web 应用的信息
当保护您的 Web 资源(网站、Web 应用、应用程序接口(API)等)时,第一步是确定有关它们的哪些信息可以在互联网上轻松且自由地获取。如果您想知道为什么要这么做,答案非常简单:因为攻击者首先就是这么做的!
而且信不信由你,数以千计的 Web 资源暴露了敏感数据,如密码、数据库用户、敏感文档等。
公共数据收集的重要性
现在,让我们首先了解一下突出此活动重要性的关键方面(以及为什么您必须投入时间和资源来进行此活动),如下所示:
-
公共信息可以被用于定向的社交工程攻击(钓鱼、语音钓鱼、冒充等)。
-
用户名可以被用于执行定向的密码攻击(字典攻击、暴力破解攻击等)。
-
服务器名称和互联网协议(IP)地址可以用于执行定向的拒绝服务(DOS)攻击。
-
攻击者可以利用公共信息进行更有效的字典攻击。
现在,让我们来看一下如何爬取互联网,发现关于你的网站的公共信息。
开源情报
开源情报(OSINT)是指从公共(开放)资源,如互联网,收集情报或信息。这一术语通常由情报服务机构使用,但现在在网络安全领域非常普遍。
事实上,有一个非常好的框架(osintframework.com/),它包含了多个可以供你收集互联网上各种数据的资源,接下来我们将看到你可以使用的最相关的工具来进行数据收集。
DNS 查询
这些工具可以让你收集有关你的网络资源的域名系统(DNS)信息。因此,强烈建议检查你的网站,看看其他人知道关于你的网站什么。
一个很好的例子是网站spyse.com/tools/dns-lookup,它不仅提供 DNS 信息,还包括以下内容:
-
DNS 记录(邮件交换(MX)、地址(A)、名称服务器)
-
DNS 历史
-
使用的技术(操作系统(OS)、互联网信息服务(IIS)、库、字体、内容管理系统(CMS)等)
-
子域名
-
其他数据(超文本传输协议(HTTP)头、层叠样式表(CSS)、链接、JavaScript(JS))
-
证书信息(安全套接字层,或SSL)
-
已验证的电子邮件地址
根据你的业务需求,其中一些信息必须被隐藏,因为它可能代表着安全或隐私风险。
以下截图中展示的页面还显示了基于从公共漏洞和暴露(CVE)中发现的漏洞的安全评分:

图 12.1 – 来自 spyse.com 的漏洞视图
正如你可能已经推测到的,这些类型的页面也是评估你的托管服务提供商安全性的一个重要信息来源。
WHOIS 记录
这些记录显示了与给定域名所有者相关的信息。这里的主要风险是,这些记录与某个人关联,可能会使该人成为网络犯罪分子的主要目标。
例如,如果攻击者可以看到大公司的域名所有者的电子邮件地址,那么攻击者可以利用这些信息对该人进行多次攻击,如以下几种:
-
社交工程攻击
-
暴力破解攻击
-
冒充攻击
-
在已知的数据泄露中搜索电子邮件以收集凭据
为了防止这些攻击,公司可以向域名注册人支付额外费用,隐藏这些记录作为隐私保护措施,如以下截图所示:

图 12.2 – 私有域名与正常域名的 WHOIS 输出
注意在前面的截图中,注册人信息已被隐藏以保护安全和隐私。
托管信息
你可能还想查看的另一条信息是关于共享托管环境的。例如,像www.domainiq.com这样的页面可以列出托管在某一服务器或子网中的所有域名。
这些信息可以通过以下两种方式使用:
-
首先,它可以帮助你判断服务器的声誉,特别是当你使用共享托管环境时。
-
其次,这也可能是一个隐私问题,因为它可能会泄露公司所有权的私人信息。例如,你可能会在不同的公司名下注册两家公司,因为你不希望公众将它们联系在一起,但如果两个域名托管在同一服务器上,可能会透露关于这两家公司实际所有权的线索。
以下截图展示了托管在同一服务器上的域名列表:

图 12.3 – 显示托管在同一服务器上的域名列表
作为附注,如果你使用的是第三方共享托管环境,这些信息也可能会有用,帮助你判断你的网站是否因托管在同一服务器上的不良页面而面临被封禁(黑名单)的风险(这可能会影响到你邮件服务器的可用性)。
网页抓取工具
还有一些工具专门用于收集某一领域的所有公共信息。
你可以利用这些工具来确定从你的网站或 Web 应用中可以收集多少信息,以确保你的私人数据保持机密。
这里列出了一些网页抓取工具的示例:
-
webscraper.io:一款流行的浏览器扩展,允许你从指定网站收集所有公共信息。 -
www.scraperapi.com/:该网站为用户提供了一个 API,用于执行网页抓取。 -
www.scraping-bot.io/:一个用户友好的系统,用于抓取网页。
如下截图所示,大多数抓取系统会输出多种类型的文档,包括.html、.doc、.pdf、.xls等:

图 12.4 – 网页抓取
请记住,网页抓取应仅在你自己的服务器上进行,因为在某些国家/地区这可能是非法的。
防止网页抓取
还有一些步骤可以防止他人利用网页抓取攻击你的网络资源。以下是一些最有效的步骤:
-
实现Web 应用防火墙(WAF)。
-
使用反机器人系统(如完全自动化公共图灵测试以区分计算机和人类(CAPTCHA))。
-
要求用户注册以访问下载和其他信息。
-
使用IP、服务器、域名等黑名单。
-
使用先进系统,如浏览指纹识别来检测潜在的机器人。
-
使用蜜罐识别那些想要抓取你网站的攻击者(并将其阻止)。
这些技巧可能有助于防范一些自动化抓取工具,但你的系统可能仍然容易受到网页抓取攻击。这就是为什么我们在本章开头重点讨论确保没有敏感信息外泄的原因,这样如果有人进行网页抓取,他们将无法从我们的网络系统中收集到任何敏感数据。
使用 Google 黑客(Dork)检查数据暴露
我知道许多人讨厌将此称为黑客行为(主要因为这不需要任何技术技能);然而,很多人将 Google dork 称为 Google 黑客,所以我决定在标题中保留这个名字,以引起一些关注。
Google Dork基于使用一些搜索命令和参数,更有针对性地收集互联网中的私人文件和信息。
如前所述,这不是一个由谷歌创建的黑客工具;相反,它是利用这个搜索引擎查找一些没有适当保护、因此暴露在互联网上的敏感信息。
让我们回顾一些可以帮助你确保在互联网上不暴露自己的 Google dork。你可以看到一个例子:
site:yoursite.com filetype:xls intext"phone"
检查你的网站是否有包含电话号码的.xls文件。你可以通过将phone关键词替换为任何其他属性,或者将文件类型改为.pdf、.doc等来进一步改进。以下是一个代码示例,展示如何做到这一点:
site:yoursite.com filetype:sql "# dumping data for table" "`PASSWORD` varchar"
在你的网络资源中搜索带有password关键词的开放数据库。
如下图所示,你需要仔细检查这些搜索结果,看看结果是仅显示基本数据(如变量名)还是更敏感的数据(如明文密码):

图 12.5 – Google Dork 输出
即使这听起来令人难以置信,有时你甚至可能会在.txt文件中找到密码,如以下代码示例所示:
site:yoursite.com intitle:"index of" "Index of /" password.txt
前面示例中的代码将搜索错误放置的文件(如包含用户名或密码的.txt文件)。
提示
在这里,您可以找到超过 6,000 个 Google dork,您可以根据需要修改它们。有些是针对特定 Web 服务的,因此可能对您非常有用:www.exploit-db.com/google-hacking-database。
还有另一种方法,通过修改您服务器中的robots.txt文件,防止外部人员将这些 Google dork 用于您的 Web 系统,如下所示:
-
通过运行以下代码防止 Google 索引:
User-agent: Googlebot Disallow: / -
通过运行以下代码防止 Google 索引特定的文件类型:
User-agent: Googlebot Disallow: /*.sql$ -
通过运行以下代码防止索引某个特定的文件夹:
User-agent: Googlebot Disallow: /directoryName/ -
通过运行以下代码防止其他搜索引擎索引:
User-agent: * Disallow: /
所有这些都是非常基础(但可行)的攻击,但现在您已经学会了如何设置 Web 安全的基础,接下来是时候继续学习 Web 应用程序最常见的攻击了。
利用 DVWA
在继续本章其余部分之前,您需要了解一个非常棒的工具,它将帮助您更好地理解 Web 应用程序中的漏洞。
但是,我们还将使用这个平台向您展示如何测试您的 Web 应用程序,以防御最常见的攻击,例如以下几种:
-
暴力破解攻击
-
SQL 注入攻击
此外,这个轻量级且易于安装的系统具有很多酷的功能,例如以下几点:
-
一个可以在安全环境中探索多个 Web 应用程序漏洞的平台
-
一个极好的工具,用于制作视频或实时演示,以提高对这些漏洞的意识
-
一个测试环境,用于确定攻击对 Web 应用程序的影响
-
用于测试修复措施的沙盒环境
如前所述,我强烈建议您在虚拟机上安装 DVWA,这样您就可以执行我们将在本章接下来的部分中看到的实验,看看如何针对真实攻击测试您的 Web 应用程序以及应用至少基本的安全加固对 Web 应用程序的重要性。
在 Kali Linux 上安装 DVWA
在最新版本的 Kali Linux 上安装 DVWA 并不容易找到明确的(逐步)安装说明;因此,为了节省您的时间(和避免麻烦),我创建了一份超级简单的指南,帮助您在仅 14 个步骤内安装 DVWA 到 Kali Linux。下面是操作方法:
-
按如下方式导航到
html文件夹:cd /var/www/html -
克隆
git仓库,像这样:sudo git clone https://github.com/digininja/DVWA.git -
按如下方式更改
installation文件夹的权限:sudo chmod -R 777 DVWA -
按如下方式导航到
installation文件夹中的config文件:cd DVWA/config -
复制
config文件并重命名,如下所示:cp config.inc.php.dist config.inc.php -
打开
config文件查看数据库凭据,并将密码修改为更容易输入的内容(在以下示例中,我将密码更改为pass):config file, including all database information:Figure 12.6 – DVWA database user configuration -
通过运行以下命令安装
mariadb:sudo apt-get update sudo apt-get -y install apache2 mariadb-server php php-mysqli php-gd libapache2-mod-php -
通过运行以下命令启动数据库:
sudo service mysql start -
登录到数据库(密码为空,因此只需按Enter即可),如下所示:
sudo mysql -u root -p -
现在,我们需要在数据库中创建一个用户。在这种情况下,我们需要使用我们刚刚在
config文件中创建的相同用户名和密码(见 图 12.7)。这是您需要的代码:create user 'user'@'127.0.0.1' identified by 'pass'; -
现在,我们需要授予用户在数据库上的所有权限,如下所示:
grant all privileges on dvwa.* to 'user'@'127.0.0.1' identified by 'pass';提示
请注意,由于我们正在操作数据库,这些命令需要以分号(
;)结尾。 -
现在,这两个操作在数据库上的结果应该如下所示:
![图 12.7 – 用户在数据库中的成功创建]()
图 12.7 – 用户在数据库中的成功创建
-
现在是时候导航到
apache2目录来配置我们的 Apache 服务器,如下所示:cd /etc/php/7.3/apache2 -
现在,让我们修改
php.ini文件,确保以下参数已启用:allow_url_fopen和allow_url_include,如 图 12.9 所示,为此我们将使用mousepad,如下所示:fopen wrappers to modify these values, as illustrated in the following screenshot:Figure 12.8 – Apache server parameters -
现在,是时候启动 Apache 服务器了。您可以通过运行以下命令来完成:
127.0.0.1/DVWA/.Congratulations!! If you can see the same as shown in the following screenshot, then it means that you successfully installed DVWA:

图 12.9 – DVWA 配置页面
哦,但等等——还有最后一步。向下滚动并点击 创建/重置数据库。这将为您创建一个数据库,几秒钟后,您将被引导到登录界面,如下图所示:

图 12.10 – DVWA 登录界面
现在,只需输入以下凭证进行登录:
-
admin -
password
如下图所示,您可以测试和实验很多有趣的漏洞,例如 暴力破解、命令注入、文件包含、SQL 注入等:

图 12.11 – DVWA 网络界面
一个非常有趣的攻击是著名的 XSS 攻击,我们将在接下来的章节中深入探讨。
概述 web 应用程序中最常见的攻击
现在是时候讨论您可能遇到的针对 web 应用程序的 最常见攻击 了,当然也会介绍您可以用来保护系统免受这些攻击的方法、技巧和工具。
探索 XSS 攻击
这种攻击的原理非常简单:利用一些 JavaScript 或 HTML 代码在您的 web 应用程序上执行恶意代码。
为了更好地理解这些攻击类型,让我们来看一种最常见的 XSS 攻击类型:劫持用户会话。
劫持用户会话
在这里,攻击者将尝试向 web 应用程序注入恶意代码,该代码可以用于提取会话 cookie,从而冒充受害者。
为了更好地说明这一攻击,让我们来看一个基于租房网站的示例,如下所示:
-
攻击者将登录到易受攻击的网站,创建一个广告来出租房屋 但是 在该字段的描述中(正常人会描述房屋的优点),攻击者将嵌入恶意代码,目的是收集用户的会话 Cookie 并将其发送到他们的服务器。
-
当另一个用户打开那个 被黑客入侵的 房屋租赁广告时,恶意的 JavaScript 将会执行,受害者的会话 Cookie 会被复制并发送给攻击者。
-
现在,攻击者可以通过使用窃取的会话 Cookie 来伪装成受害者,在系统中将自己标识为受害者,如以下截图所示:

图 12.12 – 通过 XSS 实现会话劫持
现在,让我们看看如何防止这种攻击。你可以采取以下措施:
-
设置
php.ini指令,如下所示:session.use_only_cookies = 1 -> for using only cookie based session ids session.use_trans_sid = 0 -> disable showing PHPSESSID in browser url -
每次提供任何重要数据时,使用
session_regenerate_id()(这将删除旧的会话号并生成一个新的)。 -
在
$_SESSION中保存关于用户的一些指纹信息(如 IP 地址、浏览器代理等)。然后,每次收到 Cookie 时,你可以进行比对,如果发现不匹配,就能知道有问题。 -
使用 SSL 证书 来加密数据传输过程。
-
教育用户 始终退出登录,而不是仅仅关闭浏览器,特别是在使用 Web 应用程序时。
-
使用
timeout来 终止空闲会话(使会话过期)。 -
保持会话 标识符 (IDs) 不出现在 统一资源定位符 (URL) 中。
-
避免重复使用会话 ID 进行身份验证。
-
将会话 ID Cookies 标记为
HTTPOnly。 -
在访问 Web 应用程序中的敏感资源时,要求重新认证。
同样重要的是,要强调还有许多其他已知的 XSS 攻击,例如以下几种:
-
执行未经授权的活动
-
钓鱼攻击
-
捕获按键记录
-
捕获敏感信息
现在,让我们概述一些额外的提示,帮助你更好地保护你的 Web 应用程序免受 XSS 攻击。
针对 XSS 攻击的额外缓解措施
以下是一些最佳实践,可以用来降低受到 XSS 攻击影响的风险:
-
保持你的 Web 应用程序 更新,及时安装安全更新。
-
清理输入。
-
限制输入字段中的 JavaScript 输入(输入验证)。
-
确保您的 Web 应用程序的所有第三方模块也都是最新的。
-
定期 检查 CVE 网站,以确定是否有新发现的 XSS 漏洞影响了你的系统:
cve.mitre.org/cgi-bin/cvekey.cgi?keyword=xss。
现在,让我们谈谈用于测试 Web 应用程序漏洞的最佳工具之一:Burp Suite!
使用 Burp Suite
Burp Suite是一个很棒的平台,可以帮助我们查找 Web 应用程序中的漏洞。事实上,如果你有 Web 应用程序,你必须至少有一个经过 Burp Suite 培训的人员来测试你 Web 应用程序的安全性。
但不要担心,如果你没有使用过这个工具——这一部分就是为你准备的!
在这里,你将学习如何设置 Burp Suite,为接下来的章节做好准备。在这些章节中,你将看到如何使用 Burp Suite 和 DVWA 测试一个 Web 应用程序,防范两种常见的攻击:SQL 注入和暴力破解攻击。
Burp Suite 版本
让我们先来讨论这个工具的三个主要版本(为了简便起见,我们将其分为两个版本——免费版和付费版)。
专业版和企业版
这些版本提供了更多的高级工具,并且你可以在进行 Web 应用程序测试时使用它们。此外,它们还提供了自动化设置,这对于大公司或企业可能至关重要。
Community 版本
这是一个默认包含在 Kali Linux 中的基本版本工具。
在这个版本中,你可以进行许多测试,但有限制:测试不能自动化(必须手动执行),不过这对于中小型公司来说已经足够了。
但是这只是理论,若你想了解每个版本的详细信息及其价格,请访问他们的官网:portswigger.net/burp。
现在,在深入一些实际场景之前,让我们简要了解一下 Burp Suite 的Community 版本在Kali Linux上的界面,这样你就可以自己执行一些最常见的 Web 应用程序测试操作,包括 SQL 注入和暴力破解攻击;但首先,我们先熟悉一下这个工具。
在 Kali 上设置 Burp Suite
要在 Kali 上执行 Burp Suite,只需打开命令行并输入以下命令:
burpsuite
如果你是第一次使用 Burp Suite,你需要阅读并接受条款,接受后你就能看到 Burp Suite 的界面。
等一下——你是否收到了关于Java 运行环境(JRE)的错误?
别担心——这是你第一次启动 Burp Community 时常见的错误,它与操作系统中安装的 JRE 版本有关,以下截图中可以看到。无论如何,在这种情况下,你可以跳过这个提示,直接启动 Burp:

图 12.13 – 执行 Burp Suite 时的 JRE 错误
在免费版中,唯一可用的选项是选择临时项目,所以我们点击那里,然后选择默认选项,最终进入主界面图形用户界面(GUI)。
恭喜!现在,你应该能看到 Burp Suite Community 的主界面,如下图所示:

图 12.14 - Burp Suite 社区版
您已经准备好开始进行一些测试,让我们继续看看如何使用Burp Suite 和 DVWA来测试您的 Web 应用程序抵御 SQL 注入攻击。
DVWA 上的 SQL 注入攻击
对于此演示,我们将使用 Kali Linux,加上我们刚刚设置的两个工具:Burp Suite 社区版和 DVWA。
提示:
如果您重新启动机器,您需要再次启动 DVWA 所需的服务,并使用以下命令重新启动您的浏览器:
sudo service apache2 start
sudo service mysql start
DVWA 的一个很酷的功能是您可以自定义攻击的难度(他们称之为安全级别)。以下是每个级别的简要解释:
-
低: 计算机非常容易受到攻击,没有任何安全措施。
-
中等: 旨在模拟一个没有良好安全实践的 Web 应用程序。
-
高: 这是前一个级别的延伸,其中利用可能更难实现。
-
不可能: 这是一个应用了所有最佳实践的机器的模拟。
在 SQL 攻击的情况下,低安全级别会显示一个文本字段,您可以轻松输入直接的 SQL 注入,如下面的屏幕截图所示:

图 12.15 - DVWA 低安全级别:SQL 注入
然而,对于我们的示例,我们将把它提升到下一个级别,并使用中等安全级别,在这个级别中,我们将只看到一个下拉菜单,而不是一个简单的文本字段。
因此,为了完成这个安全测试,我们需要一个额外的工具来注入 SQL,这就是您将利用一个新朋友 Burp Suite 的地方。
现在,让我们逐步了解如何执行这个超酷的 SQL 注入安全测试,如下所示:
-
打开 Burp Suite,并使用 Burp 默认设置创建一个临时项目。
-
从主菜单中选择代理,然后从子菜单中选择拦截。
-
然后,选择启动 Burp 浏览器选项。
-
使用 Burp 浏览器,打开 DVWA,转到左侧菜单,点击安全性,然后在下拉菜单中选择中等,点击提交,如下面的屏幕截图所示:
![图 12.16 - 更改 DVWA 中的安全级别]()
图 12.16 - 更改 DVWA 中的安全级别
-
现在,转到左侧菜单中的SQL 注入,在那里,你应该看到一个带有提交按钮的下拉菜单,如下面的屏幕截图所示:
![图 12.17 - 中等安全级别的 SQL 注入]()
图 12.17 - 中等安全级别的 SQL 注入
-
返回到 Burp Suite,点击拦截已关闭以打开它,如下面的屏幕截图所示:
![图 12.18 - 在 Burp Suite 中打开拦截]()
图 12.18 - 在 Burp Suite 中打开拦截
-
返回 DVWA 并点击 提交(如图 12.17所示)。
-
如果你返回到 Burp Suite,你应该能够看到拦截到的数据,如下图所示:
![图 12.19 – Burp Suite 捕获的数据]()
图 12.19 – Burp Suite 捕获的数据
-
如图 12.19的末尾所见,选择的下拉菜单值被发送为
id=1,所以让我们通过调整这个数字来看看这个 Web 应用程序的安全性如何。 -
让我们将 Burp Suite 中的
id值从1更改为2,然后点击 转发,看看会发生什么。 -
如果你回到 DVWA,你会看到下拉菜单仍然显示 用户 ID 1;然而,用户 ID 2 的信息却在显示。这意味着 Burp Suite 成功地注入了一个新的值,而没有接触到网页,如下图所示:
![图 12.20 – 用户 ID 从 Burp Suite 更改]()
图 12.20 – 用户 ID 从 Burp Suite 更改
-
但那只是一个测试。现在我们看到我们可以注入数据,接下来让我们尝试进行真正的 SQL 注入。为此,我们将更改用户 ID的值,看看不同的值能带来什么效果。为了实现这一点,我们返回 Burp Suite,并确保拦截处于打开状态,然后再次点击 DVWA 上的 提交,以便再次在 Burp Suite 中获取数据。
-
现在,将 Burp Suite 中的
1改为1 OR 1=1#然后点击 转发。 -
如下图所示,DVWA 中的网页现在同时显示了所有五个用户的信息,即使没有提供相关的选项。这意味着我们刚刚发现了一个安全缺陷!这里是:
![图 12.21 – 显示不应在 Web 应用程序中显示的数据]()
图 12.21 – 显示不应在 Web 应用程序中显示的数据
-
点击
ID,接下来是:1 OR 1=1 UNION SELECT NULL,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES# -
现在,如果你回到 DVWA,你会看到这次我们获得了更多信息,包括表名。这是一个非常严重的安全漏洞,因为攻击者可以从我们的 Web 应用程序中获取非常敏感的数据。现在,我们刚刚发现了一个更严重的漏洞,它危及了信息的机密性,如下图所示:
![图 12.22 – 从 Web 应用程序泄露的数据库信息]()
图 12.22 – 从 Web 应用程序泄露的数据库信息
-
有了这些信息,我们可以测试是否能够从这个 Web 应用程序中获取更多敏感数据,接下来让我们尝试以下命令:
1 OR 1=1 UNION SELECT USER,PASSWORD FROM users#
如果你回到 DVWA,你应该能够看到显示所有密码哈希值,如下图所示:

图 12.23 – 从 Web 应用程序泄露的哈希密码
现在,让我们看看执行这个实验时可能会遇到的一个常见错误。
修复常见错误
你是否遇到与图 12.24所示相同的错误?如果是的,别担心——这很容易修复。只需进入 Burp Suite,选择拦截关闭,然后刷新DVWA,一切应该恢复正常。
同时,请记住,这些值区分大小写,因此请确保使用正确的大小写,以避免错误,如下图所示:

图 12.24 – DVWA 错误
现在,让我们做另一个测试,看看一个 Web 应用程序是否容易受到暴力破解攻击。
对 Web 应用程序的密码进行暴力破解
在这里,我们将使用之前一直在使用的两个应用程序,因此我们直接进入步骤,如下所示:
-
进入 Burp Suite 并确保拦截已关闭。
-
进入DVWA,从左侧菜单中选择暴力破解。
-
输入
admin作为密码的12345(还不要点击登录)。 -
返回Burp Suite并将拦截设置为开启。
-
现在,你应该能够看到所有发送的数据,包括输入的用户名和密码值。
-
点击顶部菜单中的操作按钮,然后选择发送到入侵者,如下图所示:
![图 12.25 – Burp Suite 中的操作菜单]()
图 12.25 – Burp Suite 中的操作菜单
-
现在,你应该看到入侵者菜单已被红色高亮显示,所以请点击顶部菜单中的入侵者,如下图所示:
![图 12.26 – 入侵者菜单]()
图 12.26 – 入侵者菜单
-
进入顶部菜单中的位置。在那里,你可以看到我们将在有效负载中使用的参数或变量。通常,它会默认识别一些参数,因此在这种情况下,让我们通过点击清除来清除这些值。
-
然后,将攻击类型更改为
admin并点击12345。结果应该如下所示:![图 12.27 – 添加有效负载位置]()
图 12.27 – 添加有效负载位置
现在我们已经添加了两个位置,接下来我们去顶部菜单中的有效负载。在那里,点击有效负载集,你应该能够看到下拉菜单中有两个选项。这是因为我们刚才添加了两个有效负载位置,第一个是用户名,第二个是密码,如下图所示:
![图 12.28 – 添加有效负载集]()
图 12.28 – 添加有效负载集
-
好的——现在我们设置
1(用户名)和有效负载类型为简单列表。 -
为了简化这个示例,我们只包括两个用户名:一个是
admin,另一个是cesar。只需选择admin并点击cesar即可。 -
现在,让我们用负载集 #2(
password)进行相同的操作。在这里,我们通常会使用一个密码字典,但为了简便起见,我们手动添加几个密码选项。为此,只需设置2,然后保持kessen、topolino、password、letmein、qwerty。结果应该如下面的截图所示:![图 12.29 – 添加负载选项(值)]()
图 12.29 – 添加负载选项(值)
-
返回到DVWA,复制您在输入错误密码时收到的错误信息:用户名和/或密码错误。
-
再次返回Burp Suite,然后选择选项。在这里,我们将使用错误信息作为标记,来识别何时找到密码。为此,请进入Grep Match,点击清除以删除默认值,然后粘贴错误信息并点击添加。
-
现在,是时候发动攻击了。为此,只需点击右上角的开始攻击按钮。
分析结果
到现在为止,您应该看到一个窗口,如下图所示,显示暴力破解攻击的结果。
如我们所见,在我们的例子中,有一个结果没有找到错误(最后一列),这意味着这一行包含密码。在这种情况下,password:

图 12.30 – 暴力破解攻击结果
现在,记住我们的目标是使用此工具测试网页应用的漏洞,并应用适当的修复措施,直到漏洞被修复为止。
如您所见,这两款工具非常强大,用于测试您的网页应用,因此,正如之前提到的,良好的做法是让安全团队中的至少一名成员熟练掌握这两款工具,这样网页应用的测试可以持续进行,以便在攻击者利用漏洞之前发现并修复它们。
总结
到目前为止,您应该已经掌握了保护网页应用的各个方面。在本章中,我们学习了网页应用的主动与被动数据收集,并了解了用于发现互联网中关于网页应用敏感数据的最佳工具和方法。我们还学习了没有对一些公开信息进行模糊处理的风险。
我们还学习了如何安装、配置并使用最佳的虚拟环境,以熟悉网页应用中的常见漏洞(DVWA 平台)。此外,我们还探讨了如何安装、配置并使用最佳工具来实时评估给定网页应用的安全性(Burp Suite)。
我们还通过一个实际操作的例子,亲身体验了攻击者如何轻松利用常见的漏洞来攻击您的网页应用。
但是,还有许多其他工具可以帮助你发现 web 应用程序甚至整个基础设施中的漏洞,接下来我们将进入下一章,回顾一些专业级漏洞评估工具!
进一步阅读
-
有关 DVWA 的更多信息,可以在官方 Git 页面找到,链接如下:
github.com/digininja/DVWA -
本页面介绍了一些其他的网络应用攻击,你可能需要查看:
owasp.org/www-project-top-ten/
第三部分:深入防御安全
本节将帮助你从专业到大师,展示防御安全领域中最好的系统、工具和方法。
本节包含以下章节:
-
第十三章,漏洞评估工具
-
第十四章,恶意软件分析
-
第十五章,利用渗透测试增强防御安全
-
第十六章,进行取证实践
-
第十七章,实现安全工具的自动化
-
第十八章,大师级有用资源汇编
第十三章:第十三章:脆弱性评估工具
“在第四次工业革命的破坏性和指数级推进过程中,越来越多的过程被数字化和机器人化,数据的爆炸性增长越来越多地由人工智能进行管理。伴随这一新技术能力的推进,网络犯罪带来的风险也在增加。因此,增强的网络安全能力成为让社会从第四次工业革命中受益的挑战之一。”
— 恩尼奥·罗德里格兹,经济学博士及哥斯达黎加经济学会会长
本书中我们已经讨论了许多关于脆弱性的内容;然而,本章的创建是作为该主题的单点参考,以便你可以在一个地方获取所有关于脆弱性的信息。
虽然第二章《管理威胁、脆弱性和风险》描述了脆弱性是什么以及如何分类它们,但本章更多关注如何在脆弱性分类后识别它们。
因此,我们可以说,尽管第二章,《管理威胁、脆弱性和风险》是脆弱性管理的理论部分,但本章更多关注实际/技术方面,包括深入探讨用于发现我们系统和基础设施中脆弱性的工具。
为了实现这些目标,本章将涵盖以下主题:
-
如何像首席信息安全官(CISO)一样处理脆弱性
-
脆弱性测试工具的类型
-
安装和配置最为知名的脆弱性评估扫描器(开放脆弱性评估系统,也称为OpenVAS)
-
Nexpose及其他可用脆弱性扫描器概述
技术要求
为了充分利用本章的内容,建议安装虚拟机(VM)并安装Kali Linux,以便正确进行实验操作。
处理脆弱性
正如我们在第二章,《管理威胁、脆弱性和风险》中所看到的,管理公司级别脆弱性的过程包括识别、分析、评估和修复。
现在,这个过程就是我们所说的管理方面。现在,是时候从操作(日常)角度理解它是如何实现的。
谁应该寻找脆弱性?
如果你的预算足够大,你必须将这项任务分配给内部或外部(第三方)红队(如第一章《防御性安全概念复习》中所述)。
另一方面,如果您的预算有限,您可以鼓励公司内部人员报告您基础设施中的任何漏洞。为了使这一做法有效,您必须建立并传达一个过程,并且在可能的情况下,为发现并报告这些漏洞的人提供激励。
漏洞赏金计划
漏洞赏金是一个巧妙的想法,旨在鼓励他人告诉您您的漏洞,而不是将其用于对付您。
该计划的目标是提供经济激励,鼓励外部人员发现您网站资源(应用程序、页面等)中的未知漏洞。
提示
漏洞赏金计划更适合那些拥有高安全标准的公司,以及已经经过内部红蓝队测试和加固的软件。因此,为一个尚未正确加固的、最近创建的网站发布漏洞赏金是资源的浪费。
如前所述,漏洞赏金计划通常由那些投入大量资源于其平台的强大公司提供,因此,如果您有非常出色的渗透测试技能,我强烈建议您查看这些网站并了解更多关于这些计划的信息:
漏洞赏金计划的支付通常根据发现的漏洞影响进行分类,这与支付类别相关,如下图所示:

图 13.1 – 漏洞赏金支付示例
然而,这可能引发以下问题:
我只应该检查外部(面向互联网)系统和服务中的漏洞吗?
内部漏洞
尽管面向外部的系统更容易受到攻击,但您仍然负责公司数据的整体安全,这意味着您还需要关注数据的可用性和完整性,这两个因素特别容易受到内部攻击(无论是恶意还是无意的)。
因此,红队也应对内部系统进行测试,以确保数据的机密性、完整性和可用性得到保护。
请查看以下截图:

图 13.2 – 内部与外部测试程序
如前面的截图所示,漏洞测试程序可以通过利用外部资源来增强系统安全性。
漏洞测试工具
有大量工具可以用于执行漏洞测试,我们可以将它们分为两大类:手动漏洞评估 和 自动化漏洞扫描器。
手动漏洞测试
你可以利用我们在前几章中回顾的许多工具,手动查找漏洞——例如,Burp Suite、Nmap、Wireshark、Shodan 和 Web Scrappers。
这类测试需要更高的技术技能,通常由网络安全专家或红队/紫队来执行。
自动化漏洞扫描器
这些扫描器的目标是通过让我们仅需几个步骤,就能扫描给定的网页资源或系统,检测其中的一种或多种漏洞,从而让我们的生活更轻松——事实上,对于大多数扫描器,只需点击一次即可完成。
这使得组织能够扫描其系统中复杂的漏洞,而无需依赖渗透测试人员进行漏洞评估,从而使得这些扫描器成为预算有限的公司聘用渗透测试人员时更合适的选择。
它们中的大多数包含已知漏洞的数据库(常见漏洞与暴露,或 CVE),并附有相应的脚本来测试每个漏洞。在某些情况下,它们甚至将这些漏洞分组,以便用户确定系统是否符合某些合规要求,例如 支付卡行业数据安全标准(PCI DSS)或 健康保险流通与责任法案(HIPAA)。
以下截图显示了 Nessus 漏洞扫描器的图形用户界面(GUI):

图 13.3 – Nessus 漏洞扫描器的图形用户界面
好的——现在,让我们深入了解两款较为著名的漏洞扫描工具:OpenVAS 和 Nexpose。
使用漏洞评估扫描器(OpenVAS)
OpenVAS 是最著名的开源漏洞扫描器。
该软件主要由 Greenbone networks 作为开源项目维护 (www.greenbone.net),并作为其商业漏洞管理解决方案套件的一部分。
该软件能够测试整个网络,发现设备,并执行多个操作来确定系统的操作系统(OS)、端口、配置和安装的软件,如下图所示:

图 13.4 – OpenVAS 网络扫描结构
之后,OpenVAS 可以执行多个检查,以识别每个已识别组件上的漏洞。
认证测试
OpenVAS 强大功能的一部分是能够执行两种类型的测试:未认证测试和认证测试。
未认证测试较少侵入性,因为它仅根据软件、配置和发现的端口测试一般漏洞。
另一方面,认证测试更强大,因为它允许你在测试中添加另一个因素——即用户会话、身份验证和授权。
在这里,OpenVAS 将使用有效凭证(由测试者提供)运行 本地安全检查(LSC),以收集有关目标系统漏洞的更多细节。
以下是可以在认证测试中使用的凭证示例:
-
服务器消息块(SMB):用于检查 Windows 系统上安装的软件的补丁级别,如 Adobe Acrobat Reader 或 Java 套件
-
安全外壳(SSH):用于检查 Unix 和 Linux 系统上的补丁级别
-
ESX 集成(ESXi):用于本地测试 VMware ESXi 服务器
-
简单网络管理协议(SNMP):用于测试网络组件,如路由器和交换机
现在,让我们看看如何在我们的 Kali Linux 机器上安装这个工具。
安装 OpenVAS
好的——第一步是使用以下命令下载并安装 OpenVAS:
sudo apt-get install openvas
安装好软件后,接下来执行配置脚本,使用以下命令:
sudo gvm-setup
你遇到错误了吗?
如下截图所示,存在与 postgresql 相关的常见错误,但我们将看到如何解决它:

图 13.5 – postgresql 错误
错误的原因是同时运行了两个版本的 postgresql,而 postgresql 使用 传输控制协议(TCP),如你所知,它不能在两个版本之间使用相同的端口。
因此,要解决此问题,我们只需确保版本 13 正在 TCP 端口 5432 上运行,然后可以将任何其他可用端口分配给版本 12。下面是如何操作的。
我们首先打开 postgresql 13 的配置文件,如下所示:
sudo nano /etc/postgresql/13/main/postgresql.conf
在这里,你需要导航到端口并将当前值更改为 5432,如以下截图所示:

图 13.6 – 更改 postgresql 13 的端口
然后,使用 Ctrl + O 保存文件,使用 Ctrl + X 退出,如以下截图所示:

图 13.7 – 保存 postgresql 配置文件
下一步是修改 postgresql 12 的端口,并将端口设置为 5433,如下所示:
sudo nano /etc/postgresql/12/main/postgresql.conf
然后,像之前一样,我们需要更改端口,这次从 5432 改为 5433,如下截图所示:

图 13.8 – 更改 postgresql 12 的端口
然后,按 Ctrl + O 保存文件,再按 Ctrl + X 退出。
现在,我们只需要使用以下命令重启 postgresql:
sudo systemctl restart postgresql
这样就应该解决问题了!
现在,我们可以返回并运行 OpenVAS 配置脚本,如下所示:
sudo gvm-setup
现在,过几分钟后,你应该会看到类似下面的内容:

图 13.9 – OpenVAS 配置和密码
提示
确保你复制密码并保存在安全的位置,因为你将需要它来访问 OpenVAS。
此时,你已经准备好启动 OpenVAS!
使用 OpenVAS
要执行 OpenVAS,只需键入以下命令:
sudo gvm-start
请注意,你也可以通过 Kali Linux 的 GUI 启动 OpenVAS,并在 02 - Vulnerability Analysis 下浏览应用程序,如下图所示:

图 13.10 – 打开 OpenVAS
在某些情况下,OpenVAS 可能无法打开默认浏览器,并会显示以下错误:

图 13.11 – OpenVAS 配置和密码
但不用担心——在这种情况下,你只需要从命令行复制 OpenVAS 的统一资源定位符(URL)(如下图所示),然后粘贴到你喜欢的网页浏览器中:

图 13.12 – OpenVAS URL
等等——某些浏览器可能会将此页面标记为危险,如下图所示。不过,你可以忽略警告并继续访问 OpenVAS:

图 13.13 – 打开 OpenVAS 时的通用警告
恭喜!!现在,你应该能看到 OpenVAS 登录页面,如下图所示:

图 13.14 – OpenVAS 登录页面
现在,你可以使用用户名 admin 和我们刚才复制的密码登录 OpenVAS。
更新你的 Feed
OpenVAS 使用多个 Feed 作为输入来检查漏洞,因此保持其最新非常重要。
要查看版本信息,你可以进入 Administration | Feed Status,如下图所示:

图 13.15 – OpenVAS Feed 状态页面
如果需要更新 Feed,可以使用下述命令。
-
要更新 NVT Feed,请运行以下命令:
sudo runuser -u _gvm -- greenbone-nvt-sync -
要更新 SCAP Feed,请运行以下命令:
sudo runuser -u _gvm -- greenbone-feed-sync --type SCAP -
要更新 CERT Feed,请运行以下命令:
sudo runuser -u _gvm -- greenbone-feed-sync --type CERT -
要更新 GVMD DATA Feed,请运行以下命令:
sudo runuser -u _gvm -- greenbone-feed-sync --type GVMD_DATA
完美!现在,你已经拥有一个完全配置、更新并准备执行扫描的 OpenVAS 实例。
如前所述,你可以对特定的 Internet Protocol(IP)地址或一组 IP 地址进行扫描。
现在,你已经准备好熟悉这个工具并开始测试你的环境。
Nexpose Community 概述
Nexpose 是另一个与 OpenVAS 非常相似的漏洞扫描器。
Nexpose Community 由 Rapid7 提供支持,你可以在这里下载:www.rapid7.com/info/nexpose-community/。
我们必须强调一点,功能已被限制;不过,如果你想要完整版本,他们也提供 Nexpose 的完整版本,30 天试用。
安装步骤在以下链接中有详细文档:docs.rapid7.com/nexpose/download。
要运行扫描,你只需按照以下简单流程操作,如Figure 13.16 中所示:
-
信息与安全:在这里,你只需添加测试的名称和描述。
-
资产:选择要扫描的资产或系统。
-
认证:在这里,你可以添加进行认证测试的凭据。
-
模板:在这里,你可以选择要执行的扫描类型——例如,Sarbanes-Oxley(SOX)扫描或 PCI DSS 扫描。
-
引擎:在这里,你可以选择系统将从哪些来源收集漏洞。
-
计划:这是一个非常酷的选项,可以让你安排未来的或定期的测试。
你可以在以下截图中看到一个概述:

图 13.16 – Nexpose Community GUI
此外,Rapid7 发布了一个名为 InsightVM 的新产品(见Figure 13.17),宣传为 Nexpose 的增强版,包含仪表盘、修复项目、持续监控(CM)等功能。
在这里,你可以找到 Nexpose 和新款 InsightVM 之间的详细对比:www.rapid7.com/products/nexpose/insightvm-comparison/。
你可以在以下截图中看到 InsightVM 的默认仪表盘:

图 13.17 – InsightVM
还有许多其他漏洞测试系统,既可以在本地计算机上运行,也可以是基于云的,您可以在世界任何地方通过简单点击执行。
实际上,还有许多其他工具,如 legion、nikto、nmap 和 Unix-privesc-checker,你也可以使用它们来查找系统中的漏洞,正如下面截图所示,这些工具都可以在 Kali Linux 上免费使用:

图 13.18 – Kali Linux 上的漏洞分析工具
哪个更好?
这将取决于你的公司、预算,甚至你必须遵守的法规。除此之外,考虑你对这些工具中哪个最熟悉和舒适使用也是非常重要的。
总结
漏洞管理是防御性安全中的一个关键领域;因此,在这一章中,我们重点介绍了用于执行漏洞评估的工具。
在这里,你还了解了可用工具的类型,以及作为网络安全领导者,你可以使用的一些策略来增强你的漏洞扫描策略。
此外,我们安装了 OpenVAS,它被许多人认为是最佳的免费漏洞扫描工具,毫无疑问,它是你网络安全工具库中的必备工具。
我们以对其他工具(包括免费和付费工具)的概述结束了这一章,你也可以利用这些工具来测试你的基础设施是否存在已知漏洞。
现在,让我们为下一章做准备,在这一章中,你将学习所有关于恶意软件分析的知识。
进一步阅读
如果你想了解更多关于漏洞奖励的信息,可以参考这本书:
www.packtpub.com/product/bug-bounty-hunting-essentials/9781788626897
第十四章:第十四章:恶意软件分析
“恶意软件感染的目标是利用系统,因此恶意软件分析作为一种机制变得非常重要,帮助我们更好地理解恶意软件,从而减少未来攻击的概率和影响。”
– Patricia Herrera,网络安全硕士
恶意软件分析被许多人视为一种进攻性安全任务。然而,作为防御性安全的专家,您必须了解这一过程的基础知识,这样您才能在防御性安全策略中加以利用。
因此,尽管本章旨在覆盖恶意软件分析的基础知识,但我们也将涵盖一些高级主题,包括一个实际操作活动,向您展示如何执行基本的恶意软件分析,但更重要的是,如何收集(并解释)分析结果中最有价值的信息。
这里是我们将在本章中涵盖的主要主题的详细信息:
-
恶意软件分析的重要性
-
恶意软件基础知识,包括功能、目标和后门
-
恶意软件分析的类型(静态、动态和混合)
-
恶意软件分析的分类(静态、交互式、自动化和手动)
-
最佳恶意软件分析工具概述
-
实际操作体验,执行基本的恶意软件分析
技术要求
对于本章内容,您将需要一台 Windows 机器来执行恶意软件的实际分析。
为什么我要分析恶意软件?
让我们首先定义恶意软件分析,作为一种分析恶意软件(软件、脚本、统一资源定位符(URL)等)以尽可能多地收集有关威胁的信息的过程。
这被视为一项非常技术性的任务,需要高度熟练的专业人员,而这些资源对于公司来说可能非常昂贵。此外,这项任务还可能非常耗时,这进一步增加了执行此分析的成本。然而,即使是预算充足的公司,也可能不会投资于恶意软件分析,原因在于他们还没有意识到这一投资的好处。
因此,让我们首先描述执行恶意软件分析的主要好处和输出。
恶意软件功能
恶意软件分析的主要目标之一是发现恶意软件的内部功能。这个步骤至关重要,因为它将支持在感染后的隔离工作。这个步骤的主要目标在这里描述:
-
发现恶意软件利用的漏洞来感染系统
-
理解恶意软件在系统之间传播所使用的机制
-
确定恶意软件是否具有任何高级功能,如自我销毁、变形能力、传播、人工智能(AI)等
恶意软件目标
作为本次分析的一部分,您将能够确定恶意软件的目标,这将帮助您确定每个案例所需的最佳缓解措施。这里给出了一些例子:
-
数据外泄
-
数据破坏
-
数据加密(勒索软件)
-
数据删除
-
系统故障(网络战)
-
系统中断(黑客行动主义)
-
系统损坏
恶意软件连接
恶意软件分析的另一个关键方面是确定谁创建了恶意软件,以及被外泄的数据去向何方。
这是因为两个主要原因。第一个是法律方面的问题,因为在大多数国家,分发恶意软件是犯罪行为,因此识别试图危害你系统的团体至关重要。
第二个原因是关于使用这些信息来屏蔽和列入黑名单互联网协议((IP))地址,这些地址被恶意软件使用,因为这将防止进一步的攻击。
此外,这些数据(IP、服务器名称等)可以作为威胁情报,由开源(众包)系统使用,以防止其他公司和行业的攻击。
看一下以下截图:

图 14.1 – IP 黑名单
如前面的截图所示,黑名单 IP 地址可能有助于阻止正在进行的攻击,但也可能防止同一团体的未来攻击。还需要记住,黑名单还将阻止命令与控制(C&C)攻击。
恶意软件后门
恶意软件的一个共同特征是创建后门。虽然这些后门的用途和目标可能有所不同,但确定任何后门的踪迹非常重要,以减少进一步感染或数据泄露的可能性。
受影响的系统
另一个重要的分析因素是有关将受到恶意软件影响的系统(操作系统、软件或硬件)。这非常重要,因为某些恶意软件可能会保持不活跃,直到出现特定条件或系统(例如 Stuxnet)。
现在你已经了解了恶意软件分析的好处和重要性,是时候了解恶意软件分析的类型以及它们的类别了。
恶意软件分析的类型和类别
有大量工具可以用于恶意软件分析,因此为了更好地理解它们,首先让我们来描述三种(实际上是两种)恶意软件分析工具。
静态恶意软件分析
这种类型的分析基于对代码的审查,以确定潜在的威胁指示。这些指示可能是哈希值、IP 地址、代码签名、代码模式、字符串、函数等。
这种分析的主要特点是它不执行代码,虽然这在资源方面是一种优势,但其范围也有限,因为它不能完全测试恶意软件所执行的影响和操作。
另一个缺点是,复杂的恶意软件可能包含先进的功能,旨在绕过这种静态分析。
动态恶意软件分析
这种类型的测试需要更多的资源,包括熟练的专业人员,以及技术资源,因为它需要一个隔离的环境来运行测试,称为沙箱。
提示
沙箱非常敏感,因为如果没有正确配置和隔离,它们可能会导致灾难性的事件。因此,沙箱只能由经验丰富和经过培训的专家使用。
在这种类型的测试中,恶意软件会在沙箱中执行,以发现前面章节中解释的几乎所有恶意软件特征。
因此,动态恶意软件分析的主要优点是它能提供对恶意软件的更深入洞察,帮助发现额外的信息,这些是静态测试无法获得的。
然而,有些高级恶意软件可以绕过xxx.xxx.xxx.xxx——使得动态测试不可靠。
为了解决这个问题,组织现在使用混合方法。
混合恶意软件分析
如下图所示,混合方法是基于前面已解释的两种方法的结合,旨在利用它们的优势,同时弥补它们的弱点:

图 14.2 – 恶意软件分析类型
如前所述,先进的恶意软件可能通过使用代码来欺骗沙箱,防止在沙箱环境中完全执行;然而,使用启发式方法或签名的静态分析可能能够检测到这种行为,从而允许分析人员修改沙箱,以执行恶意软件的隐藏功能或操作。
什么是启发式恶意软件分析?
启发式方法被引入作为一种检测新威胁的方式,例如未知的恶意软件、修改过的恶意软件,甚至是多态性恶意软件。它们基本上通过分析文件的代码,寻找已知病毒的片段、常见的功能或仅出现在恶意软件中的代码,例如加密整个硬盘、禁用杀毒软件等。
我知道你想了解更多关于恶意软件工具的内容,但在深入了解之前,我们需要了解恶意软件分析的各个阶段,因为这可能作为一种分类方法,帮助区分不同的工具。
现在,让我们探索恶意软件分析的不同类别。
静态属性分析
这是一种简单的分析类型,旨在分析恶意软件的一些基本特征(元数据),以便更好地了解恶意软件。
通常,这是判断是否需要进一步分析的第一步,甚至可以帮助确定更合适的分析方法。
交互式行为分析
交互式行为分析是一种非常复杂的分析类型,在这种分析中,分析人员与恶意软件进行交互,以便更好地理解它(影响、连接等)。这种测试在一个专门为执行此测试而创建的受保护和隔离的环境中进行。这样可以使分析人员确定恶意软件对操作系统(OS)、注册表项、进程、服务相互依赖、后门等所造成的更改。
完全自动化分析
这是一组预定的测试,可以对给定的恶意软件执行,以收集一些额外的信息。这个测试通常是基于云的(作为服务),并由第三方提供。
主要的优势之一是它会生成一份易于阅读的报告,这意味着执行此类测试不需要特殊技能。此外,当公司需要以方便快捷的方式分析大量恶意软件样本时,这种分析是非常推荐的。
手动代码逆向
这可能是最复杂的恶意软件分析类型,因为它需要使用调试器、反汇编工具或编译器进行代码逆向。
在某些情况下,甚至可能需要高级的加密技能来执行此类测试。
不同类别的恶意软件分析如下面的图所示:

图 14.3 – 恶意软件分析的类别
如前图所示,代码逆向是最复杂且最耗时的分析过程。
好的——现在你已经成为恶意软件分析概念的专家(包括它们的类别和分析类型),是时候进入下一个话题,最终看到用于执行恶意软件分析的工具了。
最佳恶意软件分析工具
让我们回顾一下用于恶意软件分析的五大工具。此汇总包含了所有类型和类别的恶意软件分析工具。
进程浏览器
这个工具基本上是一个超级任务管理器,可以为你提供关于系统中正在运行的进程的详细信息。
它告诉你文件的位置、自动运行设置、进程的专用性能图(有助于发现异常模式),并且如以下截图所示,它提供了一个选项,可以使用VirusTotal.com的数据库检查每个进程,如果你想测试可疑进程,这非常有用:

图 14.4 – 使用进程浏览器通过 VirusTotal.com 检查运行中的进程
这个工具虽然基础,但它是免费的,并且得到了微软的支持,所以它绝对是一个很好的起点。
要下载它,请访问官方网站:docs.microsoft.com/en-us/sysinternals/downloads/process-explorer。
进程监视器
进程监视器(ProcMon)是微软(前 Sysinternals)提供的另一款出色工具,允许你实时监控所有与文件系统、进程和威胁活动相关的活动。可以通过以下链接免费下载可执行文件:docs.microsoft.com/en-us/sysinternals/downloads/procmon。
然而,这个工具每秒可以记录成千上万的事件,因此有可能会漏掉某些事件。不过,为了克服这个问题,你可以将结果导出为逗号分隔值(CSV)文件,利用像ProcDOT这样的工具进行离线可视化。
ProcDOT
如前所述,有一些很棒的工具,例如ProcMon和Wireshark,它们提供了很好的洞察力来揭示潜在的恶意软件;然而,这两个工具生成成千上万条记录,使得数据分析过程非常复杂且耗时。
但这时ProcDOT派上用场,它使你能够通过交互式图表关联来自两个数据源(ProcMon 和 Wireshark)的数据,这在分析过程中大有帮助。此外,该工具具有以下主要功能:
-
动画模式(非常适合轻松理解时间方面)
-
智能跟踪算法(帮助你聚焦于相关项目)
-
线程注入的检测和可视化
-
网络活动的关联(以及引发这些活动的进程)
-
活动时间线
-
用于清理噪音的过滤器(按全局和会话分类)
以下截图展示了来自 ProcDOT 的可视化分析和关联结果:

图 14.5 – ProcDOT 可视化分析
哦,此外这个工具是免费的,可以通过以下链接获取:www.procdot.com/index.htm。
Ghidra
Ghidra 是一款由美国国家安全局(NSA)开发的出色的软件逆向工程(SRE)套件,自 2019 年以来已作为开源软件免费发布。该软件的一个主要特点是能够在不执行代码的情况下进行反汇编。
此外,Ghidra 还具有以下功能:
-
在 Windows、macOS 和 Linux 上进行编译代码的跨平台分析
-
代码的反汇编、汇编和去混淆、图形化和脚本编写
-
支持多种架构,包括高级 RISC 机器(ARM)、PowerPC、每秒百万条指令(MIPS)、Java、6800、x86、x64、精简指令集计算机(RISC)等。
安装文件和常见问题(FAQ)可以在官方网页上找到:ghidra-sre.org/。
PeStudio
PeStudio 是一个很棒的工具,用于在 Windows 机器上进行静态恶意软件分析。
一个很酷的功能是你不需要安装它,因为它作为便携式可执行文件在 Windows 上运行。另外,请注意,软件有一个免费的基础版,也有一个可以以低价购买的高级版。
现在,让我们通过实际操作恶意软件分析来深入了解这个工具。
执行恶意软件分析
首先,让我们从他们的网站上下载可执行文件:www.winitor.com/download。
一旦你有了可执行文件,只需双击它们即可运行。然后,你将看到主界面,如下图所示:

图 14.6 – PeStudio 图形用户界面
现在,如前面的截图所示,我们只需要拖放我们想要分析的文件即可。
注意
恶意软件分析是一项危险的任务,可能会损害你的计算机甚至整个网络,因此,在开始之前,你需要遵循一些安全措施,正如我们接下来强调的那样。
安全措施
有一些安全规则必须遵循,以减少执行恶意软件分析时的风险。以下是这些规则的汇总:
-
切勿使用个人计算机或工作计算机进行恶意软件分析。
-
确保用于测试的计算机与网络隔离。
-
推荐使用隔离的虚拟沙箱环境。
-
尽可能为每次分析使用一个新的沙箱。
-
使用托管在与网络隔离的计算机上的虚拟机(VM),该虚拟机应安装全新的镜像且没有其他数据存储。
-
分析完成后,删除虚拟机。
-
为每次分析创建一个新的虚拟机。
-
在处理危险的恶意软件并进行动态分析时,请彻底清除主机计算机的硬盘并重新安装操作系统。
-
一旦识别出恶意软件,检查该恶意软件是否能够隐藏在硬盘驱动器(HDD)的启动扇区中,如果是,请采取必要的修复措施,彻底清除恶意软件,因为普通的磁盘清除可能不足以完全清除恶意软件。
好了,安全措施已经明确,接下来我们开始执行分析。
执行分析
在此案例中,我们将执行几种类型的分析,使用不同的文件类型,以便探索使用此工具可以收集的不同类型的数据。
这里的想法是通过工具的使用,确定在执行分析时需要查找的信息;因此,使用真实的恶意软件进行此示例是一种不必要的风险。相反,我们将使用已知的安全文件来执行分析。
对于第一个,我将使用一个注册表文件(例如,你可以使用 PeStudio 安装包中的那个)。
如下图所示,主屏幕会提供一些基本信息,如哈希值(这些哈希值可以与已知哈希数据库进行对比):

图 14.7 – PeStudio 的基本输出
此外,如图 14.8所示,还有一个名为virustotal的重要部分,它通过 VirusTotal 应用程序编程接口(API)与 VirusTotal 集成,以告知您不同防病毒软件对该文件的评级。在这里,您需要考虑它连接到外部服务器进行查询;因此,这里的结果可能需要一些时间才能显示出来。但是,如果其他人已经扫描了该文件,那么输出几乎是立即的。现在,这也告诉您一些关于文件的信息,因为如果找不到它,那么您可能面临一个非常新的威胁或修改后的文件用于攻击您的基础设施,因此这可能作为证据表明您正在面临有针对性的攻击。
这里的另一个有趣的数据是年龄列,因为它显示了每个防病毒软件扫描的时间,正如下面的屏幕截图所示,其中有一个超过 2 年的扫描,这意味着这个文件已经存在了相当长的时间:

图 14.8 – VirusTotal 的扫描结果
现在,字符串部分非常重要,因为它读取文件的实际内容,所以您可以在不打开文件的情况下进行探索。例如,在以下屏幕截图中,我们可以看到注册表键的值:

图 14.9 – 检查注册表文件的值而无需打开它
另一个例子是您可以确定文件内容是否编码了任何网址(例如 C&C 服务器),如下面的屏幕截图所示。在这个屏幕截图中要突出的另一个有趣的项目是工具还显示了长字符串,这可能被视为一种威胁。这非常有用,因为它通过非常清晰的方式向您显示这些信息,否则这些信息将很难手动查找:

图 14.10 – 文件内找到的 URL 模式
好了,现在让我们扫描一个更复杂的文件,例如.dll文件。
如图 14.11 所示,PeStudio 现在显示了更多类别和大量有用信息。
例如,字符串部分包含许多有趣的信息,如以下内容:
-
与注册表键的交互或操作
-
与文件的交互或操作,包括权限(例如,获取文件大小,删除文件,写入文件等)。
-
执行系统操作(打开进程,删除进程等)
-
窗口(GUI)管理(关闭窗口,发送弹出窗口,获取弹出窗口数据等)
-
输入和输出(I/O)操作(获取活动窗口,鼠标或键盘操作等)。
另一个需要查看的重要类别是与此文件相关的.dll文件,这对于确定恶意软件的范围至关重要。此外,PeStudio 允许你复制.dll文件的名称。如果你不熟悉.dll,可以在谷歌搜索以获取更多帮助(或直接访问Microsoft Developer Network(MSDN))。
你可以在这里看到 PeStudio 的概览:

Figure 14.11 – 在 PeStudio 中分析库
现在,在sections类别中,你将能够看到恶意软件的高级属性,例如文件是否可写、可执行、可共享或可丢弃(用X符号表示)。在这一部分中,你还可以看到恶意软件的另一个常见特征——自我修改,这是变形恶意软件的常见特性。
文件头类别还展示了一个非常重要的信息,即文件编译的时间。此外,请记住,一些恶意软件具有自动编译的特性,因此如果日期非常新,可能意味着你正面临的是高级的自动编译恶意软件。
哦,还有一件事:如果VirusTotal.com的任何杀毒引擎将文件识别为恶意软件(如下面的截图所示),那么你可以选择进入virustotal类别,获取有关恶意软件的更多信息:

Figure 14.12 – 查看 PeStudio 中的 VirusTotal 扫描结果
virustotal类别还提供了大量超级有用的数据,你可以将其与自己的分析结果进行关联。例如,virustotal会显示恶意软件影响、删除或更新的注册表键值,以及其他操作,如被恶意软件终止的进程。
在我们结束这一章之前,请记住,在进行恶意软件分析之前,务必遵循必要的安全措施。
总结
在本章中,我们学到了很多关于恶意软件分析的内容,但更重要的是,我们了解了如何收集和理解用于分析的工具的输出结果。
虽然恶意软件分析大多由专业团队(使用专业工具和环境)执行,但通过学习这个过程,你已经掌握了在全球网络安全战略中像专业人士一样管理的技能!
现在,是时候进入另一个激动人心的章节,在这一章中,我们将学习如何在防御安全中利用渗透测试工具和技术。
进一步阅读
若想了解更多关于恶意软件分析的信息,可以阅读以下书籍:
www.packtpub.com/product/mastering-malware-analysis/9781789610789
第十五章:第十五章:利用渗透测试增强防御性安全
“公司必须投入时间和资源于防御性安全,以识别新的漏洞,从而预判敌方的动向。正如孙子在《孙子兵法》中所说:‘知己知彼,百战不殆。’”
– 达戈贝尔托·埃雷拉,大学院长
虽然渗透测试通常是进攻性安全团队(也称为红队)的任务,但事实是,作为防御性安全的专家,你也需要至少掌握渗透测试的基础知识。
事实上,本章的目的是不是让你成为一名渗透测试员。相反,本章的目标是向你展示渗透测试员(以及攻击者)使用的最流行的工具,展示这些攻击是多么简单且危险。
本章从一些必修的理论开始,以便随后进入一些精准的实验室练习,你可以亲手实验这些进攻性安全工具的简单性和强大功能。
本章我们将涵盖的主要内容如下:
-
理解日志的重要性
-
了解敌人的好朋友:Metasploit
-
其他进攻性黑客工具
技术要求
一台安装了Kali Linux和Damn Vulnerable Web Application(DVWA)的虚拟机(可能与我们在第十二章中安装的相同,掌握 Web 应用安全)。
一台安装了虚拟化软件,如VirtualBox的机器将用于创建一个包含 Metasploitable 的虚拟机。
理解日志的重要性
在谈论日志的重要性之前,让我们花几分钟时间了解日志的一些核心属性,包括它们的起源、类型,甚至一些行业中使用的标准。
日志文件
日志的产生最初是为了记录操作系统或应用程序中的事件。它们最初是作为调试和故障排除的工具,但现在它们也被用于许多其他目的,如审计、安全和合规性:

图 15.1 – Windows 系统中的日志视图
大多数日志文件是简单的文本文件,包含常见的属性,如日志类型、时间戳、ID 和用户。大多数操作系统和应用程序会将不同类型的日志进行分类,以便于分析。最常见的分类如下:
-
错误日志
-
系统日志
-
应用日志
-
访问日志
-
事务日志
理论上,这听起来非常简单,对吧?但实际上并非如此,让我们看看为什么。想象一下以下情景。
假设你有一台运行 Windows Server 的服务器,每分钟生成大约 500 条日志,此外,还有一个每分钟生成 400 条日志的数据库,再加上 6 个应用程序,它们合起来每分钟生成另外 300 条日志。这意味着你的服务器平均每分钟生成 1,000 条日志,也就是每天大约 24,000 条日志,或者每个月 720,000 条日志,仅仅是在一台服务器上。现在,如果你将这个数字乘以你组织中服务器的数量,甚至还包括其他设备,如路由器和物联网设备(这些设备也会生成日志),那么这种情况将变得无法管理,这也是为什么你必须应用 日志管理技术 的原因。
日志管理
作为一名网络安全专家,你必须应用日志管理技术来充分利用日志。事实上,如果日志没有得到妥善管理,它们可能变得无用,甚至成为你基础设施的负担;但如果你妥善管理它们,它们可以成为强大的信息来源。
但别担心,这里有一些你需要记住的要点,帮助你像专家一样管理日志:
-
日志结构:日志格式有很多种类型,但日志格式不同只会增加日志管理的复杂性。这就是为什么公司会尝试遵循统一标准,以确保日志结构在各系统之间保持一致。
最著名的标准之一是 Syslog,它早在 1980 年就被创建,并几乎成为 Unix 类系统的标准。
-
日志收集:最佳实践是拥有一个集中化的系统来捕获所有日志。这可以通过一个第三方系统实现,该系统从多个系统收集日志,并将所有日志集中在一个地方。在某些情况下,公司可能会希望创建一个服务器,仅用于收集关键业务活动的日志,例如,创建一个服务器来收集关键 Web 应用程序的所有日志。
-
IIS_log_334455,SQL_log_01_02_2021)。根据你基础设施的规模,这项工作可能变得无法手动完成,因此强烈建议使用日志管理解决方案,允许你根据日志的来源添加自定义标签。
-
日志分析:日志的真正价值在于我们可以从中收集到的信息,而这些信息只能通过对日志进行深度分析来获取。日志分析将帮助你生成度量指标,发现模式,甚至通过关联系统间的日志来收集威胁情报。
更先进的系统甚至会结合人工智能引擎,利用机器学习技术,提供更好的洞察力,甚至根据你的日志进行预测。
-
日志存储与归档:归档日志有很多原因。其中一个主要原因与合规性和法规相关,这些规定可能要求公司在一定时间内保存日志。即使公司不受监管,创建与日志归档相关的政策也是一种良好的做法,以确定必须保存日志的时长,并根据日志的类型和重要性将时间划分(以节省一些空间)。
好的,现在我们已经回顾了日志和日志管理的基础知识,是时候总结一下日志在你作为网络安全专家角色中的好处和重要性了。
日志的重要性
如前所述,回顾一下最相关的主题,突出日志的重要性,以及为什么你必须投入时间和资源进行日志管理:
-
合规性与审计:你必须确保日志符合相关法规。实际上,缺失的日志可能会导致公司面临巨额罚款,因此你必须确保日志政策与所有本地和国际法规一致,例如支付卡行业数据安全标准(PCI-DSS)、健康保险流通与责任法案(HIPAA)、通用数据保护条例(GDPR)等。
-
故障排除:尽管这项任务可能超出了你的职责范围(并可能由信息技术(IT)部门执行),但你在制定日志政策时应考虑这一点,确保其符合 IT 部门进行故障排除活动的需求。此外,你需要确保他们只能访问他们需要的日志,以减少其他日志被篡改或删除的风险。
-
调查:日志是检测违法行为的强大工具,包括外部和内部用户。因此,你必须确保关键系统正在生成日志。此外,你需要确保新系统(如物联网(IoT)设备)也已启用日志记录,以便跟踪这些设备的活动。
-
制裁和法律行动:日志通常作为合法的方式来证明某些活动是由特定用户执行的,因此它们通常作为证据用于采取法律或内部行动。因此,归档和确保日志的完整性是至关重要的任务。
-
关键指标验证:日志可以帮助你确认某个服务级别协议(SLA)或合同要求是否得到遵守。例如,日志可以确认你提供的服务是否出现故障,以及是否违反了基于合同的正常运行时间要求。
-
支持网络安全工具:许多网络安全工具,如 SIEM,使用日志作为其主要输入,因此良好的日志管理将增强这些工具的功能。
-
日志完整性:正如我们所学到的,日志非常重要,但其有效性依赖于其完整性,因此您必须确保日志保持不被篡改。有多种攻击旨在修改日志文件;实际上,这被称为日志欺骗。要了解更多信息,请参考 OWASP 关于日志注入的页面
owasp.org/www-community/attacks/Log_Injection。
到现在为止,我们已经回顾了关于日志和日志管理所需了解的一切。
现在是时候进入本章的核心内容,深入探讨更多技术性话题,学习您需要了解的有关黑客们使用的最强大、最著名的攻击框架之一:伟大的 Metasploit。
了解敌人的最佳伙伴——Metasploit
首先需要澄清的是,Metasploit是一个非常出色的框架,像其他任何工具一样,它可以被用来做正当的事情或坏事。事实上,您的公司很可能会受到至少一次来自该工具的攻击,但好消息是,您可以利用这个框架,通过使用进攻性安全技术,来测试您的基础设施。
等等,这本书不是关于防御性安全的吗?没错,但作为防御性安全的专家,您也需要了解如何利用一些进攻性安全技术来确保您的基础设施安全。
Metasploit
如果您一直活跃在网络安全领域,那么您至少听说过 Metasploit,但到底什么是 Metasploit 呢?
Metasploit 是一个开源框架,由开源社区与Rapid7共同开发。
Metasploit 的一个重要特点是其模块化功能,您可以使用这个框架来启动漏洞利用、有效载荷、扫描等操作。
在漏洞利用方面,Metasploit 拥有超过 2000 个漏洞利用,适用于几乎所有已知的操作系统,包括高级互动执行环境(AIX)、Solaris、伯克利标准发行版(BSD)、FreeBSD、惠普 Unix(HP-UX)、Unix,当然还有Windows。
此外,Metasploit 有超过 500 个有效载荷,包括静态有效载荷、动态有效载荷、命令行 Shell和Meterpreter。
但这些数字不断增加,因为这是一个开源项目,漏洞和有效载荷正在不断被社区上传,并通常由高级社区成员和 Rapid7 进行审查。
注意
Metasploit 将允许您在别人之前找到、验证并测试您系统中的漏洞!这非常重要,因为它将让您看到系统和基础设施的真实安全状态,并根据发现的结果采取行动。
如前所述,Metasploit 是一个非常庞大的项目,在刚开始时可能会非常混乱,所以我们继续通过探索该工具的不同版本来深入了解。
Metasploit 版本
自 2003 年创立以来,Metasploit 已经发布了多个版本。其中一些版本仍然在使用,而一些版本已经停用(如 Metasploit Community Edition 和 Express)。现在,让我们来看看当前仍在使用的 Metasploit 版本。
Metasploit Framework 版
这可以称为 Metasploit 的经典版本。这是一个免费的命令行版本,预装在 Kali Linux 上。这是迄今为止最受欢迎的 Metasploit 版本,关于它有无数的书籍、视频和教程。欲了解更多关于此版本的信息,可以访问官方网站 www.metasploit.com/get-started。
Metasploit Pro
这是 Metasploit 的付费版本,由 Rapid7 提供支持,基本上增加了许多功能,如向导、通过远程 API 的集成、多种自动化工具以及各种渗透工具,包括用于测试 Web 应用程序上 OWASP 十大漏洞的测试平台。
在这里,你可以找到付费版本与免费框架版本的详细对比:www.rapid7.com/products/metasploit/download/editions/。
Armitage
Armitage 允许你图形化地展示目标,并使用 Metasploit 在后台对其执行多个攻击。这是一个很好的工具,可以帮助人们了解 Metasploit,并发现该工具的优势和强大功能。
Armitage 也是免费的,并且可以轻松地安装在 Kali Linux 上。接下来,我们将向你展示如何操作。
安装 Armitage
如前所述,Armitage 是开始使用 Metasploit 的一个很好的方式,所以让我们在 Kali Linux 上安装它。
现在,Kali Linux 默认安装了 Metasploit;然而,你需要进行配置以便首次使用,因此在安装 Armitage 之前,我们需要先配置 Metasploit。
第一次配置 Metasploit
Metasploit 使用 PostgreSQL 作为数据库,然而 Kali 的最新版本默认会停止此服务,因此第一步是启动 PostgreSQL 并将其设置为开机启动:
sudo systemctl enable --now postgresql
如下图所示,postgresql 现在已经启动并运行:

图 15.2 – 运行 PostgreSQL
现在,让我们使用以下命令创建所需的数据库:
sudo msfdb init
现在,我强烈建议你检查是否有可用的更新。实际上,在我的情况下,我的安装相当新,我收到了超过 120 MB 的更新。要获取这些更新,只需输入以下命令:
sudo apt update
sudo apt install metasploit-framework
现在,你可以使用以下命令成功启动 Metasploit:
sudo msfconsole
如果一切正常,你应该能够看到 Metasploit 的欢迎页面,如下图所示:

图 15.3 – Metasploit 欢迎界面
请注意,这个屏幕提供了一些基本信息,例如可用的漏洞数量、有效载荷、无操作(NOPs)等。
安装 Armitage(续)
好的,现在 Metasploit 已经启动并运行,我们回到 Armitage 的安装和设置部分。
让我们从停止 Metasploit 服务开始:
sudo service metasploit stop
通常,我们需要执行 apt-get 更新,但由于我们刚刚已经做过了,现在可以直接安装 Armitage:
sudo apt-get install armitage
完成后,你应该能够通过以下命令启动 Armitage:
armitage
接下来,你将看到一个提示屏幕。只需保留默认设置并点击 连接,如以下图所示:

图 15.4 – 进入 Armitage
恭喜,至此你已经成功启动了Metasploit和Armitage。
探索 Armitage
现在,让我们探索 Armitage 的图形用户界面(GUI),以发现我们可以使用的一些工具。
如下图所示,图形用户界面非常简单直观(这对初学者来说非常棒):

图 15.5 – Armitage 主屏幕
现在,让我们来看看我们可以使用的主要功能:
- 在控制台输入
search smb,如以下图所示:

图 15.6 – Armitage 控制台
但使用 Armitage 的主要目的就是图形用户界面,因此让我们来看看这些选项。
-
模块:如图 15.5所示,屏幕左侧有一系列文件夹。这些文件夹是模块,包含你可以执行的所有漏洞、有效载荷、辅助工具和后期操作。
如前所述,Metasploit 有几乎所有操作系统的漏洞,你可以在展开漏洞部分时看到这个列表,如下图所示:

图 15.7 – 按操作系统列出漏洞的模块视图
-
攻击:在这里,你可以找到一系列可以针对目标机器发起的攻击。
-
主机:此菜单包含多个扫描选项,用于查找可用的目标。
现在,让我们做一个简单的实验,向你展示攻击者如何轻松地使用 Armitage 对你的系统发起攻击。
使用 Armitage 发起攻击
在我们发起攻击之前,我们需要找到一台我们拥有的脆弱机器,这样我们才能安全地运行测试,并且我们可以通过 Metasploitable 很容易地实现这一点!
Metasploitable
Metasploitable 是一款虚拟的 Unix 机器,设计时故意包含漏洞,以便安全专家和爱好者(像你一样)将其作为测试用的“游乐场”。
它非常容易使用;实际上,你只需要下载虚拟机的镜像,将其加载到你最喜欢的虚拟机管理程序(例如 VirtualBox)中,就可以开始使用了。镜像可以从这里下载:sourceforge.net/projects/metasploitable。
现在,让我们进行一次扫描,看看能在这个 Metasploitable 机器上找到哪些漏洞。为此,进入 主机 | Nmap 扫描 | 强力扫描 | 所有 TCP 端口。
然后,选择一段 IP 地址范围;在本例中,我使用了 192.168.1.0/24。
注意
你可以在屏幕底部的控制台中实时查看扫描结果(位于我们之前提到的 控制台 标签旁),以获取更多关于扫描的信息。
作为示例,以下图示展示了对 Windows 7 机器进行扫描的输出。请注意,扫描能够收集到重要数据,例如计算机名称、操作系统和服务包信息:

图 15.8 – Nmap 扫描的输出
现在,回到我们的扫描,你会注意到这个扫描可能需要几分钟(取决于设备的数量),但一旦完成,它将显示一个弹出消息,如下图所示:

图 15.9 – 强力扫描成功完成
现在,你将看到扫描过程中找到的所有系统或设备。在我们的例子中,Metasploitable 机器的 IP 被识别为 192.168.1.224,并且如图所示,它添加了一个 Linux 图标,因为这台机器被识别为 Linux 计算机:

图 15.10 – 扫描过程中发现的机器
那么,让我们右键单击,看看对每台机器可以执行哪些攻击。在我们的例子中,我们可以看到扫描能够找到多个可以利用的服务,从而获取系统访问权限,如下图所示:

图 15.11 – 启用的登录服务列表
现在,让我们看看是否可以使用 VNC 登录。为此,我们需要进入屏幕左侧的模块菜单,导航到 auxiliary/scanner/vnc/vnc_login,然后双击打开它。接着,点击 启动,并等待命令视图下方的输出。
惊喜的是,系统成功地进行了 VNC 密码暴力破解,如下图所示:

图 15.12 – VNC 密码暴力破解
现在,我们可以打开终端,测试是否可以使用该密码登录 VNC。
为了实现这一点,只需打开终端并输入以下命令(在你的情况下,将以下 IP 替换为你的 Metasploitable 机器的 IP):
vncviewer 192.168.1.224:5900
然后,输入密码。在此情况下,输入 password 然后按 Enter。
现在,你将完全访问目标机器,如下图所示:

图 15.13 – 通过 VNC 远程访问目标机器
这只是一个快速示例,看看攻击者是如何轻松进入一个没有保护的系统的。所谓没有保护的系统指的是:操作系统已不再支持、未加固的服务器、缺少更新或安全补丁的服务器等等。
然而,你可以使用更多的选项来尝试 Armitage,例如,以下几种:
-
收集系统上运行的数据库服务的信息,包括版本,甚至对其进行暴力破解攻击。
-
收集关于 FTP 版本的信息,包括匿名登录和暴力破解攻击。
-
根据目标系统的操作系统执行多个利用。
-
从多个有效载荷中选择并发送,等等。
现在是时候回到 Metasploit,稍微玩一下这个真实的工具了。
执行 Metasploit
在 Metasploit 中,没有像 Armitage 那样的 GUI。这里,你需要通过纯命令来导航并执行模块、攻击和有效载荷。
但是不用担心,让我们一起做一个例子,看看使用 Metasploit 框架攻击服务器有多简单。
对于这个例子,我们将再次使用我们的易受攻击的 Metasploitable 机器,我们的目标是尝试攻击它们的 FTP 服务器。
所以,第一步将是再次运行 Metasploit:
sudo msfconsole
现在,让我们搜索 ftp 来查找可用于攻击 FTP 服务器的模块:
search ftp
不幸的是,查询显示了超过 170 个结果,因此我们需要找到一种方法来缩小这个列表,找出最适合攻击的模块。
一个选项是确定系统上运行的 FTP 服务器版本,这样我们就可以搜索与该特定版本相关的模块。为了做到这一点,我们可以使用我们的老朋友 Nmap(在 Kali Linux 中已经预装)。
现在,正常的 nmap 扫描只会告诉我们服务运行的端口,但如果我们想要查看这些服务的版本信息,就需要使用 -sV 参数,如下所示:
nmap -sV 192.168.1.224
然后,你应该看到类似以下图示的结果:

图 15.14 – 使用 Nmap 收集 FTP 服务器的版本信息
现在,让我们回到 Metasploit 并搜索 vsftpd:
search vsftpd
很好,搜索找到了一个针对该 FTP 服务器的漏洞,正如下图所示:

图 15.15 – 在 Metasploit 上利用 vsftpd 漏洞
现在,让我们使用 info 命令来收集关于这个模块的更多信息:
info 0
在下图中,我们可以看到许多有用的信息,比如漏洞的名称、平台、发布日期和作者,但对我们来说最重要的是RHOST,它尚未设置,以及RPORT,它已默认设置为21:

图 15.16 – 探索 Metasploit 漏洞的更多信息
如图 15.16所示,我们可以通过使用长名称或标识符(在本例中为0)来调用漏洞
use 0
现在,让我们将RHOST设置为目标机器的 IP 地址:
set RHOST 192.168.1.224
现在系统应该会回复信息,显示RHOST已设置为指定的 IP 地址,但如果你想再确认一下,你也可以使用show options命令,如下图所示:

图 15.17 – 使用 show options 确认漏洞设置
现在,一切似乎已经准备好,使用以下命令执行漏洞:
run
如下图所示,我们现在已完全访问了目标机器。事实上,你可以看到我们可以在目标(受害者机器)上执行许多命令,例如whoami(这让人惊恐地显示我们是以 root 身份连接的)。另外,我们执行了ifconfig来确认我们正在目标机器上发出命令:

图 15.18 – 使用 Metasploit 获取完全的远程访问
这些是一些简单的示例,展示了使用 Metasploit 攻击系统是多么容易。但从防御性安全的角度来看,以下是一些要点:
-
修补漏洞以防止攻击的重要性
-
强化系统以防止远程漏洞执行的重要性
-
使用进攻性工具测试你的环境对抗真实威胁的价值
-
攻击的简单性以及发现有关你的系统信息的容易程度,这些信息可以帮助攻击者针对你的基础设施和系统量身定制攻击
虽然 Metasploit 是最著名的进攻性安全框架,但攻击者还有其他工具可以入侵你的系统,所以我们也来看看其他的进攻性安全工具。
其他进攻性黑客工具
让我们回顾一下目前最著名的进攻性安全工具,包括免费和付费的工具。
Searchsploit
我们在前面的章节中提到过www.exploit-db.com/,这是一个包含超过 44,000 个漏洞的巨大数据库,用户可以下载。这个网站非常棒,展示了很多有用的信息,界面也非常友好,但在页面上搜索漏洞、下载并执行它可能有些耗时。这里有exploit-db,你可以直接在终端中运行它们;是的,就是这么简单!
让我们做一个简单的示例。假设你为你的组织添加了一个 Joomla 服务器,你想要测试它是否存在已知漏洞。你可以运行以下命令:
searchsploit -t joomla
-t 选项将只给出包含“Joomla”字样的漏洞利用标题的结果。
现在,假设你的老板要求你在 Joomla 服务器上安装一个 YouTube 插件。那么,让我们看看如何发现与该插件相关的漏洞:
searchsploit -t joomla youtube
如下图所示,该工具发现了与 YouTube Joomla 插件相关的三个漏洞:

图 15.19 – 使用 Searchsploit 查找漏洞
下一步是运行漏洞利用程序,这非常简单。首先,你需要使用以下命令复制脚本的路径:
searchsploit -p 34087
然后,如下图所示,你将得到一个包含完整脚本路径的响应。只需复制并粘贴该路径,你就可以运行漏洞利用程序了!

图 15.20 – 获取执行漏洞利用路径的 Searchsploit
如前所述,执行这些漏洞利用程序非常简单,因此这是你需要 确保在攻击者利用这些漏洞之前进行测试 的原因之一。
sqlmap
sqlmap 是一个非常强大的渗透测试工具,用于检测和利用数据库服务器上的 SQL 注入漏洞。它有很多酷的功能,包括以下内容:
-
上传和下载文件。
-
转储整个数据库表。
-
跨数据库搜索特定的表或列。
-
枚举用户、密码哈希值、角色、表、列等。
-
密码哈希值的识别并支持使用字典攻击进行破解。
此外,sqlmap 完全支持大多数常见的 SQL 服务器,包括 MySQL、PostgreSQL、Microsoft SQL、Microsoft Access 和 SQLite。
sqlmap 已经在 Kali Linux 上预装好了,因此如果你想了解更多关于这个工具的信息,可以输入以下命令,了解该工具的基本命令:
sqlmap -h
有趣的是,请注意 -g 选项允许你将 Google dork 结果作为目标 URL 进行处理。
Weevely
Weevely 是一个非常有趣的工具,提供了一个 Web Shell 来攻击 Web 应用程序。它有很多有趣的功能,包括以下内容:
-
通过 HTTP 和 HTTPS 代理浏览受感染的 web 应用程序。
-
能够暴力破解目标系统上的 SQL 账户。
-
挂载远程文件系统。
-
直接访问目标系统的 Shell。
-
上传和下载文件。
-
文件导航等。
我相信你一定很想看看如何使用这个工具进行攻击,所以让我们做一个快速实验,向你展示 Weevely 的工作原理。
在这个实验中,我们将使用 DVWA 作为我们 Kali Linux 机器上的目标系统。
提示
在 第十二章,掌握 Web 应用安全 中,我们介绍了 DVWA 的安装和设置,因此如果你还没有安装它,请返回该章节并按照我们的简单步骤进行安装并运行它。
假设你已经在 Kali Linux 机器上安装了 DVWA,那么接下来我们只需要继续运行它。
第一步是使用以下命令启动数据库服务:
sudo service mysql start
然后,我们使用以下命令启动 Apache 服务器:
sudo service apache2 start
现在,让我们打开一个网页浏览器,使用以下地址打开 DVWA:
127.0.0.1/DWVA/
现在你应该能看到 DVWA 的登录页面,如下图所示:

图 15.21 – DVWA 登录页面
要登录,只需使用你在 DVWA 设置过程中创建的管理员凭证。
现在你已经登录,让我们将安全级别设置为低。为此,只需进入左侧菜单,搜索 DVWA 安全,然后将下拉菜单更改为 低 并点击 提交,如以下图所示:

图 15.22 – 在 DVWA 中降低安全级别
此时,我们的目标机器已准备好进行攻击!
为了创建 shell,让我们回到 Kali 并使用以下命令:
weevely generate mypassword /home/kali/myshell.php
注意,mypassword 是我们正在创建的 shell 的密码,其余部分是 shell 的路径和文件名。在这个示例中,我将其保存在我的用户目录下,并命名为 myshell.php。
现在,你可以导航到你的用户目录,确认文件是否已创建,如下图所示:

图 15.23 – 在 Weevely 上创建的 Shell 的本地副本
现在,让我们返回 DVWA 上传我们的 shell。
要做到这一点,只需进入 myshell.php,然后点击 上传。
现在,我们需要复制文件在服务器上的位置。为此,只需复制 URL 的第一部分(http://127.0.0.1/DVWA)和 成功上传 消息中高亮显示的路径(/hackable/uploads/myshell.php),如以下图所示:

图 15.24 – DVWA 中 Shell 的路径
现在,路径应如下所示:
http://127.0.0.1/DVWA/hackable/uploads/myshell.php
现在,让我们再次打开 Kali Linux 的控制台,执行以下命令来运行 shell(请注意,这里我们基本上是在添加服务器路径和密码来运行 shell):
weevely http://127.0.0.1/DVWA/hackable/uploads/myshell.php mypassword
如下图所示,你已经可以完全访问服务器,包括查看当前用户、文件导航等:

图 15.25 – Weevely 攻击结果
当然,还有许多其他用于攻击性安全的工具,我们鼓励你去探索它们,但到目前为止,你应该已经清楚了解了这些工具对攻击你的基础设施(包括服务器、网页应用程序,甚至数据库)所具备的强大威力。
总结
希望你和我一样喜欢这一章。在这里,我们学习了日志,了解了它们为何重要,甚至学会了如何成功地管理它们(日志管理)。
然后,我们进入了本章的技术部分,进一步了解了最著名的攻击性安全工具:Metasploit。
然后,为了开始使用 Metasploit,我们进行了一个使用 Armitage 和 Metasploitable 的实践实验。
当我们更加深入地了解 Metasploit 框架时,我们进行了另一个直接使用 Metasploit 的实践实验,成功地完全控制了目标机器。
但是,还有更多内容:我们做了两个实验,一个是使用 Searchsploit,另一个是非常有趣的实验,使用 Weevely,我们甚至使用了在第十二章中安装的 DVWA,掌握 Web 应用安全。
现在,是时候进入另一个非常有趣且技术性很强的章节,我们将在其中发现一些用于计算机取证的工具和技术!
进一步阅读
如果你想了解更多关于 Metasploit 以及可用版本的信息,可以访问官方站点:www.metasploit.com/。
此外,Metasploit 的官方 GitHub 可以在此找到:github.com/rapid7/metasploit-framework。
第十六章:第十六章: 实践取证
“处理数字证据对于司法系统来说是一个巨大的挑战,特别是当我们意识到它带来的新挑战和风险时,比如收集证据的远程操控。”
– 法官 RosibelJara
数字取证是一个非常复杂的话题,因为正如你在本章中将看到的,即使你无法访问设备,仍然可以收集证据。因此,为了在法庭上被接纳,数字证据必须遵守一系列条件和规定,以确保数字证据得到了妥善处理,并且它被适当保存。因此,数字取证专家的角色对于确保数字取证过程的成功至关重要。本章旨在为你提供一个非常好的入门介绍,并作为你需要面对这一过程时的起点。
本章将涵盖以下主题:
-
数字取证简介
-
防御安全中的数字取证
-
取证平台
-
寻找证据
-
移动取证
-
证据管理
数字取证简介
数字取证(也称为网络取证或简称取证)是从数字系统中收集、识别、收集、保护和存储数据的过程,这些数据可以作为证据使用。
在我们的案例中,我们将专注于用于检测计算机系统、服务器、网络、基础设施或数据的使用、滥用、入侵、损坏或修改的取证。然而,取证也用于恢复已删除或修改的数据,因此我们先花几分钟回顾一下取证如何用于这一过程。
用于恢复已删除或丢失数据的取证方法
取证的一个部分是用于从数字媒体中收集、识别和恢复已删除数据。
通常,数据是从非易失性媒体存储中恢复的,如硬盘和 USB 驱动器,但也可以从易失性内存中收集数据,如随机存取内存(RAM)。
易失性与非易失性内存
易失性内存,如 RAM,是一种只在设备开机时保存信息的内存,而非易失性内存,如硬盘,可以在没有电源的情况下长时间保存信息。因此,从易失性内存中收集信息被认为是一个更复杂和专业的任务。
现在,让我们先来回顾一下如何从易失性内存中捕获数据。
从 RAM 中恢复数据
由于 RAM 的硬件性质,从 RAM 中恢复数据被认为是一个非常复杂的任务。然而,我们可以使用一个工具和一种方法来实现这一目标。我们来看看。
微软 COFEE
微软计算机在线取证证据提取工具(COFEE)工具包由微软开发并分发给警察机构,帮助他们从微软系统中收集数字证据。
该工具作为一个实时 USB 加载,包含一个图形用户界面(GUI),并拥有超过 150 个取证工具,包括存储在易失性内存(RAM)中的数据。
这款工具的副本据说在 2009 年泄露到互联网上,如果你有兴趣查看它,简单的 Google 搜索会给你 WikiLeaks 页面的链接来下载它。
提示
请记住,泄露版的软件可能包含恶意内容,因此避免在主计算机上运行此类软件。相反,尝试使用虚拟沙箱环境,并在下载和运行此类软件时采取所有必要的预防措施。
冷启动攻击
这是一种非常有趣的方式,直接从 RAM 中收集数据。让我来解释一下它是如何工作的:
-
首先,你需要物理访问计算机。
-
打开计算机。
-
冷却 RAM 模块(可以使用冷冻喷雾剂)。
-
切断机器电源。
-
使用轻量级 USB 启动操作系统(OS)启动计算机。
-
使用任何可用的内存转储软件或脚本执行内存转储。
如下图所示,这种攻击的一个限制是,恢复的数据量与所需时间成正比。这意味着,执行转储的速度越快,恢复的数据就越多。

图 16.1 – 冷启动攻击中时间与数据的关联
正如你想象的那样,存在物理破坏内存的风险,因此强烈建议仅在非常受控的空间(实验室环境)中使用此方法。此外,只有在你希望检查的计算机已开机的情况下,此方法才有效。
可以从 RAM 中恢复什么数据?
可以从 RAM 中恢复的数据包括未保存的文档、草拟的电子邮件、密码、聊天记录、用户名、打印的文档(打印作业)、设置、网络或连接设置,如 IP 地址和服务集标识符(SSID)等。
现在,让我们来看看我们可以用来从非易失性内存中恢复数据的工具和方法。
从非易失性内存中恢复信息
有许多工具可以用来从非易失性内存(如硬盘)中恢复已删除的数据。大多数工具非常容易使用,并且在 Windows 计算机上具有非常友好的用户界面,例如Recuva。
此外,还有一些更先进的工具,如Foremost,这是一个加载在 Kali Linux 上的工具。我们在第五章中介绍了 Foremost 的配置和执行,网络安全技术与工具。
数字恢复与物理恢复
为了说明数据恢复的工作原理,让我从解释 Windows 如何管理文件开始。
Windows 使用一种叫做主文件表(MFT)的东西。这个表就像一本书的索引,它告诉操作系统(OS)每个文件的位置,通过指向文件所在的硬盘扇区来实现。这意味着,当你想打开一个文件时,操作系统会检查 MFT 来找出文件的位置,然后从磁盘中检索数据。
如下图所示,为了提高计算机速度,当你删除一个文件时,操作系统会删除 MFT 中的条目,使得该扇区变得可用,可以被另一个文件使用。然而,信息仍然保留在硬盘上,直到操作系统用另一个文件覆盖该扇区:

图 16.2 – Windows MFT 表结构
因此,大多数数字恢复软件所做的就是对硬盘扇区进行深度扫描,根据磁盘中找到的内容重建 MFT。类比来说,这就像是阅读一本书以重建它的索引(目录)。
也有硬盘分区或系统损坏的情况。在这些情况下,可以通过将硬盘连接为外部驱动器到另一台计算机,并在另一台计算机上运行恢复软件,轻松检索文件。
然而,也有硬盘因旋转和摩擦造成所有活动部件不断使用而发生物理损坏的情况,如下图所示。损坏的例子包括坏头、头碰撞、划痕,甚至是转子损坏。
提示
在大多数情况下,硬盘损坏是渐进性的,因此如果你开始听到来自计算机的点击声或嗡嗡声,那么是时候更换硬盘并保存你的数据,以免为时已晚。
在所有这些情况下,恢复是可能的,但仅能通过专家使用特殊设备和 properly 设置的实验室进行。还要注意,物理恢复通常是昂贵的。

图 16.3 – 硬盘的活动部件
关于固态硬盘(SSDs),由于没有活动部件,因此损坏的风险较低。然而,如果发生物理损坏,恢复过程会更加复杂。
现在,让我们从防御安全的角度关注计算机取证,来检测计算机系统、服务器、网络、基础设施或数据的使用、滥用、入侵、损坏或修改。
防御安全中的数字取证
在谈到防御安全中的取证时,我们必须在几个领域进行取证,包括以下内容:
-
数据分析
-
日志分析
-
电子邮件取证
-
数据库取证
-
恶意软件取证
-
内存取证
-
移动取证
-
网络取证
现在,让我们深入了解数字取证的管理方式,包括涉及的过程。
谁应该负责数字取证?
有两种主要方式来管理所有这些取证工作。虽然一些公司有专门的取证专家来处理所有与取证相关的任务,但其他公司则在每个领域培养专家,作为取证专家。此外,还有一位取证协调员,作为所有取证活动的领导者。
数字取证过程
大多数公司根据自己的需求和成熟度定制数字取证过程。然而,让我向你展示执行数字取证时必须遵循的步骤:
-
数据处理与保管:在取证过程中管理数据是确保结果成功的关键。你需要记住,在这个过程中收集的数据可能会用于起诉或采取其他法律行动,因此你必须确保数据的收集是基于司法系统认可的标准。
此外,你还需要应用必要的工具和技术,以确保数据从收集到呈现的完整性(例如,将数据作为证据提交给法院)。展示数据完整性的最常用方法之一是对收集的数据进行哈希处理,正如在第五章《网络安全技术与工具》中提到的那样。
-
数据收集:任何取证过程的第一步是从所有可用的来源收集所有数据。这一步非常重要,以至于我们将在接下来的章节中深入讨论。
-
数据分析:在这一阶段,分析师首先通过过滤大量信息,以便基于相关信息进行分析,从而减少不必要的工作。然后,他们必须使用多种工具和方法来分析已收集的数据。正如我们之前提到的,这种分析可以在任何类型的存储介质(易失性或非易失性)上进行,并使用数字和物理恢复技术。整个取证过程的结果依赖于正在分析的数据和设备,因此这一任务必须由认证的专业人士来执行。
提示
如果你有兴趣获得取证认证,我强烈建议你访问这个网站:
i2c2x.com/。 -
保存或归档证据:一个常见的错误是在审判后删除证据。然而,这些数据在上诉过程中可能仍然具有价值,能够识别重复犯罪者(这对于判断某人是无意使用者还是恶意内部人员可能至关重要),甚至在威胁情报中,通过将数据与新事件进行关联,以识别进一步的攻击。
因此,最佳做法是创建一个数据保留政策部分,确定归档数字证据所需的时间。请注意,在某些情况下,这一政策可能会受到某些法规或法律的影响。

图 16.4 – 数字取证过程
现在,是时候看看一些用于执行数字取证和收集数字证据的平台了。
取证平台
正如我们之前提到的,取证过程是一项非常敏感的任务,必须小心谨慎地进行,以确保收集到的数据得以保存,并且其完整性得到保证。
然而,这并不是通过单一工具就能实现的。相反,取证专家必须根据多个因素(如数据来源、存储类型和操作系统)选择最适合每个场景的工具。
好消息是,为了简化我们的工作,一些操作系统已经专门设计成执行取证活动,并预装了一系列取证工具。
此外,这些操作系统中的一些还可以作为可启动的 live CD 或 live USB 使用,这使我们能够执行更高级的取证操作。
现在,让我们回顾一些这些取证操作系统的集合。
CAINE
计算机辅助调查环境(CAINE)是一个基于 GNU/Linux 的live发行版,提供一个完整的取证环境,包括现有软件工具作为软件模块,以及一个友好的图形界面,支持取证专家在数字调查过程中进行操作。

图 16.5 – CAINE GUI
如前面截图所示,CAINE 预装了大量现成的取证工具,包括The Sleuth Kit、Autopsy、RegRipper、Wireshark、PhotoREC等。
他们的官方下载页面是www.caine-live.net/。
SIFT 工作站
SIFT 工作站是一个免费的开源取证工具集,用于进行详细的数字取证。它有两种安装方式:一种是下载一个现成的虚拟机,另一种是直接在 Ubuntu 机器上安装:

图 16.6 – SIFT 工作站
上面的截图展示了 SIFT 的虚拟机安装版,可以从 SANS 网页下载,链接为www.sans.org/tools/sift-workstation/。
PALADIN
PALADIN是一个基于 Ubuntu 的修改版live Linux 发行版,简化了各种取证任务。它包含了很多取证工具,分为 33 个类别,如下图所示:

图 16.7 – PALADIN 工具分类
关于 Paladin 的更多版本信息,请访问他们的官方网站sumuri.com/software/paladin/。
现在我们了解了数字取证的各种工具和平台,让我们来学习如何获取证据,以及确保在取证检查过程中不会遗漏任何数据的主要来源。
寻找证据
一旦发现攻击,许多事情需要以最高优先级完成,包括恢复受到影响的系统和服务。然而,另一个关键任务是找到并保护与攻击相关的所有证据。这个任务至关重要,因为它可以让你做以下几件事:
-
确定攻击是由内部人员还是外部人员发起的。
-
确定内部人员是恶意的还是无意的用户。
-
确定攻击者利用的漏洞。
-
根据机密性、完整性和可用性(CIA)三要素来确定对业务数据的影响。
-
确定受攻击影响的系统或服务。
-
收集证据以执行法律或纠正措施(来自人力资源部门)。
既然你已经知道收集证据的重要性,让我们来看一下有关收集过程的一些最佳实践。
数据来源
正如你所知道的,在取证过程中有很多地方可以收集数字信息。你需要查找的最常见文件类型是日志文件,因为它们通常会记录设备上的所有事件(我们在第十五章,利用渗透测试进行防御性安全中讨论过此话题)。
一个常见的错误是仅检查服务器上的日志。然而,实际上还有很多其他地方可能是重要的信息来源。在本节中,我们将探讨一些,首先从非易失性内存开始。
非易失性内存
如前所述,可以从 RAM 中获取数据,因此在数字调查过程中,你可能希望先进行 RAM 转储,以获取一些额外的信息,然后再执行其他操作或关闭服务器。
恢复已删除的数据
你还应该在硬盘上搜索已删除数据的痕迹。这对于检测恶意内部人员尤为重要,因为他们可能会通过删除日志或类似记录来掩盖自己的行踪。在这种情况下,你可能无法恢复已删除的信息,但你可能能证明某些日志已被删除或篡改,这本身就可以成为证据。
路由器和其他网络设备
这可能是攻击发生后第二常见的寻找痕迹的地方。
除了寻找异常活动外,你还需要寻找日志篡改的迹象,如删除的条目,因为这些可能是攻击的指示。
物联网设备
通常,物联网(IoT)日志文件被忽视,但它们可以是一个很好的信息来源,特别是当它们被用作你基础设施的入侵点时。
网络打印机
网络打印机通常被忽视,但从本质上来说,它们是网络设备,这意味着它们可能成为攻击的跳板。此外,这些设备的安全性较弱,这正是攻击者越来越多地针对这些设备的原因。
您会对通过检查这些日志所能收集到的所有信息感到震惊,其中包括以前试图入侵您网络的尝试。
移动设备
智能手机等移动设备作为迷你计算机,可以被用作进入您公司网络的一个入口。
因此,使用能够收集关于移动设备使用情况和互动的日志的监控软件非常重要。如果您的公司有自带设备(BYOD)政策,那么这点尤其重要,因为这些设备更容易受到攻击,因此控制这些设备是必须的。
移动设备的取证是一个大话题,所以我们来详细回顾一下这个话题。
移动取证
移动取证已经成为取证领域最大的专门化领域之一——不仅因为几乎每个人都有智能手机,还因为智能手机可以收集大量的数据。
移动取证的酷点在于,在某些情况下,您甚至不需要手机就可以收集到智能手机收集到的一些数据。让我向您展示如何操作。
无设备取证
智能手机会收集大量信息,如位置、消息、搜索、常去地点、应用使用情况、浏览历史等,但最有趣的是,Google(是的,就是 Google)会将所有这些数据记录在他们的云端。让我们学习如何访问这些数据:
-
使用您的用户凭证登录。
-
选择您想要检索的数据。
-
选择您希望如何接收文件(通过驱动器、云存储或直接下载链接)。
-
选择您是只想这次导出文件,还是希望安排未来的导出。
-
确定文件类型和每个文件的最大大小。
-
点击导出。
导出取决于 Google 收集到的关于您的数据量,因此请考虑到在某些情况下,导出所有数据可能需要几小时甚至一天的时间。

图 16.8 – Google Takeout 页面
信息类型取决于您使用的 Google 服务。然而,对于 iPhone 用户来说,这可能是可选的,但这里收集的一些信息适用于所有 Android 用户。您可能会对收集到的数据量感到惊讶。例如,在导出的文件中,您不仅能看到应用程序的使用详情,还能看到使用的具体时间(以及时间戳)。
以下是一些可以导出的数据示例:
-
通过 Google Home 获取的物联网设备信息
-
日历条目(包括创建和删除的时间)
-
您的 Google Chrome 访问的所有内容(历史记录、设置等)
-
有关您打印文件的信息(Google Print)
-
使用 Google 搜索或地图进行的购买和预定信息
-
在 Google 社区上发布的图片和文字
-
联系人照片
-
有关您 Google 账户的注册和活动数据
-
Google Fit 收集的所有生物识别数据,包括睡眠数据、训练数据、步行距离等
-
关于您的 Google 搜索的元数据
-
使用 Google Pay 进行的购买历史
-
您在 Google Books 上阅读或购买的书籍信息(包括笔记和标记)
-
基于 Google Play 电影的电影偏好(包括播放列表,甚至是您为每部电影提供的评分)
-
基于 Google Shop 的购物历史(包括送货地址)
-
您在 Google Hangouts 中的聊天记录(包括附件的图片)
-
基于 Google 地图的导航历史(包括访问网站的偏好和评论)
-
设备配置、性能数据、软件版本等(适用于 Android 设备)
-
有关您在 Google Play 上玩过的游戏信息(包括分数)
-
已安装的应用程序、评分和购买记录(Google Play)
-
您的位置信息历史(基于 GPS 收集的数据)
-
在 YouTube 上搜索和观看的视频历史
-
还有更多
此外,如下图所示,您还可以选择其他参数,例如导出数据的格式以及要包含的导出项目:

图 16.9 – Google Takeout 导出设置
对于 iPhone 用户,情况略有不同,因为其隐私政策比 Android 更为严格。这意味着收集关于用户的已保存信息更加复杂。苹果没有类似于此页面的选项,用户无法直接请求其数据,因此,从 iPhone 收集此类信息可能需要向苹果直接发送法律请求,以获取授权来共享这些用户信息。
移动设备上的重要数据来源
正如我们之前提到的,移动设备会收集大量数据,甚至在没有访问手机的情况下也能获取。然而,如果您能够访问手机,可能还能收集到更多的信息。
尽管大多数书籍会告诉您收集诸如图片、通话记录、消息和其他容易识别的数据,但移动设备上还有许多可以收集的数据。让我们来看一下我列出的移动设备数据收集清单:
-
Wi-Fi 连接数据(包括已知 SSID 的列表):这对于确认用户是否在某个特定位置,或者是否尝试连接到未经授权的网络,可能非常有用。
-
蓝牙连接数据:这有助于确定是否连接了未经批准的设备。
-
操作系统安装细节:这些数据对于确定设备是否最近恢复为出厂设置非常有用,这可以作为设备数据被擦除的证明。
-
应用列表:这可以用来确定设备上是否安装了未经授权的软件。例如,这在确定某个无意间使用的第三方软件是否存在漏洞或用于泄露设备数据时特别有用。
-
操作系统更新信息:这些信息对于确定设备是否因操作系统某些安全更新缺失而被攻击或入侵非常有用,甚至可以证明设备即使在完全修补后仍然存在漏洞(这可能揭示零日攻击的存在)。
-
Root 权限、越狱和其他操作系统修改:检查是否有越狱或其他未经授权的操作系统修改的痕迹非常重要,因为这可能代表公司政策的违背。这也可能是设备被入侵的原因(并解释为什么设备未能防止攻击)。
-
USB 连接元数据:这些数据可以帮助你确定设备是否连接到了授权设备,并且是否进行了或尝试进行数据外泄。
-
云存储应用和用户:在调查过程中,这些信息可以用来确定数据是否被导出到个人云存储服务(如 Dropbox、Box、OneDrive 等)。
这份检查清单与设备无关,但收集数据所使用的工具和方法因设备、操作系统、品牌、型号等的不同而有所变化。
提示
根据设备的操作系统,用户可能会存储这些数据。因此,确保对设备所有用户进行数据收集活动非常重要。
移动设备的运输
许多解决方案允许你远程删除移动设备上的文件。因此,为了避免设备受到外部操作,建议使用法拉第笼来屏蔽任何进入的信号,防止设备上的数据被修改。
现在是时候了解一些关于管理数字证据的准则和国际最佳实践,以确保其在法律程序中作为有效证据使用。
管理证据(从法律角度来看)
“我们必须适应数字时代,处理数字证据时,链条的完整性也必须得到维护。”
– 律师,安吉丽丝·阿尔法罗
正如我们之前提到的,进行取证的第一步是确保所收集的数据得到正确的处理和存储。否则,数据可能无法在审判或其他法律程序中作为证据使用。
一些国家可能有不同的法规或框架,必须遵循才能使用数字证据。然而,让我分享一些全球范围内关于数字证据的常见准则和法规。
ISO 27037
ISO/IEC 27037:2012 提供了关于识别、收集、获取和保留数字证据的指南。
最新版本于 2018 年修订,允许您从多种设备中识别、收集、获取和保留数据,包括但不限于以下内容:
-
数字存储(非易失性)
-
移动设备
-
GPS 导航设备
-
数码相机(包括闭路电视)
-
网络设备
如果您想了解更多关于该标准的信息,可以访问其官方网站:www.iso.org/standard/44381.html。
数字证据政策与程序手册
美国国家司法研究所于 2020 年制定了本手册,为执法机构制定数字证据收集、处理和处理政策与程序提供指导:
nij.ojp.gov/library/publications/digital-evidence-policies-and-procedures-manual.
FBI 的数字证据政策指南
这是联邦调查局(FBI)在调查过程中用于处理、审查和处理数字证据的政策:vault.fbi.gov/digital-evidence-policy-guide.
区域计算机取证实验室
区域计算机取证实验室(RCFL)项目是 FBI 与其他美国联邦、州和地方执法机构之间的合作伙伴关系,为执法机构提供数字取证服务和专业知识支持。
他们出版了一本数字证据现场指南,旨在作为正确处理数字证据的指南。该指南可以在此处找到:
www.rcfl.gov/file-repository/fieldguide_sc.pdf/view.
美国网络安全与基础设施安全局
美国网络安全与基础设施安全局(CISA)发布了一份关于取证的指南,包括对美国适用法律的引用,以及关于取证的一系列有用链接:
us-cert.cisa.gov/sites/default/files/publications/forensics.pdf.
RFC 3227 – 证据收集与归档指南
互联网工程任务组(IETF)发布了 RFC 3227 – 证据收集与归档指南,可在以下链接找到:datatracker.ietf.org/doc/html/rfc3227。
总结
数字取证是一个重要的话题。甚至有数字取证的学士学位,这证实了该主题的广泛和复杂性。
然而,本章旨在为您提供有关该主题的深入概述,以及您在需要监督公司数字调查(取证)时必须遵循的考虑事项。
因此,在本章中,你了解了不同类型的法医鉴定,以及在调查过程中必须审查的不同数据来源。
此外,我们还回顾了收集数据的最佳实践,以及如何从法律角度正确地管理这些数据。
最后,我们探讨了移动法医鉴定的独特性以及与之相关的一些最佳实践。
现在,是时候进入另一个有趣的章节了,在这个章节中,我们将学习如何应用自动化来增强我们的防御安全策略。
进一步阅读
如果你想获得法医领域的专业学位,这里有本科以及相关证书课程。更多信息,请访问以下网站:
第十七章:第十七章:实现安全工具的自动化
“大多数时候,人们因为害怕‘自动化会取代人类’的神话,而没意识到自动化的好处,但实际上,自动化代表的是最高级别的成熟和卓越。”
– Desilda Toska, Dottore Magistrale 和自动化领导者
大多数攻击者利用自动化工具和技术来增强攻击的范围。因此,你必须理解自动化的重要性,这样你也可以利用它来更好地保护你的基础设施。
此外,你还必须了解构成威胁环境的不同类型的自动化攻击,以便为它们做好防御规划。
事实上,我相信你一定熟悉一些自动化攻击,如垃圾邮件和分布式拒绝服务(DDoS)攻击,但在这里,我们将回顾 21 种自动化攻击,以便更好地理解这一威胁,其中包括一些非常有趣的攻击,如凭证填充、抢购、狙击等。
以下是本章要涵盖的主要主题列表:
-
为什么要使用自动化?
-
自动化攻击的类型
-
使用 Python 进行网络安全工具的自动化
-
使用 Raspberry Pi 进行网络安全自动化
为什么要使用自动化?
“在计算中,最有效的工作是那些不需要执行的工作。”
– Ignacio Trejos-Zelaya
如前所述,网络犯罪分子利用自动化作为其主要工具来扩大攻击的范围,所以如果你想在同一起跑线上竞争,也应该把自动化作为防御安全策略的关键因素。
自动化的好处
让我们回顾一些通过将自动化作为防御安全策略的一部分来利用的好处。它们列在这里:
-
资源优化(你可以用更少的资源做更多的事情)
-
将资源转移到更高级的任务上(通过自动化耗时的无增值任务)
-
成本降低
-
更快地检测到威胁
-
更快速地采取对策
-
减少攻击时的影响
-
合规性和与合规性相关的任务支持
现在,另一方面,让我们回顾一下不应用自动化的风险。
忽视自动化的风险
一些公司可能不愿意投资于自动化;然而,以下是与之相关的一些风险:
-
资源浪费(做那些可以自动化的任务)
-
人为错误的概率增加
-
反应时间较慢(人类速度与计算机速度的对比)
-
更容易成为自动化攻击的目标
-
创新资源减少
-
用于研究的资源减少
-
发现威胁的能力降低
现在,让我们回顾一下我们可能面临的各种自动化攻击类型。
自动化攻击的类型
大多数攻击是自动化的,旨在针对更广泛的受众,以提高成功的机会;因此,了解可能面临的自动化攻击类型非常重要,为此我们将基于开放 Web 应用程序安全项目(OWASP)对自动化攻击进行分类回顾。
账户聚合
该攻击旨在根据共同因素识别和聚合账户——例如,收集来自某一系统的所有凭证,收集来自单个用户(来自多个系统)的凭证,等等。
账户创建
该攻击旨在创建大量账户。
攻击者的目标多种多样,包括使用新账户进行垃圾邮件、账户滥用、拒绝服务攻击(DoS)等。
广告欺诈
这种自动化攻击旨在通过虚假点击进行广告欺诈,如下图所示:

图 17.1 – 广告欺诈示例
如前所示的截图所示,网络犯罪分子可以通过使用这种自动化攻击来进行欺诈,从而使他们的收入呈指数增长。
CAPTCHA 绕过
完全自动化公共图灵测试以区分计算机与人类(CAPTCHA)是一种非常基础的防止某些类型自动化攻击的方法,通过创建一个人类可以解决而机器人(脚本)无法解决的测试。然而,随着图像识别技术和光学字符识别(OCR)的进步,CAPTCHA 对用户来说变得更加困难,但对计算机来说则变得更加容易。您可以在以下截图中看到一些不可能的 CAPTCHA 示例:

图 17.2 – 不可能的 CAPTCHA 示例
实际上,如前所示的截图所示,某些 CAPTCHA 对人类来说是无法解读的。
卡片破解
这种攻击旨在通过在信用卡处理网站上暴力破解信用卡数据(如安全码和有效期)来识别缺失的信用卡数据。
卡片欺诈
该攻击用于验证大量被盗或欺诈的信用卡号码。这通常通过在信用卡处理网站上测试大量卡片来实现。
兑现
使用被盗或欺诈的支付信息购买商品或服务。此攻击是自动化的,旨在实现多个网站或在短时间内的购买(在卡被封锁之前)。
凭证破解
在这里,攻击者尝试通过暴力破解或基于字典的攻击来验证用户名和密码组合。
凭证填充
该攻击旨在验证大量用户名和密码组合(通常从黑市或以前的数据泄露中获得),并与给定网站进行比对。
拒绝库存
这是一个非常有趣的攻击,旨在通过将产品加入购物车但不付款,从而在一段时间内减少产品的库存。此攻击可能对电子商务页面的销售产生非常负面的影响,但它也可以被触发以负面影响某个产品的发布,或推动某个产品的销售。你可以在下面的截图中看到此类攻击的一个示例:

图 17.3 – 库存拒绝攻击
需要强调的是,这种攻击也可以针对诸如酒店预订、汽车租赁和其他通过电子商务网站提供的服务和产品进行。
拒绝服务(DoS)
这可能是最常见的自动化攻击类型,攻击的方式是通过大量请求淹没网站,超过 Web 服务器的承载能力,直接影响网站及其服务的可用性。
加速
这种攻击旨在绕过一系列步骤,更快地到达流程的最后步骤,如下面的截图所示:

图 17.4 – 加速账户示例
如前所示的截图所示,加速可以通过更快地进入给定的 Web 流程的最后部分来为攻击者节省时间——例如,在 Web 培训表单中点击下一步,直到攻击者到达最后一个问题。
指纹识别
这种自动化攻击旨在收集有关某个网站的公开可用信息,以便更好地理解该站点。大多数时候,它收集如超文本传输协议(HTTP)头、错误信息、统一资源定位符(URL)路径等数据。这种攻击可以通过利用搜索引擎上索引的信息以及其他技术,如利用 Google dorks,在不访问网站的情况下进行。
足迹扫描
这种攻击可以被视为一种更具侵入性的指纹识别。在这种情况下,攻击针对应用程序,尝试收集多个数据,如应用程序参数、值、处理顺序、文件夹结构等。这也可以被视为一种应用程序编程接口(API)扫描,但需要强调的是,这仅仅是发现信息,而不是利用所发现的信息。
票贩子
这种自动化攻击涉及监控在线提供的某个产品或服务的可用性,然后在满足特定条件时自动进行购买(例如,当可用数量=10 时,购买 Lida 音乐会的所有票)。
抢购
这种攻击类似于票贩子攻击,不同之处在于这种攻击是由时间触发的(最后时刻)——例如,当时间=(截止日期-1)时,进行最后一轮下注。
抓取
这种自动化攻击涉及通过访问网页和 API 来收集信息,可以通过认证用户身份(使用被盗凭证)来进行,甚至可以在没有认证用户身份的情况下进行。
偏移
这个攻击的目的是操控网站指标(如点击数、访客数等)、投票、评论和点赞,从而操纵真实的结果并从中获利(如声誉、名气、粉丝等)。你可以在以下截图中看到偏移的示例:

图 17.5 – 偏移示例
如前面的截图所示,使用这种攻击方式,某篇文章的声誉可能会被操控。
垃圾邮件攻击
这是一种著名的攻击方式,涉及大量发送电子邮件,无论是用于营销还是传播恶意软件。
令牌破解
这个攻击的目的是发现网站上激活的令牌,如优惠券代码、折扣和优惠,这些令牌可以被攻击者使用。
漏洞扫描
我们已经深入讨论了这种自动化攻击,主要是通过识别给定网站、API 或其他网络资源中的已知漏洞来进行。
现在,让我们来探索如何使用 Python 在网络安全中应用自动化。
使用 Python 自动化网络安全工具
我们通过展示自动化的所有好处来开始本章,现在是时候看看如何利用 Python 实现自动化了。
Python 是一种超直观的语言,广泛用于脚本编写和自动化,我们也可以利用它来自动化一些与网络安全相关的任务。
实际上,你几乎可以用 Python 自动化你想做的任何事情,包括自动化一些知名的网络安全工具,如Nessus、Nexpose、Shodan、Nmap、Metasploit、Sqlmap等。
然而,在本节中,我们将探索使用 Python 自动化网络安全任务的其他方法。
本地文件搜索
在某些情况下,你需要在给定工作站上搜索特定的文件或文件夹,例如,为了实现合规性、作为审计的一部分或作为取证调查的一部分。
所以,如果你是审计员,拥有一个脚本来查找这些文件和文件夹会非常有用,而这可以通过 Python 轻松实现。让我们来看看怎么做。
Python 默认安装在 Kali Linux 中,因此要运行它,只需执行以下命令:
python3
如下截图所示,>>>表示 Python 解释器已准备好接收你的代码:

图 17.6 – Kali Linux 上的 Python 解释器
现在,让我们使用一个叫做os.walk的函数,它基本上通过自上而下(甚至自下而上)地遍历目录树来收集文件名和目录。
对于我们的例子,假设我们有如下截图中的文件结构:

图 17.7 – 提出的示例文件结构
现在,让我们看看如何轻松地使用 os.walk 来自动化搜索文件和目录。
让我们从回到我们之前打开的 Python 会话开始,并在那里输入以下代码:
>>> import os
>>> for root, dirs, files in os.walk('.'):
... for file in files:
... print(file)
... print(----------)
提示
Python 解释器使用缩进,因此确保你的代码与前面的代码片段保持相同的缩进。
如下图所示,代码输出了当前目录树下所有的文件(从上到下):

图 17.8 – 使用 os.walk 函数的代码输出
在这个例子中,我们只打印了文件名,但你也可以打印其他参数,如 root(目录)和 dirs(子目录)。
提示
如果你有 Python 使用经验,可能会觉得这个例子非常基础,事实上,正是为了这个目的:用一个非常基础的例子来向那些没有 Python 经验的读者阐明这个概念。
此外,你还可以通过使用其他函数(如 os.path)扩展该例子,显示文件的路径,或者甚至添加几行程序代码,只显示某种特定类型的文件。在这里,唯一的限制就是你的想象力!
基础取证
你还可以通过简单的 Python 代码自动收集文件的元数据。
为了完成这个任务,我们将使用 os 库。在这个例子中,我们使用 os.stat,因为它提供了许多操作系统可以使用的有用元数据,包括以下内容:
-
文件最后修改时间(
st_mtime) -
文件最后访问时间(
st_atime) -
创建时间或最后一次元数据更改时间(
st_ctime) -
用户
st_uid) -
文件所有者的组 ID(
st_gid) -
文件大小(
st_size)
让我们来看一个例子。
回到 Python,并输入以下代码行:
>>> import os
>>> stats = os.stat(('secret01'))
>>> stats
输出应该会显示所有前述的信息(创建日期、文件所有者等等),如下图所示:

图 17.9 – 使用 os.stat 获取的文件元数据
如果你想了解更多关于这个库的信息,可以访问以下网页:
-
docs.python.org/3/library/stat.html提示
这些日期格式对你来说不熟悉吗?别担心——你可以使用像
time或datetime这样的库将 Unix 时间转换为人类可读的时间。
许多其他酷炫的库可以用来从文件中获取信息,接下来会讨论这些。
Pillow
Pillow是一个额外的 Python 库,允许对图像进行处理。在我们的案例中,我们可以用它从图片中获取元数据,例如拍摄地点的全球定位系统(GPS)坐标。
使用 Python 收集 PDF 和 Word 文件的元数据
在PDFDocument、PDFParser、PyPDF2和PdfFileReader的情况下。
对于 Word 文档,最著名的库是Python-Docx,它可以从 Word 文档中提取超过 14 个属性。
网页抓取
另一种常见的使用 Python 进行自动化的方法是通过网页抓取。那么,接下来我们来概述一下最常用的库、包和模块,看看如何使用 Python 来自动化网页抓取。
使用 pip
如果你打算玩 Python,那么强烈推荐你安装pip。pip是 Python 的包管理器,可以安装在命令行中使用,来下载和安装 Python 包及其所需的依赖项。
在 Kali Linux 上的安装非常简单,可以通过以下命令完成:
sudo apt update
sudo apt install python3-pip
现在,要验证安装的版本,可以使用以下命令:
pip3 -V
如下图所示,我们在 Kali Linux 上成功安装了pip3:

图 17.10 – 在 Kali Linux 上显示 pip3 版本
现在我们已经设置好了环境,接下来继续概述一些你可以用来进行 Python 自动化的最常用和最著名的库与模块。
Beautiful Soup
在网络安全领域,BeautifulSoup是一个必备的 Python 库,用于解析超文本标记语言(HTML)和可扩展标记语言(XML)文件。事实上,你会发现几乎所有关于网页抓取的 Python 代码中都使用了这个库。
BeautifulSoup的魅力在于它提供了多种选项,能够以一种简单清晰的方式提取你需要的数据。让我来向你解释一下它是如何工作的。
首先,我们要明确一点——HTML 文件不仅仅是一个文件,而是一个充满信息的宝贵源泉,通过 Beautiful Soup,你可以提取所有这些信息。
下图显示了可以使用 Beautiful Soup 解析的信息:

图 17.11 – 可以通过 Beautiful Soup 解析的信息
如前所示截图,HTML 文件中有很多信息可以被解析,BeautifulSoup使我们更容易提取这些信息。
现在,让我们看看你如何也可以利用 Python 来自动化一些网络安全任务。
网络安全自动化
你可以找到无数的 Python 脚本来自动化一些网络安全任务,它们的具体内容取决于你所使用的工具和系统。
然而,你也可以自己创建一个,因此让我们概述一个非常著名的工具,它可以帮助你自动化一些关于捕获和分析网络流量的任务——著名的Scapy。
Scapy
这是一个很棒的工具,你可以在 Python 代码中使用它(无论是交互式还是作为库)来管理从网络嗅探软件(如 Wireshark)收集的数据包。
要安装它,你可以使用以下命令:
pip3 install scapy
然后,你可以通过以下命令确认scapy已安装:
scapy
如果安装成功,你应该看到类似下面的内容:

图 17.12 – Scapy
使用 Scapy,你可以做很多酷炫的事情,比如发送修改过的互联网控制消息协议(ICMP)数据包、端口扫描、读取数据包捕获(PCAP)文件,甚至像 Wireshark 一样捕获数据包。
注意
很多人在scapy和scrapy之间感到困惑,因为这两个工具都用于 Python 的安全。然而,虽然scapy主要用于数据包操作,scrapy则用于 Python 的网页抓取。相似,但不相同!
现在,让我们来看看如何利用强大的树莓派来自动化网络安全任务。
使用树莓派进行网络安全自动化
在第十章,应用物联网安全中,我们介绍了很多可以用树莓派做的酷炫网络安全项目,包括以下内容:
-
检测恶意接入点
-
使用树莓派创建入侵检测系统(IDS)和防火墙
-
创建一个安全复制统一串行总线(USB)设备信息的机器
-
创建蜜罐
-
创建一个网络监控设备
-
创建广告拦截器
-
甚至可以创建一个系统来检测网络中不明的树莓派设备,并学习如何禁用它
现在,在本节中,我们将概述一些可以帮助你自动化网络安全任务的树莓派项目。
使用树莓派的 Fail2ban 蜜罐自动化威胁情报收集
有很多工具和技术可以用来将互联网协议(IP)地址列入黑名单。事实上,你甚至可以通过在树莓派上安装 Pi-hole(如第十章,应用物联网安全中提到的那样)来自己创建,但我们这里不讨论这些系统,而是讲述如何利用一台便宜的树莓派收集攻击者的数据,并利用这些数据来更好地保护你的基础设施。
注意
这些基于低成本硬件的解决方案并不是为了取代强大的企业级设备。相反,它们是为了作为一个很棒的工具,用于创建原型和概念验证(PoC),这是进行研究的一个重要步骤,最终这也是网络安全大师必备的技能。
为了实现这个任务,我们将利用一款免费的开源软件,名为 Fail2ban。
Fail2ban 通过分析系统日志文件(如 /var/log/apache/error_log)来寻找恶意登录尝试、暴力破解攻击和其他针对系统的攻击。
然而,Fail2ban 设计时是针对单一系统运行的,因此我们将利用 Raspberry Pi 的强大性能和低成本,将其设置为一个暴露的蜜罐系统,收集有关攻击者的威胁情报,并利用这些信息来增强我们防御性安全系统中的黑名单。
下图展示了提议的架构,旨在利用 Fail2ban 在 Raspberry Pi 上自动化情报收集:

图 17.13 – 在 Raspberry Pi 上使用 Fail2ban 的提议解决方案架构
你可以参考 pimylifeup.com 上创建的教程,了解如何在 Raspberry Pi 上安装 Fail2ban,网址是:pimylifeup.com/raspberry-pi-fail2ban/。
你也可以通过遵循这份指南直接在 Unix 服务器上设置 Fail2ban:www.redhat.com/sysadmin/protect-systems-fail2ban。
或者,你可以访问他们的官方网站:www.fail2ban.org。
提示
Fail2ban 的另一个酷功能是,你可以配置它在检测到攻击时立即通知你,这样你就能快速获取攻击者的数据,并将其输入到你的系统中。
现在,让我们来看看另一个很酷的项目,使用我们的好朋友 Raspberry Pi 来自动化互联网监控。
基于 Raspberry Pi 的自动化互联网监控系统
假设你有一个远程位置,提供 Wi-Fi 服务给你的客户,而这个互联网连接可能会受到多种因素的影响,从速度变慢到完全没有连接。
所以,让我们回顾几个项目,看看如何利用 Raspberry Pi 自动化检测这些问题并通知你,从而在客户受到影响之前采取行动。
基于 Raspberry Pi 的自动化互联网监控
有一个简单的解决方案,你可以使用 Raspberry Pi 和简单的代码来 Ping 外部位置的一个设备,以确定它们是否有活动的互联网连接。然后,你可以利用 Raspberry Pi 的功能,通过 发光二极管 (LED)、声音或更为隐蔽的方式(如通过仪表盘、电子邮件或社交媒体消息)提醒你,以下截图中展示了这一过程:

图 17.14 – 自动化互联网监控系统架构
如果你想实现这个互联网监控解决方案,你可以参考由制作人 talk2bruce 发布的非常详细的逐步安装教程,链接:www.instructables.com/Raspberry-Pi-Internet-Monitor/。
现在,让我们回顾另一种自动化方法,旨在控制不仅是连接,还有互联网的速度。
自动化互联网速度监控
如前所述,可能会有一些情况下,互联网连接正常但速度较慢,这可能是由于 互联网服务提供商(ISP)的问题、路由器问题、线路问题等原因。不管问题的来源是什么,你需要及时了解这些问题,以便采取措施加以解决(记住——可用性问题也是你的责任)。
此外,Raspberry Pi 还允许你在数据库中记录互联网连接历史,这样你可以利用这些数据进行进一步的分析(例如,找出模式来发现问题的根本原因)。
有一个教程,介绍了如何利用来自 Ookla 的第三方 API (www.speedtest.net/apps/cli) 来监控 Raspberry Pi 上的互联网速度:pimylifeup.com/raspberry-pi-internet-speed-monitor/。
这些是使用 Raspberry Pi 进行自动化的一些例子,但在这里,天空才是极限。
记住——如果你是 Raspberry Pi 的专家,可以把你的项目链接发给我进行审阅,我们甚至可以在未来版本的书中包含它们。
总结
我们对目前攻击者使用的 21 种主要自动化攻击进行了全面的概述,以便你可以对你的组织进行评估,确定哪些攻击可能对你的基础设施和组织构成威胁。
但我们也学到了如何利用自动化,因此我们回顾了一些 Python 库,你可以利用它们在取证、网页抓取和网络安全等任务中进行自动化处理。
在结束本章之前,我们学会了如何利用著名的 Raspberry Pi 创建一些非常酷的网络安全小工具,这些工具能够帮助我们自动化一些任务,例如收集恶意地址以加入黑名单,以及两种不同的方法来测试互联网连接的速度和稳定性。
我希望最后这一部分能够激发你进行一些额外的测试和研究,开发你自己的网络安全小工具和原型,像一个大师一样!
进一步阅读
如果你想了解更多关于 Raspberry Pi 的信息,可以访问制造商的网站,这里有丰富的资源,包括教程、项目等。
此外,你还可以在那里找到关于 Raspberry Pi 不同版本的信息,以确定哪一种更适合你的项目。
这是网站的链接:
第十八章:第十八章:大师级的有用资源汇编
“在家中和街道上,我们的安全依赖于我们自己……同样的概念也适用于网络空间。”
– 米格尔·安赫尔·罗德里格斯,哥斯达黎加前总统及美洲国家组织前秘书
我们拥有的最宝贵的资源之一就是我们多年来收集的链接(收藏夹或书签)。
实际上,您的收藏夹是通过多年的职业经验收集的工具、信息和最佳实践的宝贵集合。
因此,我决定将这一最后一章献给您,分享一系列链接,您可以利用这些链接来改进您的数字工具箱中的网络安全网页资源。
这些链接分为三大类:
-
网络安全模板集合
-
必备的网络资源(漏洞库、攻击地图、密码工具等)
-
行业领先的最佳实践参考
免费的网络安全模板
这里是一个有用模板的汇编,您可以在作为网络安全专家的角色中按类别利用这些模板。
业务连续性计划和灾难恢复计划模板
网络上有成千上万的业务连续性计划(BCP)模板;然而,由政府机构创建的模板通常是最佳选择,因为它们准备充分,基于国际标准,并且免费:
-
来自曼彻斯特市议会的 BCP 模板:
www.manchester.gov.uk/downloads/download/5701/mbcf_business_continuity_plan_template -
来自英国赫特福德郡议会的 BCP 模板和指南:
www.hertfordshire.gov.uk/services/business/business-advice/business-continuity-and-fire-safety.aspx -
来自剑桥市的 BCP 模板:
www.cambridgema.gov/-/media/Files/CDD/EconDev/SmallBusiness/unitedwaybusinesscontinuitytemplate.pdf
以下是关于连续性规划的模板和信息的综合列表,包括业务连续性计划(BCP)、灾难恢复计划(DRP)和风险管理:www.business.qld.gov.au/running-business/protecting-business/risk-management/continuity-planning/plan
以下网站包含了多个资源,包括如何进行业务影响分析、创建 BCP 甚至 DRP:www.ready.gov/it-disaster-recovery-plan
这里是南加州大学创建的另一个优秀的灾难恢复计划(DRP)示例:fsep.usc.edu/files/2019/02/Disaster-Recovery-Plan-Template.pdf
风险管理
这里有一系列由英国政府发布的关于风险管理的文档,称为橙皮书:www.gov.uk/government/publications/orange-book。
网络安全政策和程序的设计与管理
网络安全政策不仅仅是根据模板创建一个文档并将其永远存储在一个不明的地方。
事实上,网络安全政策和程序是您拥有的最重要资产之一,因为它们代表了您组织网络安全的基线。因此,您必须了解如何正确地制定和管理这些政策和程序,以确保您的防御性安全策略有一个坚实的基础。
我们推荐使用 CUDSE 方法,因为如以下图所示,它向您展示了如何在整个生命周期中正确地管理您的网络安全政策:

图 18.1 – CUDSE 方法
此方法的官方网站可以在www.cudse.com找到。
这是一个开放的倡议,如果您希望成为方法未来版本的编辑或贡献者,可以随时在网页上注册。
必备的网络资源
这是一个非常好的网络安全控制清单,您可以利用它进行快速审计,或者将其作为创建您自己清单的基础:www.utah.gov/beready/business/documents/BRUCyberSecurityChecklist.pdf
网络威胁或数字攻击地图
这些页面实时展示了当前世界范围内发生的网络攻击的图形化表示。
如下图所示,页面还显示了额外的数据,如最受攻击的国家和按行业划分的攻击:

图 18.2 – 实时网络威胁地图
以下是一些最著名的威胁地图:
这些页面对于以下内容非常有用:
-
意识培训
-
网络安全演示
-
突出展示某一行业中防御性安全的重要性
此外,还有一些页面,如www.digitalattackmap.com/#anim=1&color=0&country=ALL&list=0&time=18763&view=map,可以根据日期显示可视化效果。这非常有趣,因为它可以帮助你将攻击次数与特定日期关联起来,例如选举期间、假期等时段的攻击增加。
网络安全认证
现在有许多公司提供网络安全认证;然而,并非所有公司都能提供物有所值的认证服务。因此,让我和你分享一些在报考网络安全认证时需要考虑的关键因素。
国际认证
PDF 文件容易被复制,因此你需要确保你的认证机构会提供一个数字令牌,方便你与他人分享,以确认你的认证是真实的,而非伪造的 PDF 文件。
这里,最好的解决方案是使用数字徽章,该徽章可以验证你是真正的认证持有者。数字徽章技术有所不同,最新的徽章甚至可以通过扫描数字徽章在网站上进行验证(非常酷)。
更新的文献和内容
网络安全是一个迅速变化的领域,因此你需要确保选择的认证机构使用最新的认证和考试内容,并避免选择那些多年来使用相同内容的机构。
创新
有太多认证机构几乎没有区别,因此要探索那些敢于创新的认证机构,提供新的提案、新的考试、新的内容、新的认证方案(包括数字徽章),这些才是能为你的简历带来独特优势的机构。
由专家验证和管理
另一个需要检查的重要项是谁在运营认证机构;例如,选择一个由真正了解该领域的网络安全专家支持和运营的认证机构比选择由一群不熟悉该领域的投资者和管理者运营的机构要好。
因此,我们强烈推荐国际创新与认证委员会(I2C2x),这是一个由网络安全专家管理并拥有的认证机构,致力于提升全球网络安全水平。
欲了解更多信息,请访问他们的网站:i2c2x.com。
网络安全新闻与博客
几乎每天都会有与网络安全相关的新博客或网站诞生;然而,并非所有网站都是由专家运营的,这可能导致其中一些分享不正确甚至是假新闻;因此,确保访问的网站是最好的非常重要,接下来我将分享一些世界上最好的网络安全资源。
在国际上被誉为网络安全新闻最佳来源之一的是:krebsonsecurity.com/
他们已经制作了超过 15 年的网络安全高质量视频内容,包括技巧、硬件黑客和新闻。
每个网络安全专家必备的书签之一是Hak5 播客:hak5.org/pages/videos
其中一个最好的网络安全知识交流论坛是:security.stackexchange.com/
但等等,还有其他语言(如西班牙语)创作的非常好的内容!例如,您可以访问节目Noches de Cyberseguridad,每周邀请来自拉丁美洲的专家讨论与网络安全相关的不同话题:www.facebook.com/nochesdeciberseguridad/
网络安全工具
在这里,我将总结一些必须拥有的网络资源,方便大家保存到书签中。我们在书中已经谈到了其中的一些资源;然而,考虑到它们的重要性,这里也值得再次强调。
测试网络安全漏洞的必备平台是:dvwa.co.uk/
Kali Linux 的官方页面,包括下载地址如下:www.kali.org/
NetHunter(适用于移动设备的 Kali Linux)的官方网站如下:www.kali.org/get-kali/#kali-mobile
一个包含超过 40,000 个已知漏洞的数据库如下:www.exploit-db.com/
exploit-db的一个子栏目,专门介绍 Google 黑客(dorks),地址如下:www.exploit-db.com/google-hacking-database
已知网络安全漏洞的最佳来源如下:cve.mitre.org/index.html
我知道还有很多其他工具;这只是本书中提到的一些最好的工具的亮点。接下来我们将谈谈一些最常用的与密码相关的资源。
与密码相关的工具
弱密码或不良密码管理实践是造成大部分网络安全漏洞的原因,以下是与密码管理相关的必备资源。
本网站用于检查给定的电子邮件是否曾出现在数据泄露事件中,因此必须更改密码并且永远不再使用:haveibeenpwned.com/
这个网站是一个很好的资源,用来强调弱密码的危险。特别适用于网络安全演讲或意识提升活动:www.grc.com/haystack.htm
Google 和 Microsoft 的多因素认证解决方案:
现在,我将与您分享一些关于网络安全最佳实践和框架的链接。
行业领先的最佳实践
总结以下关于网络安全和数据安全的行业最佳实践、框架和标准页面。
法规和标准
PCI-DSS是处理信用卡信息和支付数据的公司必须使用的标准。它们的官方网站如下:www.pcisecuritystandards.org/
HIPAA是美国的一项法规,旨在保护患者的敏感医疗记录:www.hhs.gov/hipaa/index.html
GDPR是欧盟制定的旨在保护其公民个人数据的法规:gdpr.eu/
正如本书前面所提到的,记住你必须始终研究与公司所在地、客户及市场相关的应用法规,以避免不必要的罚款和制裁。
网络安全框架、标准等
现在,让我们以网络安全领域的领先框架、标准和其他必备资源的清单来结束。
NIST 网络安全框架
最著名的网络安全框架是 NIST:www.nist.gov/cyberframework
ISO 27001
27001 系列是与网络安全相关的 ISO 标准家族:www.iso.org/isoiec-27001-information-security.html
物联网安全基金会
一份关于网络安全(包括物联网安全框架)的出版物清单,由物联网安全基金会设计:www.iotsecurityfoundation.org/best-practice-guidelines/
MITRE ATT&CK 矩阵
该矩阵是基于真实案例和观察的对抗者战术与技术的整理知识库:attack.mitre.org/
OWASP 十大
开放式 Web 应用程序安全项目(OWASP)是一个非盈利基金会,旨在增强 Web 资源和应用程序的安全性。它因发布十大 Web 应用程序安全风险而闻名:owasp.org/
网络安全成熟度模型
企业 网络安全成熟度模型(ECM2)使网络安全专业人员能够通过几个简单的步骤来确定公司的当前网络安全水平,并提供如何迈向下一个阶段的指南。你还可以在他们的网站上注册,成为下一个版本的贡献者或编辑:www.ecm2.info
总结
我希望你在成为网络安全专家的旅程中,能够发现这些链接有用。此外,我相信你也有一堆有用的资源和链接,所以请随时通过社交媒体与我分享,我会非常乐意将它们添加到未来版本的书籍中,甚至在我的即将到来的会议中展示它们。
本章也代表着这一段精彩旅程的结束,旨在提升你在多个主题上的网络安全技能,如服务器加固、网络安全、物理安全、云安全,甚至是网络安全政策的重要性和相关性。
此外,你还学习了诸如法医、恶意软件分析和物联网安全等高级主题。
但在这本书中,你不仅仅学习了技术;你还学会了如何创造技术,而我们是通过利用物联网(IoT)设备来创建你自己的网络安全工具来实现这一点,这正是高手所做的!
我真心希望你像我在制作这本书时一样,享受这段学习经历。
你现在是防御性安全的高手!
深入阅读
最后,我想与您分享我在美国、德国、西班牙、日本和中国注册的专利清单。这些专利是与来自世界各地的杰出研究人员和专家们共同研究和原型制作数百小时的成果,我希望它们能为你作为一名网络安全研究人员的未来提供灵感和动力:patents.google.com/?inventor=cesar+bravo&assignee=International+Business+Machines+Corporation

订阅我们的在线数字图书馆,全面访问超过 7000 本书籍和视频,以及行业领先的工具,帮助您规划个人发展并推动职业进步。更多信息,请访问我们的网站。
第十九章:为什么订阅?
-
通过来自 4000 多位行业专业人士的实用电子书和视频,减少学习时间,增加编码时间
-
利用专为您打造的技能计划提升学习效果
-
每月获取一本免费的电子书或视频
-
完全可搜索,轻松访问关键信息
-
复制、粘贴、打印和收藏内容
您知道 Packt 为每本出版的书籍提供电子书版本,并且有 PDF 和 ePub 文件吗?您可以在packt.com升级到电子书版本,并且作为印刷书籍的顾客,您可以享受电子书版本的折扣。如需更多详情,请联系我们:customercare@packtpub.com。
在www.packt.com,您还可以阅读一系列免费的技术文章,注册多个免费新闻通讯,并享受 Packt 书籍和电子书的独家折扣和优惠。
其他您可能喜欢的书籍
如果您喜欢这本书,您可能会对 Packt 出版的其他书籍感兴趣:
网络安全职业发展大师计划
Gerald Auger 博士,Jaclyn "Jax" Scott,Jonathan Helmus,Kim Nguyen
ISBN: 9781801073561
-
了解网络安全的基本知识,包括不同的框架和法律,以及专业领域
-
了解如何找到您在网络安全行业的第一份工作
-
了解大学教育与证书课程之间的差异
-
制定目标和时间表,鼓励在工作中保持工作/生活平衡的同时,创造价值
-
了解可用的不同类型的网络安全工作,以及什么是初级职位
-
构建经济实用的实验室以提升您的技术技能
-
了解如何在获得第一份网络安全工作后设定目标并保持动力
工业网络安全 - 第二版
Pascal Ackerman
ISBN: 9781800202092
-
积极与被动地监控 ICS 安全态势
-
以受控和标准化的方式响应事件
-
了解在您的 ICS 环境中需要哪些事件响应活动
-
使用 Elasticsearch、Logstash 和 Kibana(ELK)堆栈执行威胁狩猎练习
-
评估您的 ICS 网络安全项目的整体有效性
-
发现为您的 ICS 环境执行风险评估的工具、技术、方法和活动
Packt 正在寻找像您这样的作者
如果你有兴趣成为 Packt 的作者,请访问 authors.packtpub.com 并立即申请。我们曾与成千上万的开发者和技术专家合作,帮助他们将自己的见解分享给全球技术社区。你可以提交一般申请,申请我们正在招募作者的特定热门话题,或者提交你自己的创意。
分享你的想法
现在你已经完成了《精通防御性安全》,我们很想听听你的想法!如果你是在亚马逊购买的这本书,请点击这里直接前往该书的亚马逊评论页面,分享你的反馈或在你购买的站点留下评论。
你的评论对我们以及技术社区都非常重要,能帮助我们确保提供优质的内容。




+ R 启动 













浙公网安备 33010602011771号