原文:
annas-archive.org/md5/28d1f586e1c9996605326ebee42bc698译者:飞龙
第十二章:破解移动平台
今天,当我们看到移动平台上的设备发布时,我们往往会有这样的倾向——希望从黑客的角度来看——我们会想:“我现在该怎么办?”
我最喜欢的一句名言来自《星际大战》中的伟大角色尤达大师,他说:“大小无关紧要,看看我。你要通过我的大小来评判我吗?”这在移动设备上也适用。它们非常小。我们的大多数智能手机的性能比 1970 年代美国宇航局(NASA)将人类送上月球时使用的计算机系统还要强大。移动设备的更新速度以及这些设备上支持的应用程序让人瞠目结舌。
所以,系好安全带——我将从黑客的角度带你了解移动平台的几个不同方面。
本章将涵盖以下主题:
-
移动环境中的漏洞
-
OWASP 的移动设备十大风险
-
破解安卓
-
破解 iOS
-
移动设备管理
让我们从识别攻击移动设备漏洞或攻击途径的过程和一些关键词开始。
移动环境中的漏洞
除了我们在网络攻击、云攻击和无线攻击中看到的漏洞外,移动设备比标准桌面环境中有更多的漏洞或攻击途径。以下是一些影响我们移动世界的其他漏洞:
-
应用程序和应用商店:知道你从哪里下载应用程序非常重要,因为作为攻击者,我会拿一个流行的应用程序,将其重新编译并植入恶意软件,然后试图重新分发它。
-
病毒、蠕虫和 Rootkit:我们在桌面环境中处理的恶意软件,正是我们在移动设备环境中会遇到的恶意软件。
-
数据存储:开发人员必须仔细考虑哪些数据将存储在智能手机上以及如何保护这些数据。移动应用程序应该避免将敏感信息(如密码或信用卡号)存储在手机的本地文件系统中,因为这可能会让攻击者在设备被物理获取后获得访问权限。
在本地文件系统上存储任何敏感信息是不推荐的,但如果将其存储在 SQLite 数据库中,可能会稍微好一点……如果你刚才的安全警觉感应到了,那应该是因为我们对 SQL 和注入攻击的了解。这就是为什么我说稍微好一点。
-
复制信息:如果我通过电子邮件获取信息并将其保存(因为它作为附件到达)到我的本地安全数字(SD)卡中,然后将其转发到我的 Dropbox,我就会把我的系统暴露给攻击者。你可能需要考虑加密你的数据存储,这样如果有人取走你的 SD 卡或获得你的设备,他们必须输入一个 PIN 码,就像你从冷启动开启手机时一样。
-
社交工程:我们在第八章中已经讨论过这个问题,社交工程,但为了重申一下,它是一种非技术性的方式,让人们做出他们平时不会做的事情。我们可以利用技术进行社交工程,但操控总是发生在人与人之间的层面,而不是设备层面。从移动设备的角度看,大多数社交工程通过电子邮件、短信或多媒体信息进行。
你可能已经是面对面社交工程的受害者——只是你当时没有意识到。社交工程也发生在社交网络平台上。广告也是实施社交工程的一种方式,目的是让你点击链接、点赞或劫持 Facebook 账户。然后,我可以向他们的朋友发布信息说,“嘿,最近有个新的安全问题,点击这个链接,我是想帮你们的,” 当他们点击时,我就感染了他们。
这种攻击也通过视频聊天进行。例如,当我安装了 Skype 或 Zoom 以便进行视频会议时,我在前三分钟内收到了八个来自陌生人的邀请。听着,我知道我很受欢迎,但拜托,稍微有点控制啊!
-
短消息服务(SMS)环境:在短信环境中,尤其是通过短信钓鱼的攻击激增,因为大多数人并不清楚设备的工作原理。我们会收到看起来像是来自银行的短信,或者是来自我们没有账户的银行的短信。短信中包含的链接,很容易指向一个电话号码,该号码实际上与显示的号码不同。当你点击链接时,它会拨打不同的号码或将你引导到一个不同的电话号码。一些链接会将你带到一个假冒但几乎一模一样的网站。它们会告诉你,“嘿,你的账户已被锁定,请点击此链接了解更多信息。”
-
驱动攻击:这是指当攻击者通过特定网页向设备传送恶意软件时发生的情况。许多时候,驱动攻击是由软件创建的,或者发生在网页浏览器中。这些软件可能是操作系统、Java,或任何类型的网页插件,但网页浏览器也为我们制造了这个大漏洞。
-
移动设备上旧版操作系统:对于制造商来说,要跟上这一点非常困难。他们在更新操作系统时遇到了很大困难。大多数操作系统都有漏洞,我们并不是在讨论老旧的遗留系统。可能是一个连接到网络的二代 iPad,或者是第一代 iPad,三星 S3,或者 iPhone 4。真正的挑战在于,是否仍然允许通过更新来修复安全漏洞。
-
网络钓鱼:这是通过伪造电子邮件进行的。有时,很难意识到电子邮件中的链接无效或无法辨别一个网站是否是假的。当然,这是我们社会工程学环境的一部分。他们通过一封邮件让你输入用户名和密码,邮件称你的花旗银行信用卡已被锁定,需要登录。然后他们将你带到一个不是花旗银行的网站上。幸运的是,进行网络钓鱼类型攻击变得越来越难,因为许多公司都有独立的应用程序,用户可以迅速确认这些信息。
-
连接:你的设备是否总是连接到蜂窝网络、Wi-Fi 网络、蓝牙,或者是令人担忧的近场通信(NFC)?
现在,让我们看看 OWASP 所列出的移动设备顶级攻击途径。
OWASP 的移动设备十大风险
开放网络应用安全项目(OWASP)每年发布移动设备的十大风险。M 代表移动,这个列表与 2016 年最终确定并发布的 OWASP Web 应用程序十大风险非常相似。请注意,OWASP 是一个非常好的资源,值得你跟随和学习(owasp.org)。让我们仔细看看这些风险:
-
M1: 不当的平台使用:此类别涉及平台功能的违规或未能正确使用安全特性。这可能是 Android 意图、平台权限、TouchID 滥用、钥匙串或其他未正确利用的移动系统安全特性。
-
M2: 不安全的数据存储:支持离线功能存在一定的权衡。开发人员必须仔细考虑哪些数据将存储在移动设备上,以及如何存储这些数据。移动应用程序应尽量避免将敏感信息存储在本地文件系统中,因为这可能导致攻击者在物理获取设备后获得访问权限。
不建议将任何敏感信息存储在本地文件系统中,但将其存储在 SQLite 数据库中可能稍微更安全一些。
-
M3: 不安全的通信:移动应用程序应避免使用不安全的通信方式,这些方式可能导致攻击者窃听或篡改传输的数据。这包括 HTTP、FTP、Telnet、WAP 和 GPRS(如果没有通过 SSL)。通常情况下,由于证书验证失败(例如自签名证书),无法建立 HTTPS 连接。在这种情况下,开发人员可能会选择接受风险并禁用 HTTPS 验证。
-
M4: 不安全的身份验证:移动应用程序应始终实施安全的身份验证方法。这包括在可能的情况下使用 OAuth 2.0,并实施强密码/密码策略,以便在几次失败尝试后锁定设备。支持单点登录的应用程序应仅与遵循安全最佳实践的受信任来源一起使用。
-
M5:加密不足:移动应用程序应始终使用标准的加密算法和实现。这包括对任何需要强加密的操作使用经过 FIPS 140 验证的加密技术。弱加密会增加数据泄露的风险,无论是故意还是无意的。
-
M6:不安全的授权:不安全的授权暴露数据,允许攻击者以认证用户的身份执行操作,并促使像不安全的直接对象引用等攻击的发生。
-
M7:客户端代码质量:移动应用程序的客户端代码永远不应被信任。恶意移动应用程序可以通过修改应用程序的功能,利用反射、改变执行流程、注入命令到命令流,甚至执行本地机器代码,轻易地利用客户端漏洞。开发者需要在接受移动应用客户端之前验证它们是否有效。可以使用移动应用扫描工具,如 Drozer,来测试这些漏洞。
-
M8:代码篡改:恶意移动应用程序可以利用动态代码加载来篡改原始应用程序。一些商业和开源的动态代码加载框架通常用于合法目的,但也使开发人员容易受到滥用。
-
M9:逆向工程:移动应用程序可以通过自动化工具或者手动方式,在反编译后检查应用程序的二进制文件进行逆向工程。
-
M10:多余的功能:攻击者会下载并在他们的环境中检查移动应用程序。他们会查看日志文件、配置文件,甚至是二进制文件,看看开发人员是否留下了隐藏的开关或测试代码。他们将利用这些开关和后台系统中的隐蔽功能来发动攻击。
现在,让我们来谈谈黑客攻击 Android。
黑客攻击 Android
首先,理解我们在黑客攻击移动平台时所面对的更大图景是很重要的。所以,让我们从了解 Android 安全环境开始。
Android 安全性
要理解任何类型的安全性,你需要了解平台底层的架构,因为它能告诉你设备上哪里存在漏洞。
Android 安全性像洋葱一样是分层的。让我们逐一看一下每一层。
Linux 内核层
像 Windows、macOS 等操作系统一样,Android 的第一层是 Linux 内核。
Android 使用 Linux 内核是因为它稳定——并且具有经过验证的驱动集。Linux 内核在硬件与设备之间创建了一个接口,无论是显示器、设备上的相机、USB 端口、网络端口、屏幕上的键盘、蓝牙、Wi-Fi、声音还是电源功能,所有这些设备都可以通过这个架构层直接由操作系统支持。
库层
这一层有一些内置的库,包括以下内容:
-
Surface 管理器:这个组件只是用来合成你在屏幕上看到的窗口。
-
Open 图形库 (OpenGL) 和图形库工具包 (GLKit):这两个组件管理 2D 和 3D 显示。这个基础设施的酷炫之处在于,应用程序几乎可以无缝地从 2D 切换到 3D。
-
媒体框架:这个框架允许你在显示屏上回放和录制多媒体(音频、视频或图片)。例如,我们的大多数编解码器都内置在这个框架中,如 MP3。所以,当你开机时,你可以立即拍照并查看照片。那是因为照片是 JPEG 格式的。你还可以下载 MP3 文件并立即收听;你无需下载和安装任何额外的编解码器。
-
FreeType:这个组件用于渲染我们的字体。你可以更改系统中显示的字体,包括其大小和类型。一些应用程序也会使用这个自由字体,让你可以在应用程序内部更改字体。
-
Open SSL:当我们与其他设备进行通信时,它为我们提供安全保障。
-
SQLite:这是一个数据库引擎。然而,它可能在 Android 设备上创建漏洞。我们在标准的 结构化查询语言 (SQL) 数据库服务器中看到的同类型漏洞,也有可能在某些情况下影响这些移动设备。
-
WebKit:这是一个开源浏览器,它是苹果 Safari 使用的引擎。
接下来,让我们谈谈运行时层。
运行时层
在这一层,我们有核心库和 Dalvik 虚拟机。它只是一个运行时层,包含了一组核心 Java 库。这使得应用程序开发者可以使用标准的 Java 编程语言来构建应用程序。
以下是最常见的运行时层的列表:
-
Dalvik 虚拟机:这是一个开源软件,名字来源于冰岛的一个渔村,创始人的祖先来自那里。它是一个虚拟机,经过简化优化,适用于移动设备,使得多个虚拟机能够运行,以支持多个应用程序。在 Android 系统中,我们会将每个应用程序放入沙盒中。它有较低的内存需求,并依赖底层操作系统进行进程隔离、内存管理和线程支持。
-
框架层:在这个层次,我们看到设备自带的核心应用程序。例如,T-Mobile 可能会加载一些默认的应用程序,这些应用程序是专为其环境设计的,例如 TouchWiz,这是他们在 Android 上加载的界面。
-
活动管理器:这个管理着应用程序的生命周期。这包括启动和运行应用程序。如果应用程序因为我们切换到另一个应用而暂停,它也会管理暂停状态。如果应用程序一段时间没有使用,还有停止状态,并且在活动管理器决定该活动不再需要时,会进入销毁状态,将资源移除。
-
窗口管理器:这是我们在屏幕上看到的内容。所以,有一个组件为我们管理这一切。
-
包管理器:这个用于跟踪我们安装了哪些应用,以便进行更新或卸载某个应用程序。
-
电话管理器:这个负责管理你的电话。如果你开发了一个应用,当你点击某个联系人时,看到他们的电话号码,并且当你点击电话号码时,需要拨打该电话,那么这个应用就是在调用电话管理器。
-
资源管理器:这个管理着应用程序可能使用的资源。
-
内容提供者:它管理应用之间共享的数据,从而让我们在环境中体验到无缝衔接。例如,我们的一些默认内容提供者包括通话记录,它提供未接来电、通话详情和通话时间。地址簿或用户词典也是内容提供者。当你开始输入时,默认的用户词典可能无法识别某个词汇,但你知道它是正确的词汇,有时你会点击标注“这是正确的拼写”的按钮。另一个例子是,当你安装 Facebook 时,Facebook 动态就是一个活动。当你点击照片按钮时,你可能会调取内容提供者进入 Photoshop 画廊,这样你就可以通过 Facebook 应用分享照片。
-
位置管理器:这是由你的 GPS 和可能的手机塔使用的框架,用来确定某人所在的位置。例如,我可以通过应用程序查看我的孩子们的位置。他们不需要开启 GPS—它通过手机塔进行三角定位。
-
视图系统:这就是字面意思,我们看到的应用程序和窗口的不同视图。它通过窗口管理器进行大量的通信。
-
通知管理器:这个应用程序会在我们错过电话或短信时通知我们。
接下来,让我们看看应用层。
应用层
这里我们可以看到如主屏幕、联系人、内置应用、电话和浏览器等内容。当你将其他应用添加到设备时,它会在这个层级添加它们。它通过框架、库和运行时与设备交互,以执行我们希望设备完成的任务。
现在,让我们接着看近场通信(NFC)攻击。
NFC 攻击
我喜欢 NFC。作为攻击者,我可能会寻找合法的 NFC 标签。我可能会创建一个标签并将其放置在商场或超市的标牌上,或者撕下原标签并用我的标签替换它。通常,用户只需轻触或扫描标签即可获取信息。我可以将他们引导到一个包含 WebKit 漏洞的恶意网站,例如1759。任何扫描该标签的用户都会导致设备被 root 并被攻击。
中继攻击
执行中继攻击所需的只是两个设备,一个充当令牌,一个充当读卡器。它们通过代理通道建立连接,通常是通过蓝牙,但也可以是 Wi-Fi。这使我们能够在更远的距离上中继信息。代理读卡器随后用来与真正的令牌进行通信,而代理令牌则放置在真实读卡器附近。令牌假设它正在与读卡器通信,并做出相应回应。然后,该回应被中继回令牌代理,令牌代理将信息传输回读卡器。
黑客技术
让我们讨论一下作为一名道德黑客,你可以使用的一些技术,以便获取设备、网络和系统的访问权限。
Rooting
提到 root 权限时,我们通过提升特权来获得设备的 root 访问权限。Rooting 允许你进行各种自定义设置,包括调整配置、加载自定义操作系统,甚至提升性能。我会 root 我的设备,以便去除大多数手机自带的垃圾软件,但我也理解这样做带来的风险。
就应用程序而言,它们受限于安全模型,这样应用只能访问自己的文件、外部存储或外部 SD 卡,并且只能访问在安装过程中请求的资源和功能。通过 root 权限,我们允许某些应用作为 root 用户运行。当这种情况发生时,安全模型就会崩溃,因为我们绕过了默认的权限设置。
不是所有应用都会自动使用 root 级别的访问权限。例如,Facebook 仍然会使用它需要的资源和信息。
Rooting 不应由心脆的人或不了解自己操作的人进行,因为你可能会砖化设备,或者让自己和公司面临额外的风险。
工具如 KingoRoot、TunesGo Root Android Tool 和 One Click Root 可以帮助你打开一些限制。其他选项包括通过Android 调试桥(ADB)或使用像 Phonesploit 这样的工具进行 root。
磁盘中间人攻击
当攻击者能够物理接触到设备并在其上安装恶意程序时,就可以执行此类攻击。这个应用程序无需通过官方应用商店下载,恶意软件可以通过任何方式安装,包括通过 USB 连接或无线网络。一旦安装了该应用,它可以利用 Android 操作系统中的漏洞,获取敏感数据。
Android 操作系统由两种存储类型组成:内部存储和外部存储。通常,Android 应用的内部存储是沙盒化的,而外部存储则旨在实现应用之间的文件共享,这使得其容易受到 MITD 攻击。
当一个合法程序尝试执行典型的升级时,攻击者会监控存储在外部存储上的数据,并通过编辑升级的源代码尝试修改、删除或替换应用数据。当恶意软件成功注入合法的应用更新时,用户应用会下载并执行恶意代码,从而使攻击者能够安装伪造的应用。
免提攻击
Android 应用可能会在无需任何权限的情况下捕获免提通话流量。通过硬件基础的运动传感器(加速度计),攻击者可以监听远程移动用户之间的免提通话。加速度计是大多数智能手机内建的硬件,任何应用都可以在不需要额外权限的情况下访问它。该运动传感器能够根据设备位置和速度的变化来监控设备的物理运动。这个内建传感器也可能捕捉到语音回响,因为免提扬声器与设备表面接触。
Tap 'n Ghost 攻击
有一种独特的攻击方式可能会悄悄盗取你的 PIN,而你完全没有察觉。Tap 'n Ghost 攻击利用 NFC 从你的手机中窃取 PIN。其工作原理如下:攻击者将他们的手机轻触你的手机,然后迅速取走他们的手机,避免任何事情发生。这个动作会向你的手机发送信号,打开一个特别的页面,让你输入 PIN。由于该页面只会出现极短的时间,大多数人不会注意到它。即使你注意到,你也没有足够的时间输入 PIN,因为攻击者已经收起他们的手机。
这种攻击曾在拉斯维加斯的 Black Hat 会议上由安全研究人员展示。他们展示了如何从运行 Android 的手机中窃取 PIN 码。随后不久,在 Defcon 大会上我亲身体验了这一攻击。幸运的是,我当时用的是备用手机,这样我可以拍照(这部手机没有任何账户或个人信息,我仅携带它在 Black Hat 和 Defcon 拍照)。那时,我正站在一旁,低头把刚买的书放进背包,一个人走过来,试图通过社交工程手段(不过很失败)问我:“你买了什么书?”当我转身看他时,我感觉手机在口袋里震动。我盯着他,拿出手机,他明显变得紧张。我说:“等一下”,他转身匆匆走开……我的屏幕上什么也没有显示(这就是黑客的操作方式),但我很好奇,既然手机没有 SIM 卡,且无线网络和蓝牙都关闭,为什么它会震动……哦,我忘了 NFC 功能!所以,是的,记得当你在其他手机附近使用手机时要小心。你知道我的座右铭……如果你不用,关掉它!
接下来,让我们谈谈如何锁定 Android 设备。
锁定 Android 设备
说到 Android 设备,有几件事需要我们关注。首先,了解应用商店的奇妙之处,以及应用程序是如何进入这些平台的,这一点非常重要。
应用程序的批准流程
这将是 Android 的一个短板,因为开发者支付一次性费用将应用上传到 Google Play 商店后,应用通常在一小时内上线。然而,Apple 会进行统计分析以检测 API 的任何不当使用。这导致应用程序的批准通常需要约一周时间。
此外,开发者需要支付 99 美元的开发者费用,这在某种程度上提高了进入 App Store 的门槛。Android 支持从未知来源安装应用程序。你能仅凭这一点看出问题所在吗?我们称这种行为为旁加载(sideloading)。这意味着用户可以从第三方应用商店安装应用程序。仅仅因为应用程序标称已签名,并不代表它真的已经签名,因为 Android 并不在乎是谁签署了该应用。然而,Apple 只允许用户从其 App Store 安装 iOS 应用程序。iOS 本身不支持旁加载,因此 iOS 内核通过仅执行由批准方签署的代码来强制实施这一安全机制。
当谈到你应该使用哪一个时,就像在选择开车和坐飞机之间做决定。如果我选择开车,我就冒着发生事故或被别人影响的风险。而坐飞机旅行要安全得多。类似地,苹果严格控制的做法带来了一个额外的好处——它减少了恶意软件的攻击目标——虽然这并不意味着它是无法被攻破的。然而,谷歌的做法提供了更多自由,但也伴随着更多的风险。
其他保护安卓设备的方法
这里有一个很好的清单,可以帮助我们保护安卓设备。请注意,这些清单不包括查看 移动设备管理 (MDM) 的内容。我们稍后会讨论这一点:
-
更新——不仅仅是操作系统,还包括应用程序。这里的真正重点是——几年后,你将不再获得来自制造商的操作系统升级支持。三星在 2022 年刚刚宣布,他们将把新设备的操作系统支持时间从 3 年扩展到 4 年。到了那时(或者如果你有一款老设备),你就必须进行升级了。
-
将用户信息添加到你的锁屏。我的锁屏看起来是这样的:
图 12.1 – 使用锁屏的用户信息
-
我需要谈谈杀毒或恶意软件防护吗?
-
如果设备是与他人共享的,请使用多个账户。
-
不要从任何来源下载 .apk 文件。是的,这包括种子下载!
-
使用设置功能中的必要选项加密你的设备。
-
阅读应用程序要求在设备上获取的权限。任何游戏都不应该访问你的联系人或电话号码。
-
在不使用 Wi-Fi 时关闭它……拜托!
-
我最喜欢的小窍门——卸载你不使用的应用程序。例如,当我不旅行时,我不需要 Uber,所以我会卸载它。等我需要它时,再重新安装。这也能提高设备的性能。
-
在不使用自己网络时,使用 VPN。我最喜欢的说法是,“不是你的网络?那可能不再是你的设备了!”
-
使用密码管理器。
-
在任何支持的应用程序上启用双因素认证。
现在,让我们转到苹果方面。
破解 iOS
现在我们已经讨论了如何破解安卓设备,让我们来讨论破解 iOS 及其产品的过程。
苹果架构
苹果是独特的,但像安卓一样,它也有多个不同的层级。
iPhone 操作系统 (iOS) 是苹果公司为 iPhone、iPad、iPod 和其他 iDevice 设备使用的平台。它是一个集成系统。苹果不允许在非苹果设备上实现 iOS。iOS 仅仅是硬件与应用程序之间的中介。
应用程序不应该直接访问硬件。相反,它们应该通过架构的多个不同层级进行访问。
核心操作系统
系统级别涉及内核环境、驱动程序和操作系统的低级 Unix 接口。iOS 提供了一套接口,用于访问操作系统的许多功能。当人们创建应用程序时,这些功能通过 libSystem 库进行处理。接口是基于 C 的,这使得我们能够控制诸如网络、BSD 套接字、区域信息、网络组件以及文件系统访问等内容。它还负责 DNS 服务和 Bonjour。
Cocoa 应用
这是一个重要的层次,是大多数开发者处理的主要层次。它负责我们在 Apple 平台上看到的标准化界面。它还负责文本工具包(text kit),该工具包负责文本的格式化方式——段落、列和页面。它还负责我们的推送通知服务。所以,我们可以推送文本通知,或者在图标上添加一个徽章,上面写着,“你有新的通知,收到了新的短信。”
媒体层
这个层次管理着与媒体和屏幕显示相关的多种技术——摄像头、音频、2D 和 3D。它使用 OpenGL 和 GLkit,负责 2D 和 3D 渲染。
核心服务层
这个层次有不同的特性,比如你的设备用来连接或发起与附近其他设备连接的点对点服务。这个功能主要用于游戏。
iCloud 存储
这个功能允许你编写应用程序,使得用户的文档和数据能够推送到 iCloud。
存在其他架构层次来支持 iOS,但这些是你在考试中需要关注的主要层次。
现在,让我们讨论越狱。
越狱
越狱不同于 root。越狱可以比作《黑客帝国》中的摩菲斯,他可以弯曲《黑客帝国》的规则来克服一些限制。他可以跨越高楼,但仍然可以在《黑客帝国》中被杀死。而 root 就像尼奥所做的那样,不仅可以弯曲这些规则,还可以打破它们。
越狱过程中发生了什么?
在越狱时,我们首先会移除苹果所设定的限制。大多数人越狱是为了能够做一些苹果不一定希望你使用的事情,比如加载苹果不允许的应用程序。苹果这样做有各种原因,包括市场营销问题,比如屏蔽弹出广告,因为一些游戏制造商或开发者通过广告赚钱。
我们可以通过加载一个具有 root 权限的自定义内核来实现这一点。
注意
在 iOS 中,root 权限的定义与 Android 中的 root 权限不同。一旦用户赋予自己这个控制权,他们就能够下载应用商店不允许的软件和应用程序。
它还允许定制,比如添加主题或扩展功能,这些是苹果不支持的。它还允许你解锁手机。这就是我们如何让 AT&T 版本的 iPhone 在 T-Mobile 网络上运行的原因。
越狱让你可以使用苹果认为你不应该使用的软件,其中最大的一个就是广告拦截器。
另一个很酷的功能是能够让 Hey Siri 变得不需要连接电源。通常,我们说“嘿,Siri”,iOS 会识别并执行免提操作和语音命令,但当你的设备插入电源时,通常会受到限制。好在有一个应用程序可以让你在设备插电时也能识别 Siri,或者你想移除一些应用程序或界面元素。这里有一个叫做 HideMe8 的应用,允许你隐藏应用、隐藏徽章、去除某些元素、定制日期文本,并更改锁屏界面。
Activator 也是一个很棒的工具。它允许你为手势和按钮按压分配自定义动作。所以,如果你想要启动 Facebook,你可以设置当我做三指滑动时启动 Facebook。你还可以设置如果我长按 Home 按钮,启动相机。定制化的可能性几乎是无限的。谈到 WinterBoard,它也允许你更改切换设置,以便你可以为你的 VPN 或个人热点设置切换开关。你甚至可以绕过绑定选项,使你的设备无论运营商是否允许绑定,都可以将设备变成热点,在运营商看来,这仍然是 iPhone 或 iDevice 请求数据。
记住,越狱时我们在修改设备的安全性,所以我们必须小心。如果你知道自己在做什么,可以尝试。我永远不会把越狱的设备交给我的亲戚或者那些不了解我对设备做了什么以及为什么这么做的孩子。
越狱的类型
有不同的越狱技术可以实现,具体如下:
-
无绑定越狱:这种类型的越狱有一个特点,即如果用户关机再开机,设备会完全启动,而且无需电脑协助,内核将会被打补丁。
-
绑定越狱:在这种情况下,每次设备重启时都需要一台电脑来打开设备。如果设备自己启动,它就不再是打过补丁的内核,会陷入部分启动状态。通过使用电脑,手机实际上是每次开机时重新越狱,这听起来可能有些麻烦。
-
半绑定越狱:当设备启动时,它将不再有打补丁的内核,因此无法运行任何修改过的代码,但仍然可以进行正常的功能操作,比如打电话或发短信。要使用任何需要修改代码才能执行的功能,用户必须使用越狱工具来启动设备并加载打补丁的内核。
现在,让我们来讨论三种类型的越狱。
三种越狱方式
理解你可以越狱设备的三种主要方式是非常重要的。我们将在接下来的子章节中讨论这些内容。
用户层漏洞
这是一个在 iOS 设备的内核启动后运行的软件。这个漏洞利用了系统应用中的一个漏洞。它允许用户级访问,但不允许 iBoot 级访问。这些类型的漏洞不能被连机,因为没有任何东西能够导致恢复模式循环。这些类型的漏洞可以并且已经被苹果修复。
iBoot 漏洞
iBoot 漏洞允许越狱、用户级访问和 iBoot 级访问。这是一个可以在设备拥有新的启动 ROM 时半连机的漏洞。这个漏洞关闭了代码签名并运行一个程序,帮我们完成所有工作。这个漏洞可以通过一些固件更新进行修补。
启动 ROM 漏洞
这个漏洞利用了安全 ROM 中的一个漏洞,而安全 ROM 是第一个启动加载程序。它禁用了签名检查,这可以用来加载补丁或固件。固件更新无法修补这些类型的漏洞。启动 ROM 漏洞允许用户级访问和 iBoot 级访问。唯一能修复这个漏洞的方法是苹果更新启动 ROM 的硬件。
锁定苹果平台
就苹果平台的锁定而言,尽管越狱设备可以打开苹果不希望你访问的各种选项,但你只需要知道这些选择可能带来的后果,因为我现在可以远程访问设备。从攻击者的角度来看,想一想这个问题。
对我来说,最大的问题仍然是物理层面。如果攻击者获得了对任何设备——无论是苹果、安卓,还是 PC、笔记本或服务器——的物理访问,我们需要考虑在移动这些设备时可能带来的风险。我们需要加固安全防范:
-
设置设备的密码锁。我知道这是一个"废话,Dale"的说法,但我还是需要说一下。
-
不要侧载应用程序。
-
禁用网页浏览器中的 JavaScript 和插件。
-
不要将敏感数据存储在任何客户端数据库中。
-
如果你越狱,请将默认的 root 密码从"alpine"更改。
-
配置“查找我的 iPhone”功能,在设备丢失或被盗时擦除数据。
-
更新,更新,再更新。这包括操作系统、应用程序和任何插件。
-
禁用 iCloud 服务,以防止敏感的企业数据备份到云端。
-
启用询问是否加入网络,这样你就能连接到恶意无线网络。
-
启用“尝试 10 次后擦除数据”功能。
-
关闭 Siri。她不需要监听并记录你说的内容或你公司讨论的内容。
-
顺便说一下,关闭语音拨号。如果启用了语音拨号,并且攻击者获得了设备的物理访问权限,他们可以在不输入密码的情况下访问你的手机。
-
关闭一些与安卓设备看到的相同保护措施。这包括关闭安全网络、双因素认证、设备加密、避免使用公共 Wi-Fi 以及停止点击电子邮件链接。
现在,让我们探讨 MDM。
移动设备管理
MDM 是一种软件,监视您所有的移动设备,使我们能够部署安全的智能手机、平板电脑、台式机和笔记本电脑。
MDM 在企业内外优化和自动化设备的功能和安全性。我们可以控制诸如允许在哪里分发应用程序、数据存储在哪里、设备如何配置、安装哪些补丁以及如何处理已被破坏的设备等事项。要不就干脆射杀它,让它免于痛苦?
移动设备管理(MDMs)与框架一起工作,每个设备制造商都有一个注入到 MDM 中的框架。MDM 通常具有移动设备管理员可以在这些设备上控制或强制执行的策略或功能。
这些策略和功能的组合形成了框架。安卓、黑莓和苹果提供了 MDM 框架,允许管理员和 MDM 供应商简单地链接到他们的设备。
有无数不同的 MDM 软件解决方案,但这些是大公司:
-
AirWatch:这是由开发 VMware 的同一团队处理的。
-
System Center Configuration Manager:这是由微软提供的,支持移动 Windows 平台、安卓和 iOS。它需要一个额外的组件 Intune,这是一个月度订阅,让您能够在设备不在您的网络基础设施内时管理它们。Intune 充当您的代理。它与互联网连接,您的设备连接到它,然后将其传递回您的系统中心配置管理器。
-
Spiceworks:这是完全免费的,不需要太多配置或服务器。
这里的整体概念是确保您在支持组织发行的设备以及控制自带设备(BYODs)方面有一些选择。在保护资源的同时控制个人设备是一条微妙的界线,但我明白,对大多数公司来说这是一个节约成本的问题,同时也是员工不得不携带两台相同设备的烦恼问题。哦,我可以对自带设备及其不使用它们的原因发表意见,但那将是另一本书。
现在,让我们谈谈指南的重要性以及您可以使用的一些酷工具。
指南和酷工具
谈到指南时,我想不出比加勒比海盗的巴博萨船长的话更好的短语了,“这个规则更像是“指南”而不是实际规则。”
在移动设备方面有一些很好的指南。让我们讨论其中一些:
-
应用程序:我目前看到的移动平台上最大的问题之一是人们加载了太多应用程序。
-
照片:要小心自动上传照片到社交网络。当我为社区做演示时,特别是为家长时,我谈到我们分享了太多信息。有时,我们甚至没有意识到。我们在 Facebook 上发布照片而没有查看照片。背景中有什么?你是否暴露了你的地址或其他个人或家庭信息?小心不要透露太多信息。
-
控制:你能控制这些设备吗?如果失去了控制,就是时候把它们带回办公室重新关联了。
-
安全评估:对设备、应用程序及其架构进行安全评估。
-
可信应用程序:只从可信位置安装应用程序。我经常侧载一些有用的应用程序到我的平板电脑上。
-
位置:除非有支持应用程序的组件,否则不要添加任何基于位置的功能。如果不需要,不要加载谷歌地图。我知道大多数 Android 设备都预装了这些应用程序,但你也需要小心那些想要查看你位置的应用程序。只有在必要时才允许。
-
蓝牙:如果不需要,关闭蓝牙,特别是在旅行时。你还会获得一点额外的电池寿命。
-
连接到不同网络:不要同时连接两个网络,比如 Wi-Fi 和蓝牙,因为攻击者可以利用一个网络从另一个网络中获取信息。
-
备份:备份并检查设备同步的频率,特别是如果它们在你的网络之外同步。
-
密码:使用强密码。
-
空闲超时:设置空闲超时,当手机不使用时自动锁定。我按下电源按钮时,我的手机会自动锁定。
-
锁定和擦除功能:利用锁定和擦除功能。如果有人连续四次输入我的代码错误,我的设备就会被擦除。
-
越狱和 Root:EC Council 的最佳实践是永远不要允许 Root 或越狱设备。然而,我喜欢 Root 我的设备,因为当 Android 的 Stagefright 出现时,如果我没有 Root 我的设备,我就得等三星发布修复程序。然而,因为我运行自定义 ROM,那个 ROM 的作者只用了 2 天就发布了补丁,我能够重新部署并锁定设备。
-
更新:保持所有应用程序和操作系统本身的更新。然而,审查所有更新想要实现的更改 - 不要点击全部应用;你可能会降低设备的安全性,因为应用程序可能悄悄添加一个新游戏,新补丁让它们可以访问你所有的联系人。
-
硬件加密:这就像在 PC 上加密硬盘。如果有人偷走了你的 PC,而他们不知道启动时要输入的加密密钥,他们就无法获取数据。
-
MDM:审查您的 MDM 政策。这涉及到变更管理的道路,因为当您制定这些政策时,您需要确保各部门完全同意什么是允许的,什么是不允许的。
-
Emails:过滤电子邮件转发障碍,因为我们大多数的恶意软件都是通过电子邮件传播的。我们想要这些传向我们设备吗?一些较新的电子邮件服务器使过滤变得容易。您可以设置一个过滤器,只允许内部生成的电子邮件转发到移动设备 - 不要转发广告商的电子邮件。
-
浏览器:加强这些设备上的浏览器。这包括权限规则,以确保当有人访问这些设备上的页面时,他们不会被注入一些代码,这些代码将对它们进行越狱或获取 root 权限。
-
已签名的应用程序:只使用已签名的应用程序,意味着它们已经被应用商店签名,或者已经为内部使用签名。
-
擦除数据:设置擦除数据以防止人们猜测设备上的密码。
-
自动锁定:确保已打开自动锁定。
-
备份位置:制作备份并将其放置在安全位置。
-
密码:要求输入密码。研究表明,人们在字母之后使用模式,给攻击者带来了便利。他们需要几次猜测,从首字母开始。
-
软件维护:制定一个软件维护计划。如果有一个应用程序在 90 天内没有使用,那么您可能不需要它。
-
沙盒数据和应用程序:如果您是开发人员,请将数据和应用程序隔离以避免交叉感染。
-
Wi-Fi:始终确保有人必须请求加入。Windows 10 允许设备自动加入已知的 Wi-Fi 接入点 - 不是你知道的那些,而是微软知道的那些。这很危险。
-
Emails:不要允许电子邮件被缓存。即使你已经删除了邮件,它仍然在缓存中。如果我得到那个设备,我将能够阅读那些信息。
-
数据:作为公司,决定数据是否可以离开环境。我们是否允许人们通过电子邮件发送工资单电子表格,以便布鲁斯·韦恩可以在他的设备上打开电子表格?为什么不使用更新的技术,比如共享文件选项,我不会给你发送文件的副本?相反,我给你一个 URL 链接回到我们的 SharePoint 服务器或者回到一个 Dropbox 位置。这样,我就不会让文件离开环境。
-
谷歌:当涉及到 Android 时,注意谷歌正在备份什么,他们正在存储什么,他们正在缓存什么,以及他们正在收集的所有数据。
-
通知:关闭锁定屏幕上的通知,这样某人必须解锁才能看到它们。
-
关闭自动填充:这是关于方便性。这样做的挑战在于,如果攻击者能够访问计算机,它将成为一个责任,因为攻击者可以轻松地获得对许多东西的重要访问权限。
-
用户:你可以做的最好的事情之一就是培训你的用户如何使用这些设备,以及什么是可接受的,什么是不可接受的。确保有书面政策,让他们理解如果违反了政策会有什么后果,并且在他们违反时,严格执行这些后果。
-
超时:如果用户远程登录,你允许他们保持不活动状态多长时间,直到会话超时?不断输入用户名和密码很烦人,但不要缓存域密码。这就像在 Facebook、Twitter 和 Google Plus 上公开所有密码一样鲁莽。
好的,现在有谁对移动设备的看法发生了些许改变?
总结
重要的是要记住我们正在经历的转变,因为越来越多的事务是在移动设备上完成的,而不是在台式机和笔记本电脑上。由于这些设备的移动性,我们必须为自己做好准备,了解如何最好地应对移动平台带来的独特挑战和漏洞。在这一章中,我们提供了如何准备攻击和保护自己在移动平台上安全的概述。我们回顾了在黑客攻击移动平台时必须了解的关键术语。我们还讨论了黑客攻击 iOS、Android 以及其他移动平台,最后介绍了 MDM 的重要性。
在下一章中,我们将介绍如何破解 Web 服务器和 Web 应用。
问题
在我们总结时,这里有一份问题列表,帮助你测试自己对本章内容的理解。你可以在附录的评估部分找到答案:
-
加密移动设备有哪些优势?
-
发送到网站的数据受到保护
-
恶意软件防护
-
防止被盗设备
-
丢失或被盗设备上的数据安全
-
-
越狱手机是什么意思?
-
移除系统中的 DRM
-
从计算机中去除勒索软件
-
从网络中移除设备
-
通过获取 root 权限来控制设备
-
-
Android 基于哪个操作系统?
-
Windows
-
Linux
-
OS X
-
macOS
-
-
根植设备对安全性的影响是什么?
-
它改善了安全性。
-
它被加固了。
-
它减少了安全性。
-
没有变化。
-
第三节:云计算、应用程序和物联网攻击
本节内容介绍了将提供计算服务的技术,如在线商业应用、在线数据存储和网络邮件,结合在一起,呈现出一个新的攻击向量,这需要引起重视和审视。
本书的这一部分包括以下章节:
-
第十三章,黑客攻击 Web 服务器和 Web 应用
-
第十四章,黑客攻击物联网和操作技术
-
第十五章,云计算
-
第十六章,使用加密技术
-
第十七章,CEH 考试练习题
第十三章:攻击 Web 服务器和 Web 应用程序
攻击 web 服务器和 web 应用程序的目的是寻找并发现潜在的漏洞。它帮助我们识别需要升级的软件,从而提高安全性,帮助我们识别并应对任何恶意活动。此外,随着网上交易的增多,包括购物、银行业务和通信,web 应用程序为我们提供了一个额外的途径,来获取个人的登录凭证、私人信息和财务数据。
本章将涵盖以下主题:
-
为什么 web 服务器会产生安全问题
-
架构类型
-
对服务器和应用程序的威胁
-
web API、web shell 和 webhook 的漏洞
-
检测 web 服务器的攻击尝试
让我们首先讨论为什么 web 服务器会给我们带来安全问题。
为什么 web 服务器会产生安全问题
重要的是要理解,web 应用程序和服务器本身并不是安全的。事实上,它们从未被设计为安全的——它们是为了功能性和提供服务而设计的。确保它们安全的责任在于我们,作为系统管理员、开发人员和安全专业人员。
这就是为什么攻击者将注意力集中在 web 服务器和 web 应用程序级别攻击上的原因——因为托管 web 应用程序的 web 服务器可以通过互联网随时随地访问。这使得 web 服务器成为一个有吸引力的目标。配置不当的 web 服务器可能会在即使是最精心设计的防火墙系统中也创造出漏洞。攻击者可以利用已知漏洞的配置不当的 web 服务器来危及 web 应用程序的安全。此外,具有已知漏洞的 web 服务器即使托管的 web 应用程序本身是安全的,也可能危害组织的安全。
web 服务器上的每个开放端口都是潜在攻击的入口,尤其是当它托管使用 HTTP 和 FTP 等协议的应用程序时。操作系统必须通过确保进程拥有足够的资源来正常运行,以保护应用程序免受**拒绝服务(DOS)**攻击。这些操作系统安全特性的真正问题在于,它们也可以被用来攻击应用程序。在操作系统及其应用程序上添加插件、附加组件和它们的配置,为攻击者创造了一个完美的攻击环境。
在你开始尝试攻击 web 服务器之前,了解它们是如何工作的非常重要。
web 服务器有三个主要组成部分:
-
web 服务器软件,这是我们想要攻击的目标。
-
网站内容/文件需要以特定格式存放,以便 web 服务器能够访问和读取它们。
-
操作系统本身。
每个 web 服务器本质上都以相同的方式工作;它接收到用户的请求,然后尝试找到他们需要的文件。接着,它读取文件并将其发送给用户,以便他们可以查看。
每个网页服务器背后都有一款名为 HTTP 守护进程/服务/服务器的软件。根据服务器的不同,名称也有所不同。Apache/httpd 是基于 Linux 的服务器中流行的 HTTP 守护进程,而 Internet Information Server(IIS)则是 Windows 服务器中流行的守护进程。
HTTP 守护进程本质上在后台运行,默认通过端口80接收用户的请求。因此,每次你在浏览器中输入 facebook.com,你的计算机会向 Facebook 网站服务器发送请求,以查找需要显示的文件,以便你能够查看该页面。
查找这些文件的过程被称为将 URL/域名映射到服务器上的特定目录、索引等。然后,当用户尝试访问某个文件时,它会将文件名映射到已经映射到该 URL 的对应路径。
这些网页服务器还包含安全功能,例如限制每个进程可以访问的物理内存量、阻止未经授权的代码执行,以及确保某些文件类型无法被执行。
现在,让我们讨论一下网页服务器的组成部分。
网页服务器的组成部分
首先,我们有 文档根目录。这个目录是存储所有网页内容/文件的地方。例如,如果你的文档根目录中有一个 images 目录,所有图片都可以通过 wayne-technologies.net/images/ 进行访问。
当用户使用 URL 请求页面时,例如 wayne-technologies.net/,它会将该 URL 映射到文档根目录,然后在该文件夹中查找与该 URL 匹配的文件。这就是将 URL 映射到文件和文件夹的过程。如果找到了匹配项,它会将该文件的内容发送回用户,以便他们可以查看。
如果未找到匹配的文件,将会搜索并返回一个索引文档,例如默认页面或 index.php,如果找到的话。
如果没有索引文档,服务器通常会返回 404 错误给用户,表示找不到他们要找的内容。也可能返回重定向,告诉他们到其他地方查找此文件/内容。
其次,我们有 服务器根目录。这是目录树的顶级根目录,包括服务器的配置文件、错误文件、可执行文件和日志文件。它由服务器的实现代码组成。通常,服务器根目录包含四个文件。一个文件专用于服务器的实现代码,而剩下的三个是子目录 —— 即 conf、-logs 和 -cgi-bin —— 分别包含配置数据、日志和可执行文件。
第三,虚拟文档树。除了存储内容的物理目录树外,HTTP 守护进程软件还维护着一个虚拟文档树。虚拟树的目的是将 URL 映射到服务器文件系统中存储的文件;例如,它可能将 http://wayne-technologies.net/images 这个 URL 与服务器文件系统中的实际目录 /var/www/images 关联。
第四,虚拟主机。这就是您可以在一台 web 服务器上托管多个域名/网站的地方。例如,您可以拥有主域名 www.wayne-technologies.net,然后要添加另一个站点,您需要创建一个子域名,比如 blog.wayne-technologies.net,并将其指向相同的文档根目录,从而将所有内容都保持在一个服务器下分开。使用这种方法,您还可以在一台 web 服务器上托管无限数量的站点。然而,请记住,每个子域名都需要唯一的密码/凭证以防止未经授权的访问。
第五,web 代理。web 代理是一个作为中介的域名,位于您的计算机和您试图访问的网站之间。当您输入一个地址时,它会通过代理 DNS 服务器,然后将请求转发到您请求的网站的 IP 地址。响应通过代理服务器返回,这样就无法追踪到您。web 代理用于帮助隐藏您的 IP 地址,任何试图追踪请求的人都会得到一个不同的 IP。
接下来,我们将讨论您可能会遇到的不同类型的架构。
架构类型
Web 服务器架构是 web 服务器的整体布局。它为攻击者提供了如何准备和部署攻击的思路。让我们讨论一下您可能会遇到的最常见的 web 服务器架构。
IIS web 服务器架构
让我们来看看一个典型的 web 服务器架构及其应用,如下图所示。这是基于开源架构的。正如您所看到的,支持一个应用程序需要涉及许多活动的组件和部分。web 服务器设计用于在一台系统上托管多个站点,这增加了复杂性。您的黑客警觉性是不是已经升高了?应该是的。每当我们谈到复杂性时,就意味着存在更多的错误区域、忽略的设置或被遗漏的攻击途径:
图 13.1 – 一个典型的开源 web 服务器架构及其应用
开源 web 服务器架构
三个最受欢迎的开源 web 服务器是 Apache httpd、Nginx 和 lighttpd。它们的主要组件如下:
-
Apache,旨在成为一个安全、高效且可扩展的服务器
-
MySQL,适用于存储数据
-
PHP 是一种广泛使用的通用脚本语言,特别适合网页开发,可以与 MySQL 进行交互,以检索和存储数据。
接下来,我们来看看微软世界中的一些挑战。
微软
微软的互联网信息服务(IIS)是全球使用最广泛的网页服务器软件,已累计下载超过 8 亿次。IIS 灵活、安全,且使用 HTTP/HTTPS、FTP、RTSP、SMTP 等协议进行托管非常简便。微软使用的应用程序池是 IIS 中的一个非常有用的功能,它允许管理员为运行在80 端口或任何其他端口的应用程序设置不同的资源限制。
为什么你需要关心设置用户帐户和应用程序池呢?管理员可能有很多原因希望为网站配置独立的身份,或设置应用程序池来运行相同网站的独立版本。
举个例子,假设你运行一个非常繁忙的网页服务器,上面托管着两个独立的网站,一个是用于你的业务,另一个是为客户的新产品发布做的营销网站。理想情况下,每个网站都应该在各自的凭据下运行,并拥有独立的应用程序池。业务网站可能需要更多的处理进程,而营销网站可能需要更多的内存和处理器速度来处理大量的流量。在传统服务器上,这些需求可能会产生冲突并导致问题。而使用 IIS 和应用程序池,你可以轻松地为每个网站配置用户帐户和资源分配,确保它们不会互相干扰。
那么,安全性如何呢?
听着,我不是在告诉你微软的 IIS 是不可破解的——恰恰相反。它的历史在被黑客攻击方面相当复杂,但它已经取得了很大的进步。
用于运行网站的应用程序池有默认设置,模仿了原始 Windows Server 2003 版本的 IIS。除非管理员更改设置,否则不会有匿名用户(这正是黑客所需要的),也没有直接访问网站根目录的权限(我们稍后会谈到这个)。通过应用程序池,你可以设置具有有限权限的匿名用户,或者创建另一个受限帐户,就像我们之前为你的营销网站提到的那样。这样,如果某个网站被攻破,黑客就无法进入另一个网站,因为它们运行在完全不同的安全设置下……理论上如此。再说一遍,尽管存在众多攻击途径,微软仍然忙于修补 IIS,但 Linux 和 Apache 同样面临类似问题。
让我们进一步了解为什么网页服务器会被攻破。
为什么网页服务器会被攻破?
黑客攻破网页服务器的最常见原因如下:
-
网页服务器常被用作攻击其他应用程序的攻击发起点。
-
当攻击者突破网络中的一个系统时,他们往往能够利用该系统的访问权限自由移动,并访问可能存有敏感数据的其他系统。这被称为特权提升。
-
攻击者通常能够利用网络服务器软件中的漏洞来突破系统,因为开发人员在编写代码时容易出错,或者他们可能会留下后门和调试选项。攻击者可以利用这些漏洞和配置错误来控制系统。
现在,让我们来谈谈添加网络应用程序以及如何更加安全地进行此操作。
添加网络应用程序
网络应用程序正变得越来越容易受到更加复杂的威胁和攻击向量的影响,这使得它们变得不那么安全。在本节中,我们将向你介绍网络应用程序和攻击向量,以及如何保护组织的信息免受它们的侵害。网络应用程序黑客攻击是大多数攻击者用来入侵系统的常见方法。
防止网络应用程序被黑客攻击的最佳方法是避免拥有一个脆弱或不安全的网站。你可以通过在部署站点之前评估代码和设计实践来实现这一点。
一个需要在部署前确保代码安全的绝佳例子是 Yahoo! Voices 的事件。开发者在将输入插入数据库之前没有对其进行转义。结果,黑客能够访问网站上超过 45 万篇未发布的文章。
现在,让我们看看一些网络服务器和应用程序所面临的威胁。
对服务器和应用程序的威胁
这些技术可能会遭受哪些类型的攻击?首先,让我们从网络服务器开始。
注意
你会发现针对网络服务器和网络应用程序的攻击存在一些相似之处,因为一种攻击方式可能会为另一种攻击提供向量。
网络服务器攻击
当涉及到服务器本身时,攻击者可以通过以下方法之一对网络服务器发起攻击:
-
拒绝服务攻击(DoS):通过对网络服务器发起 DoS/DDoS 攻击,攻击者试图让服务瘫痪或使其对合法用户不可访问。网络服务器上的 DoS/DDoS 攻击通常针对一些高知名度的服务器,包括银行服务器、信用卡支付网关,甚至根域名服务器。
-
暴力破解攻击:在此攻击中,攻击者尝试使用用户名和密码的组合,直到找到有效的一个;这些攻击通常导致字典攻击。
-
DNS 服务器劫持:当攻击者入侵 DNS 服务器并修改其映射设置,将用户请求重定向到攻击者的恶意服务器时,就会发生 DNS 服务器劫持。因此,当用户在浏览器中输入真实的 URL 时,设置会将用户重定向到攻击者的虚假网站。
-
DNS 放大攻击:在这种攻击中,攻击者伪造目标的 DNS 请求,并将其发送到另一个开放的 DNS 解析器。目标 DNS 服务器随后将大型 DNS 响应发送到受害者伪造的 IP 地址。这可能导致大量数据包被发送到受害者的系统,进而导致系统过载并关闭。
-
目录遍历:这种攻击指的是攻击者通过绕过正常访问限制,获取对 Web 服务器上隐藏目录的访问权限,从而暴露本不应允许访问的数据。
-
中间人攻击:这种方法是攻击者在两个系统之间截取通信,而两方都不知道。攻击者拦截通信,并可以在将其转发给系统之前查看或编辑数据。
-
网络钓鱼攻击:这是一种攻击方式,攻击者设置一个假网站来欺骗用户输入敏感数据,如密码和信用卡信息。
-
SQL 注入:这是一种攻击类型,攻击者试图访问本应被禁止的 Web 服务器上的数据库信息。然而,如果 Web 开发者在与数据库通信时没有使用参数化查询,系统就会变得易受攻击。
会话初始化协议(SIP)和实时协议(RTP)用于互联网语音协议(VoIP)系统的通信,并且也容易受到此类攻击。
-
HTTP 响应拆分攻击:这是一种基于 Web 的攻击,攻击者通过在响应头中注入新行和任意代码来欺骗服务器。攻击者操纵输入参数,巧妙地构建请求头,促使服务器返回两个响应。通过在输入字段中插入头部响应数据,攻击者使一个请求看起来像两个请求。然后,Web 服务器会对每个请求作出响应。攻击者可以向易受攻击的应用程序提供恶意数据,应用程序将这些数据存储在 HTTP 响应头中。
-
Web 缓存投毒攻击:这种攻击通过 Web 缓存投毒使中间的 Web 缓存源变得不可靠。在此攻击中,攻击者将缓存内容更改为一个随机 URL,该 URL 包含恶意软件。当用户通过 Web 缓存请求所需的 URL 时,未察觉的用户可能错误地使用了被误认的内容,而不是正确且安全的内容。攻击者导致 Web 服务器的缓存清除实际缓存内容,并要求它存储一个精心制作的请求。因此,Web 服务器缓存上的所有用户都会收到有害内容,直到服务器清除 Web 缓存。如果 Web 服务器和应用程序存在 HTTP 响应拆分缺陷,就有可能发生 Web 缓存投毒攻击。
-
安全外壳 (SSH) 暴力破解攻击:攻击者使用 SSH 协议在两台主机之间建立加密的 SSH 隧道,以便能够在不受保护的网络上传输未加密的数据。大多数情况下,SSH 运行在 TCP 端口 22 上。攻击者将使用机器人扫描 SSH 服务器。一旦发现凭证,攻击者将利用这个强大的新主机作为基站,瞄准内部系统和/或扫描辅助服务器上的漏洞。
-
服务器端请求伪造 (SSRF) 攻击:攻击者利用 SSRF 漏洞,通过公共 Web 服务器向内部或后端服务器发送精心构造的请求。这些漏洞源于应用程序中的某些功能在公共 Web 服务器上的滥用。内部服务器通常通过防火墙来防止不必要的流量进入网络。SSRF 漏洞可以使攻击者从公共 Web 服务器发送精心构造的请求,直接连接到内部或后端服务器。
现在,让我们来看一些常见的 Web 服务器漏洞。
常见的 Web 服务器漏洞
Web 服务器可能配置了不必要的功能和服务,这些可能带来潜在的安全漏洞。这些功能可能包括包含敏感信息的文件,如包含数据库名称、用户 ID 和密码的配置文件和脚本。
一些最常见的配置错误包括以下内容:
-
文件和目录权限设置不当,或允许未经授权的访问敏感数据
-
未更新默认的用户名和密码,允许任何知道默认设置的人无密码访问系统
-
启用未使用的服务或账户,这些服务或账户可能是由错误或之前的攻击者留下的
-
启用不必要的功能,这些功能可能是为测试或开发目的安装的,但在网站投入生产后未被移除
-
管理员选择的密码不当,允许潜在攻击者成功猜测管理员凭证,从而使其不受限制地访问 Web 服务器本身
授权攻击
在这种情况下,攻击者找到一个具有有限权限的合法账户,登录该账户后逐步提升权限以访问受保护的资源。然后,攻击者通过修改与用户 ID、用户名、访问组、费用、文件名、文件标识符等相关的输入字段,操控 HTTP 请求,从而颠覆应用程序的授权机制。
HTTP 请求篡改
HTTP 请求篡改是指攻击者通过修改 URL 中的值来篡改客户端请求中的信息,从而伪造数据或窃取用户信息。这可以用来欺骗用户提供敏感信息,或伪造整个页面,使攻击者获得他们通常没有的特权。
大多数时候,HTTP 请求篡改用来更改 URL 中的隐藏值,如 HTTP_AUTHORIZATION,或已经随请求发送到服务器的 cookie。最常见的攻击类型包括 跨站脚本攻击(XSS)或 中间人攻击(MITM),在这些攻击中,攻击者拦截请求并在每个请求中发送不同的值。当这些攻击执行得当时,服务器会认为攻击者可以访问这些值(为了方便用户),而实际上只是攻击者在操控数据。
通过使用 HTTPS 和其他安全措施,可以轻松防止授权攻击。HTTPS 加密了传输的数据,从而防止中间人攻击拦截请求并修改信息。使用 HTTPS 时,身份验证始终存在,因此 XSS 或 cookie 注入几乎不可能在加密情况下发生。身份验证还可以防止无效令牌的篡改,因为令牌通常会在发送到服务器之前进行加密。
最重要的步骤是验证所有来自用户的请求的真实性,可以通过要求敏感页面进行身份验证并检查其他所有请求是否附带有效的令牌来实现。这将有效阻止任何类型的 HTTP 请求篡改攻击。
Cookie 参数篡改
Cookie 参数篡改是指有人篡改从客户端发送到服务器的 cookie 中的信息,通过更改单个 cookie 或多个 cookie 内的值。这可以用来欺骗用户提供敏感数据或窃取用户信息。大多数情况下,这种攻击涉及篡改会话 cookie,这些 cookie 通常是加密的并且对于每个用户会话都是唯一的。在大多数情况下,攻击者拦截请求,并在每个请求中发送不同的值,特别是针对用于访问受保护服务的 cookie。
Burp Suite (portswigger.net) 是一个非常好的工具,可以用来测试你的服务器和应用程序是否受到这类攻击的威胁。
接下来,我们来看看 Web 应用程序面临的潜在威胁。
Web 应用程序攻击
即使 Web 服务器已经安全设置或通过防火墙等网络安全措施保护,一个编写不当的 Web 应用程序或 Web 服务器本身也可能为攻击者提供进入 Web 服务器安全的通道。攻击者可以利用许多不同类型的攻击方式,针对那些不安全的 Web 应用程序进行攻击,从而突破 Web 服务器的安全防护。
SQL 注入攻击
SQL 注入攻击发生在开发人员未能正确验证用户输入,然后将其传入数据库时。攻击者可以将 SQL 命令注入到输入中,从而访问服务器上的敏感信息,如用户名和密码。
为了避免这个漏洞,开发人员应该始终使用特殊的转义方法对用户输入进行转义,以确保输入无法影响查询:
SELECT * FROM users WHERE UserID=2302 or 1=1
or 1=1表达式返回一个TRUE值,可以用来获取数据库中的所有用户 ID。攻击者发现 Web 应用程序中的漏洞,并利用该漏洞绕过正常的安全措施,直接访问有价值的数据。当黑客通过如 Web 浏览器的地址栏、表单字段、查询或搜索等方式进行 SQL 注入攻击时,黑客可以获取本不该属于他们的信息。各种命令可以用来修改数据、删除大量数据,甚至在 Web 应用程序中创建账户。
为了避免 SQL 注入攻击,有必要安全地存储 Web 应用程序数据。Web 应用程序数据应该具有正确的字符类型,以避免 SQL 注入攻击。此外,可以通过使用最基本的安全编程技术之一——参数化查询来防止 SQL 注入攻击。然而,它们仍然容易受到 SQL 注入攻击,因为有些人没有使用预处理语句。预处理语句是防止 SQL 注入攻击的最安全方法。
预处理语句是一种帮助防止 SQL 注入攻击的方法,因为它要求 Web 应用程序明确指出用户输入在语句中的位置。许多框架已采用这种方法来防止 SQL 注入,因此开发人员不需要担心这一问题。
然而,仍然有一些 Web 应用程序和开发人员没有使用预处理语句,可能会受到 SQL 注入攻击的影响,因此要保持警觉。
其他 Web 应用程序攻击
让我们看看其他一些你可以使用的 Web 应用程序攻击类型:
-
DNS 重绑定攻击:这是指黑客试图欺骗 Web 浏览器的 DNS 系统,查找一个不正确的 IP 地址。这迫使浏览器绕过防火墙,从而使黑客获得访问权限。
-
Cookie 嗅探:这些攻击发生在黑客通过嗅探 Cookies 窃取你的网站认证信息时。Cookies 在 HTTP 请求过程中经常被来回传送,因此它们包含了许多关于用户在网站上所做操作的重要信息。如果这些信息中包含敏感内容(如会话 ID 或用户身份识别信息),黑客就可以用这些信息远程登录该网站。
-
Cookie 篡改:在这种攻击中,攻击者在 Cookies 从 Web 服务器传输到浏览器的过程中进行篡改。换句话说,攻击者可以在 Cookie 到达用户浏览器之前改变其值。如果篡改后的 Cookie 具有任何未经授权的权限,那么攻击者在执行恶意任务时就可以获得这些权限。
-
混淆应用:攻击者通常非常小心,确保隐藏他们的攻击并保持低调。入侵检测系统(IDSs)会监视已知攻击的迹象,这迫使攻击者想出新的方法来保持不被察觉。这种攻击涉及攻击者加密攻击,使其看起来像是其他东西。
-
参数/表单篡改:这是一种恶意入侵,攻击者利用包含用于验证用户身份的参数的 Web 应用程序。这包括用户登录名和密码的表单字段。
-
跨站脚本攻击(XSS):这是某些 Web 应用程序中存在的一种安全漏洞,允许攻击者未经授权访问受害者的系统。攻击者可以通过向 HTML 表单注入恶意脚本或诱使易受攻击网站的访问者点击攻击者提供的链接来利用此漏洞。
-
会话劫持:这是一种攻击方式,攻击者窃取另一个用户的会话 ID,并接管其已认证的会话。通过控制受害者的浏览会话,攻击者可以在不知道登录凭证的情况下访问受害者的账户信息。
-
未经验证的输入攻击:这些攻击的目的是让攻击者能够向 Web 应用程序的前端提交数据。后端数据库无法处理这些信息,导致应用程序中出现意外行为。
-
目录遍历/命令执行:这是另一种 Web 服务器攻击,攻击者利用无法正确清理输入的 Web 服务器。如果攻击成功,攻击者可以读取敏感文件、列出目录内容、写入文件,并在底层系统上执行任意命令。
-
拒绝服务攻击:这是一种攻击,恶意方试图使计算机或网络资源无法为用户使用。例如,他们可能会尝试向服务(如 Web 服务器)发送过多的请求。攻击者还可能尝试发送恶意数据包,造成资源被占用或导致系统或应用程序崩溃。
-
SQL 注入:这就像我们在 Web 服务器攻击中看到的那样。
-
XSS 攻击:在这里,攻击者欺骗某人查看包含恶意脚本的页面。当用户访问此 URL 时,浏览器渲染包含恶意脚本的页面,这些脚本可能会向其他应用程序发送请求或在页面中嵌入恶意代码。
-
缓冲区溢出攻击:当应用程序试图向缓冲区写入超出其容纳能力的数据时,就会发生此攻击。这会导致多余的数据溢出,进而破坏其他数据。缓冲区溢出经常被攻击者利用。
-
源代码泄露:当攻击者获得源代码或其他可能帮助他们利用系统漏洞的信息时,就会发生这种攻击。这个威胁通常出现在产品开发、维护和测试阶段。
-
跨站请求伪造攻击:这种攻击迫使最终用户在他们当前已认证的 Web 应用程序中执行不需要的操作。最常见的例子是强制用户进行购买或转账。
-
命令注入攻击:这是一种攻击方式,攻击者将未经授权的命令注入到命令行中,这些命令将以运行它们的用户权限执行。如果攻击成功,攻击者可能获得操作系统功能的访问权限,或下载敏感信息。
-
凭证填充攻击:凭证填充是指在多个网站上尝试被盗用的凭证(用户名/密码)。大多数凭证填充攻击未能成功,但由于用户通常在不同站点使用相同的密码,因此监控这种活动可能是有价值的。这可能允许攻击者访问其他本不属于原始攻击的系统。
现在,让我们深入了解 Web API、Web Shell 和 Webhooks 的漏洞。
Web API、Web Shell 和 Webhooks 的漏洞
理解并熟悉 Web API、Web Shell 和 Webhooks 的漏洞非常重要。认识到最佳实践有助于提供更高的安全性。
Web API
网站最重要的部分之一就是其 Web 应用程序编程接口(API)。API 从服务器获取数据,并使其与另一个服务器兼容。通过这种方式,其他程序可以读取本来难以访问的信息。在 API 的帮助下,计算机应用程序可以在网站上执行操作,如发布评论。然而,API 必须是安全的,不能存在 XSS 等安全漏洞。
一些最流行的 API 如下:
-
SOAP API:这是一个由微软使用的标准,使用Web 服务描述语言(WSDL)。WSDL 是一种 XML 语言,包含有关如何与 Web 服务器通信的信息。
-
REST API:REST 代表表述性状态转移。这种类型的 API 更多的是一种软件架构风格,而不是一个实际的标准。它不包括 WSDL,但使用 HTTP 方法(GET、POST等)与 Web 服务器进行通信。
-
XML-RPC:这类似于 SOAP API,XML-RPC 是一种接口,而不是一个规范。它通过 HTTP 请求创建,数据格式采用 XML。
-
JSON-RPC:这是一种现代 Web API 标准,使用JavaScript 对象表示法(JSON)作为数据格式,并使用 HTTP 请求进行通信。
近年来,基于 Web 的 API 在支持不同类型的设备(如移动设备和物联网设备)方面得到了广泛应用。这些设备通常使用 API 与后端 Web 服务器进行通信。为了使这些 Web API 更容易使用,开发者往往会在安全性上有所妥协。这使得在线 Web 服务更加容易受到攻击。攻击者使用各种方法来发现并利用这些 API 的漏洞。想要攻击 API 的攻击者必须弄清楚所使用的 API 技术、所遵循的安全标准,以及他们可以攻击的地方。
现在,让我们讨论一些 API 安全最佳实践。
API 安全最佳实践
你应该采用适用于 Web 应用程序的相同策略。此外,你还应该设置速率限制系统,确保攻击者无法比合法用户更频繁地发起请求。你可能还需要监控日志,以检查来自机器人和抓取工具的请求,因为这可能表明攻击者正在试图收集有关你的应用程序或网站的额外信息。
以下是一些帮助你的关键要点:
-
使用 HTTPS 进行加密。
-
使用基于 IP 的白名单来访问 API。
-
监控并审查日志。
-
在 SQL 查询中参数化语句。
-
对你的 API 使用配额和节流。
-
限制 API 的请求体和长度。
理解安全标准也很重要。接下来我们将讨论其中的一些标准。
Web API 安全标准
API 和其他软件一样,也有安全漏洞。它们遵循像 OAuth 和 SSL 这样的标准,但也包含了许多攻击者可以利用的漏洞。如果这些标准配置不当,黑客就能利用它们。通常,Web 应用程序的开发者没有意识到使用 API 中的安全漏洞会带来后果。例如,他们可能会使用会话 ID 来识别用户,并允许访问网站或服务器上的信息,而没有意识到黑客可以轻松地通过授权用户的连接将欺诈流量重定向过来。管理员在测试 Web 应用程序的漏洞时,必须检查诸如 SSL 之类的安全标准。他们还应该审查 XSS 和 SQL 注入攻击,以防止未来对该 API 的攻击。
现在,让我们更详细地讨论一下网页 shell 和 Webhook。
Web Shell
Web Shell 是一种存在于网站或服务器上的后门,允许攻击者通过 HTTP/HTTPS 进行访问。它可以让攻击者上传和下载文件、执行系统命令、修改服务器设置、查看源代码等。通常,它是为了使网站或服务器的管理员更方便地使用或更安全而存在的。这类 shell 通常是通过 Web 应用程序中的漏洞上传的。
防止 Web Shell 的安装
攻击者可以发送一系列请求来在服务器上安装 Web Shell。这种攻击的负载看起来可能是这样的http://kali:1337/index.php?install_shell=1&language=…/…/…/…/…/etc/passwd%00。
为了防止这种情况发生,请确保应用程序具有强大的输入验证层,能够识别不同类型的上层输入负载。请注意,这只能防止安装 Web Shell - 如果攻击者已经通过其他漏洞获得访问权限,这并不能阻止他们查看系统上的任何文件。
以下是一个防止安装 Web Shell 的示例:
if (preg_match('/../../../../etc/passwd/', $_GET['install_shell']) ) {
// don't allow shell to be installed for this user }.
Webhooks
Webhooks 提供了两个 Web API 之间的通信渠道。这允许一个 API 从另一个 API 接收通知,因此信息可以在没有直接连接的情况下交换。Webhooks 很难被检测到,因为数据的来源并不总是清楚,除非它是一个 POST 请求或使用类似的标识符。如果你没有预期到这些请求,或者不知道如何处理它们,这些类型的请求可能会引起对你的 Web 应用程序的关注。
许多开发人员不明白 Webhooks 需要像任何其他 API 端点一样具有安全性:通过做看起来对特定情况正确的事情,很容易犯错误,这可能会使系统暴露于各种攻击之下。这些攻击包括中间人攻击、重放攻击和任意代码执行攻击。当 Webhooks 暴露给第三方时,如移动应用程序或其他外部服务,攻击的风险更高。可能可以将某些看起来正在执行这些类型攻击的 IP 地址列入黑名单,并在登录页面上实施 CAPTCHA 也会有所帮助。
检测 Web 服务器的黑客攻击尝试
有几种方法可以查明你的 Web 服务器是否被入侵。
第一种方法是监视来自 Web 服务器的日志。一个好的做法是拥有多个日志文件,但如果它们被监视并发送到一个单独的系统,那就更好了,这样如果当前 Web 服务器发生了什么事情,日志仍然可用。
另一种方法是审计 Web 服务器上的端口。确保所有打开的端口都有记录,并且不返回任何奇怪的响应。
你还应该查看 Web 服务器和用户之间的流量。如果你看到异常大的请求或文件下载,这可能是黑客攻击的迹象。
保护你的 Web 服务器/应用程序的其他方法
machine.config 文件指定了 Web 服务器上可用的资源,包括对文件、目录和注册表键的访问。限制对这些资源的访问,以防止任何虚假文件上传和其他危险请求。
你还应该确保所有其他应用程序都是最新的,以确保它们已经修补了可能在其中发现的任何漏洞。
接下来,保护用于您的密钥的任何证书。这是保护您的密钥的最简单方法。如果您不需要它们,请删除它们。如果可能的话,限制服务器上用户帐户的权限。这将阻止攻击者获得本地管理员访问权限。
同样,研究实施安全编码实践。如果您的网页没有安全构建,黑客将能够利用这个弱点并访问系统。
最后,一旦操作系统和其他应用程序的安全补丁发布,请立即安装。您等待的时间越长,您的系统就会有更多被入侵的机会。补丁管理是安全计算的重要组成部分。
现在,让我们来看看网络应用安全测试。
网络应用安全测试
网络应用安全测试是为了评估您所拥有的应用程序的性能和安全性。这些类型的测试应定期安排,以确保应用程序能够应对各种不同的攻击。
以下是如何开始进行网络应用安全测试的一些建议:
-
确定您希望通过测试学到什么。
-
确定对您的项目最重要的性能和安全问题。
-
在开始测试过程之前制定攻击计划。
-
执行您计划的测试。
-
查看测试结果并制定修复任何性能或安全问题的计划。
-
执行源代码审查。
-
评估编码方案。
欲了解更多关于这个主题的详细信息,请查看 OWASP 的测试指南,网址为owasp.org/www-project-web-security-testing-guide。
此时,我应该提到用于测试您的 Web 服务器及其应用程序安全性的最佳工具之一是 Metasploit。Metasploit 是一款开源渗透测试软件,允许用户发现系统和网络中的漏洞,并为这些漏洞创建利用。这个工具是一个框架,这意味着它是一个平台,允许用户轻松创建自定义工具,并使用不同漏洞的模块。
Metasploit 在黑客社区中受欢迎的原因有很多:它是免费的,并拥有庞大的用户生成的脚本、模块和模块化库。您还可以创建模块。
尽管 CEH 考试并未涵盖有关 Metasploit 的模块和插件的大量信息,但我强烈建议您了解这个令人惊叹的工具,以促进您的职业发展。我推荐的是Metasploit 5.0 for Beginners – Second Edition,由Packt Publishing出版(www.packtpub.com/product/metasploit-5-0-for-beginners-second-edition/9781838982669)。
在现实世界中,有很多攻击技巧和提示你应该注意。关于 Web 服务器/应用程序的黑客攻击可以写一整本书。然而,我们在这里的目标是覆盖你需要了解的考试信息。
摘要
在本章中,我们讨论了您可以黑客攻击 Web 服务器和 Web 应用程序的方法。这使您能够发现现有和潜在的漏洞。然后,我们讨论了为什么 Web 服务器和 Web 应用程序会产生安全问题。我们谈到了您可能遇到的不同类型的架构,并查看了无线世界给我们带来的一些威胁。之后,我们涵盖了一些您可以用于 Web 应用程序攻击的攻击。我们涵盖了 Web API、Web shell 和 Webhook 的一些具体漏洞和脆弱性。最后,我们讨论了一些我们可以检测 Web 服务器黑客攻击尝试并防止或限制攻击者可以做什么的方法。
在下一章中,我们将深入探讨黑客攻击物联网(IoT)(或者,正如我喜欢说的,威胁的互联网)和运营技术(OT)。
问题
最后,这里是一些问题列表,供您测试对本章内容的了解。您将在附录的评估部分找到答案:
-
以下哪种描述最能概括一个 Web 应用程序?
-
旨在在客户端运行的代码
-
数据库 SQL 代码
-
面向 Web 服务的目标
-
旨在在服务器端运行的代码
-
-
用于存储会话信息的是什么?
-
一个 cookie
-
一个目录
-
一个窥探者
-
一个文件
-
-
_________ 脚本语言用于客户端。
-
PHP
-
JavaScript
-
ASP.NET
-
ASP
-
-
以下哪种用于访问不位于网站根目录中的内容?
-
目录遍历
-
暴力破解
-
SQL 注入
-
端口扫描
-
第十四章:黑客攻击物联网(IoT)和操作技术(OT)
哇,我们生活的这个世界真是太神奇了。过去几年中,连接互联网的设备爆炸性增长。了解这些物联网(IoT)和操作技术(OT)设备,它们的功能以及为什么这些设备的安全性如此重要,对我们来说非常关键。说真的——我们需要掌握这项技术。你不相信我?那就去问一下那个被黑客通过恒温器入侵的拉斯维加斯赌场吧… 就是在一个鱼缸上!(mashable.com/article/casino-smart-thermometer-hacked)
在这一章中,我们将覆盖以下主题:
-
理解物联网(IoT)
-
物联网(IoT)攻击
-
用于物联网(IoT)的攻击方法
-
OT 和用来攻击它的方法
所以,让我们从理解物联网(IoT)开始。
理解物联网(IoT)
你一定在想——Dale,物联网(IoT),真有那么重要吗?我意思是,它不就是主要出现在家庭里吗? 其实,它出现在比你想象的更多的地方。我们开始看到,正因如此,这对我们来说是一个问题,因为我们在像供暖、通风和空调系统(HVAC)这样的设备中看到它。著名的 Target 数据泄露事件就是通过 HVAC 系统处理的。我们还在消防和安全系统、照明和交通工具中看到了它,这些都可能出现在办公楼、零售地点、教育、酒店、机场,甚至是体育场馆。
我们正在能源行业中看到这种现象的出现,例如风力发电机或涡轮机、电池、发电机、钻机以及其他可能用于切断电力或减缓电力流动的能源相关设备。我们还在消费品和家庭领域看到了这一现象。每当我看到一款具有互联网连接的新设备或家电时,我都感到惊讶。无论是游戏系统、警报系统、音响系统,甚至是灯光或锁具,这些设备大概率都能连接互联网。我甚至没意识到,我购买的洗碗机可以联系制造商进行故障排除。
我们还看到这一现象在工业领域的出现。例如,在矿业中,可以利用自动化技术进行资源管理,如实时资产追踪、预测性和预防性维护以及监控,这些都能检测到过度振动或温度升高,并预测故障时间和需要修复的部分。农业和灌溉系统也有自动化资源。我曾有机会与我居住的地方的一个当地市政府合作。我们将山上流下的水收集起来,存储起来,然后用于所谓的二次水。它被储存起来,然后分配到社区中,用来灌溉我们的草坪,这样我们就不需要用饮用水来灌草坪了。所有这些都通过自动化阀门来控制。自动化帮助我们节省成本,这也是它如此具有吸引力的原因。
我们还看到自动化逐渐进入安全和公共安全领域——无论是监控、追踪,还是紧急服务。物联网(IoT)正在迅速渗透,当然,我们也看到它在信息技术和网络领域的出现,涵盖了公共和企业两个层面。
一个可以访问医疗设备的攻击者可能会对我们造成真正的问题。让我们来看一个例子。我妻子恰好在一家大型零售电子商店工作。他们与几家医疗行业的公司合作,提供对老年人的监控服务,无论是通过监控服务还是他们的成年子女。自动化可以提供实时监控,例如床压传感器,这样我就能知道我父亲是否还没下床。这有助于我判断他是否可能感到不适。能够直接与老年人沟通非常重要。
我们也看到自动化出现在医疗植入物中,特别是在修改这些设备方面。我的女婿即将进行听力手术。他们将要放入他耳朵的设备将使他能够连接到婴儿报警器和烟雾探测器,以便他能清楚地听到它们,或者被通知发生了什么。所以,如果你之前没有意识到物联网已经影响了这么多领域,你会发现攻击者的攻击目标几乎每天都在增加——也许现在甚至是每小时增加。
让我们进一步了解物联网的工作原理。
它是如何工作的?
你可能会问自己——物联网是如何工作的? 好吧,你需要熟悉几个不同的组成部分。让我们从这些小设备的感应技术开始。可能它是一个门铃,或者一个温控器。它甚至可以是一个工业环境中的阀门,可以打开或关闭。
图 14.1 – 物联网设备如何互操作的示例
这些设备随后与被称为物联网网关的设备进行交互。这些网关用于桥接物联网设备与最终用户之间的差距。可以将它们视为物联网的中介。
接下来,我们有通信通道,即互联网。通过这个通信通道,我们的网关通常与我们称之为数据存储和/或云服务器的设备进行通信。
在这里,数据是在通过网关并到达云服务器后收集的。然后,这些数据会被存储和分析。根据具体的应用,这些信息可以发送到最终用户的远程应用程序,可能是在他们的智能设备上。因此,从攻击者的角度来看,攻击向量的可能性非常多,但我们将在本章稍后的部分详细讨论这个问题。
现在,让我们来讨论物联网的架构。
物联网架构
在物联网中,有不同的层次——或者说,我应该称之为组成部分——涉及到整个物联网环境。该架构由几个不同的层次组成,如下图所示:
图 14.2 – 物联网架构由多个层次组成
第一层被称为边缘技术层。这一层是所有硬件部分的所在,例如传感器、读取器、软件传感器或物理设备本身,以及射频识别(RFID)标签。如果你考虑我们部署的任何设备,这些设备都属于边缘技术层。这些设备的设计目的是收集信息,并将这些信息发送回云服务器或数据存储位置。
下一层我们称之为接入网关层。这一层是连接后端提供者和我们的边缘技术层(或设备)之间的桥梁。
接下来,我们有互联网层,它对我们来说非常重要,因为它是我们通信的方式。现在,根据制造商的不同,我们可以有两个不同的终端,例如设备到设备、设备到网关,甚至设备到云端。这个层次就是我们所使用的层。
我们还拥有所谓的中间件层,这是一个双向通信通道。此层位于应用层和我们所称的硬件层之间。其主要责任是数据管理,处理诸如数据分析、数据聚合、数据管理、设备过滤、设备发现,甚至是访问控制等问题,我们可以通过应用来控制谁有权访问这些设备。
然后,我们有应用层。物联网中的这一层负责确保不同地区和不同部门的用户能够获得所需的服务,以确保他们可以访问他们需要的任何东西。
这还不算太难吧?
现在,让我们来谈谈物联网所使用的协议和技术。
协议和技术
让我们将这些分解成不同的类别。
短程通信
让我们来看看一些可以供我们使用的短程通信资源。
Z-Wave
Z-Wave 是一种家庭自动化标准。它允许我们管理空调、HVAC 系统、恒温器和家庭影院等设备。我们可以通过这种方式控制从门锁到音响系统的一切。
ZigBee
这是一种短程通信协议,类似于 Z-Wave。这两种协议都可以视为网状网络,但 ZigBee 的优势在于,如果信号来自一个集中式的中心枢纽,每个设备都可以充当信号中继器。
有一个问题是信号传播的距离。对于 ZigBee,它的传播范围大约是 40 英尺。而 Z-Wave 在户外环境中可以达到大约 330 英尺,在室内空间通常约为 100 英尺。现在,ZigBee 的优势在于它理论上可以连接大约 65,000 个设备,而 Z-Wave 则仅限于 232 个设备。但对于我来说,一个更大的缺点是 ZigBee 使用的是标准的 2.4 GHz 频段,这个频段很多我们的无线设备已经在使用,而 Z-Wave 使用的是 908.42 MHz 频率。至于与设备和控制器的通信,两者都采用高级加密标准(AES)128 加密标准。要获得 Z-Wave 认证,这是必需的。
Wi-Fi
我们都知道 Wi-Fi 吧?Wi-Fi 的最常见标准是 802.11n,速度最高可达 600 Mbps,室内信号范围约为 150 英尺,室外信号范围约为 300 英尺(前提是没有障碍物)。
Wi-Fi Direct
这充当设备之间的点对点通信。在这里,一台设备充当接入点,另一台设备充当客户端。
射频识别(RFID)
RFID 非常流行,尤其是那些到处可见的小标签,你可以把手机放在标签上,它就会查找该标签代表的产品。在攻击方面,我们喜欢制造看起来像是用于做某事的 RFID,但实际上它们做的是完全不同的事情。我们开始看到 RFID 标签被用于宠物、家畜,甚至是汽车和药品上。
蓝牙智能或低能耗蓝牙(LE)
这只是蓝牙技术,但它旨在创建局域网(LAN)或个人网络。
光通信或 Li-Fi
听起来像 Wi-Fi,对吧?它非常类似于 Wi-Fi,但有两个主要区别。一个是速度(224 Gbps),另一个是它使用可见光通信(VLC)(是的,我知道你们中的一些人想什么——*那不是一个媒体播放器吗?*这些缩写我们得跟得上),但基本上,我们使用光进行通信。
近场通信(NFC)
这使用磁场在两个电子设备之间进行通信。例如,当你用 Apple Pay 或任何类型的移动支付方法购买东西,并把手机放下时,通常就是使用了 NFC 技术。
快速响应(QR)码
QR 码是那些大多数人都见过的方形条形码。它们可以存储比普通条形码更多的信息,但两者都会包含关于产品本身或其他可能附加到它们的产品的信息。
现在,让我们谈谈中程通信。
中程通信
让我们来看几个我们应该了解的解决方案,因为它们帮助我们进行中程通信。
HaLow
HaLow 在频率范围稍低于 1 GHz,这意味着它可以传输的距离大约是标准 Wi-Fi 的两倍,而且它使用 Wi-Fi 频道上的 900 MHz 波段。900 MHz 波段非常特别,因为它能够更好地穿透墙壁或坚固结构,不需要真正的视距。
LTE-Advanced
这是一个标准的移动通信频率,用于提供对标准 LTE 的增强,这意味着它提供更高的数据传输速率和更远的传输距离。在性能方面,这对我们有很大帮助。
长距离通信
让我们讨论一些可以用于长距离通信的资源。
低功耗广域网(LPWAN)
正如它的名字所示,它采用低功耗,这非常棒,但它的设计目的是提供一个在两个端点之间的长距离通信通道。
低功耗广域网(LoRaWAN)
这通常用于工业设备间通信或安全的双向通信。
SigFox 和 Neul
SigFox 和 Neul 非常相似,都是为电池寿命非常短的设备设计的。两者都工作在 1 GHz 以下,但 Neul 利用电视空白频段的小片段来提供高覆盖范围、低功耗和低成本的网络交换。
超小孔径终端(VSAT)
VSAT 是我们用于传输数据的另一种通信协议。我们通常看到小型卫星天线被用于这种通信方式。
移动通信
移动通信旨在提供高质量的数据,但它是有成本的——它很贵并且功耗很高。
现在我们已经讨论了无线通信的部分,接下来看看有线通信方面的内容。
以太网
我们大多数人应该对以太网比较熟悉。它用于将不同的设备连接到有线局域网(LAN)中,是最常见的局域网类型。
同轴电缆多媒体联盟(MoCA)
这里我们不是在说咖啡。这是一项技术,我们可以利用现有的同轴电缆将以太网信号转换到这些同轴电缆上。然后,另一端有一个转换器,将信号从同轴电缆上取下,并重新转换回以太网。我曾经使用类似的设备将以太网转换为 HDMI,用于长距离的 HDMI 传输。
电力线通信(PLC)
现在,这个非常酷。它通过我们家里/办公室的电力线路运行!我知道,对吧?这就是电线作为数据传输和电力来源的应用。
接下来,让我们讨论一些可以用于物联网的操作系统。
物联网操作系统
在本节中,我们将讨论物联网通常使用的操作系统。
ARM Mbed
是的,你可以看出它是“嵌入式”的缩写,不,我没有拼写错误。这是目前最常用的低功耗设备操作系统之一,通常应用于我们的可穿戴设备。
Zephyr
Zephyr 是一个用于资源低或受限资源的设备,以及低功耗设备的操作系统。
Ubuntu Core
Ubuntu 也叫做 Snappy,我们看到它被应用在无人机和网关上。这些可以在物联网和机器人中找到。
Apache Mynewt
这是一个设计用于运行在利用低能耗蓝牙协议的设备上的操作系统。
RIOT
我们在许多执行器板、传感器甚至嵌入式系统中看到这个操作系统。通常,这个操作系统非常安静,所以它是一个安静的暴乱。明白我说的意思吗?如果你不熟悉,这是一支 1980 年代著名的摇滚重金属乐队,你也可以去 Google 一下,不过别猛敲头去找它。好吧?我还是放弃我的白天工作,继续坚持写这本书。
Brillo
这是一个基于 Android 的操作系统,通常被视为嵌入式操作系统。我们将把它用于低端设备,如我们的恒温器。
实时操作系统(RTOS)
这些类型的操作系统运行极其快速;我们说的是毫秒级的速度。我们需要这些类型的操作系统,是因为在某些场景下,交互必须是即时的。例如,当你的汽车气囊弹出时,你不能等几毫秒,气囊才能展开来挽救你的生命。
两个最著名的 RTOS 包括 Nucleus 和 Integrity。Nucleus 和 Integrity 之间的主要区别在于,Nucleus 具有存储和数据库管理、USB 和网络功能以及多媒体支持。它还具有一些先进的图形用户界面(GUI)功能,而 Integrity 则设计用于更多的多核计算机。RTOS 通常用于军事功能中,例如联合打击导弹(JSM),该导弹最初为挪威皇家空军开发。洛克希德·马丁公司将其与 F-35 战斗机一起使用,这个操作系统内部运行在炸弹舱门上,以便在发射导弹时,炸弹舱门可以瞬间打开。再次强调,当飞行员按下按钮时,必须立刻发生,而不是等几秒钟。
Zephyr
我们之前提到过 Zephyr 作为操作系统,它也是一个实时操作系统,可以应用于各种设备,无论是可穿戴设备、物联网路由器,还是机器人。
Windows 10/11 IoT
Windows 10 和 11 IoT 是 Windows 的版本,专门运行在无头设备上(即没有连接键盘或鼠标)。它被设计为无显示器运行,并为物联网设备提供集成、高安全性,以及直接来自微软的更新。
亚马逊 FreeRTOS
这个 RTOS 非常小巧。它是为微控制器设计的,使得小型、低功耗的边缘设备易于编程、部署、保护和管理。
接下来,让我们讨论物联网给我们带来的挑战。
物联网所面临的挑战
正如你到目前为止所看到的,关于物联网,我们面临着许多重大的攻击向量问题。以下是一些带来许多漏洞的挑战:
-
其中之一是我们拥有的互操作性标准,或者说是缺乏互操作性标准。目前,有这么多产品内置了物联网功能,但没有哪个厂商真正遵循一个标准。一些制造商并不关心他们设备的安全性。这个问题很严重,因为这些制造商中的一些并没有关注他们设备的使用方式,尤其是在测试他们的应用程序接口(API)或者它们无法确保设备安全方面。所以,无论是来自最终用户还是第三方,都可能会出现安全漏洞。例如,假设我的 SmartThings (
www.samsung.com/us/smartthings) 中枢与几个不同的产品兼容,但为了建立这个连接,它必须发布一个 API。如果这个 API 被利用,并且举个例子,如果我家里有无线音响,如果这个产品在安全方面存在缺陷,攻击者可能会想办法访问三星中枢。 -
我们还面临着一个问题——信不信由你,明文传输和开放端口仍然在被使用。许多这些设备在没有使用任何加密技术的情况下就被出售,数据在设备与网关之间或网关与云服务之间进行传输时没有加密。这也可能发生在开放端口上,因为可能有人忘记关闭它们。我们还面临着基本的安全性和隐私问题没有得到遵循的问题。同样,制造冰箱的公司可能没有任何员工关注安全或隐私问题。
-
我们还面临着固件和操作系统更新支持的问题。有时,更新固件可能会变得很困难。让我们来看一个例子。我在自行车上安装了一个小电脑,我几乎每天都骑行,它可以跟踪我的骑行距离、海拔、爬升高度、速度、心率,甚至踏频。这个产品让我很震惊,因为我下载了它的应用程序,运行了几天后,我开始考虑固件的问题。那么,如何更新固件呢?经过一些研究,我发现我必须下载一个单独的应用程序来进行更新,但我并未被告知这一点,也没有人告诉我应该下载一个单独的应用程序。现在,记住,我们更新操作系统中的固件是为了修补漏洞或防止设备中的安全漏洞,而在某些情况下,厂商的更新可能会导致设备某些功能失效。因此,在某些情况下,制造商会拒绝允许固件或操作系统更新,因为这会导致某些功能无法正常工作。
-
最后,我们有存储问题。如今,这些设备在物理尺寸上越来越小——例如,一只每天提醒我喝水的水瓶。那里没有太多空间来放置大量硬件,所以我们不会有太多存储空间。然而,设备的传输几乎是无限的,对吧?这最终会给我们带来数据存储的问题,以及我们需要确保我们或制造商实施的管理或保护措施。你可能会有比实际需要更多的数据流量,因为没有足够的存储空间。我们必须把它清除掉,对吧?再次强调,我是从制造商的角度来讲的。是的,你能相信这竟然发生了吗?默认或弱密码仍然在使用。在某些情况下,它们是硬编码的。通常,制造商甚至没有意识到这些存在。这是因为他们从第三方购买操作系统或接口,想要将其集成到自己的产品线中。
所以,正如你所看到的,物联网带来了一些我们需要理解并为之做好准备的挑战。现在,让我们谈谈物理攻击。
物理问题
对物联网设备的物理攻击包括攻击者从你那里窃取设备,可能会修改或篡改设备,伪造设备,甚至注入恶意代码,然后将设备放回到你的网络中。这听起来一点也不好玩。
我们还面临不安全的 Web 接口。我们发现很多这些设备都内置了 Web 接口。每当我们谈论 Web 接口时,我们知道必须有一个 Web 服务器来支持它。如果没有及时打补丁,数据可能以明文传输,或者—更糟糕的是—根本没有安全措施,这种挑战可能会导致对设备本身的漏洞攻击。
它是一个小型计算机,那么我可以做缓冲区溢出攻击吗?完全可以。由于这些设备容易受到缓冲区溢出攻击,这意味着它们也容易受到 SQL 注入攻击或某种类型的注入攻击。
我们还面临开发问题。我说的意思是,作为安全专家,我们不得不面对这些设备进入我们的网络基础设施。有时,由于这些设备的复杂性或它们的操作方式,这增加了我们必须部署和实施的各种政策的复杂性。在某些情况下,我对那些必须制定这些政策的人感同身受,因为它给本来可能已经安全的网络环境带来了全新的挑战,而现在我们还得担心物联网。
我们还面临着供应商支持的问题。设备只有在供应商为你提供支持的情况下才有用。在某些情况下,我们看到供应商破产(特别是在他们被入侵之后)。如果你打算将这些设备引入你的基础设施中,固件和操作系统必须是可以升级的。这应该是强制性的。如果任何公司或供应商不支持这一点,你应该寻找完全不同的解决方案,因为你只是在为自己开了一扇门。
我们还面临着监管和权利问题,这更多是一个可能发生的事情。由于物联网设备之间的各种互联,可能会出现一些安全问题,而这些问题目前没有法律界定。我给你举个例子。让我们回到通过鱼缸恒温器入侵赌场的例子。那么,谁该为此负责?是恒温器的制造商,还是将物联网设备连接到内部网络而不是隔离网络的赌场?所有这些问题对我们来说都是挑战,但希望这一领域很快会有所明确。
接下来,我们来讨论物联网黑客攻击的过程。
物联网黑客攻击
让我们来谈谈物联网带给我们的一些漏洞和难题。
首先是我所称的数据价值。这涉及到捕捉数据,当物联网设备相互通信并与其背后的云平台或云服务提供商进行连接时,这增加了风险,因为它让物联网变得更加隐蔽。我们开始不断看到物联网环境使攻击者能够访问其他设备以及它们可能连接的网络。因此,许多公司将物联网环境部署在其生产网络上,这让我内心感到既难过又恶心。
另一个问题是数据聚合。同样,我们有很多设备在与其他可能不在我们控制范围内的资源进行通信。
还有一种被称为传感器融合的概念,这指的是将两个完全独立的传感设备的信息结合起来,以创建更复杂的信息或攻击者正在针对的环境视图。让我给你举个例子。在波士顿,市政府创建了一个应用程序,用于识别城市道路上的坑洼,利用手机、加速度计和 GPS 数据。这些信息会发送到公共工程部门,帮助他们找出最严重的坑洼。但如果从攻击者的角度考虑,如果我能够访问到这个环境,攻击者是否可以利用这个应用程序或其信息,可能会将城市服务从最需要关注的区域转移开?
我们还有集成问题。现在,你可能会想,太好了——集成,对吧?我们通常把它看作是积极的事情。但是,当我们开始允许这些不太安全的设备接入我们的现有网络,并将它们集成到我们需要内部开发的应用程序,甚至是其他物联网应用程序时,我们应该感到有点担忧。
这是一个巨大的问题,因为医疗行业正被成百上千种基于物联网环境的不同设备淹没。试想一下,如果成千上万,甚至是几十万个这样的设备被部署,你需要确保一个特定的泵能收到正确的指令来更新剂量。我们还需要确保只有医生或护理人员才有权这样做,并且没有人能够黑入系统。
问题根源
首先,肯定是应用程序,对吧?应用程序可能会因为没有安全更新、使用默认密码,甚至是无法更改的密码或后门而引发问题。
我们还面临着移动性问题,以及我们拥有各种通信渠道的事实。它们是否被加密?我们是否在使用认证?即使有人使用不安全的 API,我们是否缺乏适当的存储安全性?
我们还有云服务。可能我们的认证没有正确地与云服务提供商进行设置,或者存储或通信到云端时没有加密。然后是托管在云环境中的应用程序的 Web 界面,再然后是网络本身。应该运行的服务是否正在运行,且是否已经被锁定并确保安全?我们是否有任何更新被推送到我们的设备,无论是手动的、自动的,还是通过第三方应用程序?你的物联网环境中是否有防火墙?同样,最佳实践是将物联网环境放在完全隔离的网络中,就像任何网络一样,你需要确保有相同类型的安全设备到位。记住,当我们引入云时,我们实际上是在引入一个全新的基础设施。
设备内存挑战
让我们谈谈庞大的攻击面,实际上,当我说庞大时,它真的是非常大——设备内存。我们在讨论设备运行的空间有多少。让我们来谈谈一些可能存储在设备内存中的东西。
加密密钥?没错,绝对是。那第三方供应商的凭证呢?对,甚至可能会存储明文凭证。
我们还有生态系统访问控制;这意味着集成在我们物联网环境中的任何组件。假设我们在组件之间有信任关系或不同类型的信任。例如,三星默认情况下,通过他们的 SmartThings 中心,自动信任所有组件——无论是水传感器、运动传感器还是位置传感器——所以这种隐式的信任关系可能成为我们的漏洞。此外,还有将设备注册到你的环境中的问题。
让我举个例子。当我连接我的三星 SmartThings 中心时,我惊讶于它工作的简便性——我只需要打开运动传感器,它就自动识别了几个设备。所以,没有进行任何身份验证就可能让恶意设备接入。
好吧,我们该怎么做呢?我们需要有某种方式来退役这些设备,例如清除数据,甚至只是将设备重置为出厂默认设置,以确保设备的内存或存储中没有任何残留数据。
我们还有一个物理接口。物理接口可能包括用户命令行界面(CLI)以及管理员 CLI。同样,如果我们给一个个人用户访问设备的权限,并且他们在该设备上具有管理员权限,从攻击者的角度来看,这将是我进入他们网络的一个重要突破点,并且有可能进行特权升级的场景。设备是否有物理端口,例如 USB 端口?它是否支持通用即插即用(Plug and Play)?当你插入一个 Rubber Ducky 时会发生什么?如果你不熟悉 Rubber Ducky,它是一个 USB 闪存盘,但系统会将其识别为键盘,这意味着我可以输入各种有趣的命令。在查看物联网设备时,你应该关注供应商是否支持禁用这些类型的端口或该设备上可能提供的不同服务。
另一个攻击面是 Web 界面本身。就像任何其他情况一样,当涉及到 Web 界面时,我们可能会遇到一些问题,例如某种类型的注入攻击、跨站脚本攻击,甚至是跨站请求伪造攻击。在某些情况下,我可能能够进行某种用户名或用户账户的枚举。
现在,让我们来谈谈各种物联网攻击。
物联网攻击类型
由于市面上有各种各样的物联网设备,我们需要意识到一些潜在的攻击类型,这些攻击可能会发生在物联网设备上。
DDoS 攻击
这就是攻击者将你的所有物联网设备转变为恶意小设备,用于执行 DDoS 攻击或使它们成为更大僵尸网络的一部分。
滚动码攻击
大多数物联网设备使用滚动码。这类似于你汽车或车库门开启系统中的无钥匙进入系统,在那里你必须按照正确的顺序按下按钮,门才会打开。攻击者通过让你尝试一个接一个的代码,直到找到那个能够打开你门的正确代码,从而迫使你与他们的设备配对。从理论上讲,这是不可能的,因为攻击者必须制造一个与密钥相匹配的设备,而你的控制器不允许在你的区域内使用多个具有特定密钥的设备。但是,大多数设备的滚动码并不是真正随机的。
BlueBorne 攻击
BlueBorne 更像是一个关于物联网设备通过蓝牙进行通信的攻击,而不是一个具体的物联网攻击,Android 和 Linux 自 2012 年起就默认支持蓝牙。Android 自 2017 年 9 月起提供了补丁,当时这一漏洞被公开曝光。但正如我们所讨论的,许多产品即便厂商知道这个问题,仍然不会进行修补,因为它们无法以现有价格制造另一台设备。我认为在大多数情况下,这些设备应该是非法的。
Sybil 攻击
想象一下,有人创造了几十个假设备,比如婴儿监视器或灯泡,所有这些设备都有不同的 MAC 地址。他们使用这些假设备与您的真实设备进行通信,并了解您的网络情况。然后,他们通过接管其中一个设备的真实身份,利用它来发现更多有关您网络的信息。
干扰攻击
这与吐司、果酱和刀子无关。这里指的是有人在与您的设备相同的频率上进行广播,导致它发生干扰,甚至根本无法工作。
通过后门入侵智能电网
这是指电力公司在您家中的网络上有一个设备,允许他们远程开启或关闭电器。所以,假设网络安全研究人员发现了许多此类设备中的后门,使他们能够开关你的电器。嗯,这样不会在医院等场所引发问题吧?
基于 SDR 的攻击
软件定义无线电(SDRs)给物联网基础设施带来了新的挑战。SDR 是通过软件控制射频硬件的方法。根据使用者的不同,这可以用来做好的事情或坏的事情。SDR 是一种可以理解如何发送和接收无线电频谱内不同频率的设备。攻击可以在全双工(双向通信)和半双工(单向传输)模式下进行。
你还可以使用 DNS 重新绑定来修改目标路由器或网关上的某些 DNS 条目,然后通过其 Web 界面使用默认密码与这些设备通信。疯狂吧?
现在,我们来讨论一些物联网中使用的方法。
物联网使用的方法
攻击者使用的方法通常会遵循一定的方法论。这些方法可以被分解成我们接下来讨论的几个部分。我们来看一下吧。
侦察
大多数物联网设备是参与 IP 网络的终端。网络侦察是收集这些网络和系统信息的过程。当我们谈论物联网时,这意味着扫描常见的漏洞,例如默认密码或可能公开可用的硬编码密钥。大多数攻击者会使用专门的工具,如 Metasploit 或 Shodan 来找到这些目标。根据网络类型,可以使用各种工具。
Shodan 是一款令人惊叹的信息收集工具。这个搜索引擎可以找到各种各样的设备,包括网络服务器、路由器、打印机、IP 摄像头等。常见的情况是设备上如无线接入点(WAPs)或 IP 摄像头使用了默认密码。这些信息对黑客来说非常有价值,可以用于后续的利用(例如,利用弱密码)。
举个例子,要在 Shodan 上搜索某条街道的网络摄像头,你需要输入 webcamxp city:“GothamCity”(或你目标城市的名称),这样就可以显示你所在城市的公开可见网络摄像头。想查找 Google 的 Web 服务器吗?输入 Server: gws" hostname:“google”。或者你想看到一些令人毛骨悚然的东西吗?比如 password 1234?没错,这会列出使用密码为 1234 的设备。疯狂吧?
如果你想获取大量信息,可以访问 FCC 的网站(美国联邦通信委员会)www.fcc.gov/oet/ea/fccid(参见图 14.3和图 14.4)。这是一个所有在美国分发或制造的设备必须进行注册的组织。这里有大量的情报。
图 14.3 – FCC 网站
如下截图所示,它可以提供很多有用的信息:
图 14.4 – 来自 FCC 的项目详细 PDF 文件
如果你在寻找实际的应用程序,可以查看 MultiPing(www.multiping.com)或 IoTSeeker(github.com/rapid7/IoTSeeker),它们会扫描你的设备,并告诉你它们是否仍在使用默认密码。
图 14.5 – 使用物联网寻求者应用程序后的示例结果
攻击者常用的另一种方法是(与网络侦察结合使用)尝试将从设备 Web 界面收集到的信息与他们对 Linux/Unix 系统的了解结合起来。例如,HTTP 事务中的头部元信息通常包括软件版本号和其他线索,这些都可以揭示在常见协议的实现中存在的漏洞。
一旦攻击者对物联网设备的内部操作有了一些了解,他们就更容易在其代码中找到漏洞。这时,扫描便发挥了作用。
漏洞扫描
一旦攻击者找到了潜在的目标,他们便开始进行漏洞扫描。这涉及使用已知的漏洞利用工具,这些工具可能公开发布,专门针对物联网设备的软件或固件中的特定漏洞。这些漏洞利用工具通常来自第三方研究团队(如 Google Project Zero 等),他们会识别并公开各种设备的安全漏洞,或者来自那些可能未向客户披露这些漏洞的供应商。另一个获取漏洞信息的好地方是美国计算机应急响应小组(US-CERT),因为他们通常会发布关于可能影响物联网设备的最近发现的漏洞的警告。
这些漏洞通常基于协议中的已知实现、漏洞或设计缺陷,理解这些问题是识别潜在目标的前提。随着设备支持的协议列表的增加以及其处理攻击者发送内容的能力增强,这一过程会变得更加容易。
发动攻击
一旦攻击者识别出已知漏洞,他们将通过利用该特定漏洞开始渗透测试,针对物联网设备的特定操作环境。我们不能过分强调在实验室环境中进行此类活动的重要性!
获取并保持远程访问
这时,物联网研究人员(就是你!)将对他们发现的特定漏洞应用特定的漏洞利用工具。然后,攻击者可以运行一系列测试,以确定设备是否已被成功攻陷,攻击是如何完成的,以及进入系统后可用的用户级访问权限。
在获得远程访问权限后,攻击者有多种方法可以渗透和提取物联网设备中的数据。这可能包括在物联网设备上上传并执行脚本以获得持久性、建立远程 shell 以便后续使用,甚至在与设备相连的其他设备中横向移动,从而危及网络中的其他设备。
一旦攻击者获得了设备的访问权限,他们会采用各种方法来维持和扩展访问权限。攻击者通过删除日志、升级固件以及使用恶意应用程序如后门、木马和其他恶意软件来隐藏自己,以便保持对设备的控制。为了利用固件,攻击者使用像 Firmware Mod Kit 或 Firmwalker 这样的工具。
说到固件,固件是一组指令,告诉硬件如何运行。固件分析是检查目标物联网设备固件的过程,目的是识别其潜在的缺陷和风险。攻击者利用固件分析来查找密码、API 令牌、端点、正在运行的易受攻击服务、后门账户以及正在使用的配置文件。随着时间的推移,攻击者可以逆向工程固件,发现弱点和后门,这些后门为他们提供未来的访问手段。攻击者并不总是需要保持所有这些能力;相反,他们应该准备好多种应急措施,随时准备使用其他专门的工具。例如,使用像 Mirai 或 BASHLITE 这样的恶意软件,可以在攻击者希望重新控制设备时保持未来的访问权限。
现在,让我们来看一些保护物联网设备的方法。
保护物联网设备的对策
由于存在许多不同类型的威胁,而且每种威胁都有自己攻击和利用物联网设备的方式,因此我们无法完全防范所有威胁。将所有防护措施结合起来对于大多数物联网用户来说既繁琐又昂贵,但物联网设备制造商处于独特的地位,可以通过设计来实现物联网安全。
然而,我们可以采取一些步骤来保护网络。我们来看看:
-
禁用任何访客或演示账户。
-
对无效登录尝试启用任何自动锁定功能。
-
使用强身份验证机制。
-
将您的控制系统和设备放置在防火墙后面。
-
将物联网网络与您的企业网络隔离。
-
保护物联网设备免受物理访问。
-
禁用 Telnet。
-
使用端到端加密和公钥基础设施(PKI)。
-
部署 IPS 和 IDS 设备。
-
你知道这一点——更新,更新,再更新。
现在,让我们讨论一下操作技术。
OT 及其被攻击的方法
操作技术(OT)是一个术语,用来描述在当今现代社会中作为一个集成或同质化系统共同工作的多种技术。例如,电信行业广泛使用 OT 将数据从电网传输到配电站。这些相同的通信也用于电力消费者和生产者之间的金融交易。OT 是一个硬件和软件的网络,用于监控、管理和控制工业过程资产。在尝试攻击 OT 之前,掌握 OT 的基本原则至关重要。
普渡模型
在这个时候,是时候简要谈谈普渡模型了。普渡模型源自普渡企业参考架构(PERA)模型,该模型广泛用于描述工业控制系统(ICS)网络中各个关键组件的内部连接和依赖关系。它由三个区域组成:制造区域(OT)和企业区域(IT),它们之间通过非军事区(DMZ)隔开。
Purdue 模型可以用于分析、设计和保护 ICS 网络。它有助于识别潜在的安全风险和漏洞,并提供如何减轻这些风险的指导。
在这个模型中,制造区(OT)是网络中最关键的部分,因为它包括所有负责过程控制和自动化的现场设备。企业区(IT)则不那么关键,它仅提供数据存储、连接性和其他业务功能。DMZ(隔离区)用于分隔制造区和企业区,通常包含如防火墙和入侵检测系统(IDS)等安全设备。
我们将在本章后面详细讨论各种 OT 话题。
让我们从回答“什么是 OT?”这个问题开始。OT,或工业控制系统(ICS),指的是一套专门的计算机硬件和软件系统,致力于管理和监控物理设备。ICS 包括监控与数据采集系统(SCADA)、远程终端单元(RTU)、可编程逻辑控制器(PLC)、分布式控制系统(DCS)以及其他帮助监控和管理工业操作的专业网络系统,都是这项技术的一部分。
图 14.6 – OT 的组成部分
现在,让我们来看一下 OT 及其面临的安全挑战。
OT 和安全——一个两难问题
ICS(工业控制系统)可以监控和控制如电网、石油管道、空中交通站网络等基础设施,但这些系统有一个根本的安全缺陷——它们是为了监控和控制而构建的,并非专门为了保护。
这种不准确性源于 OT 系统对复杂基础设施内部情况的信息访问有限。例如,某个制造厂的 OT 控制系统可能提供水箱中的水位信息,但通常无法获取水温或 pH 值等信息,而这些参数对于化学过程的最佳运行至关重要。
黑客攻击 OT——对关键基础设施的威胁
与普遍看法相反,控制基础设施(如电网、石油炼油厂、大坝等)的系统并不安全。随着 OT(运营技术)网络的复杂性增加,黑客们也不得不通过更多地了解他们所攻击的 OT 系统来提升攻击技巧。坏消息是,入侵 OT 系统所需的知识和技能远少于入侵传统 IT 系统。
黑客攻击的成功取决于两个关键因素——目标系统的漏洞和黑客利用该漏洞的能力。近年来,安全研究人员在 ICS 系统中发现了许多漏洞,并在 Black Hat、DEFCON、CanSecWest 等安全会议上发布了他们的研究成果。这些漏洞使得经验丰富的黑客可以轻松渗透 IT 网络并控制 OT 系统。
我们是否应该将 IT 与 OT 合并?
IT/OT 集成可以通过减少两者之间的差距来提升公司的表现。IT 与 OT 的融合不仅仅是使用技术,更是关于人员和流程。传统的 IT/OT 团队通常是分开管理的,IT 员工在一个部门,OT 员工在另一个部门。例如,IT 团队负责跟踪内部流程,如编程、系统更新和网络安全。另一方面,OT 团队负责确保一切在内部和外部都能顺利运行。IT 和 OT 团队必须了解彼此的操作和组织结构。这并不意味着 IT 专家必须转变为现场或工厂人员;而是意味着将他们连接起来,以便他们可以合作提高安全性、效率、质量和生产力。
OT 风险的挑战
正如我之前提到的,大多数 OT 系统仍在使用旧版本的软件和过时的硬件,这使得它们容易受到网络钓鱼、间谍活动、勒索软件攻击和其他类型攻击的危害。这些攻击可能对产品和服务造成严重损害。
为了防止这些漏洞被利用,以下是 OT 带给我们的风险:
-
物理和环境灾害:这是 OT 环境中最著名的风险之一。比如飓风或龙卷风可能会损坏设备和设施。
-
故意攻击:恐怖主义、破坏活动和间谍行为可能对财产和人员造成重大损害。
-
恶意程序如病毒和恶意软件:这些是 OT 环境中最常见的攻击之一。病毒和恶意软件能够迅速传播,影响工厂内的各种设备。
-
社会工程学:这包括使用以人为中心的攻击方法来获取 OT 系统的访问权限。例如,通过网络钓鱼或垃圾邮件向员工发送邮件,诱使他们泄露密码。
-
网络复杂性:OT 系统使用的技术与 IT 系统不同,因此需要明确分隔网络。然而,额外的网络入口点可能会成为安全风险。
-
缺乏可见性:OT 网络没有得到适当的监控,因此威胁未能被及时发现。这可能导致一系列连锁反应的威胁,影响到许多人和设备。
-
安全管理薄弱: OT 系统的安全防御薄弱,这使得它们容易受到网络攻击。
-
过时的系统: 缺乏更新和补丁可能使 OT 系统暴露于危险之中。
-
IT 与 OT 的融合: 正如我之前提到的,IT 和 OT 团队的融合使他们能够一起合作。然而,这并不是一项容易的任务;两方都需要付出相当的努力,学习彼此的角色以及如何为各自的领域做出贡献。
-
脆弱的协议: 协议栈是所有网络流量的基础。开放和损坏的协议可能使攻击者能够控制 OT 系统。
-
安全性模糊化: 这指的是制造商不与他人(包括竞争对手)分享其产品的知识。当这种情况发生时,黑客更容易找到进入这些设备的方式。
-
缺乏培训: OT 人员和团队没有接受相关的系统安全培训。因此,他们将公司设备和数据置于风险之中。
-
缺乏安全标准: 目前没有 OT 设备的安全标准,这意味着每个开发人员可能实现自己的防御机制。不幸的是,这些措施往往缺乏适当的测试和验证,留下了可能被利用的漏洞。
接下来,我们将讨论 ICS。
工业控制系统(ICS)简介
ICS 被用于控制工业过程。它们是计算机系统,用于监控和控制压缩机、泵、发电机、电动机、反应堆、锅炉、炉子、烤箱、涡轮机、传送带等设备的操作。这些组件构成了 ICS 环境:
-
监督控制与数据采集 (SCADA): 这些是控制系统,可以通过 ICS 环境监控和控制设备。
-
分布式控制系统 (DCS): 这些是利用分布式计算的 SCADA 更高级的版本。
-
可编程逻辑控制器 (PLC): 这些是与离散(不连续)信号配合使用的小型计算机。它们可以监控和控制设备、处理数据等。
-
人机界面 (HMI): 也称为“人机界面”。它用于获取来自设备、传感器等的反馈。如果 ICS 环境监控到 HMI 的任何异常或问题,它可能会通过电子邮件、短信等方式向其他人员发送警报。
-
业务流程控制系统 (BPCS): 这些系统利用专门的软件和硬件来监控和控制工业过程。BPCS 可以用于运行整个 ICS 环境或仅运行其中的某个组件,例如 PLC 或 DCS。
-
安全仪表系统 (SIS): 这些是控制工业过程中(通常是危险)物料流动的软件程序。如果它们检测到任何问题,可以通过电子邮件、短信等方式向其他人员发送警报。
-
工业爆炸装置(IED):这些是用于处理危险物料的爆炸装置。它们通常是 SIS 功能的一部分。
通过 ICS 环境,操作员可以在全球任何地方监控其设备和过程。然而,如果该环境没有得到适当保护,它可能会成为网络攻击的目标。在这种环境中,实践良好的网络安全是明智的,因为它控制着可能对人身和财产构成威胁的重要组件。
让我们讨论一下 ICS 的不同操作模式。
ICS 的操作模式
ICS 系统可以配置为三种不同的模式:
-
开环:在开环控制中,环境没有反馈。例如,考虑一个放在烤箱里的温度传感器。烤箱的计算机会一直开或关,直到达到由人工操作员或程序设置的期望温度。
-
闭环:在闭环控制中,环境有反馈。再以烤箱为例,温度传感器会通知计算机根据情况开关,直到达到预设的期望温度。
-
手动环路:在手动环路控制中,环境有反馈,但控制环路由人工监督。此系统不会自动开关,直到人工操作员介入操作。
接下来,我们将讨论与 ICS 相关的潜在风险与威胁。
ICS 的风险与威胁
不幸的是,ICS 容易受到网络攻击。以下是与 ICS 相关的几个已知风险与威胁:
-
ICS 系统容易受到多种网络相关攻击(例如,网络嗅探和欺骗)。这些攻击可以用来拦截敏感信息、修改数据等。
-
ICS 系统容易受到恶意软件攻击(例如,病毒和蠕虫)。恶意软件可以对设备造成物理损坏、数据丢失等问题。仅仅用不正确的设备查看恶意软件也可能导致其启动。
-
ICS 系统容易受到勒索软件攻击。这些是恶意软件程序,用于加密 ICS 数据,直到支付赎金以换取解密密钥。
-
攻击者可以通过社会工程手段攻击人员,以获取对 ICS 环境的访问权限。例如,他们可能会打电话给工作人员,假装是来自可信公司的官方邮件发送者。
-
ICS 系统容易受到拒绝服务(DOS)攻击。这些攻击通过向计算机发送无用数据来瘫痪 ICS 环境,目的是让计算机的资源被过度消耗,从而无法执行正常操作。
-
ICS 系统容易受到木马攻击。木马用于获得计算机的后门访问权限。像恶意软件一样,木马也能造成物理损害。
-
ICS 系统组件可以被黑客攻击,执行恶意行为。例如,PLC 或 DCS 可能会被黑客攻击,导致流程停机或 ICS 环境中的其他问题。
-
ICS 系统易受到多种客户端攻击(例如跨站脚本和跨站请求伪造)。此类攻击可以针对客户端发起,黑客可以通过受害者的授权访问系统。
现在,让我们来看一下使用 ICS/SCADA 系统时的端口使用情况。
ICS/SCADA 系统使用的端口
用于 SCADA 和其他关键基础设施系统的 ICS 通常使用七端口通信协议连接终端设备:
-
端口 80:HTTP(用于 ICS/SCADA 客户端与服务器之间的通信)
-
端口 88:UDP(用于 ISC/SCADA 组件之间的通信,进行状态更新、设备命名等)
-
端口 21:FTP(用于在 ICS/SCADA 组件之间传输文件)
-
端口 25:SMTP(用于发送电子邮件)
-
端口 23:Telnet(用于连接远程设备以配置或检查其状态)
-
端口 161:SNMP(用于网络管理和通过 IP 网络配置设备)
-
端口 443:HTTPS(用于 ICS/SCADA 组件之间的加密通信)
现在,让我们讨论 ICS/SCADA 可能遭遇的一些攻击。
对 ICS/SCADA 的攻击
ICS/SCADA 存在被攻击的漏洞。以下是可能对 ICS/SCADA 发起的潜在攻击:
-
基于 HMI 的攻击:基于 HMI 的攻击针对人机界面,这些界面用于查看和操作 ICS/SCADA 系统中的数据。此类攻击可以通过未经授权访问网络或欺骗操作员访问伪造网站,从而在他们的计算机上启动恶意软件。
-
内存损坏:内存损坏攻击是一种黑客攻击,旨在破坏 ICS/SCADA 组件的内存,使其无法按预期工作。这些类型的攻击可以通过未经授权访问网络或拦截组件之间的通信来发起,从而篡改它们。
-
凭证管理:这些攻击旨在通过使用默认密码访问 ICS/SCADA 环境。还包括数据传输过程中的缺乏加密,这将暴露明文密码和账户名。
-
代码注入:这些类型的攻击将恶意代码注入 ICS/SCADA 软件中,导致技术问题、破坏操作或允许攻击者访问系统。此类别中的漏洞包括常见的代码注入,如 SQL 注入、操作系统注入、命令注入以及一些特定领域的注入。Gamma 脚本,像许多其他面向 HMI 的领域特定语言,也容易受到代码注入攻击。
现在,让我们讨论一些关于辅助通道攻击的具体情况。
辅助通道攻击
这些类型的攻击针对加密系统的物理实现(例如,任何处理加密的内容)。它们利用物理实现的非预期特征泄漏有关加密密钥或其他敏感数据的信息。
可以使用功率分析来通过观察计算发生所需的时间量或通过测量集成电路的电磁辐射来推导有关加密密钥的信息。
定时分析是另一种被认为是高吞吐量的侧信道攻击,允许攻击者以足够快的速度执行它,以在大多数情况下取得效果。定时分析可用于 ICS/SCADA 系统,因为它们通常在带有 RTOS 的嵌入式设备上运行。攻击者使用循环方法来恢复这些密码。他们逐个字符尝试,直到找到第一个有效的字符,然后如果第一个正确,则重复其他字符。如果不正确,则循环结束。通过监视设备完成整个密码验证过程所需的时间,攻击者可以确定输入的正确字符数。
你如何防御 OT 黑客攻击?
防御 OT 黑客攻击的最佳方法是通过意识和定期审计,例如红队演练。意识可以通过定期培训计划实现;审计应包括寻找网络和设备数字文件系统中的漏洞的测试人员。此类审计还考虑如果系统被黑客入侵会发生什么:多少设备可能会受到影响,业务多快会意识到威胁?
这是在试图防御 OT 黑客攻击时需要考虑的一些选项列表:
-
为降低当前风险敞口,定期进行风险评估。
-
使用专门构建的传感器在不活动状态下发现网络中的漏洞。
-
通过将威胁情报与资产保护相结合,您可以检测威胁并优先处理 OT 补丁。
-
确保您的 OT 设备和软件始终保持最新状态。
-
未使用的端口和服务应禁用。
-
对于 OT 应用程序,使用最佳安全实践和安全编码。
-
连续监视和检测由 OT 系统生成的日志数据是必要的,以发现实时攻击。
-
提高员工的安全意识,并为他们提供最新的安全措施。
-
使用哈希算法创建强大且安全的密码,并更改出厂预设密码。
-
使用双因素身份验证、VPN、加密、防火墙等提供通过各种屏障的安全远程访问。
因此,正如您所看到的,物联网面临着挑战,随着越来越多的设备进入物联网世界,这些挑战将会增加。
摘要
在本章中,我们讨论了物联网(IoT)和运营技术(OT)。在如此多产品都带有一些智能方面的发展时,平衡功能和安全性是一个挑战。不幸的是,安全方面似乎是次要的,这带来了一系列潜在的安全漏洞。我们讨论了什么是 IoT,一些黑客 IoT 的方法,以及攻击者可以在 IoT 上使用的一些方法。最后,我们讨论了 OT 在 IoT 安全挑战中的作用。
在下一章中,我们将讨论云计算。
问题
最后,这里有一些问题供您测试对本章材料的了解。您可以在附录的评估部分找到答案:
-
以下哪个在 IoT 架构中负责消息路由和识别?
-
中间件层
-
边缘技术层
-
访问网关层
-
互联网层
-
-
Shodan 搜索引擎最有可能在何时被用于 IoT 黑客攻击方法论中?
-
信息收集
-
漏洞扫描
-
获取访问权限
-
发动攻击
-
-
以下哪些对抵御物联网(IoT)黑客攻击有效?(选择所有适用项。)
-
启用登录尝试过多的锁定功能
-
禁用访客和演示账户
-
启用 UPnP
-
禁用 telnet
-
-
在列出的工具中,哪个是在您的网络上快速发现物联网设备的 IP 地址的最佳选择?
-
MultiPing
-
IoTInspector
-
beSTORM
-
Z-Wave Sniffer
-
第十五章:云计算
云计算是一项新技术,它允许你通过互联网访问计算应用程序、数据存储和网页邮件。云计算的使用使得去中心化的工作团队成为可能,同时降低了运营成本并提供了数据安全性。如今,许多组织由于这些优势,正在将数据和基础设施迁移到云端。然而,云环境同样存在许多潜在的风险和危险。攻击者正在利用云软件中的安全漏洞,非法访问存储在其中的宝贵数据。
云安全对个人和组织变得越来越重要。本章解释了攻击云环境的各种方法,突出了潜在的漏洞。了解这些攻击和漏洞可以帮助云服务提供商(CSPs)以及云用户制定安全的网络安全措施,以保护其云基础设施。请记住,本章并不是为了告诉你这就是你需要了解的所有云技术,而是如何保护它们。
本章将涵盖以下主题:
-
生活在云端
-
攻击云环境
-
攻击者的工具和技术
-
云安全的最佳实践
让我们首先为云计算的概念打下基础。
生活在云端
云计算是一种按需交付的 IT 能力,其中 IT 基础设施和应用程序通过网络作为计量服务提供给订阅者。云解决方案的例子包括 Gmail、Facebook、Dropbox 和 salesforce.com。
云服务通过互联网技术交付,可以包括公有云、私有云或混合云模式。接下来我们将简要了解这些:
-
公有云服务:这些服务由 Amazon、Google 和 Microsoft 等提供商提供,面向公众,任何注册账户的用户都可以使用。服务提供商管理基础设施和应用程序,并按需提供服务。
-
私人云服务:这些服务由 IBM、惠普和 Rackspace 等组织提供。它们仅供拥有它们的组织使用,不能公开提供。服务提供商管理基础设施和应用程序,并按需提供服务。
-
混合云服务:这是公有云和私有云服务的结合。例如,一个组织可能会使用公有云服务进行电子邮件处理,而使用私有云服务进行存储。
-
多云服务:多云是另一种选择。它是由两个或更多的云(私有云、公有云或社区云)组成的云环境,这些云仍然是独立的实体,但通过连接提供多种部署方式的好处。在这种情况下,公司的某些资产在内部提供并由公司管理,而其他资源则是外部的,由其他方处理。微软的 Azure 或 Zymr 就是这方面的一个极好例子。
接下来,让我们讨论一些不同的云计算模型。
云计算模型
为了满足企业的不同需求,有几种云计算模型被使用。接下来我们简要讨论这些模型:
- 软件即服务(SaaS):SaaS 是最常见的云服务交付模型。通过 SaaS,供应商托管应用程序并通过互联网将其提供给订阅者。订阅者通过网页浏览器访问应用程序,无需安装任何软件。
该应用程序通过供应商提供,按需付费方式提供。SaaS 是希望外包应用程序托管并且不想担心基础设施管理的组织的绝佳选择。
- 平台即服务(PaaS):PaaS 是一种云服务交付模型,供应商托管基础设施,并通过互联网将其提供给订阅者。订阅者可以通过网页浏览器访问应用程序,无需安装任何软件。
该应用程序通过供应商提供,按需付费方式提供。PaaS 是一个绝佳的替代选择,适合希望外包应用程序托管但不想处理基础设施管理的公司。
- 基础设施即服务(IaaS):IaaS 也是一种通过互联网提供给订阅者的模型。供应商托管基础设施,订阅者通过网页浏览器访问应用程序,无需安装任何软件。
该应用程序也按需付费方式提供。IaaS 是希望外包应用程序托管但不想处理基础设施的公司们的绝佳选择。
-
身份即服务(IDaaS):组织订阅由第三方供应商运营的云计算服务,提供身份认证服务,且用于身份和访问管理。它是一个 SaaS 产品,提供单点登录(SSO)、多因素认证(MFA)、身份治理与管理(IGA)、访问管理和情报收集等功能。这些功能使得客户能够更加安全地访问敏感数据,无论是在本地还是在外部。
-
安全即服务(SECaaS):在这种云计算模型中,安全服务以成本效益的方式集成到公司基础设施中。它基于 SaaS,并且不需要任何物理硬件或设备。因此,与组织自行创建安全能力时的支出相比,它具有显著的成本节约。它提供渗透测试、身份验证、入侵检测、防恶意软件保护和安全事件响应等服务。
-
容器即服务(CaaS):其背后的云计算架构使订阅者能够将容器和集群作为服务来使用。通过 Web 门户或 API,它提供容器引擎、容器管理、应用程序和集群的虚拟化。订阅者可以使用这些工具在云端或本地数据中心创建丰富、可扩展的容器化应用程序。CaaS 结合了 IaaS 和 PaaS 的特点。
-
功能即服务(FaaS):这种云计算服务的目标是简化应用程序功能的设计、运营和管理,而无需构建和维护基础设施(无服务器架构)。这种架构在创建微服务应用程序时得到广泛应用。消费者可以按需访问功能,支持的基础设施在闲置时关闭,不会产生费用。它提供的部分数据处理服务包括物联网服务、移动和 Web 应用程序、以及批量和流处理等。
呼!我想这就是所有模型了。哦,我猜你可能还会想到黑客即服务(HaaS)。虽然这算是一个新概念,但基本上你支付给黑客让他们为你进行钓鱼攻击或设置分布式拒绝服务(DDoS)攻击服务,甚至就是直接雇佣黑客。我知道,挺疯狂的,对吧?
接下来,我们来讨论云计算中的责任分离。
云计算中的责任分离
并非所有云计算模型都是一样的。它们在分配云服务交付责任的方式上有所不同。
以下三种模型说明了这种分配是如何进行的:
-
在提供商管理模型中,提供商负责从管理应用程序到处理所有客户支持的所有事务。
-
在自我管理模型中,客户负责管理应用程序并处理客户支持。
-
在混合模型中,使用了提供商管理和自我管理服务的组合。
你选择的模型取决于你所在组织的需求。
提供商管理服务适合那些希望提供商处理所有责任的组织,而自我管理服务则适合那些希望对应用程序拥有更多控制权的组织。如果你不确定哪个模型适合你,混合服务是一个不错的选择,因为它提供了两全其美的优势。
接下来,我们将讨论如何部署云服务。
部署模型
一旦你决定了所需的云服务类型,就需要决定部署模型。
以下四种模型是最常见的:
-
公共云模型:在此模型中,提供商负责公共云及其 IT 资源的开发和持续维护,因为它们通过互联网向公众提供应用程序、服务器和数据存储等服务。因此,提供商负责创建和维护这些公共云的各个元素。
-
私有云模型:私有云,有时称为内部云或企业云,是由单一公司运行的云基础设施,并设置在公司防火墙内。组织构建私有云基础设施以保持对公司数据的完全控制。此模型使用的软件包括 VMware、SAP 或微软的 System Center 平台。
-
社区云模型:社区云是一种由多个具有共同利益的组织共享的私有云,例如确保其数据保持安全或共享基础设施成本。
-
混合云模型:混合云是由两个或更多云(私有云、社区云或公共云)组成的,它们仍然是独立的实体,但通过标准化或专有技术将它们绑定在一起,从而实现数据和应用程序在它们之间的可移植性。
组织使用混合云将其私有云的范围扩展到公共云,利用公共云中的规模经济,或结合多个云的优势。适合你的部署模型取决于你的具体需求。
接下来我们来谈谈容器技术的使用。
容器技术
这一新兴技术已经专门开发,以解决云部署的需求。它通过将应用程序及其所有依赖项封装成一个自给自足的包,来解决可移植性问题,使其可以在任何平台、任何环境中运行。
容器的一些特点包括:
-
它们是可移植的,因此可以在任何平台或基础设施上运行。
-
它们部署快速,因此你可以迅速启动并运行你的应用程序。
-
它们是轻量级的,因此不会占用大量系统资源。
-
它们是安全的,因为所有应用程序的依赖项都包含在容器中,因此你无需担心安全问题。
-
它们易于管理,因为你可以跟踪部署中的所有容器,并将它们作为一个整体进行管理。
容器技术仍在发展中,但由于其众多优势,已经在云计算领域获得了大量关注。如果你正在寻找一种使云部署更具可移植性和高效性的方法,你应该考虑使用容器。
接下来我们讨论云存储架构。
云存储架构
现在我们对云基础系统的工作原理有了基本的了解,接下来我们将看看组成云存储系统的不同组件。主要有三个组件:前端、中间件和后端。
前端层是系统中终端用户交互的部分。这可能包括网页界面或移动应用。前端与中间件进行通信,而中间件负责管理前端与后端之间的交互。后端是系统中存储数据的部分。
前端和后端可能位于不同的数据中心,而中间件可能位于第三个数据中心。这样的配置允许通过添加更多的前端或后端来扩展系统。
大多数云存储系统使用客户端/服务器架构。客户端是安装在用户计算机上的部分,服务器是存储数据的部分。
客户端/服务器架构允许通过添加更多客户端或服务器来扩展系统。
接下来我们讨论一下可以使用的一些云存储服务。
云存储服务
现在我们对云存储有了基本了解,接下来我们来看一些最流行的云存储服务。
-
Amazon S3 是一项云存储服务,允许你将数据存储在云中。该服务基于Amazon Web Services(AWS)平台。
-
Azure Blob Storage 是一项云存储服务,允许你将数据存储在云中。该服务基于 Azure 平台。
-
Google Cloud Storage 是一项云存储服务,允许你将数据存储在云中。该服务基于Google Cloud Platform(GCP)。
-
IBM Cloud Object Storage 是一项云存储服务,允许你将数据存储在云中。该服务基于 IBM Cloud 平台。
接下来我们将探讨美国国家标准与技术研究院(NIST)的云部署参考架构。
NIST 云部署参考架构
现在我们了解了云存储的基本概念,接下来我们看一下 NIST 云部署参考架构。主要的参与者包括:
-
云消费者:个人或组织与云服务提供商签订合同,以便为你的组织使用云服务。
-
云服务提供商(CSP):云服务提供商是一个个人或组织,负责购买和管理提供服务所需的计算基础设施,并通过网络接入直接或通过云经纪人将服务提供给有兴趣的客户。
-
云服务经纪人:云服务的整合变得太复杂,云消费者难以管理,因此他们转向云经纪人而非 CSP。云服务经纪人是一个管理云服务的公司,包括服务的使用、性能和交付,以及 CSP 和云消费者之间的连接。
-
云审计员:由云消费者雇佣的组织,负责评估、测试并报告云服务提供商和经纪人,以及云环境的管理和安全性。
-
云承运商:提供运输服务的供应商,例如云系统所需的带宽。
接下来我们来谈谈 Docker,以及它如何帮助促进 NIST 架构。
什么是 Docker?
Docker 的缩写代表 数字容器。它是一种软件技术,使容器能够在不同平台上运行。为了确保应用程序的正常运行,所有 Docker 的依赖项都以容器的形式存在。通过操作系统级的虚拟化,Docker 提供了一个 PaaS,交付容器化的软件应用程序。这项技术将应用程序与基础设施隔离开来,从而加速软件交付。Docker 的优势在于它允许应用程序在任何环境中运行,因为它们与依赖项一起打包进 Docker 容器。
微服务
微服务是一种软件开发技术,它允许你将应用程序分解成更小、更易管理的模块。每个微服务可以用不同的语言编写,并运行在自己的平台上。这使得它们易于扩展和管理,同时也给予你为每个微服务选择最佳技术的灵活性。微服务非常适合云部署,因为它们使你能够根据需要轻松地扩展或缩减应用程序。
理解 Kubernetes
Kubernetes 是一个开源系统,用于大规模管理容器。它由 Google 开发,目前由云原生计算基金会维护。Kubernetes 提供了一个平台,用于部署、管理和扩展容器化应用程序。它可以在本地或云端使用,并支持多种平台,包括 Linux、Windows 和 macOS。
Kubernetes 是一个强大的工具,如果你在云部署中使用容器,应该学习如何使用它。它可以帮助你更有效地管理容器,并根据需要扩展或缩减应用程序。
容器安全挑战
尽管容器提供了许多好处,但它们也带来了一些安全挑战。因为容器包含了应用程序的所有依赖项,所以它们可能成为黑客的攻击目标。你需要采取措施确保容器的安全,防止它们受到攻击。
确保容器安全的一种方法是使用身份验证和授权机制。你还可以使用防火墙和其他安全措施来保护容器免受攻击。保持容器镜像的最新也是很重要的,这样你可以应对最新的安全威胁。
无服务器计算
无服务器计算是一项新技术,它允许你运行应用程序,而无需担心服务器。通过无服务器计算,服务器被抽象化,你只需要关注代码。这使得部署应用程序变得简单,同时也消除了对服务器管理的需求。
无服务器应用程序并非完全没有服务器;服务器必须存在,但它们对开发人员来说是不可见的。在服务提供商的云托管架构中,应用程序软件在第三方服务提供商的托管基础设施上运行。云服务提供商负责提供、扩展、负载均衡和保护无服务器基础设施。云服务提供商还负责软件和系统的补丁管理,以及底层操作系统、应用程序和服务。
现在我们已经讨论了云的运作方式以及它的功能,接下来让我们谈谈如何攻击云。
攻击云
正如我们将要发现的那样,云计算有其安全挑战。让我们讨论一下我们在确保云环境安全时面临的一些挑战。
云安全
云计算的最大关注点之一是安全性。当你的数据存储在云中时,你需要确保它是安全的。关于云安全的秘密是:它只是我们可能包括在自己网络中的另一种网络基础设施。因此,我们在内部网络(包括无线网络)中遇到的相同威胁,正是我们在云中面临的威胁。诸如注入攻击、身份验证问题、数据泄漏、配置错误、编码问题、密码和 Web 服务器/应用程序漏洞等问题只是其中的一部分。然而,如果我不至少讨论其中的几个,我就没有做到尽职尽责,所以让我们来谈一谈:
-
确保选择一个声誉良好的云服务提供商,具有良好的安全性口碑。
-
使用强密码和身份验证方法。
-
加密你的数据。
-
避免在云中存储敏感数据。
-
了解云的漏洞以及如何防范它们。
云计算是部署应用程序的绝佳方式,它提供了多个好处,包括灵活性、可扩展性和便利性。但重要的是要意识到使用云计算时涉及的安全挑战,并采取措施保护数据。只要采取正确的预防措施,你可以安全地在云中部署应用程序,并享受它所提供的所有好处。
现在让我们讨论一些可以攻击云的具体方式。
API 漏洞
如果你想攻击云基础设施,一个好的起点是 API 漏洞。API 是许多基于云的服务的支柱,它们的安全性通常比其他基础设施部分更宽松。通过发现和利用 API 中的漏洞,攻击者可以访问敏感数据或破坏服务的可用性。
API 漏洞可以分为两大类:一类是允许访问敏感数据的漏洞,另一类是允许攻击者发起拒绝服务攻击的漏洞。允许访问敏感数据的 API 漏洞包括 SQL 注入漏洞和跨站脚本(XSS)漏洞。允许攻击者发起拒绝服务攻击的 API 漏洞包括缓冲区溢出漏洞和跨站请求伪造(CSRF)漏洞。
攻击者可以使用多种方法定位 API 漏洞,包括挖掘公开可用的信息,如源代码库和漏洞追踪器。攻击者还可以使用自动化工具扫描流行 API 中的已知漏洞。
一旦攻击者发现了 API 中的漏洞,他们可以通过多种方式进行利用。例如,他们可能会利用漏洞访问敏感数据或发起拒绝服务攻击。
为了防止攻击者利用 API 漏洞,组织应该实施一个全面的安全计划,包括 API 的静态和动态测试。静态测试有助于发现潜在的漏洞,而动态测试则有助于验证漏洞是否已被正确修复。
组织还应考虑实施速率限制和其他控制措施,以限制拒绝服务攻击的影响。通过采取这些措施,组织可以帮助保护其基于云的服务免受攻击。
使用社会工程学进行服务劫持
是的,这就是“事儿”。坏人们的攻击手段越来越狡猾和阴险。不幸的是,社会工程学是他们最喜欢的工具之一。攻击者通过钓鱼、欺骗、社会工程学或利用软件漏洞窃取 CSP 或客户的凭证,从而进行账户或服务接管。攻击者利用窃取的凭证访问云计算服务,危及数据的机密性、完整性和可用性。攻击者可能会尝试重置密码或 IT 人员访问其云服务以获取密码。猜测密码、键盘记录恶意软件、利用密码破解方法和发送钓鱼邮件是获取密码的其他手段。
旁道攻击或跨访客虚拟机(VM)漏洞
恶意内部人员和攻击者可以使用旁道攻击窃取虚拟机中的数据或敏感信息。跨访客虚拟机(VM)漏洞是攻击者可以采用的另一种方式。通过攻破同一物理服务器上其他访客的虚拟机,攻击者可以从同一服务器上其他虚拟机窃取数据或敏感信息。
包装攻击
“这首歌献给屋子里的所有黑客!”
即使在快速结算账目时,
我们的灾难恢复需要更多的磁盘,
把你的比特币拿出来,证明一下,否则你就输了,
我拿到了 C64,我们把它送上了轨道"
– 双核“万物皆可” (www.youtube.com/watch?v=FoUWHfh733Y)
哦,错的包裹类型。我的错。
在包裹攻击中,攻击者的欺骗行为发生在 简单对象访问协议 (SOAP) 消息在 TLS 中的转换过程中。入侵者复制消息体并将其传输给服务器,仿佛他们是合法用户。服务器通过比较签名值(该值也被复制)与原始签名进行身份验证。然后,攻击者可以突破云端,执行恶意代码,扰乱云服务器的正常运行。
云端劫持(MITC)
MITC 攻击是一种攻击方式,攻击者控制或改变云应用程序的行为。攻击者可以利用 MITC 攻击绕过安全控制、将恶意代码注入应用程序并窃取数据。他们还可以利用 MITC 攻击获取其他用户账户的访问权限,进行其他恶意活动。
云跳跃攻击
云跳跃攻击是一种复杂的黑客攻击活动,针对使用云服务的组织。云跳跃攻击通常发生在托管服务提供商(MSP)及其客户之间。攻击的目标是窃取这些组织的数据和知识产权。云跳跃攻击使用各种技术,包括恶意软件、钓鱼攻击和社交工程,来获取组织系统的访问权限。一旦获取访问权限,攻击者便窃取数据和知识产权,并转向其他组织进行攻击。
云加密劫持
加密劫持是未经授权使用他人计算机进行加密货币挖掘的行为。加密货币挖掘是通过计算机算力解决复杂数学问题,以验证和记录区块链上的交易的过程。由于加密劫持易于执行且不需要太多技术知识,它正成为一种越来越常见的攻击方式。攻击者可以在受害者的计算机上进行加密劫持,偷偷挖掘加密货币,且不被受害者知晓或同意。他们还可以在组织员工的计算机上进行加密劫持,这会导致组织的财务损失,并降低员工的生产力。
云端恶意软件
Cloudborne 是一种裸金属云服务器中的安全漏洞,攻击者可以通过该漏洞将恶意后门程序安装到固件中。即使服务器被重新分配给新客户或组织作为 IaaS 使用,安装的恶意软件也能持续存在。物理服务器并不局限于一个客户,可以从一个客户转移到另一个客户。Cloudborne 恶意软件是专为感染基于云的系统而设计的恶意软件。Cloudborne 恶意软件可以用来窃取数据、破坏系统并传播勒索病毒。它还可以用来获得组织系统的访问权限并窃取数据。Cloudborne 恶意软件是一个日益严重的威胁,因为它很难被检测到,并且可以被用来针对各种各样的组织。
通过利用 SSRF 漏洞获取访问权限
服务器端请求伪造 (SSRF) 是一种漏洞,攻击者可以利用该漏洞向服务器发送请求,访问服务器本不应能够访问的外部资源。
攻击者利用 SSRF 漏洞的其中一种方式是通过向云存储服务(如 Azure Blob 存储或 Amazon Simple Storage Service (S3))发送请求,然后读取服务的响应。这可以通过在 JavaScript 中使用 fetch API,或者在 Linux 中使用 get has 命令来完成。
一旦攻击者访问到云存储服务的响应,他们就可以下载存储在该服务中的任何文件。
攻击者利用 SSRF 漏洞的另一种方式是通过向托管敏感文件(如配置文件或数据库)的 web 服务器发送请求。然后,攻击者可以使用 Linux 中的 GET 命令下载该文件的内容。
通过利用 SSRF 漏洞,攻击者可以访问存储在云中的敏感文件,还可以窃取云端应用程序中的数据。
接下来,我们来谈谈容器漏洞。
容器漏洞
容器是云中部署应用程序的常见方式。它们可以将应用程序与底层系统隔离,并且便于将应用程序从一台服务器移动到另一台服务器。然而,容器漏洞可能允许攻击者获得底层系统的访问权限,窃取数据或安装恶意软件。攻击者还可以利用容器隐藏他们的恶意活动,使组织的安全工具难以检测。容器是攻击者的热门目标,因为它们易于利用并且提供了对底层系统的大量访问权限。
以下是一些安全专家应当警惕的常见漏洞:
-
不安全的容器运行时配置:如果容器的运行时配置没有正确设置,则容器可能不安全。攻击者可以利用这些漏洞获得对底层系统的访问权限,窃取数据或安装恶意软件。
-
嵌入式恶意软件:恶意软件可以嵌入运行在容器中的应用程序代码中。这些恶意软件即使在容器被删除或重新分配给其他客户端后仍然可以保持活动状态。
-
访问控制不当:容器通常具有较差的访问控制,这使得攻击者能够访问底层系统并窃取数据或安装恶意软件。
-
安全控制不足:容器没有与底层系统相同的安全控制,这使得攻击者能够绕过安全控制并窃取数据或安装恶意软件。
-
泄露的容器:容器可能会将数据泄露到底层系统,这可能允许攻击者窃取数据或安装恶意软件。
-
不安全的数据存储:容器数据可能在底层系统上不安全地存储,这可能允许攻击者窃取数据或安装恶意软件。
组织应当了解这些漏洞并采取措施进行缓解。安全专业人员也应该意识到这些漏洞,并采取措施保护组织免受其害。
接下来,我们来谈谈攻击者使用的一些具体工具和技术。
攻击者的工具和技术
要攻击云,黑客需要相应的工具。在这里,我们将讨论一些常见的可用工具。
工具
容器镜像是一个软件包,包含操作系统、应用程序、运行时和其他组件。这些容器在行业中被频繁重用,可能包含具有安全隐患的开源库。这些缺陷不仅危及每个容器的安全,也危及整个容器引擎的安全。像 Clair、Twistlock 和 Trivy 这样的工具是攻击容器的绝佳选择。
想要攻击 Kubernetes,也叫 K8s 吗?我们发现的大多数漏洞都与配置错误有关。Sysdig (sysdig.com) 是一个非常好的工具,不仅可以扫描漏洞,还可以验证容器镜像。
不信你看,攻击者使用 Google 黑客技术来识别亚马逊云存储服务(称为 S3 存储桶)!如果你还记得我们的 Google 黑客技巧,可以使用 inurl 语法来查找 AWS 使用的子域名。
例如:
inurl: s3.amazonaws.com
inurl: s3.amazonaws.com/ audio/
inurl: s3.amazonaws.com/video/
inurl: s3.amazonaws.com/backup/
inurl: s3.amazonaws.com/movie/
inurl: s3.amazonaws.com/image/
但如果你想要一个更直接的方法,可以查看 S3Scanner (github.com/sa7mon/S3Scanner) 来识别云服务(如 AWS)的开放 S3 存储桶,并获取其内容用于恶意目的。
接下来,让我们考虑一些额外的工具和这些工具能够帮助我们解决的安全风险。
枚举 AWS 账户 ID 和角色
AWS 账户由唯一的 ID 标识,如果这些 ID 被公开,攻击者可能会利用它们来攻击云服务。这些持久性标识符本应私密,但它们经常未经用户同意暴露给公众。攻击者可以利用这些信息泄露,从而进行恶意操作。通过分析 AWS 错误信息,攻击者可以确定哪些 身份与访问管理(IAM)角色名称存在。AWS 云服务中的错误会泄露用户的存在,错误信息中包含有关用户存在的线索。用户通常可以在 AWS 云服务中承担多个角色。每次 AWS 失败时,都会泄露角色存在的信息。如果 AWS 账户在一定次数的尝试后被封锁,采用暴力破解的方法虽然具有挑战性,但并非不可能。
CloudGoat AWS
CloudGoat 是一个工具(rhinosecuritylabs.com),可以让你测试 AWS 账户的安全性。该工具基于 开放 Web 应用安全项目(OWASP)的十大安全风险。没错,OWASP 也为云安全提供了清单。
以下是 CloudGoat 测试的十大安全风险:
-
注入攻击:向 Web 应用程序中注入未经授权的代码。
-
身份验证和会话管理失效:不安全的登录凭证和会话 Cookie。
-
跨站脚本攻击(XSS):恶意代码在用户访问网页时执行。
-
不安全的直接对象引用:未经授权访问敏感数据。
-
安全配置错误:安全设置配置不正确。
-
授权和身份验证不足:缺乏适当的身份验证检查。
-
加密不足:弱加密算法和密钥。
-
数据篡改:篡改信息以改变其完整性。
-
跨站请求伪造(CSRF):攻击者诱使用户执行他们本不打算做的操作。
-
信息泄露和不当授权:未经授权访问数据。
其他可以用来分析云服务/部署的工具包括:
-
DockerScan
-
GCPBucketBrute
-
AWS pwn
我相信还有数百个其他风险,但这些是你需要关注的,对于你的近期未来尤为重要。
接下来我们来探讨一些云安全的最佳实践。
云安全最佳实践
提升云端系统安全的第一步是启用 SSL(安全套接字层)和 TLS(传输层安全)加密。这有助于防止数据被攻击者拦截。
你还可以通过使用防火墙和 IDS(入侵检测系统)及 IPS(入侵防御系统)来提升系统的安全性。这些设备有助于保护系统免受恶意流量攻击。
这是你可以做的其他事情的清单:
-
为了保护数据,你应该强制使用数据加密和访问控制。这包括静态数据和传输中的数据。
-
灾难恢复规划是确保云端系统安全的另一个关键因素。你应该有一个应对自然灾害或安全事件的计划。
-
强制执行 SLA,以确保你的云服务提供商符合你已列出的安全要求。
-
使用强有力的 AAA(认证、授权和审计)控制。这些控制措施可以帮助保护你的系统免受未经授权的访问。
-
停止允许员工共享用户凭证。这将有助于减少数据泄露的风险。
-
隔离内存、存储和网络访问。这有助于防止攻击者获取系统的访问权限。
-
了解你的云责任模型。这将帮助你确定谁负责确保云端系统的安全。
-
注意使用云服务所涉及的风险。教育你的员工了解这些风险,并采取措施加以缓解。
为了保护你的云端系统安全,你需要建立并执行云安全政策。这些政策应根据云中存储数据的风险级别来制定。
在制定云安全政策时,你应该考虑以下事项:
-
存储在云中的数据类型
-
数据所需的安全级别
-
数据的访问和使用方式
-
访问数据的认证要求
-
数据的加密要求
-
数据的保存和处置要求
-
针对数据泄露的应急响应计划
-
对违反安全政策的员工采取的纪律处分
-
访问数据的员工的培训要求
你还应该考虑建立一个云安全治理框架。这将有助于确保你的云安全政策得到遵守。
重新核对你的合规要求
当你在云中存储数据时,需要确保遵守相关的合规要求。这些要求因组织而异,因此你需要咨询法律部门,以确保你遵守相关规定。
一些适用于基于云的系统的标准合规要求包括:
-
健康保险流通与问责法案(HIPAA)
-
萨班斯-奥克斯利法案(SOX)
-
支付卡行业数据安全标准(PCI DSS)
-
格雷姆-利奇-布莱利法案(GLBA)
最后,你应该确保定期更新设备上的软件和固件。这将有助于保护你的系统免受已知漏洞的利用。
通过遵循这些最佳实践,你可以帮助提升基于云的系统的安全性。
总结
在这一章节中,我们讨论了云计算如何带来益处,同时也说明了云计算在安全方面可能面临的挑战。我们讨论了云环境易受到攻击的一些方式,分享了攻击者可能使用的工具和技术。最后,我们讲解了一些最佳实践,帮助你确保云环境的安全。
需要记住的重要一点是,云环境中许多我们所看到的弱点和攻击,与我们在常规网络中学到的内容是相同的,这些也同样是攻击者的目标。
在下一章中,我们将讨论攻击者如何看待密码学,以及我们可以采取哪些措施应对。
问题
在我们结束时,以下是一些问题,供你测试自己对本章节内容的理解。你可以在附录的评估部分找到答案:
-
以下哪些内容在云环境中不能进行配置?
-
基础设施即服务(IaaS)
-
平台即服务(PaaS)
-
软件即服务(SaaS)
-
云应用即服务(LaaS)
-
-
云托管的 SaaS 环境提供什么?
-
开发选项
-
测试选项
-
软件托管
-
改进的安全性
-
-
以下哪个是由基于云的防火墙隔离的?
-
主机
-
网络
-
访问控制列表(ACL)
-
权限
-
-
云托管环境有多少种?
-
五个
-
四个
-
三个
-
两个
-
第十六章:使用密码学
如果你是密码学的新手,我们来谈谈它的目的。我会尽量让它简单易懂,因为对于一些人来说,密码学可能让人感到难以应对。
密码学的核心就是保护数据,通常是以消息或文件的形式。这可以通过将数据转换成不可读的格式来实现,这种格式通常被称为密文。将密文转换回可读数据的唯一方法是使用特殊密钥,只有发送者和接收者才能访问该密钥。这个过程叫做加密,它是密码学工作原理的基础。
当你读完本章后,我希望你能带着更广泛的视角和对密码学在保护信息和数字通信方面的核心作用有更深入的理解。
本章我们将讨论以下内容:
-
理解密码学
-
标准与协议
-
密码学的对策
让我们首先讨论密码学为何对我们的安全工作至关重要。
理解密码学
在本节中,我们将讨论为什么密码学如此重要,以及一些可供我们使用的最佳密码学工具和资源。掌握适当的工具和资源对你作为一名安全专家来说将是非常宝贵的。所以,让我们开始讨论这究竟是什么。
为什么要使用密码学?
那么,密码学为我们带来了什么呢?它带来了不可否认性。这意味着发送消息的人不能后悔或否认自己修改了文档。例如,“不是我,Dale,我发誓,” 我会回答,“不,是你,因为它是用你的密钥加密的。”
密码学还带来了认证功能。有时我们访问网站时,验证我们身份的真实性至关重要,显然,我们也想验证我们的信用卡信息,对吧?所以,这对我们来说非常重要,尤其是对我们行业中的人们而言。
当然,保密性是密码学能为我们做的另一大重要因素。就保密性而言,我们只能将某些资源提供给授权用户。至于这个过程是如何运作的,或者说密码学如何运作,这些内容都是非常基础或初步的。过程如下。
我们有明文;这是可以格式化并且我们可以读取的文本。它可能是一个 Word 文档,可能是一个电子邮件,但它会通过某种算法进行加密,例如数据加密标准(DES)或高级加密标准(AES),甚至是里维斯—沙米尔—阿德尔曼(RSA)。加密应用后,我们称整个文档为密文。它完全无法读取。这个文件随后会被传输,在另一端,它会经历相反的过程,对吗?密文会使用已知的密钥进行解密,然后给我们展示原始发送者或资源希望我们看到的明文。
加密学是确保我们信息安全的重要组成部分,并且在各种不同的应用中都得到了广泛使用。从我们的电子邮件到金融信息,都受到加密技术的保护,因此理解其工作原理非常重要。
看吧?我告诉过你这很简单。
接下来,让我们谈谈加密技术的类型。
加密技术的类型
这个话题没有太多要讲的,因为你猜怎么着?它只有两种类型:对称加密和非对称加密:
-
对称加密完全是使用相同的密钥进行加密和解密。因此,我们有一个发送方和一个接收方,他们将使用相同的密钥加密他们想要往返发送的消息。它非常快速,也非常高效,但也有几个主要的缺点:
-
第一个问题是,如果你丢失了那个密钥,那么你就失去了对加密信息的所有访问权限。
-
其次,管理大规模的对称加密部署非常困难。
-
-
非对称加密几乎可以说是与对称加密的完全对立。与使用一个密钥进行加密和解密不同,非对称加密使用两个密钥,一个公钥和一个私钥:
-
第一个密钥是公钥,它是任何人都可以访问的密钥。
-
第二个密钥是私钥,它应该仅为所有者所知。绝不应将其交给其他任何人。而且,关于这一点的好消息是,如果你使用公钥加密信息,那么解密它的唯一方式就是使用相应的私钥。因此,即使有人拦截了消息,他们也无法做任何事情,因为他们没有私钥的访问权限。
-
非对称加密的另一个优点是,它不需要像对称加密那样进行安全的初始密钥交换。因此,在这方面它稍微更安全。它不是完美的,但肯定更安全。
非对称加密也使用数字签名。数字签名只是确保消息在传输过程中没有被篡改的一种方式。其工作原理是,消息的发送者使用他们的私钥对消息进行加密,并将消息和他们的公钥一起发送给接收者。接收者可以使用发送者的公钥解密消息,然后将其与原始消息进行对比,确保消息未被篡改。
当然,它也有一些缺点。它比对称加密略慢一点(我们说的是半个眼皮眨眼的时间和完全眨眼的时间),而且也需要更多的带宽。但总体来说,这是一种更安全的信息传输方式。现在,没有什么是万无一失的,对吧?如果通过这一系列的内容我教会了你什么,那就是总有破解的办法。对于非对称加密,它容易受到中间人攻击(MITM)和暴力破解攻击的威胁。而且,不幸的是,如果私钥丢失了,那么就没有办法解密用它加密的信息。
接下来我们讨论一些其他的密钥。
GAK
政府访问密钥(GAK)是美国国家安全局(NSA)提出的一个系统,旨在允许政府访问加密通信。该密钥将是一个数学值,用于解密消息。这样的密钥的存在将使 NSA 能够读取加密通信,包括公民和企业之间的通信,以及不同国家之间的通信。
这个系统的问题在于,它需要一个极其复杂且难以生成的密钥。当然,NSA 需要完全保密这个密钥。如果这个密钥泄露出去,那么任何人都可以用它来读取加密通信。有没有人看过 1991 年上映的电影*《偷天换日》*,主演是罗伯特·雷德福?这部电影可谓预测了加密技术的未来!(Dale 的家庭作业:观看这部电影!)
GAK 的另一个问题是,它将非常难以实现。任何对企业和政府所使用的加密算法的更改都需要经过 NSA 的批准。这将赋予 NSA 巨大的权力,而且目前还不清楚是否可以信任他们拥有如此大的权力。
同样值得注意的是,NSA 并不是唯一一个对读取加密通信感兴趣的政府机构。英国的政府通信总部(GCHQ)也表达了对一种可以让他们读取加密通信的系统的兴趣。
接下来我们继续讨论另一个加密工具,叫做密码。
了解密码
我们在谈论密码时,其实是在讨论一个算法。你可以把它看作是一个定义好的步骤序列,必须按照这个序列来执行加密和解密过程。一旦消息或数据通过某种密码加密,它就会被认为是不可读的,除非接收消息或数据的人知道解密所需的秘密密钥。
现在,信不信由你,密码实际上无处不在,不仅仅是在我们的电子邮件和数据中,我们还在其他通讯技术中使用它们,比如手机。这使得我们的手机通话更加安全。
密码类型
现在,我知道你在想什么:“Dale,只有一种密码吗?” 不,实际上有几种不同类型的密码。我们可以将它们分为两种类型,要么是经典的,要么是现代的。我知道,这听起来像是我们要讨论艺术,但我们并不会讨论这个。
让我们来看一下经典密码和现代密码。
经典密码
经典密码是指在计算机发明之前开发的密码。它们包括经典密码,例如凯撒密码,这是一种简单的替换密码,其中每个字母都根据定义的模式替换为另一个字母。图 16.1是凯撒密码的示例:
图 16.1 – 凯撒密码示例(简单的字母替换)
所以,在这个例子中,MY VOICE IS MY PASSWORD,如你所见,会被转换为 DB XGOET OL DB HALLCGKR。我们所做的就是基本上将M替换为另一个字母,在这个例子中是D。注意到DB在两个实例中都代表MY。这将帮助我在有足够时间的情况下,弄清楚如何解密这条消息。
另一种经典密码被称为换位密码。在换位密码中,你使用一种被称为密钥的东西。现在,根据你使用的换位密码,这里我展示的是(在图 16.2中)一种被称为铁路线密码:
图 16.2 – 铁路线密码示例
在这种情况下,密钥是3,意味着字符之间有三个空格。你可以看到,MY VOICE IS MY PASSWORD被以这种上下排列的方法拼写出来,中间的空格几乎完全被忽略。所以,第一行最终变成了MISAO,而下一行的代码则变成了YOCIMPSWR,第三行则变成了VEYSD。显然,接收方需要知道密钥是3才能解密此消息。
另一种换位密码是路线密码。使用路线密码时,我们会对要加密的相同数据或信息进行处理。在图 16.3中,我将使用文本MY VOICE IS MY PASSWORD,并像这样排列它:
图 16.3 – 路由密码示例
你能看到所有内容吗?它将明文按照网格模式展示,就像这样,当然,最后两个字符只是随机字符。这种类型的密码是根据路由决定的。
这些只是经典密码的一些快速示例。
接下来让我们来看一下现代密码。
现代密码
你可以看到经典密码类型是多么容易被破解。现代密码相对来说更难手动破解。通常,现代密码的目的是为发送者提供真实性、安全性和完整性。
你将看到的现代密码类型包括对称密码和非对称密码。在我谈到这些时,其实有一种方法可以同时使用非对称和对称密码,但这可能有些深入,因此我就不在这里展开讲解了,如果你想深入研究,可以进一步查阅相关资料。
还有一些密码是基于数据输入的。我们有一种叫做分组密码的密码,所谓的分组就是算法以比特组或固定大小的块为单位进行运算。我们今天看到的大多数密码学算法,如 DES、AES,甚至国际数据加密算法(IDEA),都是使用基于分组的密码。现在,如果传输的数据块大小小于密码本身使用的块大小,就会有一些填充,以确保它达到所需的块大小。
还有流密码。说到流密码,实际上就是一种对称密钥密码,其中明文数字与伪随机密码数字流相结合,我们有时称之为密钥流。在流密码中,每个字符一次加密一个,并且与之对应的密钥流数字也一同加密;这样我们就得到了加密文本数字流。
让我们来看一下其他类型的算法。
使用其他算法
在不同的算法中,我们最常见的包括DES、三重 DES(3DES)、AES和RC4。
让我们接下来讨论这些。
DES
这个算法是在 1970 年代由IBM创建的。它使用 64 位的块大小。除此之外,它仅使用 56 位的密钥进行加密和解密,这并不是很安全。事实上,在 1999 年,这个算法就被攻破了,尤其考虑到当时的计算能力并不强大。但 DES 本身提供了多达 72 万亿种可能的加密密钥,而我们在 1999 年就攻破了它。现在,既然这个算法被攻破了,美国政府介入并提供了帮助。显然,为了弥补这一漏洞,防止其被暴力破解,我们提出了三重 DES,或者有人称之为 3DES。之所以叫 3DES,是因为它通过三次不同的密钥,重复执行 DES 算法三次。
现在,关于这些密钥的使用方法,你有几种不同的选择:
-
第一种选择是三个密钥完全不同或独立。
-
第二种选择是使用K1和K3密钥,但由于它们都用于加密,因此它们是相同的。
-
另外,还有第三种选择,那就是三个密钥相同,但这并不十分安全。
最安全的选择是第一种方式,即所有三个密钥都是独立的。
AES
与 DES 和 3DES 相比,AES 可以算是一个完全成熟的成人。它采用 128 位的块大小,密钥长度为 128、192 或 256 位。我敢打赌,你一定猜不到它们各自的名字,对吧?它们分别被称为AES128、AES192和AES256。这有点难猜,是吧?AES 是一种对称密钥算法,创建时得到了国家标准与技术研究院(NIST)的帮助。政府机构用它来加密被认为是非机密的数据。
RC4
有些人称之为Ron Rivest。Ron 是帮助创建这个密码的先生的名字,但这个密码叫做 Ron Rivest,它是Rivest Cipher 4。这个密码被认为是一个可变密钥长度的对称密钥流密码。老实说,它并不好,因为你知道吗?我们在有线等效隐私(WEP)中使用这个加密算法,而 WEP 是一个被非常容易攻破的无线安全协议。
RC4 之所以容易受到多种攻击,是因为它存在所谓的偏置输出。有一个规则,如果其原始状态下第三个字节为0,而第二个字节不等于2,则意味着第二个输出字节总是0。现在,这可能看起来有些复杂,但相信我,一旦我们看到像这样的模式,我们就能通过逆向工程破译这个密码。这就是 WEP 被攻破的原因。
另外两个我们应该熟悉的算法是Blowfish和Twofish。
Blowfish 和 Twofish
Blowfish 算法是在 1993 年开发的,我知道你会想,“Dale,那是很久以前的事了。” 但它仍然是一个非常强大的对称块加密算法,我们今天仍在使用。它使用相同的密钥来加密和解密。它采用 64 位块,密钥的长度从 32 位到 448 位不等。这个协议设计的目的是替代 DES 和三重 DES。
现在,可能会让你感到惊讶的是,很多人仍然喜欢使用 AES,我想这没什么错,但你需要知道 Blowfish 的一个优势就是它的速度。它将数据拆分为 64 位块,而 AES 使用的是 128 位块,从而实现更快的加密和解密。
我们还有一个叫做 Twofish 的加密算法。这种加密算法是在 Blowfish 后几年创建的。它是在 1998 年推出的,与 Blowfish 算法非常相似。这就是我们这里有相似名字的原因,但它像 AES 一样使用 128 位块进行数据加密。实际上,Twofish 与 AES 非常相似,因为它支持 256 位块,以及 192 或 128 位的密钥大小。而且,和 Blowfish 一样,它使用单一的密钥。
接下来是 Threefish,它是在 2008 年开发的,是 Skein 算法的一部分。它是一种 12 轮 Feistel 网络加密算法,块大小为 128 位,密钥长度为 256 位。Threefish 非常快速且安全,具有很高的抗攻击能力。
现在,这两个加密算法之所以非常受欢迎的另一个原因是,它们没有被专利保护。它们是开源的。事实上,Twofish 曾是美国政府用来替代 DES 的五个最终候选算法之一,但不幸的是,它没有获胜。不过我想它赢得了“最具亲和力奖”。现在我只是开玩笑。
所以,现在我们已经讨论了最流行的算法,在接下来的部分中,我们将讨论标准和协议。
标准和协议
让我们来谈谈一些我们在外面看到的最常见的标准。在这一部分,我们将讨论更多的算法、哈希、加密算法以及其他加密机制,帮助你保护数据和通信的安全。
DSA
这是一个联邦信息处理标准,用于创建数字签名。这个签名标准的工作原理是,它创建一个 320 位的数字签名,但签名还伴随着 512 位到 1024 位的安全性。它还利用我们的私钥和公钥技术或过程。
RSA
嘿,你知道吗?RSA 是创始人的首字母缩写。R 代表与 RC4 中的 Ron Rivest 相同的那位,还有另外两位先生。S 代表 Shamir,而 A 代表 Alderman。这三位先生都在麻省理工学院(MIT)工作过。Rivest 和 Shamir 是计算机科学家,Alderman 是一位数学家。
现在,RSA 还使用公钥加密系统,并且以两个大质数为基础。今天我们看到 RSA 是很多操作系统中的标准:微软、苹果、Sun Microsystems,并且广泛应用于网络卡、智能卡,甚至我们所说的硬件加密手机。现在,这可能会让你有点脑袋疼,但让我简要介绍一下它是如何工作的:
-
首先,选择两个大的质数,我们称它们为 A 和 B。这两个质数及其乘积通过设置 C 等于 A 和 B 的乘积来确定,C(数学上我们可以表示为 C=AB),因此 C 被称为 模数。
-
RSA 然后选择另一个称为 E 的数字,它小于 C 并且与 (A-1)(B-1) 互质。这样做的目的是确保 E 和 A-1 x B-1 之间除了数字 1 外没有其他共同因子。
-
我知道,这越来越好,因为接下来 RSA 选择了另一个数字 F,并且这样做是为了让 EF-1 能被 A-1 x B-1 整除。
-
现在,一些 代数爱好者 跟得上了。但等一下,还有更多内容。E 和 F 的值分别被称为公钥和私钥的指数。使用这些指数时,公钥通过将 C 和 E 配对来生成,而私钥则是通过将 C 和 F 配对来生成。
现在,这种加密方法之所以非常安全,是因为从公钥获取私钥被认为是极其困难的。显然,如果有人能够将 C 因式分解为 A 和 B,那么那个人就可以解密私钥,但几乎不可能有人能够获取这两个随机选择的质数。所以,这对于我们来说再次提高了安全性。
哈希
我开始饿了。感觉土豆饼或者一些美味的卷心菜和炖肉非常好吃。我得把食物从脑袋里赶出去!
关于 哈希,我们试图做的是找出一种方式来验证特定文档是否未被更改。我们想知道它是否合法,是否已经签名,并且没有人修改或篡改它。我们通过将文档与一个 数字签名 相关联来做到这一点。这个签名用十六进制代码表示。这个代码告诉我们文档的默认值,如果它等于十六进制代码数字,我们就知道它是合法的,已经签名,并且没有被更改。这同样适用于可执行文件或电子邮件。但是,如果文档或可执行文件被修改了,那么哈希值就无法正常工作,或者计算结果不正确。
消息摘要
当我们谈论加密时,有一件事情我们需要记住,那就是消息摘要。消息摘要也被称为哈希值。它的作用是取一块数据并生成该数据的唯一指纹或哈希值。这很重要,因为当我们谈论认证时,我们是在确保数据没有被以任何方式更改。因此,这使我们能够查看消息并能够说:“好的,这正是发送的内容。它没有被以任何方式更改。”
另一种哈希方法被称为安全哈希算法 1(SHA-1),于 1993 年由 NSA 引入。现在,它的功能是接受输入并生成一个 160 位的哈希值,然后将其转换为十六进制,一旦转换完成,大约有 40 个字符长。它通常与其他协议或安全协议一起使用,例如Pretty Good Privacy(PGP)、传输层安全(TLS)、安全外壳(SSH)和安全套接字层(SSL)。
现在,我知道你可能在想什么:“戴尔,为什么我们从 1 开始?SHA-0 在哪里?” 嗯,SHA-0是 160 位的,但是它太糟糕了,因为存在一个重大缺陷而被淘汰。然后,他们显然推出了SHA-2。现在,SHA-2 与 SHA-1 非常相似,但它使用 256 位,比 SHA-1 更强大和更大。而且,我所说的是它可以使用两种不同的块大小,要么是SHA256,给你一个32 位字,要么是SHA256,双倍,64 位,对吧?猜猜看?
然后他们推出了SHA-3。它不像 SHA-2,后者类似于 SHA-1(而 SHA-1 类似于 SHA-0);SHA-3 唯一相似之处在于其名称。它被称为完全不同的东西的原因是它使用了所谓的海绵构造。数据被吸收,或者输入被吸收,输出或结果被挤出来。在吸收过程中,消息块本身被异或到状态的初始位或子集中。然后,使用排列函数转换该子集。所以,是的,这有点困难。
所以,现在我们已经掌握了这些不同类型的密码,有一些密码是为消息设计的。
为消息设计的密码
我们首先从基于哈希的消息认证码(HMAC)开始。该算法包括嵌入哈希函数,例如 SHA-1 或消息摘要算法(MD5)。它的强度取决于嵌入的哈希函数、密钥大小和哈希输出的大小。
HMAC 的操作方式是有两个不同的阶段。在这些阶段中,创建了一个秘密密钥。有一个用于innie,一个用于outie。我知道,我刚刚开了一个肚脐笑话。它是内部和外部,但概念是相同的。
算法的第一次运算产生了一个内部哈希值,该值由消息和内部密钥衍生出来。第二次运算包括最终的 HMAC 代码,该代码由内部哈希结果和外部密钥衍生出来。现在,HMAC 本身并不加密消息,而是将消息(无论它是否加密)与 HMAC 哈希一起发送。这样,双方都可以使用秘密密钥验证消息是否来自声称的发送方,或者它的真实性是否正确。
接下来我们讨论另一种认证机制。
CHAP
变更握手认证协议(CHAP)是我们通过点对点协议(PPP)和三次握手使用的一种认证机制。CHAP 提供了一种防范我们所称的重放攻击的方法。现在,CHAP 的缺点是它使用共享密钥的方式,客户端和服务器必须知道密钥的明文。搞笑的是,微软推出了他们自己的 CHAP 版本(叫做MS-CHAP),它不需要发送方或接收方知道明文,也不传输明文,但它也曾被黑客攻破。
EAP
可扩展认证协议(EAP)最初是为点对点通信设计的。它作为 CHAP 的替代方案,也用于替代密码认证协议(PAP)。我没有讲 PAP,因为它已经过时。EAP 本身更安全,并且支持不同的认证机制,比如使用一次性密码、标准密码或智能令牌。
接下来我们来讨论一下公钥基础设施(PKI)。
简单的 PKI
PKI 是非对称的,这意味着我们有两把密钥来确保信息被加密,并且只有适当的各方才能解密。记住,在对称加密中,我们只使用一把共享密钥,而在 PKI 中,我们有两把密钥,你听我提到过公钥和私钥。接下来,让我们看看 PKI 包括哪些内容。
你的证书
“嘿,Dale,你一直在说这个证书,什么是所谓的证书?” 证书是一种用来识别组织甚至用户的方式。通常,证书是基于X.509 标准,并且通常包含一些字段,例如证书的有效期、到期时间、用于加密公钥的算法以及证书的颁发者。
实际上,让我快速给你展示一些东西。这里是Packt网站,由于我们使用的是HTTPS连接,这意味着它是一个安全的连接。
图 16.4 – HTTPS 站点会显示一个锁图标,表示连接是安全的。
我将在这里悬停在锁定图标上,它告诉我可以查看站点信息或证书。所以,我可以向下选择查看证书。它告诉我当前证书是有效的,无需深入查看,但让我们还是深入查看一下。你可以在这里看到,它是为了以下目的创建的:验证远程计算机的身份,并将你的身份提供给远程计算机。
图 16.5 – 证书显示了目的和有效日期
通过这种方式,Packt 可以确保他们知道自己在与谁交谈。它显示了证书的颁发对象。告诉我们这是由Cloudflare在其ECC CA-3服务器上颁发的。当然,这里的有效期是从2021 年 6 月 6 日到2022 年 6 月 6 日。我可以进入证书的详细信息标签,查看这里的各种信息。
图 16.6 – 详细信息标签显示更多信息
同样,我可以看到颁发者是sha256。我还可以再次看到有效日期和主题,基本上就是证书适用于谁。你可以看到,当他们颁发证书时,你必须填写申请,以便他们能为你颁发证书,接着他们会进行验证;在这里,Cloudflare 确认了这确实是 Packt Publishing。这样,我就无法为 Packt 创建自己的证书并将其放到网上,骗别人认为我就是 Packt Publishing。
公钥再次是ECC(256 位),这就是密钥。我还可以继续向下滚动,查看有关主题备用名称的信息,他们在这里使用了通配符。
图 16.7 – 证书的更多细节,包括公钥
所以,我们在任何地方都会与证书进行交互。有时,你甚至没有意识到这一点。现在,关于证书,有两种不同的类型:
-
有一个签名证书,由一个公共的证书颁发机构(CA)签名并颁发证书。同样,这些证书通常包含公钥和密钥所有者的身份信息。私钥由证书颁发机构(CA)保密。
-
还有自签名证书。这是指证书的身份由同一组织或实体签署,证明它是经过认证的。例如,如果我想在自己的组织内创建一个证书,我将拥有自己的 CA 服务器,并从该服务器生成一个自签名证书。我们通常不使用自签名证书。事实上,你永远不应该在公开环境中使用自签名证书,只能在你自己的基础设施内使用。
看吧?我告诉你我会让 PKI 变得容易理解。
现在我们来谈谈数字签名。
数字签名
它的设计目的是验证特定的电子邮件或文档是否来自特定的来源。例如,如果布鲁斯·韦恩向塞琳娜·凯尔发送电子邮件,他们俩都会有与之相关联的公钥和私钥。
塞琳娜会使用她的私钥签署她的电子邮件,这样布鲁斯·韦恩就可以确认邮件确实来自她。她用私钥签署文档,这并不是物理签名,而是附加在邮件上的一段代码,表示这是塞琳娜发来的。再次强调,任何人如果愿意,也可以伪造这一签名。但这里有一个关键点。当邮件发送给布鲁斯时,他获取了塞琳娜的公钥副本。记得那个公钥吗?它是公开的,可以提供给任何人,他用公钥来验证签名,确保邮件确实来自塞琳娜。再强调一次,数字签名并不加密内容,它只是用来验证文档、邮件,甚至文件的来源。
接下来,我们将讨论通过网络加固通信的其他方式。
SSL 和 TLS
SSL 和 TLS 都是可以用于通过不安全网络(如互联网)加密通信的加密协议。SSL 是 TLS 的前身,如今更常用的是 TLS。
SSL 和 TLS 使用对称密钥加密和非对称密钥加密的结合来加密通信。对称密钥加密用于加密数据,而非对称密钥加密用于交换密钥。SSL 和 TLS 还使用数字证书来验证实体身份并防止中间人攻击(MITM)。
当我们看 TLS 时,它会经历一个握手过程:
-
我们将拥有一个加密的服务器,或者是包含加密信息的服务器,然后是我们的客户端系统。我们知道与该服务器或数据源相关联的有公钥和私钥。
-
客户端向另一个客户端发送一个Hello消息,带有一个随机值,并告诉服务器它支持的加密算法。
-
服务器回应发送*“嘿,你好吗?我是一个服务器。”这叫做服务器Hello消息,附带服务器的随机值。服务器还会发送“嘿,我已经跟你打完招呼了。”*如果服务器要求客户端提供证书,客户端则会将证书发送回去。
-
然后,客户端创建一个随机的预主密钥,并用服务器证书中的公钥对其加密,然后将预主密钥发送给服务器。接下来有个有趣的地方;一旦接收到预主密钥,服务器和客户端将各自生成一个全新的主密钥和会话密钥,这些密钥都是基于预主密钥生成的。
-
一旦它们都完成了这些步骤,客户端接着发送一条消息,表示,“嘿,我要改变加密算法规格。” 这个加密算法规格将基于我们刚刚生成的新会话密钥,我们将用它们来进行哈希和加密。客户端还会发送一条*“哟,我完成了”的消息,或者客户端完成消息。服务器接收到更新后的加密算法规格,并切换到使用会话密钥进行对称加密的安全状态。服务器还会发送一条“哟,我完成了”*,或服务器完成消息。
-
现在,客户端和服务器都有了新的主密钥和会话密钥;它们都将开始使用这些会话密钥通过安全通道来交换数据。
从客户端到服务器、以及从服务器到客户端发送的所有消息都会被加密。这可不轻松吧?
在使用 SSL 和 TLS 时,有几个不同的工具包可供选择。我想提醒你注意的是,它可能是最流行的工具之一,但这只是一些历史信息,它被称为OpenSSL。现在,OpenSSL 就像是加密学的瑞士军刀,因为它是一个开源资源,这使得它非常具有吸引力,对吧?
现在,有一件事我需要警告你,那就是 OpenSSL 曾经出现了一个非常严重的问题,叫做Heartbleed,这是一个极其严重的漏洞。Heartbleed 漏洞允许互联网上的任何人读取受易受攻击版本的 OpenSSL 保护的系统内存。现在,别担心,它已经被修复了。提示……你会希望在准备考试时了解这个问题。
PGP
PGP 是今年的低调之作。PGP 的起源可以追溯到 1991 年。PGP 之所以非常好,是因为我们可以用它来加密消息和文件,以及数字签名或签署文档,当然,还包括删除文档甚至压缩。事实上,PGP 加密使用的是哈希、数据压缩、对称密钥加密,最后是公钥加密的串联组合。每个步骤都使用了几种支持的算法,每个公钥都与一个用户名或电子邮件地址绑定。
让我们来看一下 PGP 是如何发生和操作的。
图 16.8 – PGP 流程
-
当用户使用 PGP 加密数据时,PGP 会先对数据进行压缩。这种压缩有助于避免一些可以用来破解加密的攻击,因为明文中的模式已经被压缩。
-
PGP 接着会创建一个只使用一次的随机密钥,并用这个密钥来加密明文,从而生成我们的密文。
-
一旦加密完成,随机密钥会使用接收方的公钥进行加密。然后,这个加密数据会发送给接收方。显然,加密过程是反向进行的。
你可能在想,“但戴尔,PGP 到今天还是很好用的,不是吗?” 是的,它确实还是很好用。事实上,我所知道的破解或攻击 PGP 的唯一方法,就是通过安装一款恶意软件来捕获按键记录,这样他们就可以捕获输入密码时的按键。现在,在写这本书的时候,赛门铁克拥有 PGP,并且他们重新命名了它。现在它叫做赛门铁克加密桌面,而服务器组件则被称为赛门铁克加密管理服务器。但基本上,它仍然是 PGP。
所以,现在我们已经弄清楚这些了,来继续讨论对策吧。
加密学的对策
你了解我,我可不想让你们都陷入恐慌,觉得一切都完了!我们可以采取一些对策来减轻可能袭来的攻击。让我们来谈谈其中的一些对策。
EC-Council 列出了 12 个应对措施:
-
第一个要点是,当涉及到访问加密密钥时,只有用户和应用程序才能获得访问权限。
-
你还应该确保部署了入侵检测系统(IDS),并且你正在监控这些密钥的交换和访问,确保你有日志记录发生了什么以及何时发生的。这是以防万一你必须回过头去查看这些日志,因为某些东西被泄露了。
-
另外,你还需要做的是,如果你计划将加密密钥存储在系统或驱动器上,你必须使用密码短语和密码。
-
接下来这一条是为你们这些高级开发者准备的:在任何情况下,密钥都不应该放在源代码中或任何二进制文件里。
-
现在,关于用于签署私钥转移的证书,这是一个大忌。我们绝不、绝不转移私钥。我们只需要说“不”,明白了吗?看到你同意我说的话,我心里稍微高兴一点。
-
当涉及到对称算法时,你应该确保使用可能的最大位数。你至少应该使用 168 位或 256 位。
-
如果你打算实现对称密钥协议的加密,你必须确保执行消息认证。
-
至于非对称算法,你需要使用最大的可用密钥大小,至少是 1536 位或 2048 位。请说 2048 位。
-
说到哈希算法时,请使用尽可能高位数的位数,168 位或 256 位,请!
-
在创建或实现加密环境时,请不要做任何自制的东西。我知道你们一些开发者可能会想,“哦,我可以做得更好一点。” 相信我,别做!使用那些被认为是行业标准的东西。有些人会尝试创建自制的加密算法以及函数,结果不可避免地会给你们留下漏洞。
-
我还会对每个密钥每秒的操作次数设置限制。这样,你就不会让某个人试图通过暴力破解快速找到密钥。
-
最后,一个哈希或任何哈希函数的输出应该具有最大的位数,以便使其难以解密。
好的,看到没?这就是这 12 个内容是多么简单。这也带我们来到了结尾。所以,正如你所看到的,标准和协议对于我们处理和保护数据与通信至关重要。理解工具和流程是你成为一名有效 IT 安全专业人员所必需的。
摘要
保护你的资源免受攻击者侵害的主要方式之一是使用加密保护流动数据或待处理数据。作为安全专业人员,你的工作不是阻止攻击者,这几乎是不可能的。任何东西都可以被黑客攻破。你的工作是减慢他们的速度或使他们气馁,而加密技术确实能够做到这一点。
本书到此结束,但这也是你进入网络安全旅程的开始。当你为 CEH 考试做准备时,请记住,这并不是一项容易完成的任务。这个测试是为了确保你真正掌握了你的专业技能。
请记住,如果你还没有完全掌握我们在本书中讨论的所有概念,请再次复习。进行你自己的研究。通过我的社交媒体渠道联系我。我的热情和使命是帮助每个人和每个公司在使用技术时保持更安全。通过推特或 LinkedIn 告诉我你通过了考试或从我这里学到了一些东西。来自学生、观众和读者的评论真的让我笑容满面。而且,帮个忙……保持安全!
问题
在结束之前,这里有一些问题,供你测试自己对本章内容的掌握。你会在 附录 的 评估 部分找到答案:
-
以下哪个术语也是非对称加密的别名?
-
一个共享密钥
-
哈希
-
一个公钥
-
块
-
-
以下哪项是 SSL 的机制?
-
数据认证
-
存储数据的安全
-
验证数据
-
传输数据的安全
-
-
以下哪种是常见的哈希协议?
-
RSA
-
MD5
-
DES
-
AES
-
-
_________ 是对称加密的另一个名称。
-
对称密钥加密
-
隐写术
-
公钥加密
-
哈希
-
1382

被折叠的 条评论
为什么被折叠?



