Menu
×
   ❮   
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 在下面的漫画中出色地展示了如何攻击密码。请花几秒钟时间查看它,然后我们再进一步讨论。

注意:熵是指不可预测性。熵越高,通过标准方法破解越难。

XKCD Password Strength

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

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

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

我们可以通过简单的方式来大大提高密码的熵,而不是选择具有这些负面因素的密码。如果我们考虑密码 CorrectHorseBatteryStaple,我们发现密码有了相当大的改进

  • 密码易于输入。对于许多人来说,输入普通单词是一种日常活动,你可以变得非常快。
  • 它易于记忆。通过使用密码的视觉图像,一匹马、一块电池、一个订书钉和单词正确,我们可以更容易地记住它。
  • 它对大多数密码破解活动都非常有效!它提供了大约 44 位的熵,使其非常难以破解。

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


密码管理器

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

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

密码管理器在正确实施的情况下,将

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

与用户重复使用密码相比,写下密码被认为是用户风险更低的一种方法。是的,这不是一个完美的解决方案,因为密码管理器可能会被泄露,但它被认为是一种更安全的方法。


无密码解决方案

如果密码本身可以结束呢?总有人每天无法输入更长的密码短语作为他们的密码。这可能有很多原因,例如

  • 办公室里没有 IT 知识的员工
  • 每天在医院访问不同房间的不同患者时,会访问许多不同电脑的医生
  • 在需要它的系统上很难输入密码

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

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

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


多因素身份验证

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

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

Multi-Factor Authentication

要求提供第二个因素的方式有很多种。以下是一些例子

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

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

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

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

密码猜测

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

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

Password Guessing

如果攻击者成功找到一个有效的帐户登录,攻击者将获得新的机会。考虑一下攻击者现在获得了哪些功能和数据。以下是一些攻击者成功猜测某人密码的例子

  • 攻击者访问了员工的电子邮件帐户。其中包含数千封电子邮件,涵盖了过去几年的历史记录。电子邮件中包含通信的密码,允许攻击者登录更多系统。此外,还有数百个附件,其中一些可能包含非常敏感的信息。
  • 攻击者成功猜到了负责冷却服务器机房的 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(“图形处理器”),尝试创建与从系统中检索到的受保护凭据匹配的密码猜测。

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

没有身份验证的服务

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

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

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


使用现有凭证

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

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

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

一旦攻击者获得了对访问控制后面的应用程序的访问权限,漏洞和数据通常就很多。

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



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.