菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

网络安全 密码


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


密码强度

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

著名的漫画家 xkcd.com 在下面的漫画中巧妙地展示了密码如何被攻击。花一秒钟看看,然后我们再进一步讨论。

注意:熵(Entropy)意味着不可预测性。熵越高,通过标准手段破解就越难。

XKCD Password Strength

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

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

  • 很难记住。你是把第一个 o(字母)字符替换成 0(数字)了吗,还是第二个?你是把 a 字符替换成 4 了吗,还是没有?
  • 很难输入。你必须按照特定的顺序输入不同的字母、数字和特殊字符。它可能不是你在键盘上输入速度最快的词。
  • 它并不很强!这个密码是基于一个相当常见的词,并且它提供的强度很小,只有大约 28 位的熵。

与其选择具有这些负面因素的密码,不如以简单的方式大大提高密码的熵。如果我们考虑密码 CorrectHorseBatteryStaple,我们会看到密码有显著的改进

  • 密码很容易输入。输入常规词语对许多人来说是日常活动,并且你可以非常快速地做到。
  • 它很容易记住。通过使用密码的视觉图像,一匹马、一个电池、一个钉书钉和“正确”(correct)这个词,我们可以更容易地记住它。
  • 它在大多数密码破解活动中都更强大!它提供大约 44 位的熵,使其非常难以破解。

像这样的密码称为密码短语,它通常比带有某些复杂性的简单单词是更好的做法。考虑如何改进密码使其更强大,并符合密码策略规则,例如特殊字符和大小写字母!你甚至可以在密码中使用空格,使密码短语更容易输入。


密码管理器

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

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

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

  • 使互联网使用更加安全
  • 提高生产力,因为不同服务的密码可以很容易地找到、复制并粘贴到用户想要登录的相应服务中
  • 当需要时,提供重置和重新生成新密码的简便方法。

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


无密码解决方案

如果密码本身可以被淘汰呢?总有一些人无法每天输入更长的密码短语。这可能有多种原因,例如

  • 办公室里不懂 IT 的员工
  • 一名医生每天在拜访不同病人的同时,在医院里访问许多不同的计算机
  • 在需要它的系统上输入密码很困难

不需要用户提供密码的系统的开发和实施正在迅速发展。与其要求用户使用密码进行身份验证,不如允许他们使用例如

  • 他们自身的东西,例如他们的面部或指纹
  • 他们拥有的东西,例如令牌或手机

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


多因素认证

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

多因素认证允许解决方案不仅基于例如密码来验证用户,同时还要求用户提供第二个因素来证明他们的身份。

Multi-Factor Authentication

可以有几种不同的方式来要求第二个因素。以下是一些例子

  • 使用智能手机上的身份验证应用程序提供一个秘密代码
  • 通过手机接收短信(“短信服务”)发送的秘密代码
  • 使用硬件令牌提供一个秘密代码
  • 出示指纹或面部以识别个人

以上所有都需要不仅知道密码,还需要提供第二个项目(一个因素)。

这些类型的解决方案有时被认为对用户具有侵入性。为了解决这个问题,可以应用 DAC(“自主访问控制”)概念。DAC 允许登录解决方案考虑是否需要向用户挑战多因素代码。例如,多因素认证可能仅在用户

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

密码猜测

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

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

Password Guessing

如果攻击者成功找到一个有效的帐户进行登录,新的机会就会呈现在攻击者面前。考虑攻击者现在可以访问什么样功能的和数据。以下是一些攻击者成功猜测某人密码的例子

  • 攻击者访问一名员工的电子邮件帐户。里面有数千封邮件,记录了多年的历史。邮件中沟通了密码,允许攻击者登录更多系统。此外,还有数百个附件,其中一些可能包含非常敏感的信息。
  • 攻击者成功猜测了 HVAC(“供暖、通风和空调”)系统的管理员帐户密码,该系统负责冷却服务器机房。攻击者能够更改 HVAC 的参数,并通过仔细的修改导致服务器机房过热。
  • 互联网上有一个 VPN 服务,允许员工访问内部资源。一名员工的密码很弱,攻击者通过数天的反复密码猜测成功猜到了。攻击者访问了 VPN 服务,现在已经进入了该组织的内部网络。从这里,攻击者在组织内部安装了勒索软件。
  • 一个 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:///

此命令使用常用用户名和常用密码列表,在 localhost 或您选择的 IP 地址的 FTP 服务上尝试它们。


凭证填充

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

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

注意:任何人都可以在互联网上搜索包含泄露凭证和密码的数据库。当人们不更改他们的密码时,黑客攻击并不难?!

密码破解

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

密码通常表示为密码哈希。哈希是一种存储用户密码的方法,通过将它们通过单向函数发送,使得在不使用密码破解的情况下无法逆转密码。

如果攻击者能够从系统中检索凭证,这些凭证很可能受到加密或哈希的保护。哈希是一种单向函数,旨在不被逆向为其原始值。

密码破解涉及使用计算能力,即 CPU(“中央处理器”)和 GPU(“图形处理器”),尝试创建与从系统中检索到的受保护凭证匹配的密码猜测。

注意:GPU 通常在密码破解方面表现更好,因为它有数百个微型核心,每个核心都可以独立执行小型任务。这使得密码破解器能够通过在许多不同核心上扩展破解活动来变得更快。

没有身份验证的服务

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

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

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


使用现有凭证

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

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

  • 邮箱
  • SharePoint
  • 人力资源和会计
  • VPN(“虚拟专用网络”)

一旦攻击者可以访问受访问控制的应用程序,漏洞和数据通常会非常丰富。

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



×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持