网络安全密码
许多系统都受简单密码保护。 这并不理想,因为密码在许多情况下很容易被攻击者破解、重用或以其他方式滥用。 本节将探讨有关密码的攻击和防御。
密码强度
什么决定了强密码? 密码有多复杂? 它有多少个字符? 特殊字符的个数?
著名的漫画创作者 xkcd.com 在下面的漫画中精彩地展示了密码是如何被攻击的。 回顾一下,让我们进一步讨论。
Comic from XKCD: https://xkcd.com/936/
如果我们考虑第一个密码Tr0ub4dor&3,这个密码将符合大多数密码策略规则,例如大写字母、数字、特殊字符和长度为 11 个字符。 但是这个密码有一些问题,它是:
- 很难记住。您是用 0(数字)替换第一个 o(字母)字符,还是第二个?您是否将 a 字符替换为 4?
- 难以打字。您必须按特殊顺序输入不同的字母、数字和特殊字符。这可能不是键盘上输入速度最快的单词。
- 不是很强!密码基于一个相当常见的单词,它没有提供太多强度,只有大约 28 位熵。
我们可以通过简单的方法大大增加密码的熵,而不是选择具有这些负面因素的密码。如果我们考虑密码 CorrectHorseBatteryStaple,我们会看到密码的改进:
- 密码易于输入。输入常规单词是许多日常活动,您可以很快完成。
- 很容易记住。通过使用密码、马、电池、订书钉和"正确"一词的视觉图片,我们可以更容易记住它。
- 它对大多数密码破解活动的抵抗力要强得多!它提供了大约 44 位的熵,因此很难破解。
像这样的密码称为密码短语,通常比具有一定复杂性的简单单词更好。考虑如何改进密码,使其更强大,并符合特殊字符和大写字母等密码策略规则!您甚至可以在密码中使用空格,让密码更自然地输入。
密码管理器
多年来,写下您的密码一直被认为是一种不好的做法,但真的如此吗?在多个在线服务中使用相同的密码存在重大风险,如果其中一个平台被黑客入侵怎么办?然后该密码被泄露,攻击者可以在使用该密码的所有其他服务中重复使用该密码。
为了解决这个问题,建议不要在多个服务中重复使用相同的密码。这对用户来说真的很困难,因为他们不仅需要使用唯一的密码,而且同时需要创建强大而健壮的密码!密码管理器通过让用户以尽可能安全的方式在文件、数据库或其他系统中写下密码来帮助解决此问题,使密码易于访问并确保它们在不同服务中的强度和唯一性。
如果正确实施,密码管理器将:
- 让使用互联网成为一项更加安全的活动
- 提高工作效率,因为可以轻松找到不同服务的密码,并将其复制并粘贴到用户想要登录的相应服务中
- 在需要时提供简单的方法来重置和重新生成新密码。
与让用户重复使用密码相比,写下密码对我们的用户来说风险要低得多。是的,这不是一个完美的解决方案,因为密码管理器可能会受到威胁,但它被认为是一种更安全的方法。
无密码解决方案
如果密码本身可以结束呢?每天总有人无法输入更长的密码作为密码。这可能有几个原因,例如:
- 办公室里不精通 IT 的员工
- 一位医生每天在医院访问多台不同的计算机,同时访问不同房间的不同患者
- 在需要密码的系统上很难输入密码
不需要用户提供密码的系统的开发和实施正在迅速发展。如果我们允许他们使用,而不是要求用户使用密码进行身份验证,例如:
- 他们是什么,例如他们的脸或指纹
- 他们拥有的东西,例如令牌或他们的手机
这方面存在挑战,但就安全性而言,我们真的是让问题变得更糟,还是对我们的用户更好?我们必须记住,我们并不是要实施完美的安全系统,它们通常是遥不可及且无法实施的,因此我们必须仔细考虑如何限制威胁,同时让用户的生活更轻松。密码并不完美,无密码解决方案也不是完美的。您将为您的用户实施哪一个?
多重身份验证
我们了解到,无论使用什么解决方案来验证用户,他们的帐户仍然存在重大风险,因此可以实施其他解决方案来帮助降低风险。
多因素身份验证允许解决方案不仅根据用户的密码验证用户,同时要求用户提供第二个因素来证明他们是谁。
可以有几种不同的方式来要求第二个因素。以下是几个例子:
- 使用智能手机上的身份验证应用程序提供密码
- 在手机上通过 SMS("短消息服务")接收密码
- 使用硬件令牌提供密码
- 出示指纹或面部识别个人身份
以上所有要求不仅需要知道密码,还要求提供第二项(一个因素)。
这样的解决方案有时被认为对用户非常具有侵略性。为了帮助解决这个问题,可以应用 DAC("自由访问控制")的概念。 DAC 允许登录解决方案考虑是否使用多因素代码挑战用户。例如,只有当用户:
- 从新位置登录
- 使用不同的浏览器或软件访问应用程序
- 尝试在应用程序中执行敏感操作,例如更改密码或执行超过特定阈值的货币交易
密码猜测
当攻击者遇到应用程序和服务时,可能会有机会进行密码猜测。 密码猜测是一种涉及攻击者通过网络与应用程序交互、尝试用户名和密码的不同组合列表的活动。
密码猜测使攻击者有机会找到具有弱用户名和密码组合的帐户。
如果攻击者成功找到了一个有效的登录帐户,就会向攻击者提供新的机会。考虑现在向攻击者提供什么样的功能和数据。以下是攻击者成功猜出某人密码的一些示例:
- 攻击者访问员工的电子邮件帐户。里面有数千封电子邮件,历史可追溯到几年前。在电子邮件中传递了密码,允许攻击者登录更多系统。此外,还有数百个附件,其中一些可能包含非常敏感的信息。
- 攻击者成功猜出了负责为服务器机房降温的 HVAC("供暖、通风和空调")系统的管理员帐户密码。攻击者能够更改 HVAC 的参数,并通过仔细修改导致服务器机房过热。
- 互联网上提供 VPN 服务,允许员工访问内部资源。其中一名员工的密码较弱,攻击者通过几天的重复密码猜测来猜测该密码。攻击者访问 VPN 服务,现在位于组织的内部网络中。攻击者从这里开始在组织内安装勒索软件。
- 在 Internet 上部署了一个 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/
此命令使用常用用户名和常用密码的列表来针对本地主机上的 FTP 服务或您选择的 IP 地址尝试每一个。
凭据填充
攻击者使用的常见攻击是凭据填充。 这涉及攻击者下载庞大的凭据数据库并针对网络服务测试适用的凭据。 当第三方服务被黑客入侵,数据库被盗,然后泄露到互联网上供任何人下载时,就会发生凭据泄露。
不幸的是,许多用户在不同的服务上重复使用相同的密码,这使得凭据填充攻击对组织变得非常有效。
密码破解
虽然密码猜测是一种在线攻击,但密码破解是一种离线攻击。它涉及攻击者首先从目标窃取密码表示。
密码通常表示为密码哈希。哈希是一种通过单向函数发送用户密码来存储用户密码的方法,除非使用密码破解,否则密码无法逆转。
如果攻击者能够从系统中检索凭据,则这些凭据很可能通过加密或散列得到保护。散列是一种单向函数,旨在不反转为其原始值。
密码破解涉及使用计算能力,即 CPU("中央处理单元")和 GPU("图形处理单元")来尝试创建与从系统检索到的受保护凭据相匹配的密码猜测。
无需身份验证的服务
通过探索和发现应用程序,有时您会遇到不受身份验证保护的应用程序。 这些应用程序对于攻击者进行探索很有用,例如利用搜索字段搜索敏感信息。
可以自由探索网络上的许多应用程序,有时会为攻击者提供他们正在寻找的确切数据。
在执行网络映射和端口扫描练习时,应探索每个发现的系统和服务。
使用现有凭据
通常情况下,攻击者已经在使用环境中用户的凭据。 例如,如果攻击者破坏了某人的计算机系统,他们可以重新使用系统已在使用的凭据。
这为攻击者提供了更多机会。 考虑现在可能被滥用的所有应用程序。 例如:
- SharePoint
- 人力资源和财务
- VPN ("虚拟专用网络")
一旦攻击者可以访问访问控制背后的应用程序,漏洞和数据通常就会很多。
也可以通过不同的方式从系统中提取凭据,通常涉及具有系统的管理员访问权限。 Mimikatz (https://github.com/gentilkiwi/mimikatz) 就是这样一个试图从系统中转储凭据的工具。