攻击双因素认证(2FA)的11种方式

技术 作者:HackerEye 2019-12-10 10:16:25
虽然许多缓解措施中都包含 " 启用双因素认证 " 这样一条建议,但是千万别就此以为双因素认证(2FA)是完全安全的。 所谓认证(authentication)就是确认用户的身份,是网站登录必不可少的步骤。其中,密码是最常见的认证方法,但是不安全,容易泄露和冒充。不可否认,与普通密码相比,2FA 具有其独到优势,并且正在加大部署于各种网络和服务中。如今,不仅具备高度安全需求的政府和企业开始部署 2FA,就连普通人也正在使用 2FA 来进行网站和账户认证。可以说,2FA 能够降低黑客攻击的风险。 什么是双因素认证? 一般来说,三种不同类型的证据,可以证明一个人的身份,包括: · 秘密信息:只有该用户知道、其他人不知道的某种信息,比如密码; · 个人物品:该用户的私人物品,比如身份证、钥匙; · 生理特征:该用户的遗传特征,比如指纹、相貌、虹膜等等。 这些证据就称为三种 " 因素 "(factor)。因素越多,证明力就越强,身份就越可靠。双因素认证就是指,通过认证同时需要两个因素的证据。银行卡就是最常见的双因素认证,用户必须同时提供银行卡和密码,才能取到现金。 不过,正是由于太多人对 2FA 所提供的安全性过于信任,觉得它是坚不可摧、不可战胜的。他们认为,2FA 能够阻止高级持续性威胁(APT),打败网络钓鱼和社会工程,甚至阻止其从未设定过的各种威胁。2FA 明显存在一种感知误区,即得到的信任比其自身应得的更多。但事实显然并非如此,相反地,攻击者有很多种瓦解它的方法,具体攻击方式总结如下: 攻击 2FA 的 11 种方式 1. 中间人(MitM)攻击 如果中间人攻击者能够诱骗你访问他们的流氓网站,并提示你提供 2FA 证书,那么可以说你的 2FA 屏障基本宣告报废了。中间人攻击者可以伪造一个你信任的,且使用 2FA 登录的网站,然后诱使你输入自己的 2FA 生成的凭证。更常见的情形,是在你使用 2FA 成功进行身份验证后,攻击者直接窃取生成的(非 2FA)令牌。 大多数人都不明白,一旦你使用 2FA 进行身份验证(无论是通过生物特征识别、硬件令牌还是智能卡),操作系统都会使用辅助生成的软令牌来接管你的访问授权。但该令牌可以被盗并重新使用。例如,也许你的 Windows 笔记本电脑需要指纹验证才能登录,一旦你成功通过指纹验证,操作系统后台经常会使用 NTLM 或 Kerberos 令牌来接管你的访问授权。你的身份验证方式,通常与你之后被赋予的访问权限毫无关系。如果你想成为一名优秀的计算机安全人员,你需要了解这个概念及其影响,因为其造成的影响将会是巨大的。 2. 终端人(Man-in-the-endpoint)攻击 与 MitM 攻击类似,如果黑客可以将他们的恶意软件加载到你的计算机上,他们就可以修改 2FA 验证过程中用到的软件,窃取 2FA 令牌保护下的机密,或者使用你已经通过的验证结果来访问原本无权访问的内容。 自本世纪初以来,银行木马一直都在这么做。基本上,这些木马会潜伏在主机上,等待你成功通过身份验证,然后在后台启动隐藏的流氓会话。你以为自己只是查看了一下银行余额,但在后台,木马正在将你所有的存款转移到他们的离岸银行账户中。 银行认为,他们可以通过生成一个次级 2FA 代码来应对这种类型的木马,因为该代码能够从交易数据中擦除,并且是该交易独有的。但是现实却并不理想,Bancos 木马创建者就通过拦截原始交易请求,生成并提交他们自己数额更大的请求,再将该请求发给银行等待回应。但是银行并不知道新交易请求是假的,就会以该伪造的数额生成次级 2FA,并发给提起请求的合法用户。该合法用户将输入这些次级 2FA 验证码,但却永远不知道这个验证码仅适用于窃取他们账户所有资金的隐藏流氓交易有效。 之后,银行又要求用户在输入 2FA 验证码前确认交易金额,来应对这些新型攻击。然而,令银行惊讶的现实是,银行客户并没有注意到交易细节,并且通常非常痛快地就输入了验证代码。在很多情况下,银行木马依然能够战无不利,轻松窃取到客户的资金。 无论你的电脑或设备采用何种验证方式(无论是否为 2FA),只要你通过了身份验证,隐藏的流氓用户或恶意软件都可以在你的设备中执行任何想要的操作。它只是在静待你的计算机超时,等待你打瞌睡或锁屏的时机。因为,即便锁定屏幕,你的身份验证和授权令牌也是有效的,且可以重新使用。 3. 妥协的 2FA 软件 一种特殊的终端人攻击(man-in-the-endpoint),是妥协与 2FA 设备相关的软件。例如,想要在设备上使用智能卡,该设备必须具备能够操作并读取智能卡的相关软件。智能卡供应商可以为你提供并安装软件,或者在你使用的操作系统或设备上预装通用驱动程序。 如果黑客在你的设备上植入了流氓软件,它就可以操纵或替换合法的 2FA 相关软件。在上述智能卡的例子中,该流氓软件会要求智能卡在下一次插入时,共享其存储的秘密,或者让令牌在内存中保持活跃状态的时间延长,允许黑客进行盗取或重放。在某些情况下,还可以使用流氓软件来完全窃取并替换另一台流氓设备上的智能卡。 4. 盗取并重放密码生成器 许多硬件和软件 2FA 令牌会生成特定于用户和设备的一次性代码。身份验证软件和用户设备都可以同时生成该一次性代码,然后将该用户提交的代码与身份验证系统自身生成的副本进行比较,看它们是否相同。 在大多数情况下,该一次性代码是基于特定于每个 2FA 设备和用户的共享随机 " 种子 " 值生成的,然后,使用同一个算法按预设时间间隔,从该种子中生成所有后续代码。这是 2FA 令牌的类型,其要求用户在 30 秒到几分钟内输入该一次性密码,超时将生成新值,只要输入不成功,并重复上述步骤。RSA 的 SecureID 令牌推广了这些类型的 2FA 设备,虽然现在有几十个甚至几百个类似的硬件令牌,还有数千个(少说也得有几百个)基于软件的类似令牌。但是,通常情况下,基于软件的此类令牌并不像硬件版本那么安全,因为软件版本更容易被黑,而硬件令牌通常需要物理访问权限才能妥协。 黑客很久以前就知道,如果他们能够获取到原始 " 种子 " 值,并知道与时间同步的密码生成算法,他们就可以像真实的验证系统和 2FA 设备一样,准确地生成并匹配相同的单向代码。某些 2FA 设备使用了这种脆弱的一次性密码生成器,给了攻击者捕获任意一次性密码并生成所有后续密码的机会。如果在不知道原始随机种子值的情况下发生这种事情,那就说明所用密码生成算法不是很强大。随机生成的值不应该被捕获到,更不应该能轻易地被用于生成后续 " 随机生成 " 的值。 广泛使用的常见黑客工具已经包含了相关功能,所以,如果黑客可以获取种子值,他们就能创建一个虚假的 2FA 设备。APT 攻击者也已经开始利用此类攻击来牟取利益了,其中最知名的一个例子是,中国黑客入侵 RSA,并获取到了洛克希德马丁公司(一家美国国防承包商)的种子值,然后利用这些种子值顺利侵入了洛克希德马丁公司。 5. 不要求使用 2FA 许多服务(包括一些流行网站)都提供了 2FA,但却并不强制你要求它,如此一来,就等于失去了 2FA 存在的目的。大多数用户认为,只要他们启用了 2FA,就必须始终使用它。这种认识是错误的,大多数网站还会允许用户输入密码,回答密码重置问题,或致电技术支持部门来绕过 2FA 阻碍。 对于允许用户使用多种登录方式(包含 2FA),但又不要求合法用户必须使用 2FA 的网站,黑客已经十分擅长利用社会工程手段,黑掉这些站点的技术支持部门,以便重置用户密码,或者黑客只是简单地获取并回答出密码重置问题的答案。 我非常讨厌密码重置问题,因为猜中它们往往非常容易,所以在我看来,密码重置问题就是身份验证行业的祸根,应该像蟑螂一样被灭掉。 黑客同样可以利用社会工程手段,从用户处获取他们的密码凭证,然后使用这些密码凭证替代 2FA 进行登录。如果网站只提供 2FA,但又不要求所有用户必须使用 2FA 进行登录验证,那么其本身就已经破坏了设置 2FA 的目的。 6.   伪造身份 智能卡供应商不希望你知道的一个小秘密是,每个 2FA 设备 / 软件都会挂接到一个用户 / 设备的身份(ID)。该 ID 在身份验证系统中必须是唯一的。在许多 2FA 系统中——尤其是智能卡——只要能够修改一个人的 ID(即便是暂时的),就可以使用任意 2FA 设备,甚至是挂接到其他人,也可以使用它作为目标用户进行身份验证。 举例说明,假设你的智能卡已挂接到名为 user1@example.com 的 ID,已经获取其他任意智能卡和 PIN 码(比如说 user2)的黑客,将能够进入身份验证系统并将 user1 的 ID 修改为 user2,反之亦然。然后,他们可以使用 user2 的智能卡和 PIN 码,以 user2 的身份登录,但系统却会在审计中将它们追踪为 user1。在完成非法活动后,黑客可以轻松地再将 ID 切换回来,而无需知晓 user1 的 PIN 或拥有 user1 的智能卡。可以说,智能卡为内部人 2FA 攻击提供了成熟的条件。 许多 2FA 设备都是如此,无论用什么来作为用户 / 设备的唯一标识,它都会将 2FA 设备 " 捆绑 " 到该用户 / 设备。如果某人有权更改其他人的 ID,他就可以将该用户 / 设备的 ID 切换到其他任意 2FA 设备(他们有权控制)。与密码更改一样,你应该控制并审计任何信赖的 ID 属性更改行为。 7. 被盗的生物特征识别 你的生物特征识别属性(例如指纹或视网膜扫描)也可能会被盗用并重复使用,而且你将很难拒绝攻击者使用它们。生物特征识别还有许多其他问题(如高比例的假阴性和假阳性),但最大的问题是,一旦它们被盗就会永远存在隐患,因为指纹和视网膜并不能够像密码一样高进行修改。 8. 共享、集成的身份验证 我非常喜欢共享、集成的身份验证方案(例如 oAuth),它允许用户只登录一次,然后就可以重新使用该凭证(通常在后台)登录到更多服务和网站中。使用共享、集成的身份验证时,通常会要求初始身份验证过程使用 2FA,而后续登录便不再要求(即便正常情况下也是需要的)。共享、集成的登录通常使用已经通过身份验证的令牌来进行其他登录。 9. 社会工程 随着越来越多的网站允许或需要 2FA,黑客也学会了如何社会工程用户。这些攻击可能类似于上述讨论的中间人攻击或终端人攻击,但可能更为精妙,涉及供应商意外要求 2FA 之类的情况。总之,仅仅因为你正在使用 2FA 并不意味着你本身不会被诱骗交出 2FA。 10. 2FA 暴力攻击 2FA 令牌被黑客暴力破解出来的事情并不是闻所未闻。如果使用 2FA 登录的网站或服务没有设置错误登录尝试控制,那么攻击者就可能会反复尝试,直至输入正确的 PIN 码。大多数 2FA 网站确实具备登录锁定机制,但却并非所有网站都具备。 11. 漏洞实现 可以肯定地说,2FA 登录网站和软件中存在很多允许绕过 2FA 的漏洞,而且这些存在漏洞的网站和软件比例,可能比不存在该漏洞的网站数量多。事实上,存在漏洞的 2FA 实现事例可能高达数百个之多。 如何防御 2FA 攻击行为 尽管瓦解 2FA 的方法有很多,但这并不意味着你不能做些什么,来增加黑客攻击的难度。以下是防御 2FA 攻击的一些建议,其中许多也许你已经在用了: · 培训管理员和用户了解 2FA 威胁及攻击; · 询问你的供应商关于上述各种 2FA 威胁攻击场景的解决情况; · 确保系统始终运行最新的杀毒软件,以检测并防止可能试图绕过或盗取你的 2FA 凭证的恶意软件及黑客; · 确保你的用户了解并接受 2FA 社会工程场景的培训,让他们不再轻易地交出自己的 2FA PIN 码,或一遇到要求使用 2FA 设备 / 软件的网站和电子邮件就使用; · 当网站或服务允许使用 2FA 时,请务必使用它。如果能用 2FA,且要求你必须使用 2FA 登录时,请务必启用所需的功能; · 了解你的 2FA 供应商允许使用什么东西绕过 2FA。这些东西能被社工出来吗? · 询问你的 2FA 凭证提供商,是否在开发这些硬件和软件时使用了安全开发生命周期(SDL)编程最佳实践; · 保护并审计 2FA 使用的身份属性,作为 2FA 登录的唯一标识; · 使用密码重置问题时,不要提供一本正经的老实答案; · 鼓励网站和服务使用动态身份验证,以便在登录请求来自新设备或某些其他不自然属性(例如外国位置或异常登录时间)时,增加所需验证的问题或因素数量。 与使用密码等单因素认证方式相比,2FA 显然更好也更安全,但是它并不是 " 万灵丹 ",它一样具备自己的缺陷,也存在被破解的可能。它能够帮助我们有效地抵御许多黑客攻击,但即便如此,它也并非完美无缺。本文的目的是希望大家能够全面的了解 2FA 的优劣性,你可以放心地继续使用它,只是千万别对其功能过分的乐观。

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接