网络安全 密码
许多系统都受到简单密码的保护。这并不理想,因为在许多情况下,密码很容易被攻击者破解、重复使用或滥用。本节将探讨有关密码的攻击和防御。
密码强度
什么决定了强密码?是密码的复杂程度吗?它有多少个字符?特殊字符的数量?
著名的漫画创作者 xkcd.com 在下面的漫画中出色地展示了如何攻击密码。请花几秒钟时间查看它,然后我们再进一步讨论。
来自 XKCD 的漫画:https://xkcd.com/936/
如果我们考虑第一个密码 Tr0ub4dor&3,这个密码将符合大多数密码策略规则,例如包含大写字母、数字、特殊字符和 11 个字符的长度。然而,这个密码有一些问题,它是
- 难以记住。你是用 0(数字)替换了第一个 o(字母)字符,还是第二个?你是用 4 替换了 a 字符,还是没有?
- 难以输入。你必须以特定的顺序输入不同的字母、数字和特殊字符。这可能不是你键盘上输入速度最快的单词。
- 它并不十分强大!这个密码基于一个相当常见的单词,它没有提供多少强度,只有大约 28 位的熵。
我们可以通过简单的方式来大大提高密码的熵,而不是选择具有这些负面因素的密码。如果我们考虑密码 CorrectHorseBatteryStaple,我们发现密码有了相当大的改进
- 密码易于输入。对于许多人来说,输入普通单词是一种日常活动,你可以变得非常快。
- 它易于记忆。通过使用密码的视觉图像,一匹马、一块电池、一个订书钉和单词正确,我们可以更容易地记住它。
- 它对大多数密码破解活动都非常有效!它提供了大约 44 位的熵,使其非常难以破解。
像这样的密码被称为密码短语,通常比简单的带有一些复杂性的单词要好得多。想想如何改进密码以使其更强大,并符合密码策略规则,例如特殊字符和大写字母!你甚至可以在密码中使用空格,使密码短语更容易输入。
密码管理器
多年来,写下你的密码一直被认为是一种不好的做法,但真的吗?在多个在线服务中使用相同的密码存在重大风险,如果其中一个平台被黑客攻击怎么办?然后该密码就会被泄露,攻击者可以将该密码重新用于使用该密码的所有其他服务。
为了解决这个问题,建议不要在多个服务中重复使用相同的密码。这对用户来说非常困难,因为他们不仅需要使用唯一的密码,而且还需要同时创建强大而健壮的密码!密码管理器通过为用户提供尽可能安全的方式,将密码写在一个文件、数据库或其他系统中,使密码易于访问,并确保它们在不同服务中强大且唯一,从而帮助解决这个问题。
密码管理器在正确实施的情况下,将
- 使互联网的使用更加安全
- 提高生产力,因为不同服务的密码可以轻松找到,复制并粘贴到用户要登录的相应服务中
- 提供在需要时重置和重新生成新密码的简便方法。
与用户重复使用密码相比,写下密码被认为是用户风险更低的一种方法。是的,这不是一个完美的解决方案,因为密码管理器可能会被泄露,但它被认为是一种更安全的方法。
无密码解决方案
如果密码本身可以结束呢?总有人每天无法输入更长的密码短语作为他们的密码。这可能有很多原因,例如
- 办公室里没有 IT 知识的员工
- 每天在医院访问不同房间的不同患者时,会访问许多不同电脑的医生
- 在需要它的系统上很难输入密码
不需要用户提供密码的系统开发和实施正在迅速发展。与其要求用户使用密码进行身份验证,不如让他们使用例如
- 他们拥有的东西,例如他们的面部或指纹
- 他们拥有的东西,例如令牌或他们的手机
这方面存在挑战,但在安全方面,我们真的是在让问题变得更糟,还是对我们的用户更好?我们必须记住,我们并不寻求实施完美的安全系统,它们通常难以实现且无法实施,因此我们必须仔细考虑如何限制威胁,同时让我们的用户的生活更轻松。密码并不完美,无密码解决方案也不完美。你会为你的用户实施哪一种?
多因素身份验证
当我们了解到无论使用何种解决方案来验证用户,其帐户仍然存在重大风险时,可以实施其他解决方案来帮助降低风险。
多因素身份验证允许解决方案不仅根据用户的密码验证用户,而且同时要求用户提供第二个因素来证明自己的身份。
要求提供第二个因素的方式有很多种。以下是一些例子
- 使用智能手机上的身份验证应用程序提供一个秘密代码
- 通过电话上的短信(“短消息服务”)接收一个秘密代码
- 使用硬件令牌提供一个秘密代码
- 出示指纹或面部以识别个人
所有这些都需要知道密码,还需要提供第二个项目(一个因素)。
这些解决方案有时被认为对用户过于侵入性。为了解决这个问题,可以应用 DAC(“自主访问控制”)的概念。DAC 允许登录解决方案考虑是否要用多因素代码挑战用户。例如,只有在用户
- 从新位置登录时
- 使用不同的浏览器或软件访问应用程序时
- 尝试在应用程序中执行敏感操作,例如更改密码或执行超过一定阈值的资金交易时
密码猜测
当攻击者遇到应用程序和服务时,可能有机会进行密码猜测。密码猜测是一种攻击者通过网络与应用程序交互,尝试不同的用户名和密码组合列表的活动。
密码猜测让攻击者有机会找到具有弱用户名和密码组合的帐户。
如果攻击者成功找到一个有效的帐户登录,攻击者将获得新的机会。考虑一下攻击者现在获得了哪些功能和数据。以下是一些攻击者成功猜测某人密码的例子
- 攻击者访问了员工的电子邮件帐户。其中包含数千封电子邮件,涵盖了过去几年的历史记录。电子邮件中包含通信的密码,允许攻击者登录更多系统。此外,还有数百个附件,其中一些可能包含非常敏感的信息。
- 攻击者成功猜到了负责冷却服务器机房的 HVAC(“供暖、通风和空调”)系统的管理员帐户密码。攻击者能够更改 HVAC 的参数,并通过仔细修改导致服务器机房过热。
- 互联网上提供 VPN 服务,允许员工访问内部资源。其中一名员工的密码很弱,攻击者通过几天重复的密码猜测才猜到。攻击者访问了 VPN 服务,现在进入了组织的内部网络。从这里,攻击者在组织内部安装了勒索软件。
- 一个 Web 应用程序部署在互联网上。从外部看,它没有任何明显的漏洞,但攻击者能够猜到系统上普通用户的帐户密码。由于托管 Web 应用程序的公司信任他们的用户,因此应用程序内部的 Web 安全性很差。从这里,攻击者能够使用 Web 漏洞来破坏服务器。
许多网络服务都有内置的管理员帐户,有些甚至默认密码自安装以来一直未更改。对于网络上的每个服务,攻击者都可以尝试使用默认凭据登录。此外,攻击者可以尝试典型的和弱密码。以下是一些典型的和弱密码的例子。请注意,它们都以感叹号结尾,以防止密码策略
密码 | 评论 |
---|---|
Summer2021! | 许多人,包括公司技术支持人员,在重置密码时会将密码设置为当年的季节和年份。 |
W3schools123! | 公司名称经常被用作人们的密码。用户选择数字 123 和结尾的感叹号来通过密码策略,使其更复杂一些。 |
Rosalynn2006! | Rosalynn,可能是某人的孩子?用户经常使用一些个人亲近的东西作为他们的密码。孩子的名字,也许还有他们出生的年份,非常受欢迎。 |
Qwerty123456! | 看似随机的密码?这个密码是有人按顺序按键盘键,然后用数字做同样的事情。 |
THC-Hydra(https://github.com/vanhauser-thc/thc-hydra)是一个工具,可以让我们轻松配置用户名和密码列表,以便针对多种不同的服务进行尝试。它支持许多攻击协议,例如
- RDP(“远程桌面协议”)
- FTP(“文件传输协议”)
- SMB(“服务器消息块”)
- Telnet
- SSH(“安全套接字主机”)
例如,要使用 THC-Hydra 针对 FTP,可以使用以下命令
hydra -L common_usernames.txt -P common_passwords.txt ftp://127.0.0.1/
此命令使用常见的用户名和密码列表,尝试将它们中的每一个都针对 localhost 或您选择的 IP 地址上的 FTP 服务。
凭证填充
攻击者常用的攻击方式是凭证填充。这涉及攻击者下载大量的凭证数据库,并针对网络服务测试适用的凭证。当第三方服务被黑客入侵、数据库被盗并泄露到互联网上供任何人下载时,就会发生凭证泄露。
不幸的是,许多用户在不同的服务上重复使用相同的密码,这使得凭证填充攻击对组织变得非常有效。
密码破解
密码猜测是一种在线攻击,而密码破解是一种离线攻击。它涉及攻击者首先从目标窃取密码表示。
密码通常表示为密码哈希。哈希是一种通过单向函数存储用户密码的方式,使密码无法逆转,除非使用密码破解。
如果攻击者能够从系统中检索凭据,这些凭据可能会通过加密或哈希进行保护。哈希是一种单向函数,旨在无法将其逆转为其原始值。
密码破解涉及使用计算能力,即 CPU(“中央处理器”)和 GPU(“图形处理器”),尝试创建与从系统中检索到的受保护凭据匹配的密码猜测。
没有身份验证的服务
通过探索和发现应用程序,有时您会遇到没有身份验证保护的应用程序。这些应用程序对攻击者来说很有用,例如利用搜索字段来查找敏感信息。
网络上的许多应用程序都可以自由探索,有时会为攻击者提供他们正在寻找的确切数据。
在执行网络映射和端口扫描练习时,应探索每个发现的系统和服务。
使用现有凭证
攻击者通常已经在使用环境中用户的凭证。例如,如果攻击者入侵了某人的计算机系统,他们就可以重新使用该系统正在使用的凭证。
这为攻击者提供了更多机会。考虑所有现在可以被滥用的应用程序。例如
- 电子邮件
- SharePoint
- 人力资源和会计
- VPN(“虚拟专用网络”)
一旦攻击者获得了对访问控制后面的应用程序的访问权限,漏洞和数据通常就很多。
还可以通过不同的方式从系统中提取凭据,通常涉及对系统具有管理员访问权限。Mimikatz(https://github.com/gentilkiwi/mimikatz)就是一个这样的工具,它试图从系统中转储凭据。