> 技术文档 > 精通防御性安全(三)

精通防御性安全(三)


原文:annas-archive.org/md5/f98daef68ae3edbfb393ecb438616462

译者:飞龙

协议:CC BY-NC-SA 4.0

第八章:第八章: 提升你的网络防御技能

“数字经济和知识社会依赖于在网络空间中流动的大量数据,这些数据使得系统、人类与企业之间能够互动。因此,连接的人类的未来依赖于电信网络的投资、韧性和网络安全。”

– 路易斯·阿德里安·萨拉萨尔,前哥斯达黎加科学技术与电信部长

网络安全策略的基础应建立在对网络中传输数据的了解之上。

你会对流经你网络的大量开销感到惊讶。

但最重要的是,你会对即使在你不使用网络时,网络中流动的数据量感到惊讶。程序请求更新、程序向其服务器发送编码数据(这是我们在安装像 TikTok 和 Facebook 这样的社交媒体应用时同意的),还有许多其他原因,都是这种持续数据流动的根源。

现在,让我们来看看本章等待你探索的精彩内容:

  • 理解网络攻击的各个阶段

  • 深入探索你防御安全工具箱中最好的工具之一:Nmap

  • 一系列引导实例,帮助你获得Nmap的实操经验。

  • 走进无线网络上最大安全漏洞和弱点

  • 我们将为无线用户创建一份行业最佳的安全指南

  • 我们还将回顾另一个优秀的网络分析工具:强大的 Wireshark

  • 我们将研究一些易受攻击的协议,以及一些引导演示,展示如果这些协议在使用中,攻击者如何轻松捕获敏感数据

  • 你还将学习关于IPSIDS的基础知识,它们的相似性与差异,并快速了解最好的免费 IPS 和 IDS。

  • 此外,本章还有一个附加内容——没错,就是附加内容!——你将学会如何通过 Telnet 玩复古游戏、参观古老的虚拟博物馆,甚至免费观看 ASCII 电影

技术要求

为了最大限度地利用本章内容,你需要安装 Kali Linux。这样,你可以玩转我们将要介绍的工具。

Kali Linux 非常轻便,所以你几乎可以在任何有互联网连接的老旧电脑上安装它。

另一个选择是使用虚拟机,但那时你可能需要调整一些设置(尤其是网络设置),以确保所有工具能够按预期工作。

所有的图像,包括为虚拟机预建的虚拟镜像,都可以在这里找到:www.kali.org/downloads/

使用网络映射的主力工具——Nmap

首先,让我们从理解网络映射工具的重要性开始。

网络攻击通常由五个阶段组成,其中第二阶段的核心是网络映射,也称为扫描。为了更好地理解这一点,让我们快速浏览一下网络攻击的五个阶段。

网络攻击的阶段

这些阶段并不是作为攻击者必须遵循的一套最佳实践创建的;相反,它们是由网络安全专业人士设计的,用于对攻击者在进行网络攻击时最有可能遵循的常见步骤进行分类。

让我通过讲述一个攻击者的故事来解释这些阶段,故事中的攻击者想要从一家名为Bravix的虚构公司获取一些数据。

第一阶段 – 侦察

首先,攻击者需要获取一些关于 Bravix 的基本信息,如网页名称、安全类型、基本结构、使用的网络服务等。此外,攻击者还可能希望获得公司其他公开的信息,如公司位置以及关于员工的信息,这些都可以在后续的定向社交工程攻击中使用。

通常,所有数据都是通过简单的 Google 搜索等公共来源手动收集的。

第二阶段 – 扫描

现在攻击者已经知道了与 Bravix 相关的网页(bravix.comstore.bravix.commail.bravix.com),是时候扫描它们以收集更多将在攻击过程中使用的技术信息了:

  • 操作系统版本。

  • IP 地址。

  • 使用的网络服务。

  • 开放端口。

  • 内容管理系统CMS)的版本。如今大多数网页都使用 CMS 作为平台来运行它们的网页。

如前所述,这一阶段比前一阶段更具技术性,攻击者将利用漏洞扫描器和网络扫描器等工具来收集这些数据(我们很快就会看到)。

第三阶段 – 获取访问权限

拥有所有这些信息后,攻击者可以确定受害者网页(或网络资源)中的漏洞,并利用它们来获取数据。

第四阶段 – 维持访问

这是一个可选阶段,通常在更复杂的攻击中执行,攻击者希望从受害者那里收集更多数据;然而,在这个例子中,攻击者可能只从 Bravix 的网络服务器上获取所需的信息并离开。

第五阶段 – 掩盖或删除踪迹

当然,这次入侵是非法的,因此为了避免监禁,攻击者将尽力删除任何可能作为此犯罪证据的日志,以清除任何数据外泄的痕迹。

以下图显示了网络攻击的五个阶段;然而,非常重要的一点是,这些阶段并不总是按顺序进行,事实上,它们很多时候是重叠的。例如,攻击者可能从第一阶段开始就通过使用 VPN 来掩盖自己的踪迹,以避免被发现:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.1_B16290.jpg

图 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所示,基本命令提供了关于服务器的非常有价值的信息。

在这里,你可以看到哪些端口是开放的,以及与每个端口关联的服务。

在审计你的基础设施以确认仅打开必要的端口和服务时,这非常有用。如果发现不一致,应该立即采取措施修复漏洞,防止坏人发现它。

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.2_B16290.jpg

图 8.2 – nmap 基本输出

现在,通过添加-A参数,让我们变得更加激进

nmap -A scanme.nmap.org

图 8.3所示,-A参数为我们提供了一些额外且有用的信息,例如以下内容:

  • 端口上运行的服务的名称和版本:这是一个非常重要的审计工具,它能让你轻松识别过时且易受攻击的服务,从而可以联系服务器所有者尽快进行修补。此外,根据漏洞的严重性(例如,可能危及整个基础设施的非常旧的版本),你可以制定政策,如果服务在X天内没有修复,那么该服务器将被从网络中移除。这不仅可以保护你的基础设施免受暴露的服务影响,还能向系统管理员施加压力,确保他们尽快修复相关服务。

  • 操作系统版本:这将帮助你确定你的基础设施中是否存在不受支持的操作系统。

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.3_B16290.jpg

图 8.3 – nmap -A 输出

如前所述,Nmap 是一个非常适合审计的工具,你可能需要将这些结果发送给服务器所有者,以便他们采取行动。好消息是,你可以使用这个简单的命令将 nmap 结果导出到 .txt 文件中,这样你就可以轻松地将其作为附件发送给服务器所有者:

nmap -A scanme.nmap.org >> server_audit.txt

如下图所示,前面提到的 nmap 命令生成了一个名为 server_audit.txt 的文档,并将其保存在你的工作目录中,准备将其包含在审计结果中:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.4_B16290.jpg

图 8.4 – nmap 结果导出到 .txt 文件

你还可以通过使用 IP 范围来定位网络的特定部分。例如,以下命令将扫描从192.168.0.1192.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=] 

首先,我们使用标准的 nmap 命令,然后使用 -sV 参数,因为脚本需要版本信息才能正确收集 CVE。

然后,我们使用--script {script_name}参数来调用该脚本。

我们可以选择使用 mincvss 脚本参数来限制结果为 CVE 分数大于提供的值。示例如下:

nmap -sV --script vulners scanme.nmap.org

现在,脚本将查找与该 nmap 结果相关的所有 CVE。请注意,脚本使用一个超过 250 GB 的巨大数据库,因此扫描可能需要几分钟才能完成。

下图显示了与服务器上运行的 Apache 版本相关的大量漏洞列表:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.5_B16290.jpg

图 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 中轻松安装它的步骤:

  1. 导航到 nmapscripts 目录:

    cd /usr/share/nmap/scripts/
  2. 创建一个目录来安装文件:

    sudo mkdir vulscan
  3. 访问目录:

    cd vulscan
  4. 安装文件:

    git clone https://github.com/scipag/vulscan scipag_vulscansudo ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan/scipag_vulscan
  5. 安装完成后,运行该脚本非常简单:

    nmap -sV –script vulscan/scipag_vulscan/vulscan.nse scanme.nmap.org

在这种情况下,如下图所示,脚本未在这些数据库中找到与当前 OpenSSH 版本相关的漏洞:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.6_B16290.jpg

图 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 按钮来建立连接。

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.7_B16290.jpg

图 8.7 – 按下按钮进行 WPS 连接

还有一种混合模式,在这种模式下,你需要先在设备上打开一个应用程序以扫描 WPS 启用的设备,然后按下路由器上的 WPS 按钮来建立连接,如图 8.8所示。

一些路由器还提供通过路由器的网页接口触发 WPS 的选项,但这个选项仅在少数型号中可用,而且使用的人很少(因为它缺乏解决方案的可用性部分)。

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.8_B16290.jpg

图 8.8 – WPS 混合连接模式

另一种 WPS 实现方式是使用PIN 码,这种方式比起你那超长且安全的密码,记起来要容易得多。

但等等……如果我们还要启用不安全的 PIN 访问,那拥有一个超级安全的密码又有什么意义呢?这就像有一个超级安全的百万美元大门,但你却可以通过一扇开着的窗户轻松绕过。

为什么 PIN 方法不安全?

PIN 码是一个 8 位数字,这意味着它的熵(可能的密码组合数)相比于包含大小写字母的字母数字密码非常小,从而大大降低了安全性。事实上,使用现代破解引擎,攻击者可以在不到 8 小时的时间内破解一个 8 位数字的 PIN 码。

但这并不是 WPS 中唯一存在的漏洞。研究人员还发现了加密协议中的几个漏洞。其中之一与 PIN 码的一些数字是校验和(可以计算)有关,这减少了破解密码所需的时间。

另一个漏洞与协议验证 PIN 码的机制有关,这个过程叫做密码舞,其中验证步骤之一没有被正确加密,导致攻击者能够轻松获取 PIN 码。

此外,研究人员还发现了路由器的 MAC 地址和/或序列号之间的某些关联,攻击者可以基于这些值计算 PIN 码。

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.9_B16290.jpg

图 8.9 – WPS 数据贴在路由器背面

如前图所示,这些值可以在路由器背面的贴纸上找到,但攻击者可以通过利用探测请求包的漏洞远程收集它们。由于这些请求包是未加密并由路由器广播的,因此任何人都可以接收并读取它们,而且它们可能包含 MAC 地址以及序列号。如果你想了解更多关于探测请求漏洞的内容,请参阅第五章网络安全技术与工具,在网络安全高级无线工具部分下。

WPS – 解决方案

你可能会惊讶地发现,大多数路由器默认启用 WPS,因此你家里可能已经存在这个漏洞,却未曾察觉。

所以,这里最好的建议是完全禁用 WPS(逐步操作说明会在无线网络用户安全指南部分提供)。

如果出于某种原因,你需要启用 WPS,那么可以保持PCB 启用,并确保你禁用 PIN 选项(因为它更容易受到攻击)。

同时确保你更新路由器的固件,以确保你的路由器包含最新的 WPS 修复和安全更新。

有一些旧版路由器不允许你禁用 WPS。在这些情况下,你有两个选择:

  1. 更新路由器固件,看看新的更新是否提供禁用 WPS 的选项。

  2. 立即更换你的路由器。

现在,我们来看一个鲜为人知的无线功能,它可能会给你的网络带来一些安全漏洞:通用即插即用UPnP)。

UPnP – 问题

UPnP的创建初衷是为了简化用户操作,它允许设备之间在同一网络中共享数据。

问题在于,这一功能最初是为在家庭网络中共享数据而设计的,通常共享的设备是受信任的设备,因此 UPnP 不进行身份验证,攻击者知道如何利用这一点。

UPnP 的其中一个功能是端口转发,攻击者可以利用这一漏洞控制计算机,并将其作为 DDoS 攻击中的代理。这就是著名的Mirai攻击中的情况,该攻击使用此技术防止安全系统识别指挥和控制服务器,因为全球数千台被感染的机器被用作“僵尸”机器与真实的指挥和控制服务器之间的代理。

利用 UPnP 漏洞的其他恶意木马实例包括银行木马Pinkslipbot,也被称为QakBotQBot。这些木马非常危险,因为它们使用键盘记录器来捕获按键并将财务信息和凭证发送到远程指挥控制服务器。

UPnP - 解决方案

保护这些漏洞的最佳方法是禁用 UPnP(详细步骤将在无线网络用户安全指南部分提供)。然而,如果你真的需要 UPnP(以提升某设备的体验),那么你必须遵循以下这些建议:

  • 检查你的路由器型号在网上,并确认制造商是否发布了最新的 UPnP 相关漏洞补丁。事实上,在 2020 年底,研究人员发现了一种叫做CallStranger的漏洞,攻击者可以利用这个漏洞从你的系统中窃取数据;因此,如果你需要启用 UPnP,你必须持续检查漏洞,并确保修补它们。要查找当前漏洞的列表,请访问cve.mitre.org

  • 过滤所有尝试使用 UPnP 的外部流量。

  • 监控网络流量,发现 UPnP 的滥用情况。

你在办公室可能有很多技术和管理控制措施来保护你的无线网络,但在家工作的用户呢?他们在家中的无线连接是否有相同级别的安全性?

这应该是你主要关注的事项,因为现在甚至大部分用户可能都在家工作,因此,制定并分发清晰的指导方针(管理控制)给用户,确保他们拥有可接受的安全级别,从而避免对商业数据和系统的额外风险,是至关重要的。

无线网络用户安全指南

作为组织的安全负责人,你必须为用户提供指导,减少攻击风险。

考虑到大多数用户通过 Wi-Fi 连接互联网,那么为你来说,创建一份无线网络使用最佳实践手册并分发给所有员工,将是一个很好的主意。

提示

此外,请记住,这里关键是确保所有用户都熟悉这些指导方针,因此一些好的建议是,创建图文并茂的资料通过邮件分享,或者制作一些有趣的视频吸引人们关注这个活动。此外,你还可以指定一些有影响力的员工作为安全冠军,帮助你将这些策略传播给所有员工。

大多数安全设置是在 Wi-Fi 路由器上配置的,因此让我们首先展示如何登录到 Wi-Fi 的管理控制台。

访问你的路由器

这是访问路由器设置所需的五个简单步骤:

  1. 打开 Google,输入你的路由器名称(品牌和型号)和短语admin password。例如,Linksys E1200 admin password

  2. 然后点击制造商提供的相关链接(在这种情况下是 linksys.com)。

  3. 如下图所示,链接将我们带到制造商的支持页面,确认该路由器的默认用户名和密码是 admin/admin:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.10_B16290.jpg

    图 8.10 – 默认的管理员用户名和密码

  4. 要访问路由器,您只需要在互联网浏览器中输入路由器的 IP 地址。在这种情况下,支持页面提到了默认的 IP 地址;然而,这个地址可能会改变。但别担心,以下步骤可以很简单地确认:

    a. 按下 https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Image.png + R 启动 cmd 并按 Enter 打开命令提示符。

    b. 在命令提示符中,键入 ipconfig 并按 Enter

    c. 然后查找名为 192.168.0.1 的值:

    https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.11_B16290.jpg

    图 8.11 – 路由器的 IP 地址

  5. 一旦您在浏览器中输入 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:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.12_B16290.jpg

图 8.12 – WPS 设置

禁用 UPnP

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

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.13_B16290.jpg

图 8.13 – UPnP 设置

Fing 应用

Fing 是一款移动应用程序,它可以让你查看所有连接到你网络的设备。

这是一个很好的工具,可以确认是否有未经授权的用户连接到你的网络,如果有,立即更改路由器密码。

图 8.14 所示,Fing 提供了许多关于连接设备的有用信息,如下所示:

  • 设备名称

  • 设备类型

  • 设备型号

  • IP 地址

  • 制造商或品牌

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.14_B16290.jpg

图 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 启动页面已经显示了可用的网卡,以便我们可以轻松选择一个并开始捕获数据包:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.15_B16290.jpg

图 8.15 – Wireshark 初始界面

然而,如果你有多个网卡(接口),可能会让你困惑,不知道该选择哪个。

这里的技巧是点击 Interfaces,它会显示一个窗口,提供有关所有网络接口的详细信息。从那里,你可以通过查看流量列来确定哪个是你的活动接口。

如果流量栏没有活动,那么只需 ping 一个服务器,例如,ping www.google.com,如下面的图所示,你将开始看到流量栏在你活动的网络接口上移动。在这种情况下,我们可以确定我们的活动网络接口是eth0,因此我们可以点击它,然后点击开始来开始捕获数据包:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.16_B16290.jpg

图 8.16 – Wireshark 上的活动接口

好的,现在我们开始监控,让我们看看打开网页时会发生什么。

提示

大多数网页都有大量广告,这会使扫描结果非常嘈杂,因此为了避免所有噪音,我们将打开一个大学的网页作为本示例。此外,使用 Kali 的虚拟机非常好,因为它没有 Windows 系统所带来的网络负担(如果你在 Windows 机器上运行 Wireshark,即使你理论上没有使用网络,也会看到很多数据包)。

以下图展示了我们对一个网页进行扫描的结果,帮助你熟悉工具的输出并更好地理解它们:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.17_B16290.jpg

图 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 连接:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.18_B16290.jpg

图 8.18 – Wireshark 过滤器字段

现在,让我们导航到一个测试 Telnet 服务器并创建一个账户,看看我们能否捕获到它。

要做到这一点,只需在我们的 Kali Linux 上打开一个终端,并输入以下命令以访问 Telnet 服务器:

telnet telehack.com

如下图所示,我们现在已连接到 telehack Telnet 服务器:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.19_B16290.jpg

图 8.19 – 与 telehack.com 服务器建立的 Telnet 连接

现在,让我们回到 Wireshark 看看我们捕获了什么。

结果非常有趣,正如 图 8.20 中所强调的,我们成功地以明文捕获了 Telnet 服务器发送的所有信息(这与我们在 图 8.19 的命令行中看到的信息相同)。

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.20_B16290.jpg

图 8.20 – 捕获 Telnet 数据包

所以,我们已经证明了 Telnet 通信不安全,并且很容易被捕获。现在,让我们看看是否也能捕获一些登录详情。

为了实现这一目标,让我们使用 login 命令创建一个账户。然后系统会要求输入用户名,我们需要回复 Y 以确认创建新账户(见 图 8.21)。

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.21_B16290.jpg

图 8.21 – 在 Telnet 服务器上创建账户

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

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.22_B16290.jpg

图 8.22 – 通过 Telnet 设置密码

好的,现在让我们回到 Wireshark,看看它是否捕获了我们刚刚在服务器上创建的密码。

你可能会注意到有太多的包,有时看起来每个字母都对应一个包。但不用担心 – 为了让我们的生活更轻松,Wireshark 提供了一个叫做 TCP 流 的选项,它以非常友好的方式展示所有数据。要访问该选项,只需右键点击其中一个数据包并选择 Follow | TCP Stream(如以下图所示):

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.23_B16290.jpg

图 8.23 – Wireshark 中的 TCP 流选项

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

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.24_B16290.jpg

图 8.24 – 密码以明文形式被捕获

挑战

尝试在 SSH 连接上做同样的练习。那样你会注意到,所有包含数据的包都会被加密,因此信息是安全的。

在进入下一节之前,让我们休息一下,向你展示如何利用刚刚安装的 Telnet 客户端 来玩得开心(也许还可以给一些朋友留下深刻印象)。

奖励(玩 Telnet)

目前有很多有趣的 Telnet 服务器供你探索(没有风险)。它们有三种类型:

  • Muds:老式游戏

  • 公告板系统 (BBSes):一种古老的信息共享系统(Facebook 的史前祖先?)

  • Talkers:配置为 讲述 特定话题的服务器,如讲笑话(聊天机器人的失落祖父)

现在,这里为你整理了一些有趣的 Telnet 服务器,你可以通过连接它们来玩得开心(只要记住,你输入的所有内容都可能被捕获,因此如果你创建了一个用户,使用一个虚拟密码):

  • 星际大战 ASCII 动画(如果 Netflix 崩溃了)

    telnet towel.blinkenlights.nl 23

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.25_B16290.jpg

图 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

以下图像展示了一种非常酷的复古方式来玩国际象棋… 酷!

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.26_B16290.jpg

图 8.26 – Telnet 国际象棋游戏

好了,今天的游戏就到这里,接下来我们继续学习其他不安全的协议。

FTP、HTTP 和其他未加密的流量

Telnet 不是唯一的不安全协议 – 其他未加密的协议,如 FTP 和 HTTP,也会发送未加密的数据,容易被捕获。

如下图所示,在登录 FTP 服务器时,用户名和密码以明文形式发送:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.27_B16290.jpg

图 8.27 – FTP 用户名和密码以明文形式被捕获

因此,确保你在组织内推广使用更安全的协议,如安全 FTPSFTP)和安全 HTTPHTTPS)。

用于防御安全的 Wireshark

现在你已经了解了 Wireshark 的基础知识,接下来让我们看看如何在你的防御性安全角色中利用 Wireshark。

意识提升活动

正如你刚刚看到的,之前的示例是向用户和系统管理员展示不遵循政策并使用不安全的渠道传输敏感信息(例如用户名和密码)的危险的一个非常好的方式。

通过在公司的年度网络安全周等活动中向员工进行这种现场演示,有助于减少许多风险,同时将这些用户从安全对立者转变为安全推广者。

另一种传递方式是通过制作前面演示的录像,并将其分发给你的团队,作为员工必须完成的年度网络安全强制培训的一部分。

高级网络审计

Wireshark 使你能够对网络进行深入分析,以帮助你实现以下目标:

  • 合规审计

  • 内部安全审计

  • 性能分析

  • 网络风险评估

  • 恶意流量分析

  • 漏洞评估

  • 数据外泄识别

  • 网络加固分析

这些任务可以由内部的网络安全专业人员或服务提供商(第三方公司或外部网络安全专家)来执行。

咨询工作

Wireshark 是一个非常好的工具,可以供独立顾问使用,提供基于数据的建议,帮助公司改善其数据、系统和网络的安全性。

网络故障排除

尽管你可能不是直接负责故障排除,但了解在许多情况下,网络专家会使用 Wireshark 来排除网络问题,如延迟、可用性和稳定性,是非常重要的。

提示

Wireshark 不是入侵检测系统IDS),这意味着它不会在入侵者访问你的网络时发出警报,但它是调查入侵事件的一个极好工具。

不用担心,在下一部分我们将介绍入侵检测系统IDSes)和入侵防御系统IPSes)的基础知识,甚至对比它们之间的差异。

使用 IPS/IDS

在这一部分,我们将解释IDSIPS是什么,提供这些系统的一些示例,并考虑这两种相似技术之间的差异。

什么是 IDS?

IDS是一种被动监控解决方案,用于检测网络中的不良入侵。

一旦检测到入侵,IDS 会向安全分析员发送警报,以便进一步调查和处理(如以下图所示):

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.28_B16290.jpg

图 8.28 – IDS 示意图

就部署而言,入侵检测系统(IDS)可以在主机级别(HIDS)或网络级别(NIDS)进行部署。

有两种主要的 IDS 引擎,一种基于签名(例如经典的杀毒软件使用签名数据库来检测恶意软件),另一种是基于异常的,通过检测偏离既定模式的行为来识别入侵。在后者类别中,还有一些系统利用认知计算来增强这些模式的识别与识别能力。

什么是 IPS?

IPS是一种主动系统,可以防止未经授权的用户访问你的网络。

如下图所示,IPS 会自动阻止任何可能被认为是对你的网络构成威胁的流量:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.29_B16290.jpg

图 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 之间的主要区别,以及它们的某些共同特征:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_8.30_B16290.jpg

图 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 转以太网适配器,所以一旦连接,它会很难被察觉。

这个攻击非常简单但巧妙。如图所示,设备位于目标计算机和网络之间,使攻击者能够对网络和计算机执行多个远程攻击:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.1_B16290.jpg

图 9.1 – LAN Turtle 攻击

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

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.2_B16290.jpg

图 9.2 – LAN Turtle 模块

如前图所示,LAN Turtle 配备了一套强大的预加载模块,允许攻击者设置反向 shell 实现持久的远程访问,执行 DNS 欺骗攻击,执行 Metasploit 有效负载等!

隐秘的 Plunder Bug LAN Tap

LAN Tap 是一个非常小(但功能强大)的设备,它使攻击者能够捕获所有经过网络的包。

它配有 USB Type-C 连接,能够实时下载所有*.pcap文件到智能手机中,供后续分析。

pcap 文件

这是用于捕获网络流量的文件格式,被pcap文件等嗅探工具广泛使用,这使得这种类型的攻击更加危险。

如下图所示,攻击者可以悄无声息地将该设备连接在两个端点之间,记录所有通过电缆的活动,这突显了在网络中避免此类威胁的强大物理安全性的重要性:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.3_B16290.jpg

图 9.3 – Plunder Bug LAN Tap

此外,攻击者还可以使用数据包分析工具,如 Wireshark,实时分析这些数据包。

危险的 Packet Squirrel

这个小巧且强大的小工具具有与著名的 LAN Turtle 类似的功能——远程访问、中间人攻击、数据包嗅探、安全隧道和网络侦察。主要的区别在于硬件(接口和外观),如下面的图所示,以及软件(模块与有效负载),下文将详细解释:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.4_B16290.jpg

图 9.4 – LAN Turtle 与 Packet Squirrel 硬件对比

让我们详细了解这些区别:

模块通过空中下载到设备,并且自带配置界面。

有效负载通过手动或通过更新器应用程序下载到设备中,作为一个或多个文本文件。配置有效负载的过程包括编辑文本文件并更改值。多个有效负载可以携带并分配给一个开关按钮,但一次只能运行一个有效负载。

便携式 Shark Jack

这是一个超级便携的网络攻击工具,允许攻击者连接到网络端口,并即时运行高级侦察、数据外泄、攻击和自动化有效负载。

开箱即用,它配备了一个超快速的nmap有效负载,提供快速简便的网络侦察功能。它使用一种非常简单的脚本语言,再加上攻击/武装开关,这使得这个工具对你的网络安全构成严重威胁。

下图展示了Shark Jack硬件特性,同时也让你了解它的便携性,以及攻击者如何轻松携带并连接该设备:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.5_B16290.jpg

](https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.5_B16290.jpg)

图 9.5 – Shark Jack 硬件

但更厉害的是——Shark Jack 配备了一个基于云的远程访问工具,攻击者可以利用它实时获取数据!

令人惊叹的屏幕螃蟹

这可能是有史以来 最酷的黑客设备之一。这基本上是一个 HDMI 中间人攻击 设备,它会实时传送受害者机器的视频流。

这意味着(如图 9.6所示),一个具有物理访问权限的攻击者可以将该设备连接到 HDMI 投影仪,并获取屏幕上显示的所有机密信息。这使他们能够捕获如客户数据、合同、投标、公司机密、知识产权等信息

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.6_B16290.jpg

](https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.6_B16290.jpg)

图 9.6 – 屏幕螃蟹攻击

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

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.7_B16290.jpg

](https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.7_B16290.jpg)

图 9.7 – 屏幕螃蟹硬件

从防御安全的角度来看,值得注意的一点是,这个设备需要电源才能工作(可以通过 USB 提供电源),因此,在会议室中固定设备(如显示器和电视)上阻止 USB 端口的使用,可能是降低此类环境风险的良好做法。

高级 Key Croc

基于硬件的键盘记录器可能是最常见的物理网络攻击示例。硬件键盘记录器非常紧凑,容易连接和伪装,使其成为一种极其危险的威胁。

但还有一个更危险的设备叫做Key Croc——更危险的原因是,这个强大的键盘记录器拥有以下特性:

  • 人机接口设备 (HID) 仿真

  • 预定的 HID 按键注入

  • HID 按键注入的远程提交

  • 一个监听器,在执行预定动作时触发按键操作

  • 能够几乎实时地将数据发送到云端

  • 执行有效负载(来自大量现有有效负载的库)

  • 通过 SSH 实现远程访问

  • 配备 Metasploit 执行远程攻击和漏洞利用

  • 通过按一个按钮将其转换为 USB 存储设备

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.8_B16290.jpg

](https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.8_B16290.jpg)

图 9.8 – 关键 Croc

如前图所示,该设备具有非常强大的硬件(四核处理器、512MB RAM 和 8GB 内存),如果连接到任何企业系统或计算机,将构成巨大的安全威胁。

USB 威胁

如在第二章中所见,管理威胁、漏洞和风险,许多恶意 USB HID 设备在连接后可以用于执行多种攻击。

正如该章节中提到的,大多数计算机系统易受这些攻击,因为它们利用了HID 驱动程序的固有信任,因此大多数防病毒系统甚至 USB 操作系统限制都无法检测到这些攻击(因为这些限制适用于大容量存储设备,而非 HID 设备)。

这些 USB 设备的一些示例如下:

  • USB Rubber Ducky

  • Bash Bunny

  • O.MG 键盘记录器电缆

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.9_B16290.jpg

图 9.9 – Bash Bunny

第二章中,管理威胁、漏洞和风险,我们学到了如何保护环境免受这些USB 威胁。不过,让我们做一个简短的回顾:

  • 使用Windows Defender检测 USB HID 威胁。

  • 实施脚本检测脚本攻击(例如DuckHunt)。

  • 安装USB 物理阻断器以防止 USB 设备连接。

  • 创建专有软件,根据 USB 描述符或元数据(如制造商、型号、类型等)来阻止可疑的 USB 设备。

  • 避免在客户服务机器上暴露 USB 端口(外部人员可以轻松接触)。

但在所有这些机制之上,最好的保护措施是防止外部人员进入受控的公司空间(例如会议室、工位、办公室等)。我们将在下一节中介绍这些物理保护机制——物理安全机制

设备盗窃

有时在进行高级风险分析时,非技术团队可能只考虑替换被攻破设备的成本,因此在简单分析中,他们可能会决定不投资于物理安全,因为其成本高于设备替换成本。然而,在这些情况下,你需要向他们展示,这不仅仅是设备(硬件)的价值问题,还涉及到其他更昂贵的相关风险。这些风险可能包括以下几个方面:

  • 丢失设备数据的成本(由于缺少最新备份)

  • 暴露机密数据的成本

  • 暴露客户数据的成本

  • 服务可用性的影响(例如,如果设备正在托管系统,或者系统管理员可能暂时失去支持生产系统的能力)

  • 交付日期的影响(一些项目交付物或代码与设备一同丢失)

  • 设置设备的成本(使用某些特定工具设置设备可能会带来额外的成本,包括 IT 人员所需的时间和设备所有者的生产力损失)

  • 易受离线破解攻击的影响(攻击者可以对被窃取的设备进行离线攻击,这些攻击速度更快且更容易)

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.10_B16290.jpg

图 9.10 – 在线与离线密码破解时间

如前图所示,在线和离线密码破解时间差异显著,这将把攻击场景从不可行变为现实。

环境风险

提醒一下,您需要确保系统、服务器和备份受到环境风险(如飓风、洪水、地震等)可能带来的威胁的保护。

现在,让我们了解一些可以用来提高公司物理安全性的机制和工具。

物理安全机制

有多种机制和控制手段可以用来降低与物理安全相关的风险,通常它们分为以下几类:

  • 侦探:这些是用来检测入侵的控制手段——例如,安全摄像头、警报、运动传感器等。

  • 预防性:这些控制手段旨在防止某人进入安全或受限区域——例如,围栏、徽章控制门、密码控制门、人脸识别系统等。

  • 威慑:这些是用来阻止攻击者进入受限区域的控制手段——例如,保安、警报,或者如下一图所示的多种控制手段的组合:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.11_B16290.jpg

图 9.11 – 威慑控制样本

现在,让我们回顾一些技术来增强我们的物理安全性:

  • 访问控制:以下是与访问控制相关的一些最佳实践:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.12_B16290.jpg

图 9.12 – 与访问控制相关的最佳实践

  • 访客访问控制 – 自动失效徽章:这是一种非常有趣的技术,用于安全管理访客

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.13_B16290.jpg

图 9.13 – 自动失效徽章样本

该技术基于一种特殊的纸张,经过 24 小时后会显示单词VOID,以使徽章失效,如图 9.13所示。

这将防止某人使用过期的徽章进入,因其会明确显示该徽章已经失效。

提示

避免使用通用徽章访问建筑物的所有区域。相反,像 IT 机房这样的敏感区域应有不同的访问机制——例如,不同的徽章、键盘、 biometrics 或这些的组合。

现在是时候看看一些额外的提示和好做法,帮助你成为物理安全的高手了。

精通物理安全

如前所见,物理安全中的主要安全机制基于防止未经授权的用户获取系统的物理访问权限

然而,你可以利用一些额外的机制来增强你的物理防御安全性。这些额外的机制和策略将在以下章节中讨论。

清洁桌面政策

这项政策不是关于清除桌面上的灰尘和食物,而是关于限制员工在工作站上可以留下的无人看管物品。以下是一些需要考虑的例子:

  • 文件柜在用户不在桌面时必须始终锁好。

  • 不得将文件、笔记或其他数据源放在桌面上无人看管。

  • 不得将可移动设备(如 USB 驱动器)单独放置(无论是连接还是断开连接于计算机)。

  • 不得将敏感个人信息SPI)或个人身份信息PII)放置在桌面上无人看管。

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.14_B16290.jpg

图 9.14 – 清洁桌面政策示例

这项政策对你和公司都非常重要,因为它作为一层额外的安全防护,防止外部攻击者入侵。事实上,成功实施此政策的公司,还能减少其他公司风险,例如入侵、盗窃等。

提示

这些政策必须配合人力资源部门的严厉制裁,以确保每个人都在遵守。此外,如果你指派审计员进行每日检查,这项政策最终将成为组织文化的一部分。

就所有权和实施而言,最佳做法是由人力资源部门负责实施并拥有此政策,因为他们可能拥有更多的资源来确保该政策在整个公司内的正确执行。然而,请记住,你可能需要成为主要的推广者,以确保政策最初得以制定。

物理安全审计

这个机制通常会被忽视,但它应该是你防御策略的重要组成部分。

现在,让我们回顾一下物理安全审计的最佳实践:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_9.15_B16290.jpg

图 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 型或更高型号),这样您可以进行实验,并创建一些您将在本章中看到的防御性安全工具。

了解物联网

让我们先定义物联网为一组能够连接到互联网以共享数据和资源的设备

一些示例可能是您的智能手表或智能电视(是的,他们喜欢把智能这个词加在物联网设备上),但您办公室里的许多其他设备,例如复印机、打印机,甚至咖啡机,都可能是需要在允许连接到互联网之前进行漏洞分析的物联网设备。以下是一些物联网设备的示例:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.1_B16290.jpg

图 10.1 – 物联网设备示例

企业正在意识到将设备连接到互联网的好处。这些好处包括增加新功能和收集有关客户使用或习惯的数据(这对于改进未来的产品非常有用)。此外,企业还可以通过设备共享服务、数据或功能,创建互联生态系统,大大提升用户体验。

但这些实施方式也带来了许多风险,您必须了解并理解这些风险,以便制定策略来有效地进行防护。

风险

大多数物联网设备是为了增强用户体验而创建的。然而,在许多情况下,这些设备并不是设计时就考虑到安全的。这可能会对您的网络和数据构成风险。

让我们来看一下两种主要的物联网实施方式以及每种方式相关的风险。

工业物联网

工业物联网环境中的主要风险如下:

  • 传感器数据丢失

  • 来自传感器的数据损坏

  • 干扰传感器

  • 工业间谍活动

  • 设备劫持

  • 修改数据以导致服务中断(机器或生产厂)

  • 修改数据以导致经济损失(作物损失)

智能家居

智能家居环境中的主要风险如下:

  • 网络入侵。

  • 个人或敏感数据的泄露。

  • 设备可用作僵尸网络发起分布式拒绝服务DDoS)攻击。

  • 设备的远程访问/控制。

  • 禁用或绕过安全系统。

  • 隐私问题(摄像头、麦克风等)。

下图展示了攻击者如何劫持您的物联网设备的示例。

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.2_B16290.jpg

图 10.2 – 物联网智能家居的威胁环境

现在,让我们来看一下可能引发这些风险的最常见漏洞

漏洞

物联网市场的大部分竞争围绕着成本展开。因此,企业需要降低成本,有时这意味着缺乏安全性测试,甚至缺乏设备的基本安全设置。

因此,已经有成百上千个物联网设备连接到互联网,而设备的所有者甚至没有意识到它们的漏洞。

现在,让我们来看一下物联网设备中发现的十大漏洞:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.3_B16290.jpg

图 10.3 – 物联网十大漏洞

现在,让我们来看一下物联网设备常用的网络协议及其相关的优缺点、风险和漏洞。

了解物联网网络技术

虽然一些物联网实现使用 Wi-Fi,但事实上 Wi-Fi 有几个局限性,特别是在能耗和网络覆盖(范围)方面。因此,已经开发出一套新技术来克服这一局限性,将覆盖范围提高到 10 公里。

现在,让我们来看看一些物联网网络技术及其相关的漏洞。

LoRaWAN

LoRaWAN,也叫LoRa,是一个用于实现低功耗广域网络LPWANs)的开放标准。

这项技术的主要优势之一是能够以非常低的功耗传输长距离(超过 10 公里)的数据。这使得 LoRa 成为连接物联网设备和传感器的绝佳选择。此外,正如下图所示,LoRa 设备非常小巧。这对原型制作(甚至是集成到生产系统中)非常有利:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.4_B16290.jpg

图 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-4060cve.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 模块:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.5_B16290.jpg

图 10.5 – Zigbee 模块

请记住,我们在此解释的是标准特性和漏洞。然而,我们强烈建议您在实施之前先熟悉这项技术。

好的一点是,这些设备的成本非常低,因此您可以轻松制作自己的原型(借助如 Arduino 或 Raspberry Pi 之类的原型板)来确定最适合您的物联网实现的网络。

Sigfox

Sigfox被开发用于每天发送少量消息,这样可以将成本和功耗保持在最低水平。使用这项技术,您每天最多可以发送 140 条消息(上行消息 12 字节,下行消息 8 字节)。

这在通过低成本远距离传输传感器数据时尤其有用。

这项技术正在广泛流行,正如你在图 10.6中所看到的,Sigfox 正在全球范围内被实现:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.6_B16290.jpg

图 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所示)。

  • 确保所有实现都由专家进行,以避免安全漏洞。

  • 注意低成本设备和传感器,因为它们可能缺乏加密或其他安全机制(以降低成本)。

  • 将物联网网络与企业网络隔离,以避免对主基础设施带来额外风险。

以下图表显示了物联网网络协议的比较:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.7_B16290.jpg

图 10.7 – 物联网网络协议比较

图 10.7所示,没有一种适用于所有的解决方案。相反,每种技术都有其优缺点,需要进行评估,以确定哪种解决方案最适合你。记住,可用性是你在制定网络安全战略时需要评估的因素之一。因此,你还需要考虑哪种技术能提供更高的保真度,并降低丢包或断开连接的风险。

提高物联网安全性

现在,让我们分析一些可以应用于提高物联网设备安全性的额外机制和最佳实践。

默认密码

安装时更改所有物联网设备的默认密码。

此外,确保为这些设备选择非常强的密码,密码应包含以下特性:

  • 15 个字符长。

  • 字母(大小写)、数字和特殊字符。

  • 避免使用常见词汇(也称为字典词汇),如国家名称、月份名称等。

  • 每年至少更改一次家庭设备的密码,每季度更改一次商业设备的密码。

  • 使用密码管理器来安全且轻松地管理这些密码。

然而,使用超级密码并不足够。你还应该混淆用户名,以使攻击者更加难以破解。我们可以通过更改默认用户来做到这一点。

默认用户

默认用户如管理员很容易被攻击者猜到,因此更改这些默认设置会让攻击者更难以攻击。

禁用不必要的功能

如果物联网设备启用了远程连接到管理员面板或类似 Telnet 等脆弱服务的选项,则你必须禁用它们。

不安全的系统

在购买任何物联网设备之前,你必须在网上检查已知的漏洞(例如,以下网址:cve.mitre.org/)。

如果漏洞得以解决(例如,公司发布了补丁),那么说明制造商重视安全性。然而,如果漏洞没有得到制造商的解决,那么你应该寻找替代品,而不是将一个脆弱的设备添加到你的网络中。

重要提示

2020 年,一组研究人员使用Shodan.io查找脆弱的打印机,并利用脚本强制这些脆弱的打印机打印一份打印机安全指南

此外,在 2018 年,超过 50,000 台打印机开始打印一条支持 YouTuber 的信息,成为又一次成功的大规模打印机攻击(见图 10.8):

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.8_B16290.jpg

图 10.8 – 50,000 台脆弱打印机打印的信件

这种攻击相对无害。然而,试想如果攻击者发送了一个命令,让 50,000 台打印机打印《堂吉诃德》的副本。那么我们就会谈到 5000 万页的影响(这可真是非常多)。

启用的服务和端口

物联网设备可能默认启用了多个服务和端口。因此,你必须定义哪些服务应该具有互联网访问权限,哪些服务应该仅限局域网使用。

例如,你可能希望网络打印机可以访问互联网进行更新,但如果不使用的话,应该禁用远程管理访问和网络打印机服务(大多数情况下,局域网打印机就足够了)。

数据存储

检查设备上保存了什么类型的数据以及这些数据应用了什么类型的安全保护。如果数据在存储时没有进行安全加密,那么要么禁用数据保存功能,要么创建一个持续删除所有数据的流程。

安全设置

如前所述,避免将设备以默认设置添加到网络中,因为这可能成为攻击者的目标。

物理设置

确保这些设备无法被未经授权的人访问,因为攻击者可以按下重置按钮以启用默认登录,并访问系统。

分离网络

始终保持物联网设备在私人网络中是一种良好的做法。这确保了物联网设备无法访问任何敏感文件。

现在,让我们谈谈物联网设备的好处,以及你如何利用它们创建一些非常酷的项目,来增强你的网络、办公室、系统、数据,甚至是你的房子的安全性。

使用物联网设备创建网络安全硬件

树莓派是目前最著名的物联网设备之一,用于创建原型。

事实上,互联网上有成百上千个很酷的项目,你可以用这个强大的设备来创建。

图 10.9所示,树莓派是一个非常强大的设备,具备大量的计算能力,配备了你需要的所有端口,并且还配有一些 I/O 引脚,可以轻松连接多个模块和传感器。

目前有两个主要版本:普通的树莓派(当前为第 4 版)和树莓派零。这是树莓派的迷你版,便于携带且功耗极低。这对于一些项目来说非常合适:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.9_B16290.jpg

图 10.9 – 树莓派版本比较

互联网上许多树莓派项目与针对网络和系统的网络武器有关。然而,好消息是,也有许多与防御安全相关的酷项目,你可以利用这些项目的低成本易于实现,但更重要的是,因为你在创建这些项目时可以获得很多乐趣。所以,让我们来看看这个用树莓派打造的防御安全项目的精彩合集。

检测流氓接入点

流氓接入点是对我们网络、系统和数据的巨大威胁

它们基本上是恶意的接入点,旨在模仿你原来的接入点并执行多种攻击。

威胁

流氓接入点是对你的基础设施和数据的巨大威胁,因为它可以用来发起多种危险攻击,例如以下几种:

  • 中间人攻击

  • 断开认证攻击

  • 探测请求监视器

  • 拦截、检查、修改和重放 Web 流量

  • 凭证收集

  • DHCP 饿死攻击

  • Windows 更新攻击

  • ARP 欺骗

  • DNS 监控

  • DNS 欺骗

因此,正如你所看到的,流氓接入点可以对你的基础设施造成巨大的破坏。幸运的是,过去这些攻击并不常见,因为如图 10.10所示,要悄无声息地走私执行这些攻击所需的所有硬件是非常困难的:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.10_B16290.jpg

图 10.10 – 老式和新型流氓接入点比较

坏消息是,现在攻击者可以使用一个口袋大小的树莓派作为平台来发起这些类型的攻击。由于体积小、功耗低,它可以在攻击者的口袋里保持物理上不被察觉。

为了执行这些类型的攻击,攻击者可以利用互联网上提供的多种工具,比如Wifiphishergithub.com/wifiphisher/wifiphisher),或者一个名为Wifipumpkin3的框架。您可以通过以下网址找到它:github.com/P0cL4bs/wifipumpkin3

请参阅以下图示:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.11_B16290.jpg

图 10.11 – WiFi-Pumpkin 之前的 GUI 版本(已废弃)

图 10.11所示,这些工具非常易于使用。这可能会导致攻击数量增加,因为这些攻击可以被脚本小子(那些知识有限、喜欢执行基于简单教程的攻击的攻击者)执行。

解决方案

有一些来自思科(Cisco)和惠普(HP)的商业解决方案,但这些解决方案非常昂贵,几乎不可能被小型和中型企业采购。

但有个好消息。 来自哥斯达黎加 Cenfotec 大学的一组聪明的发明家和网络安全专家使用了攻击者所使用的相同技术,开发出一种低成本解决方案,可以在您的基础设施中找到恶意接入点。这个解决方案被称为Rpi-AWAPS

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.12_B16290.jpg

图 10.12 – Rpi-AWAPS 的分析与控制系统

想要了解更多关于这个令人难以置信的项目,请访问以下链接:

www.crbravo.com/rpi-awaps

重要提示

将威胁转化为解决方案:这些大师和发明家创建的解决方案是独一无二的,因为他们将一种攻击性武器转化为了解决方案,这就是网络安全创新的巅峰。此外,这个出色的工具已经在网上发布,因此任何人都可以以非常低的成本进行复制。如果您喜欢这个工具,请通过上述链接给作者留言——他们会很感激的!

请记住,目前该项目的实现是西班牙语版本,但团队正在开发一个英文版的系统。

树莓派防火墙和入侵检测系统

另一种利用低成本物联网设备的酷炫方式是通过使用树莓派创建低成本防火墙或入侵检测系统。

实现这一目标有多种方法,虽然这不是企业级的解决方案,但它将为预算紧张、几乎没有网络安全预算的小型公司提供额外的保护。以下是一些您可以参考的例子:

  • www.instructables.com/Raspberry-Pi-Firewall-and-Intrusion-Detection-Syst/

  • dergipark.org.tr/en/download/article-file/1160762

我们还可以利用树莓派创建更专业的安全系统,针对一些特定系统,如SCADA

工业控制系统(SCADA)的防御性安全系统

还有一些实现方案利用树莓派提升工业控制系统的安全性。以下是一个例子:www.acadpubl.eu/hub/2018-118-21/articles/21e/66.pdf

树莓派有几种类型,因此即使前面的一些链接指向的是特定版本的树莓派,你仍然可以在最新版本的树莓派上运行它。你的树莓派甚至可能比链接中提到的版本运行得更好(在速度、容量、空间、能耗等方面)。

安全的 USB 到 USB 复制机

这是一个非常有趣的树莓派实现,旨在减少连接感染的 USB 设备的风险。

想象一下,你正在参加一个会议,有人通过 USB 设备给你提供一些需要的文件。你知道将它连接到你的计算机是有风险的,但你还能做什么呢?

这个解决方案叫做CIRCLean。该系统基于由卢森堡计算机事件响应中心CIRCL)设计的树莓派,用来扫描 USB 设备并在安全地将其余内容移动到新 USB 设备之前,禁用一些可疑文件。

这里是他们的官方网站,供你了解更多有关此项目的信息:

  • circl.lu/projects/CIRCLean/

  • github.com/CIRCL/Circlean

请参考下图:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.13_B16290.jpg

图 10.13 – CIRCLean 的逐步操作指南

请注意,图 10.13是如何通过逐步的方式描述系统功能的。

创建一个$10 蜜罐

我们都知道蜜罐的重要性。然而,市场上一些解决方案价格偏高。那么,一个价格低于一杯咖啡的蜜罐解决方案如何呢?这听起来肯定很有吸引力。好了,我的朋友,这完全可以通过树莓派实现。

实际上,有几种蜜罐解决方案可以安装在你的小(但强大的)新朋友——树莓派上。

OpenCanary

Thinkst Canary是一个非常棒的蜜罐设备,但不幸的是,并非每个人都能购买它。好消息是,你可以通过免费的OpenCanary软件获得其最重要的功能。

你可以轻松地定制一个便宜的树莓派来作为这个令人惊叹的系统的主机。

OpenCanary 允许你原生伪造以下服务:

  • SSH

  • FTP

  • Git

  • HTTP

  • MSSQL

  • MySQL

  • Telnet

  • SNMP

  • VNC

  • 还有更多!

每当有人登录到 OpenCanary 服务器时,你都会通过电子邮件即时收到关于该活动的通知(如图 10.14所示)。

现在,由于这是一个蜜罐,并且没有人应该登录它,所以你知道每次登录都是一次黑客攻击尝试:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.14_B16290.jpg

图 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中看到的,界面非常酷:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.15_B16290.jpg

图 10.15 – NEMS 运行在树莓派上

这是该特殊树莓派版本的网站链接:nemslinux.com/download/nagios-for-raspberry-pi-4.php

创建一个互联网广告拦截器

互联网广告不仅令人烦恼——它们还有许多其他问题:

  • 高带宽消耗

  • 点击诱饵

  • 诈骗

  • 恶意软件

好消息是,你可以使用Pi-hole。这是一个很棒的广告拦截器,可以使用树莓派保护整个网络免受广告干扰。

项目页面可以在此找到:pi-hole.net/

访问控制和物理安全系统

您还可以利用多种 IoT 设备,基于多种技术,如以下示例,创建用于访问控制和物理安全的廉价设备:

  • 运动检测

  • 人脸识别

  • 电子邮件警报

  • 警报和更多功能

正如您在图 10.15中所见,您可以使用多种 IoT 设备进行此类项目,例如加载有Motion Eye OS的树莓派,或者更便宜的设备如ESP8266ESP32

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.16_B16290.jpg

图 10.16 – Raspberry Pi Zero、Orange Pi 和 ESP32

您已经学到了如何使用这些工具创建/开发所有酷炫的安全项目。然而,这些设备落入错误的手中(包括无意的用户),可能会对公司的数据和系统构成重大风险,因此这里是一个特别收录,扩展了这个话题。

特别收录 – 了解未经授权的 IoT 设备的危险

另一个安全风险与连接到您的网络的未经授权的 IoT 设备有关。在这种情况下,一个无意的用户可能会天真地将 IoT 设备连接到您的网络。这可能给您的网络带来很多安全风险。

因此,您必须建立一个系统来检测网络中的这些未经授权设备。

检测未经授权的 IoT 设备

检测连接到您网络的未经授权的 IoT 设备的简单方法是检查连接到您网络的设备的制造商。

您可以使用名为Kismet的软件轻松实现这一点。正如您在图 10.17中所见,使用 Kismet 可以扫描网络上的设备并查看设备的制造商,从而帮助您检测诸如树莓派、Alexa、Google Home、Amazon Echo 等未经授权的设备:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.17_B16290.jpg

图 10.17 – 使用 Kismet 检查制造商名称

此工具已经安装在 Kali Linux 上。有关更多信息,请访问以下网址:tools.kali.org/wireless-attacks/kismet

检测树莓派

还有一些工具可以用来识别特定的 IoT 设备。例如,您可以使用名为Raspberry Pi Finder的软件(由Adafruit开发),它提供了一个非常干净和易于使用的界面,以确定是否连接了树莓派到您的网络上:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_10.18_B16290.jpg

图 10.18 – Raspberry Pi Finder

此工具的另一个酷炫功能是,它可以在 Windows、Mac 和 Linux 上使用。有关更多信息,您可以访问它们的官方网站:

  • learn.adafruit.com/the-adafruit-raspberry-pi-finder

  • github.com/adafruit/Adafruit-Pi-Finder

还有一个工具可以帮助你识别网络中的树莓派。巧合的是,这个工具与前者同名,但由另一位开发者伊万·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)

这基本上是加载在云上并且用户可以通过网络界面轻松访问的软件。以下是一些例子:

  • GmailOutlook这样的基于网络的电子邮件

  • 像基于网络的计费系统或票务系统这样的网络工具

  • Office 365Google Workspace这样的基于网络的生产力应用程序

平台即服务(Platform as a Service,PaaS)

这为开发者提供了一个创建自己应用的平台。以下是一些例子:

  • 容器,如DockerKubernetes

  • 软件开发代码库和版本控制系统,例如GitHub

  • 基于云的平台,如Windows Azure

基础设施即服务(IaaS)

这为系统管理员创建自己的系统和基础设施提供了基础架构。一些示例如下:

  • 亚马逊云服务AWS

  • DigitalOcean

  • Rackspace

在这些云环境中,安全责任由云用户和云提供商共同承担。

以下图突出显示了根据使用的云类型,谁负责实施某些安全机制:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.1_B16290.jpg

](https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.1_B16290.jpg)

图 11.1 – 云安全责任

现在,让我们看看在云环境中应该如何管理数据安全。

云中的数据安全

在云环境中,数据有三种类型(或状态):静态数据传输中的数据使用中的数据内存)。因此,你需要确保无论数据处于什么状态,都始终保持安全。那么,让我们来看一下如何确保在所有不同状态下保护数据的最佳实践。

保护静态数据

静态数据基本上是存储在你的云或云系统中的所有数据。确保静态数据的最佳方法是使用加密,然而,加密的应用方式在不同类型的云中有所不同,如下图所示:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.2_B16290.jpg

](https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.2_B16290.jpg)

图 11.2 – 基于云类型的加密实现

请注意,对于PaaSSaaS,静态数据的加密主要由服务提供商管理。因此,在选择云服务提供商之前,你必须与他们确认是否为静态数据提供某种加密(记住,这也包括备份数据)。

保护传输中的数据

传输中的数据基本上是所有端点之间的数据流(从你的机器到云及反向)。保护这些数据会更加复杂,因为它通常需要云提供商与用户之间的一些协调。

例如,为 SaaS 保护传输中的数据通常通过使用安全的传输协议来实现,例如SSLHTTPS)。如下面的图所示,HTTPS 通过加密传输中的数据来防止中间人攻击:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.3_B16290.jpg

](https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.3_B16290.jpg)

图 11.3 – 安全的 SSL 连接与 HTTP

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

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.1_B16290.jpg

](https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.4_B16290.jpg)

图 11.4 – 云中安全 API 密钥实现示例

为 IaaS 保护传输中的数据通常由用户完成,通过设置安全的通道连接到云中的系统和基础设施,例如,使用SSH

下图显示了 PuTTY 的图形界面,它是最著名的SSH 客户端,可以用来确保与你的云服务器的通信是安全的:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.5_B16290.jpg

图 11.5 – PuTTY SSH 客户端

现在,让我们来看一下通常被忽视但非常重要的安全状态:使用中的数据

保护使用中的数据

使用中的数据基本上是存储在**随机存取内存(RAM)**中的信息。过去,这些数据并不被认为是脆弱的,但攻击者发现了从内存中提取信息的方法,因此,确保有机制来保护这些数据变得非常重要。

保护此类数据的主要方式是在操作系统层面,通过确保服务器和应用程序安装最新的安全更新,以防止内存泄漏。

SaaS 用户可以采取一些机制来减少这些攻击的风险,例如:

  • 不使用时关闭云会话。

  • 从网页工具注销(而不是仅仅关闭浏览器)。

PaaS 用户可以应用与 SaaS 用户相同的最佳实践,并确保他们使用平台的最新版本,避免使用那些已知有漏洞可能导致内存泄漏的平台。

IaaS 用户需要进一步遵循以下最佳实践:

  • 安装操作系统的最新版本。

  • 定期更新操作系统的补丁。

  • 保持所有软件更新(特别是安全更新)。

  • 从服务器中删除任何易受攻击的软件。

我们刚刚介绍了云安全的基础知识。现在是时候深入探讨如何在使用 Kubernetes 时增强安全性了。

保护 Kubernetes 和 API

Kubernetes 是部署云应用程序最常用的平台之一。由于其流行性,了解如何保护 Kubernetes 是非常重要的,以增强云环境的安全性。

云原生安全

为了更好地理解 Kubernetes 安全与云安全的关系,让我们来看一下下面的图,它解释了云原生系统四个 C的分层模型:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.6_B16290.jpg

图 11.6 – 云原生安全的四个 C

如前图所示,这是基于深度防御DiD)模型的分层模型,旨在增强基于云的开发安全性。

防御的第一道防线是云本身(这是我们刚刚讲过的主题),然而,你可能还需要考虑与每个云提供商相关的特定方面,因此,最佳做法是查看云提供商的页面,了解他们的安全能力。

作为附加信息,以下图提供了主要云服务提供商的安全页面链接:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.7_B16290.jpg

图 11.7 – 云服务提供商的安全链接

您也可以在进一步阅读部分找到这些链接。现在,下一层是集群(在本例中是 Kubernetes),让我们深入探讨保护 Kubernetes 的最佳实践。

控制对 Kubernetes API 的访问

在这里,建议对所有应用程序编程接口(API)流量使用传输层安全性(TLS),并确保身份验证、授权和准入控制已正确启用和配置。

控制对 kubelet 的访问

kubelet HTTPS 端点的请求(未被其他配置的身份验证方法拒绝)默认被视为匿名请求

因此,最佳实践是在生产集群上启用身份验证和授权,以防止任何安全风险。

防止容器加载不需要的内核模块

攻击者可以通过创建合适类型的套接字来加载内核模块,从而使攻击者能够利用管理员认为未被使用的内核模式漏洞。

为了防止这种情况,您可以从节点中卸载这些模块,或通过创建类似 /etc/modprobe.d/kubernetes-blacklist.conf 的文件并添加如下内容来将它们列入黑名单:

blacklist dccpblacklist 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 安全性:

    www.postgresql.org/docs/7.0/security.htm

  • 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 安全性检查清单:

    docs.mongodb.com/manual/administration/security-checklist/

  • Redis 安全性:

    redis.io/topics/security

  • Google Cloud Storage 最佳实践:

    cloud.google.com/storage/docs/best-practices#security

现在,您已经了解了如何保护云环境,接下来可以查看一些可以帮助您测试云安全性的工具。

测试您的云安全性

正如您可能已经知道的那样,所有的防御性安全措施必须经过测试,以确认已实施的控制是否有效,还要检测是否存在任何可能被攻击者利用的漏洞。

因此,在本节中,我们将探讨一些最佳工具,这些工具可以帮助您监控云的可用性和漏洞情况,以确认您的控制措施是否有效,并判断它们是否符合相关法规要求。

Azure 安全中心

Azure 安全中心是使用微软云服务的必备工具,因为它能让您评估所有云资源的安全状态,包括服务器、存储、SQL、网络、应用程序和工作负载。

如下图所示,您可以在此查看您的安全状态,并通过使用 Azure 安全评分建议来改善安全性:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.8_B16290.jpg

图 11.8 – Azure 安全中心

此外,Azure 安全中心使您能够查看与各种监管要求的合规性,并执行持续的评估和报告,以简化合规过程。

Amazon CloudWatch

Amazon CloudWatch监控云应用,并将数据转换为度量指标和事件,以便更好地展示 AWS 资源、应用和服务的可见性。

此外,你还可以检测异常行为、配置警报、执行自动化操作等。

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.9_B16290.jpg

图 11.9 – Amazon CloudWatch 的功能

如前图所示,Amazon CloudWatch是一个出色的工具,可以增强 AWS 资源的监控和可用性。

AppDynamics

Cisco于 2017 年收购的AppDynamics提供基于云的监控服务,用于评估应用性能。

如下图所示,该工具被创建用以支持即使是复杂的环境:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.10_B16290.jpg

图 11.10 – AppDynamics

该工具还具有应用安全监控功能,可以帮助你更快地发现漏洞和安全隐患。

Nessus 漏洞扫描器

Nessus 漏洞扫描器被许多人认为是最完整的漏洞扫描器。如下图所示,Nessus 使你能够运行多个预配置的扫描,从而简化操作:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.11_B16290.jpg

图 11.11 – Nessus 扫描模板

此外,你还可以配置自己的高级扫描来查找特定的漏洞。

甚至还有一个有限的免费版本,你可以用来测试此扫描工具的强大功能。

若想获取更多信息,可以访问他们的网站:es-la.tenable.com/products/nessus

InsightVM

InsightVM是由Rapid7开发的工具,可用于评估云端和虚拟基础设施,找出漏洞并进行精确的风险评估。

如下图所示,默认仪表板提供了大量信息,帮助你了解当前的漏洞情况。例如,仪表板可以作为基础设施中不受支持的服务器的可视化提醒:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.12_B16290.jpg

图 11.12 – InsightVM 默认仪表板

该工具的另一个优势是,你还可以用它来监控云外的其他系统,使你能拥有一个一体化的安全仪表板。

Intruder

Intruder是一个漏洞扫描工具,帮助你通过检查超过 10,000 个漏洞和安全检查来评估你的云环境状态。如图所示,图形用户界面非常直观,能够在一个仪表板中呈现所有有用数据。

此外,它还提供了根据漏洞的严重性对其进行排序的选项,让你始终能保持关注。

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_11.13_B16290.jpg

图 11.13 – Intruder 图形用户界面

还有许多其他性能监控工具以及漏洞扫描器,你可以查看它们,这些工具有各自独特的特点和功能:OpenVASQualys Cloud PlatformAlienVault USMAlibaba Website Threat InspectorAmazon InspectorOrca SecurityTrend Micro Cloud One,等等。

很遗憾,这一章已经结束,但好消息是,如果你想了解更多关于OpenVAS的信息,可以跳转到第十三章漏洞评估工具,在这一章中,你将有一个完整的章节,专门讲解如何更好地使用这个强大的工具。

总结

在本章中,我们涵盖了大量有用的信息,帮助你更好地理解与安全云实施相关的各个方面。

我们了解了不同类型的云及其相关的安全性,也看到了如何保护 Kubernetes。最后,我们展示了数据库安全的一些基础知识以及评估云安全的各种工具(在坏人之前)。

但我们还没有结束。在下一章,我们将进一步深入探讨这一主题,学习如何通过 Web 应用程序掌握安全实施。

进一步阅读

以下是每个云服务提供商提供的最佳安全实践链接:

  • aws.amazon.com/security/

  • www.alibabacloud.com/trust-center

  • cloud.google.com/security/

  • www.ibm.com/cloud/security

  • docs.microsoft.com/en-us/azure/security/azure-security

第十二章:第十二章:掌握 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)、链接、JavaScriptJS))

  • 证书信息(安全套接字层,或SSL

  • 已验证的电子邮件地址

根据你的业务需求,其中一些信息必须被隐藏,因为它可能代表着安全或隐私风险。

以下截图中展示的页面还显示了基于从公共漏洞和暴露CVE)中发现的漏洞的安全评分:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.1_B16290.jpg

图 12.1 – 来自 spyse.com 的漏洞视图

正如你可能已经推测到的,这些类型的页面也是评估你的托管服务提供商安全性的一个重要信息来源。

WHOIS 记录

这些记录显示了与给定域名所有者相关的信息。这里的主要风险是,这些记录与某个人关联,可能会使该人成为网络犯罪分子的主要目标。

例如,如果攻击者可以看到大公司的域名所有者的电子邮件地址,那么攻击者可以利用这些信息对该人进行多次攻击,如以下几种:

  • 社交工程攻击

  • 暴力破解攻击

  • 冒充攻击

  • 在已知的数据泄露中搜索电子邮件以收集凭据

为了防止这些攻击,公司可以向域名注册人支付额外费用,隐藏这些记录作为隐私保护措施,如以下截图所示:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.2_B16290.jpg

图 12.2 – 私有域名与正常域名的 WHOIS 输出

注意在前面的截图中,注册人信息已被隐藏以保护安全和隐私。

托管信息

你可能还想查看的另一条信息是关于共享托管环境的。例如,像www.domainiq.com这样的页面可以列出托管在某一服务器或子网中的所有域名。

这些信息可以通过以下两种方式使用:

  • 首先,它可以帮助你判断服务器的声誉,特别是当你使用共享托管环境时。

  • 其次,这也可能是一个隐私问题,因为它可能会泄露公司所有权的私人信息。例如,你可能会在不同的公司名下注册两家公司,因为你不希望公众将它们联系在一起,但如果两个域名托管在同一服务器上,可能会透露关于这两家公司实际所有权的线索。

以下截图展示了托管在同一服务器上的域名列表:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.3_B16290.jpg

图 12.3 – 显示托管在同一服务器上的域名列表

作为附注,如果你使用的是第三方共享托管环境,这些信息也可能会有用,帮助你判断你的网站是否因托管在同一服务器上的不良页面而面临被封禁(黑名单)的风险(这可能会影响到你邮件服务器的可用性)。

网页抓取工具

还有一些工具专门用于收集某一领域的所有公共信息。

你可以利用这些工具来确定从你的网站或 Web 应用中可以收集多少信息,以确保你的私人数据保持机密。

这里列出了一些网页抓取工具的示例:

  • webscraper.io:一款流行的浏览器扩展,允许你从指定网站收集所有公共信息。

  • www.scraperapi.com/:该网站为用户提供了一个 API,用于执行网页抓取。

  • www.scraping-bot.io/:一个用户友好的系统,用于抓取网页。

如下截图所示,大多数抓取系统会输出多种类型的文档,包括.html.doc.pdf.xls等:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.4_B16290.jpg

图 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关键词的开放数据库。

如下图所示,你需要仔细检查这些搜索结果,看看结果是仅显示基本数据(如变量名)还是更敏感的数据(如明文密码):

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.5_B16290.jpg

图 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: GooglebotDisallow: /
  • 通过运行以下代码防止 Google 索引特定的文件类型:

    User-agent: GooglebotDisallow: /*.sql$
  • 通过运行以下代码防止索引某个特定的文件夹:

    User-agent: GooglebotDisallow: /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。下面是操作方法:

  1. 按如下方式导航到html文件夹:

    cd /var/www/html
  2. 克隆git仓库,像这样:

    sudo git clone https://github.com/digininja/DVWA.git
  3. 按如下方式更改installation文件夹的权限:

    sudo chmod -R 777 DVWA
  4. 按如下方式导航到installation文件夹中的config文件:

    cd DVWA/config
  5. 复制config文件并重命名,如下所示:

    cp config.inc.php.dist config.inc.php
  6. 打开config文件查看数据库凭据,并将密码修改为更容易输入的内容(在以下示例中,我将密码更改为pass):

    config file, including all database information:Figure 12.6 – DVWA database user configuration
  7. 通过运行以下命令安装mariadb

    sudo apt-get updatesudo apt-get -y install apache2 mariadb-server php php-mysqli php-gd libapache2-mod-php
  8. 通过运行以下命令启动数据库:

    sudo service mysql start
  9. 登录到数据库(密码为空,因此只需按Enter即可),如下所示:

    sudo mysql -u root -p
  10. 现在,我们需要在数据库中创建一个用户。在这种情况下,我们需要使用我们刚刚在 config 文件中创建的相同用户名和密码(见 图 12.7)。这是您需要的代码:

    create user \'user\'@\'127.0.0.1\' identified by \'pass\';
  11. 现在,我们需要授予用户在数据库上的所有权限,如下所示:

    grant all privileges on dvwa.* to \'user\'@\'127.0.0.1\' identified by \'pass\';

    提示

    请注意,由于我们正在操作数据库,这些命令需要以分号(;)结尾。

  12. 现在,这两个操作在数据库上的结果应该如下所示:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.7_B16290.jpg

    图 12.7 – 用户在数据库中的成功创建

  13. 现在是时候导航到 apache2 目录来配置我们的 Apache 服务器,如下所示:

    cd /etc/php/7.3/apache2
  14. 现在,让我们修改 php.ini 文件,确保以下参数已启用:allow_url_fopenallow_url_include,如 图 12.9 所示,为此我们将使用 mousepad,如下所示:

    fopen wrappers to modify these values, as illustrated in the following screenshot:Figure 12.8 – Apache server parameters 
  15. 现在,是时候启动 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:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.9_B16290.jpg

图 12.9 – DVWA 配置页面

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

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.10_B16290.jpg

图 12.10 – DVWA 登录界面

现在,只需输入以下凭证进行登录:

  • admin

  • password

如下图所示,您可以测试和实验很多有趣的漏洞,例如 暴力破解命令注入文件包含SQL 注入等:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.11_B16290.jpg

图 12.11 – DVWA 网络界面

一个非常有趣的攻击是著名的 XSS 攻击,我们将在接下来的章节中深入探讨。

概述 web 应用程序中最常见的攻击

现在是时候讨论您可能遇到的针对 web 应用程序的 最常见攻击 了,当然也会介绍您可以用来保护系统免受这些攻击的方法、技巧和工具。

探索 XSS 攻击

这种攻击的原理非常简单:利用一些 JavaScript 或 HTML 代码在您的 web 应用程序上执行恶意代码

为了更好地理解这些攻击类型,让我们来看一种最常见的 XSS 攻击类型:劫持用户会话

劫持用户会话

在这里,攻击者将尝试向 web 应用程序注入恶意代码,该代码可以用于提取会话 cookie,从而冒充受害者。

为了更好地说明这一攻击,让我们来看一个基于租房网站的示例,如下所示:

  1. 攻击者将登录到易受攻击的网站,创建一个广告来出租房屋 但是 在该字段的描述中(正常人会描述房屋的优点),攻击者将嵌入恶意代码,目的是收集用户的会话 Cookie 并将其发送到他们的服务器。

  2. 当另一个用户打开那个 被黑客入侵的 房屋租赁广告时,恶意的 JavaScript 将会执行,受害者的会话 Cookie 会被复制并发送给攻击者。

  3. 现在,攻击者可以通过使用窃取的会话 Cookie 来伪装成受害者,在系统中将自己标识为受害者,如以下截图所示:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.12_B16290.jpg

图 12.12 – 通过 XSS 实现会话劫持

现在,让我们看看如何防止这种攻击。你可以采取以下措施:

  • 设置 php.ini 指令,如下所示:

    session.use_only_cookies = 1 -> for using only cookie based session idssession.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:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.13_B16290.jpg

图 12.13 – 执行 Burp Suite 时的 JRE 错误

在免费版中,唯一可用的选项是选择临时项目,所以我们点击那里,然后选择默认选项,最终进入主界面图形用户界面GUI)。

*恭喜!*现在,你应该能看到 Burp Suite Community 的主界面,如下图所示:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.14_B16290.jpg

图 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 注入,如下面的屏幕截图所示:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.15_B16290.jpg

图 12.15 - DVWA 低安全级别:SQL 注入

然而,对于我们的示例,我们将把它提升到下一个级别,并使用中等安全级别,在这个级别中,我们将只看到一个下拉菜单,而不是一个简单的文本字段。

因此,为了完成这个安全测试,我们需要一个额外的工具来注入 SQL,这就是您将利用一个新朋友 Burp Suite 的地方。

现在,让我们逐步了解如何执行这个超酷的 SQL 注入安全测试,如下所示:

  1. 打开 Burp Suite,并使用 Burp 默认设置创建一个临时项目。

  2. 从主菜单中选择代理,然后从子菜单中选择拦截

  3. 然后,选择启动 Burp 浏览器选项。

  4. 使用 Burp 浏览器,打开 DVWA,转到左侧菜单,点击安全性,然后在下拉菜单中选择中等,点击提交,如下面的屏幕截图所示:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.16_B16290.jpg

    图 12.16 - 更改 DVWA 中的安全级别

  5. 现在,转到左侧菜单中的SQL 注入,在那里,你应该看到一个带有提交按钮的下拉菜单,如下面的屏幕截图所示:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.17_B16290.jpg

    图 12.17 - 中等安全级别的 SQL 注入

  6. 返回到 Burp Suite,点击拦截已关闭以打开它,如下面的屏幕截图所示:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.18_B16290.jpg

    图 12.18 - 在 Burp Suite 中打开拦截

  7. 返回 DVWA 并点击 提交(如图 12.17所示)。

  8. 如果你返回到 Burp Suite,你应该能够看到拦截到的数据,如下图所示:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.19_B16290.jpg

    图 12.19 – Burp Suite 捕获的数据

  9. 图 12.19的末尾所见,选择的下拉菜单值被发送为 id=1,所以让我们通过调整这个数字来看看这个 Web 应用程序的安全性如何。

  10. 让我们将 Burp Suite 中的 id 值从 1 更改为 2,然后点击 转发,看看会发生什么。

  11. 如果你回到 DVWA,你会看到下拉菜单仍然显示 用户 ID 1;然而,用户 ID 2 的信息却在显示。这意味着 Burp Suite 成功地注入了一个新的值,而没有接触到网页,如下图所示:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.20_B16290.jpg

    图 12.20 – 用户 ID 从 Burp Suite 更改

  12. 但那只是一个测试。现在我们看到我们可以注入数据,接下来让我们尝试进行真正的 SQL 注入。为此,我们将更改用户 ID的值,看看不同的值能带来什么效果。为了实现这一点,我们返回 Burp Suite,并确保拦截处于打开状态,然后再次点击 DVWA 上的 提交,以便再次在 Burp Suite 中获取数据。

  13. 现在,将 Burp Suite 中的 1 改为 1 OR 1=1# 然后点击 转发

  14. 如下图所示,DVWA 中的网页现在同时显示了所有五个用户的信息,即使没有提供相关的选项。这意味着我们刚刚发现了一个安全缺陷!这里是:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.21_B16290.jpg

    图 12.21 – 显示不应在 Web 应用程序中显示的数据

  15. 点击 ID,接下来是:

    1 OR 1=1 UNION SELECT NULL,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES#
  16. 现在,如果你回到 DVWA,你会看到这次我们获得了更多信息,包括表名。这是一个非常严重的安全漏洞,因为攻击者可以从我们的 Web 应用程序中获取非常敏感的数据。现在,我们刚刚发现了一个更严重的漏洞,它危及了信息的机密性,如下图所示:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.22_B16290.jpg

    图 12.22 – 从 Web 应用程序泄露的数据库信息

  17. 有了这些信息,我们可以测试是否能够从这个 Web 应用程序中获取更多敏感数据,接下来让我们尝试以下命令:

    1 OR 1=1 UNION SELECT USER,PASSWORD FROM users#

如果你回到 DVWA,你应该能够看到显示所有密码哈希值,如下图所示:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.23_B16290.jpg

图 12.23 – 从 Web 应用程序泄露的哈希密码

现在,让我们看看执行这个实验时可能会遇到的一个常见错误。

修复常见错误

你是否遇到与图 12.24所示相同的错误?如果是的,别担心——这很容易修复。只需进入 Burp Suite,选择拦截关闭,然后刷新DVWA,一切应该恢复正常。

同时,请记住,这些值区分大小写,因此请确保使用正确的大小写,以避免错误,如下图所示:

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.24_B16290.jpg

图 12.24 – DVWA 错误

现在,让我们做另一个测试,看看一个 Web 应用程序是否容易受到暴力破解攻击。

对 Web 应用程序的密码进行暴力破解

在这里,我们将使用之前一直在使用的两个应用程序,因此我们直接进入步骤,如下所示:

  1. 进入 Burp Suite 并确保拦截已关闭。

  2. 进入DVWA,从左侧菜单中选择暴力破解

  3. 输入admin作为密码12345(还不要点击登录)。

  4. 返回Burp Suite并将拦截设置为开启。

  5. 现在,你应该能够看到所有发送的数据,包括输入的用户名密码值。

  6. 点击顶部菜单中的操作按钮,然后选择发送到入侵者,如下图所示:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.25_B16290.jpg

    图 12.25 – Burp Suite 中的操作菜单

  7. 现在,你应该看到入侵者菜单已被红色高亮显示,所以请点击顶部菜单中的入侵者,如下图所示:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.26_B16290.jpg

    图 12.26 – 入侵者菜单

  8. 进入顶部菜单中的位置。在那里,你可以看到我们将在有效负载中使用的参数或变量。通常,它会默认识别一些参数,因此在这种情况下,让我们通过点击清除来清除这些值。

  9. 然后,将攻击类型更改为admin并点击12345。结果应该如下所示:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.27_B16290.jpg

    图 12.27 – 添加有效负载位置

    现在我们已经添加了两个位置,接下来我们去顶部菜单中的有效负载。在那里,点击有效负载集,你应该能够看到下拉菜单中有两个选项。这是因为我们刚才添加了两个有效负载位置,第一个是用户名,第二个是密码,如下图所示:

    https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.28_B16290.jpg

    图 12.28 – 添加有效负载集

  10. 好的——现在我们设置1用户名)和有效负载类型简单列表

  11. 为了简化这个示例,我们只包括两个用户名:一个是admin,另一个是cesar。只需选择admin并点击cesar即可。

  12. 现在,让我们用负载集 #2(password)进行相同的操作。在这里,我们通常会使用一个密码字典,但为了简便起见,我们手动添加几个密码选项。为此,只需设置2,然后保持kessentopolinopasswordletmeinqwerty。结果应该如下面的截图所示:https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.29_B16290.jpg

    图 12.29 – 添加负载选项(值)

  13. 返回到DVWA,复制您在输入错误密码时收到的错误信息:用户名和/或密码错误

  14. 再次返回Burp Suite,然后选择选项。在这里,我们将使用错误信息作为标记,来识别何时找到密码。为此,请进入Grep Match,点击清除以删除默认值,然后粘贴错误信息并点击添加

  15. 现在,是时候发动攻击了。为此,只需点击右上角的开始攻击按钮。

分析结果

到现在为止,您应该看到一个窗口,如下图所示,显示暴力破解攻击的结果。

如我们所见,在我们的例子中,有一个结果没有找到错误(最后一列),这意味着这一行包含密码。在这种情况下,password

https://github.com/OpenDocCN/freelearn-sec-pt3-zh/raw/master/docs/ms-dfn-sec/img/Figure_12.30_B16290.jpg

图 12.30 – 暴力破解攻击结果

现在,记住我们的目标是使用此工具测试网页应用的漏洞,并应用适当的修复措施,直到漏洞被修复为止。

如您所见,这两款工具非常强大,用于测试您的网页应用,因此,正如之前提到的,良好的做法是让安全团队中的至少一名成员熟练掌握这两款工具,这样网页应用的测试可以持续进行,以便在攻击者利用漏洞之前发现并修复它们。

总结

到目前为止,您应该已经掌握了保护网页应用的各个方面。在本章中,我们学习了网页应用的主动与被动数据收集,并了解了用于发现互联网中关于网页应用敏感数据的最佳工具和方法。我们还学习了没有对一些公开信息进行模糊处理的风险。

我们还学习了如何安装、配置并使用最佳的虚拟环境,以熟悉网页应用中的常见漏洞(DVWA 平台)。此外,我们还探讨了如何安装、配置并使用最佳工具来实时评估给定网页应用的安全性(Burp Suite)。

我们还通过一个实际操作的例子,亲身体验了攻击者如何轻松利用常见的漏洞来攻击您的网页应用。

但是,还有许多其他工具可以帮助你发现 web 应用程序甚至整个基础设施中的漏洞,接下来我们将进入下一章,回顾一些专业级漏洞评估工具!

进一步阅读

  • 有关 DVWA 的更多信息,可以在官方 Git 页面找到,链接如下:github.com/digininja/DVWA

  • 本页面介绍了一些其他的网络应用攻击,你可能需要查看:owasp.org/www-project-top-ten/