网络安全 密码


许多系统都受简单密码的保护。这并不理想,因为在许多情况下,密码很容易被攻击者破解、重复使用或滥用。本节将探讨有关密码的攻击和防御。


密码强度

什么决定了强密码?密码有多复杂?它有多少个字符?特殊字符的数量?

著名漫画创作者xkcd.com在下面的漫画中精彩地展示了密码是如何被攻击的。回顾一下,让我们进一步讨论。

笔记:熵意味着缺乏可预测性。熵越高,通过标准手段破解就越困难。

XKCD Password Strength

来自XKCD的漫画:https://xkcd.com/936/

如果我们考虑第一个密码Tr0ub4dor&3,此密码将符合大多数密码策略规则,例如包含大写字母、数字、特殊字符和 11 个字符的长度。然而这个密码有一些问题,它是:

  • 很难记住。您是否将第一个 o(字母)字符替换为 0(数字),还是第二个?您是否将 a 字符替换为 4?
  • 很难打字。您必须按特殊顺序输入不同的字母、数字和特殊字符。它可能不是键盘上输入最快的单词。
  • 不是很强!该密码基于一个相当常见的单词,强度不大,只有大约 28 位熵。

我们可以通过简单的方式大大增加密码的熵,而不是选择具有这些负面因素的密码。如果我们考虑密码正确的马电池主食我们看到密码得到了周到的改进:

  • 密码很容易输入。对于许多人来说,输入常规单词是一项日常活动,而且您可以很快地完成它。
  • 这很容易记住。通过使用密码、马、电池、订书钉和正确单词的视觉图片,我们可以更容易地记住它。
  • 它对大多数密码破解活动的抵抗力明显更强!它提供了大约 44 位的熵,这使得它很难被破解。

像这样的密码称为密码短语,通常比具有一定复杂性的简单单词更好。考虑如何改进密码,使其变得更强,并符合密码策略规则,例如特殊字符和大写字母!您甚至可以在密码中使用空格,使密码短语的输入更加自然。


密码管理器

多年来,写下密码一直被认为是一种不好的做法,但真的是这样吗?在多个在线服务中使用相同的密码存在很大的风险,如果其中一个平台被黑客入侵怎么办?然后该密码就会被泄露,攻击者可以在使用该密码的所有其他服务中重复使用该密码。

为了解决这个问题,建议不要在多个服务中重复使用相同的密码。这对用户来说真的很困难,因为他们不仅需要使用唯一的密码,而且同时需要创建强大且可靠的密码!密码管理器通过为用户提供尽可能安全的方式在文件、数据库或其他系统中写下密码来帮助解决此问题,使密码易于访问并确保它们在不同服务中强大且唯一。

正确实施后,密码管理器将:

  • 使互联网的使用成为更加安全的活动
  • 提高工作效率,因为可以轻松找到不同服务的密码,并将其复制并粘贴到用户想要登录的相应服务中
  • 提供在需要时重置和重新生成新密码的简单方法。

对于我们的用户来说,写下密码比让他们重复使用密码的风险要低得多。是的,这不是一个完美的解决方案,因为密码管理器可能会受到损害,但它被认为是一种更安全的方法。


无密码解决方案

如果密码本身可以被终结怎么办?总有人每天无法输入更长的密码作为密码。造成这种情况的原因可能有多种,例如:

  • 办公室里不懂 IT 的员工
  • 一位医生每天访问医院里的许多不同的计算机,同时访问不同房间的不同患者
  • 在需要密码的系统上很难输入密码

不需要用户提供密码的系统的开发和实施正在迅速发展。如果我们允许用户使用密码,而不是要求用户使用密码进行身份验证,会怎样:

  • 他们是什么,例如他们的脸或指纹
  • 他们拥有的东西,例如令牌或手机

这方面存在挑战,但就安全性而言,我们真的会让问题变得更糟,还是对我们的用户来说更好?我们必须记住,我们并不是要实现完美的安全系统,它们通常是遥不可及且无法实现的,因此我们必须仔细考虑如何限制威胁,同时让用户的生活更轻松。密码并不完美,无密码解决方案也不是完美的。您将为您的用户实施哪一种?


多重身份验证

据我们了解,无论使用哪种解决方案来验证用户,其帐户仍然存在重大风险,可以实施其他解决方案来帮助降低风险。

多重身份验证允许解决方案不仅根据用户的密码来验证用户,而且同时要求用户提供第二个因素来证明他们是谁。

Multi-Factor Authentication

可以通过多种不同的方式来询问第二因素。这里有一些例子:

  • 使用智能手机上的身份验证应用程序提供密码
  • 通过手机短信 ("Short Message Service") 接收密码
  • 使用硬件令牌提供密码
  • 出示指纹或面部来识别个人身份

上述所有内容不仅需要知道密码,还要求提供第二项(因素)。

此类解决方案有时被认为对用户来说非常具有侵入性。为了帮助解决这个问题,可以应用 DAC ("Discretionary Access Control") 的概念。 DAC 允许登录解决方案考虑是否使用多因素代码来挑战用户。例如,只有当用户满足以下条件时才需要使用多因素:

  • 从新位置登录
  • 使用不同的浏览器或软件访问应用程序
  • 尝试在应用程序中执行敏感操作,例如更改密码或执行超过特定阈值的金钱交易

密码猜测

当攻击者遇到应用程序和服务时,可能有机会进行密码猜测。密码猜测是一种涉及攻击者通过网络与应用程序交互、尝试不同用户名和密码组合的列表的活动。

密码猜测使攻击者有机会找到用户名和密码组合较弱的帐户。

Password Guessing

如果攻击者成功找到可登录的有效帐户,则会向攻击者提供新的机会。考虑现在向攻击者提供什么样的功能和数据。以下是攻击者成功猜测某人密码的一些示例:

  • 攻击者访问员工的电子邮件帐户。里面有数千封历史悠久的电子邮件。电子邮件中包含密码,允许攻击者登录更多系统。此外,还存在数百个附件,其中一些可能包含非常敏感的信息。
  • 攻击者成功猜出 HVAC ("Heating, Ventilation and Air Conditioning") 系统的管理员帐户密码,该系统的职责是冷却服务器机房。攻击者能够更改 HVAC 的参数,并通过仔细修改导致服务器机房过热。
  • Internet 上提供 VPN 服务,允许员工访问内部资源。其中一名员工的密码很弱,攻击者经过几天的重复密码猜测,猜出了该密码。攻击者访问 VPN 服务,并且现在位于组织的内部网络上。从这里,攻击者在组织内安装勒索软件。
  • Web 应用程序部署在 Internet 上。从外部看,它没有明显的漏洞,但攻击者能够猜测系统上常规用户帐户的密码。由于托管 Web 应用程序的公司信任其用户,因此应用程序内部的 Web 安全性很差。从这里,攻击者能够利用网络漏洞来破坏服务器。

许多网络服务都有内置的管理员帐户,有些甚至自安装以来默认密码就没有更改。对于网络上的每个服务,攻击者可以尝试使用默认凭据登录。此外,攻击者还可以尝试典型密码和弱密码。以下是一些典型密码和弱密码的示例。请注意,它们全部以感叹号结尾,以破坏密码策略:

Password Comment
Summer2021! Many people, including helpdesks of companies, perform password resets and set the password to the season of the year and the year we are currently in.
W3schools123! The name of the company is often used as peoples passwords. The number 123 and ! at the end is selected by users to pass password policies and make it a bit more complex.
Rosalynn2006! Rosalynn, perhaps someone's child? Users often use something of personal affection as their passwords. Names of children and perhaps the year they were born is very popular.
Qwerty123456! A seemingly random password? This password is someone pressing keyboard keys in order, then using numbers to do the same thing.

THC-Hydra (https://github.com/vanhauser-thc/thc-Hydra) 是一个允许我们轻松配置用户名和密码列表以尝试多种不同服务的工具。它支持多种协议进行攻击,例如:

  • RDP ("Remote Desktop Protocol")
  • FTP ("File Transfer Protocol")
  • 中小型企业 ("Server Message Block")
  • 远程登录
  • SSH ("Secure Sockets Host")

要使用 THC-Hydra 来定位例如 FTP,可以使用以下命令:

hydra -L common_usernames.txt -P common_passwords.txt ftp://localhost/

此命令使用常用用户名和常用密码列表来针对本地主机或您选择的 IP 地址上的 FTP 服务尝试每个用户名和密码。


凭证填充

攻击者使用的常见攻击是凭证填充。这涉及攻击者下载庞大的凭据数据库并针对网络服务测试适用的凭据。当第三方服务被黑客攻击、数据库被盗然后泄露到互联网上供任何人下载时,就会发生凭证泄露。

不幸的是,许多用户在不同的服务上重复使用相同的密码,使得凭证填充攻击对组织变得非常有效。

笔记:包括您在内的任何人都可以在互联网上搜索包含凭据和密码的泄露数据库。当人们不更改密码时,黑客攻击不是很难吗?!

密码破解

密码猜测是一种在线攻击,而密码破解是一种离线攻击。它涉及攻击者首先从目标窃取密码表示。

密码通常表示为密码哈希。哈希是一种通过单向函数发送用户密码来存储用户密码的方法,除非使用密码破解,否则密码无法逆转。

如果攻击者能够从系统检索凭据,则这些凭据可能会通过加密或哈希来受到保护。散列是一种单向函数,旨在不会反转为其原始值。

密码破解涉及使用计算能力,即 CPU ("Central Processing Unit") 和 GPU ("Graphical Processing Unit"),尝试创建与从系统检索到的受保护凭据相匹配的密码猜测。

笔记:GPU 在密码破解方面通常要好得多,因为它有数百个微内核,这些微内核都能够独立执行小任务。这使得密码破解者变得更快,因为它可以在许多不同的核心上扩展破解活动。

无需认证的服务

通过探索和发现应用程序,有时您可能会遇到未受身份验证保护的应用程序。这些应用程序对于攻击者的探索很有用,例如利用搜索字段寻找敏感信息。

网络上的许多应用程序可以自由地探索,有时为攻击者提供他们正在寻找的确切数据。

在执行网络映射和端口扫描练习时,应探索每个发现的系统和服务。


使用现有凭证

通常,攻击者已经在使用环境中用户的凭据。例如,如果攻击者破坏了某人的计算机系统,他们可以重新使用系统已在使用的凭据。

这为攻击者提供了更多的机会。考虑现在可能被滥用的所有应用程序。例如:

  • 电子邮件
  • 共享点
  • 人力资源和会计
  • VPN ("Virtual Private Networking")

一旦攻击者能够访问访问控制背后的应用程序,漏洞和数据通常会很丰富。

系统中的凭证也可以通过不同的方式提取,通常涉及系统的管理员访问权限。 Mimikatz (https://github.com/gentilkiwi/mimikatz) 就是这样一个工具,它试图从系统中转储凭证。