无需黑客工具测试中间人攻击
本网络研讨会最初于2025年3月13日播出。在本视频中,Michael Allen讨论了如何在不使用黑客工具的情况下测试中间人攻击。他深入探讨了凭证收集的复杂性、多因素认证(MFA)的演变,以及攻击者如何调整策略绕过安全措施。Michael提供了识别弱MFA方法的见解,并提供了加强安全的实用步骤,强调了使用FIDO2密钥作为对抗中间人攻击的强大防御手段的重要性。
关键要点
- 凭证收集攻击的演变突显了攻击者不断适应多因素认证(MFA)等安全措施。
- 中间人攻击利用攻击者的计算机拦截登录凭证,包括会话令牌,绕过传统MFA安全。
- FIDO2密钥代表了MFA的重大进步,使用公钥加密确保认证与用户物理拥有的设备绑定。
亮点时间戳
- 2:28 多因素认证时代的战术演变:攻击者通过添加虚假表单或使用社交工程适应MFA,增加努力和失败风险。
- 2:10 利用中间人攻击绕过MFA:攻击者开发了一种工具,使用中间人方法绕过MFA,有效捕获会话令牌。
- 1:47 利用实时MFA绕过进行凭证收集:描述使用虚假登录页面窃取凭证的网络钓鱼攻击,通过社交工程绕过MFA。
- 1:41 通过IP和设备识别追踪攻击者的挑战:检测攻击者涉及识别可疑IP,但复杂攻击者使用合法IP地址,逃避常见检测方法。
- 1:51 重新思考MFA:“拥有某物”的误解:认为MFA通常依赖知识而非拥有,挑战传统安全假设。
- 1:40 使用公钥加密增强MFA:通过公钥加密将设备拥有与唯一操作结合,实现安全验证。
- 1:52 理解FIDO2密钥及其安全认证过程:FIDO2密钥使用公钥加密进行安全认证,将密钥存储在硬件模块中以增强安全。
- 1:48 使用加密令牌验证的安全认证过程:登录过程涉及挑战-响应系统,其中令牌通过加密签名验证用户身份。
- 3:07 测试不同认证令牌的安全性:使用不同令牌测试账户安全:Joseph使用SMS登录,然后尝试认证器应用,展示漏洞。
- 2:34 加强组织中的多因素认证:通过测试允许的令牌、启用安全选项和禁用弱方法来识别和修复弱MFA。
完整视频
[视频链接]
文字记录
Michael Allen:大家好,欢迎参加“如何在不使用黑客工具的情况下测试中间人攻击”,我是Michael Allen。如果您不认识我,让我快速介绍一下自己。我是Black Hills Information Security的红队成员和渗透测试员。目前,我担任红队实践负责人之一,以及我们ANTISOC持续渗透测试团队的初始访问专家。如果您不熟悉,这基本上是一个针对多个客户同时进行的长期红队练习。这是一项订阅服务,所以它一直在进行。我不断尝试想出新的方法来侵入这些环境,并以某种方式获得初始访问权限。除了在BHIS的常规工作外,我还教授红队初始访问课程,该课程将于4月在Kernelcon和10月在Wild West Hack and Fest举行,以及真实社交工程课程,下周在我们的红队峰会上举行。它将通过Antisyphon在线进行。Chris,刚才在预演闲聊中,他也将在那里教学。期待在这些活动中见到大家。如果您对我今天谈论的中间人主题感兴趣,这个特定主题以及作为攻击者如何执行该攻击是我在红队初始访问课程中教授的内容。
我也有一些社交媒体。我很少发帖,试图更频繁地发帖。但老实说,我不常在上面,但我的社交媒体账号在底部。White Rhino,我在X、LinkedIn和GitHub上。如果您对这类内容感兴趣,我会不时发布,您可以在那里关注我。
好了,现在我将跳入技术内容,以及为什么大家在这里,我不再谈论自己。最初,我们攻击者创建了一种称为凭证收集的攻击,包括设置某种虚假登录门户。通常像假网站。可能是我们克隆了一个真实网站。所以它看起来就像公司真实的登录门户之一。或者可能是我们创建了一个假网站,只是带有公司标志,与我们的诡计匹配,并且创建一些独特的东西而不是克隆真实登录门户是有意义的。但无论哪种方式,它的工作方式完全相同。我们会将假登录页面的链接发送给我们所有目标用户,希望他们来登录并给我们他们的用户ID和密码,然后该网页会为我们捕获这些数据,然后将他们发送到支持我们诡计的其他网站。可能是礼品卡,可能是调查,谁知道,无论是什么诡计,我们会让他们认为他们实际上在完成,而我们则使用这些凭证登录他们的账户并访问我们想访问的任何内容。
在多因素认证出现之前,我们可能使用这些凭证登录他们的VPN、虚拟桌面基础设施(VDI)、单点登录门户、电子邮件、SharePoint等。您几乎可以用用户名和密码访问所有内容。这工作得很好,真的很棒。但就像我说的,最终多因素认证出现了。多因素认证是什么,可能观看此视频的每个人都熟悉,但如果您不熟悉,它是将我们知道的东西(即我们已经用于登录的密码)与您拥有的东西结合。所以这是某种类型的令牌,比如您可能收到的SMS消息。就像此幻灯片底部截图那样,您通过手机上的短信收到代码,然后将其输入网站。可能是您从Google认证器应用或其他认证器应用获得的代码,就像右下角看到的那样。或者可能是许多其他类型的令牌中的任何一种。这些是我们最早看到的最常见的两种。
所以现在,仅用户ID和密码不足以让我们作为攻击者访问我们想访问的许多不同服务和登录门户,使用我们刚刚捕获的用户凭证。所以我们作为攻击者必须选择适应或死亡,或者至少如果我们不能以某种方式适应,凭证收集攻击将会死亡。所以我们开始调整我们的攻击,并尝试了几种不同的方式,看看在多因素认证发明后是否仍然可以进入账户。
所以我们开始做一些事情,比如在凭证收集页面上添加一个假的多因素表单。这样,如果用户必须输入像六位数代码才能使用其多因素令牌登录,我们的凭证收集页面现在将要求该代码。唯一的缺点是该方法仅适用于基于时间的一次性密码令牌。比如Google认证器应用,它在您的手机或其他设备上不断旋转给出代码,该代码通常只有30秒有效。所以我们必须在捕获后非常快速地登录。所以这不是一个很好的解决方案。另一个解决方案是尝试再次社交工程目标。所以获取他们的用户名和密码,然后现在我们有了该用户名和密码,我们尝试用它登录某个地方。现在我们将尝试再次社交工程他们,让他们完成任何多因素操作,发送代码,接受推送通知等,或者进行SIM交换攻击,我们实际上将该人的电话号码重新注册到我们自己的设备上,现在我们可以接收包含代码的SMS消息,该代码将用于多因素认证。这两种攻击都是有效的方法。但这里的大问题是需要对同一用户进行两次单独的攻击,因为我们必须进行最初的社交工程攻击,让他们登录网站并获取凭证,然后我们必须进行其他攻击来获取该多因素令牌。所以这增加了我们的努力水平,增加了我们失败的机会。因为您钓鱼某人一次,可能会成功,但第二次同一个人可能会怀疑。所以谁知道第二次是否会奏效。
然后我们尝试的另一条路线是针对多因素部署中的差距,所有外部服务可能不强制执行多因素。可能有一个门户要求用户进行多因素认证,而另一个门户不要求。无论这是否是我们今天仍然尝试做的事情。有一些工具如MFA sweep和find me access,我们用来尝试在环境中找到各种不需要多因素的端点,而其他方面需要多因素。但不幸的是,对我们作为攻击者来说,这些差距越来越小。在多因素已经在环境中其他地方部署的情况下,我们在某处找到未部署多因素的差距的可能性越来越小。
所以最终,一些有进取心的攻击者为我们提出了一些新工具和新类别的攻击,可以绕过多因素认证,即中间人攻击。这种中间人攻击的工作方式正如其听起来那样。您可以在屏幕上看到图表,在这种情况下,图表显示中间有一个邪恶的jinx服务器。尽管这可以是任何中间人工具。这只是邪恶的jinx,因为我从邪恶的jinx博客借用了他们的图像。但该中间人服务器,正如其听起来那样,位于我们的受害者和真实登录门户之间。它在两者之间来回传递信息。所以受害者访问中间人服务器。服务器然后出去向真实登录门户发出请求,获取该门户上的内容,将该内容显示给受害者。受害者然后提交其用户名和密码。过程继续。该信息发送到真实门户。真实门户发送回响应。现在受害者被提示输入其多因素令牌。他们提供该多因素令牌,再次发送到真实登录门户。登录完成。我们的受害者然后被发送到其他网站,再次记录或支持我们的诡计,就像原始的凭证收集攻击一样。我们的中间人服务器,已经捕获了用户名和密码,现在捕获会话令牌。您可能想,为什么捕获会话令牌而不是捕获像多因素代码,在那些一次性密码或类似情况下。原因是会话令牌是您登录的每个Web应用程序的工作方式。所以这成为我们进入的通用方式,会话令牌类似于cookie。通常是cookie或浏览器中保存的其他东西。可能是浏览器发送的标头,或者有时以其他方式实现,但通常是浏览器保存的cookie,并在用户最初登录后浏览器向Web应用程序发出的每个请求中发送。原因是HTTP本身是一种无状态协议。所以应用程序无法知道刚刚提交该用户名和密码的人,下一个来自其浏览器的请求是否来自同一人,而不做其他事情来弄清楚。所以提交了用户名和密码。应用程序然后发送回此会话令牌。浏览器保存该会话令牌,并从那时起在每个请求中发送它。每次应用程序看到该令牌时,它知道,好的,这是之前登录的用户,所以我应该让他们访问其账户。但我们作为攻击者可以做的是,我们可以捕获相同的会话令牌,我们可以将其放入我们的浏览器,并在我们向同一服务发出的每个请求中发送它。现在我们直接跳入了该其他人登录的会话。我们进行了一种称为会话劫持的攻击,此时我们甚至不需要用户名和密码,当然也不需要多因素令牌。这是我们试图绕过的主要事情,因为我们确实捕获了用户名和密码,并且能够访问该用户通常能够访问的所有内容。
还有许多其他方法可以执行相同的会话劫持攻击。这是一种广泛的攻击类别。您可以说,许多其他攻击都导致这一点。所以这是一种中间人攻击最终导致的结果,但您也可以通过其他类型的攻击达到这一点。所以这是对会话劫持的一点介绍,以解释为什么我们这样做。不同的中间人工具采取不同的方法来实现这一点。所以我会告诉您一些关于我们拥有的不同类型的中间人工具。
第一种可能是您最熟悉的。它是基于代理的中间人工具,我们的工具充当受害用户和真实登录门户之间的反向Web代理。就像我之前说的,我们有一个像Evil Jinx或Modlishka这样的服务器在互联网上,我们的受害者使用他们的计算机、手机等向我们的服务器发出Web请求。我们的服务器然后向真实登录门户发出自己的Web请求。它从该登录门户获取HTML数据等Web数据,发送给受害者。这就像那样来回进行。所以在这种情况下呈现给受害者设备的是真实网站。它实际上是真实登录门户,可能中间做了一些小更改以使整个代理过程工作。但它是相同的HTML数据。有第二种类型的中间人,它是基于浏览器而不是基于代理。所以这也称为浏览器在中间。这是一种情况,受害者实际上通过攻击者的Web浏览器登录其真实登录门户。所以真正低技术的方式,您可能想到这一点,将是一个不复杂的等价物,如果您向某人发送链接以访问您的计算机,在您的计算机上拥有像远程桌面会话,并且您打开您的Web浏览器在您的计算机上显示他们要登录的内容,他们通过该会话登录。他们刚刚通过您的Web浏览器登录了其登录门户。这些其他工具如Cuttlefish和Evil Novnc所做的是它们在受害者的浏览器中设置远程会话。所以那仍然看起来像受害者在查看网页,但他们实际看到的是通过受害者或通过攻击者的浏览器显示的网页。当他们登录时,他们正在将攻击者的浏览器登录到该网页。每当他们登录后,我们作为攻击者再次将他们发送到其他网站,以便我们可以在其账户中随意运行。
然后是第三种类型的中间人,即人工驱动工具。或者这些日子也可能是AI代理驱动工具。这是一种情况,我们设置了凭证收集页面,就像传统的凭证收集页面一样。所以这可能是真实登录门户的克隆。可能是我们制作的完全独特的东西,只是品牌化以看起来像我们想要他们登录的任何东西。但他们登录它。该凭证收集页面捕获其用户名和密码。然后发生的是攻击者实际上坐着实时监控这一点,他们采取刚刚提交的凭证,转身使用这些凭证尝试登录公司的真实登录门户。当他们这样做时,公司的真实登录门户提示他们输入某种多因素令牌,推送通知,输入六位数代码等。他们然后通过您认为类似于基于Web的聊天类型功能的功能与该凭证收集页面交互。就像您可能在许多网站上与客户服务交互时看到的那样。但不是向用户发送显示在网站上的消息,他们发送一个假的多因素提示,要求任何真实登录门户刚刚要求攻击者的东西。可能是推送通知,可能再次是代码等。然后受害者在其端执行该操作,攻击者然后被允许进入该网站。如果受害者输入了六位数代码,攻击者输入相同的代码。如果受害者接受了推送通知,攻击者已经进入。此时我没有此方法的工具示例,因为我知道的唯一示例是像渗透测试公司使用的工具,这些公司是私有的且未向公众发布,或者是真实世界攻击者使用的工具。所以我没有意识到有任何公共工具可以做到这一点。但老实说,这不是我最喜欢的方法。尽管它相当复杂和有效。但它需要有人坐在键盘前247才能与受害者交互。所以对做这件事的人来说是很多工作。
所以我们开始思考所有这些工具以及这种攻击的执行方式。我想立即问自己的一件事是,所有这些工具有什么共同点?是什么使中间人工作,无论使用什么工具?所有这些工具和攻击的共同点是,登录总是来自攻击者的计算机每次。无论是反向代理方法,我们在互联网上有evil Jinx或Modlishka,并且它是反向Web代理。当该用户名和密码提交到真实登录门户时,它是从eviljinx服务器或Modlishka服务器提交到该门户。当它是浏览器在中间时,互联网上有某个服务器运行我们的浏览器,我们的攻击者浏览器。当受害者通过该浏览器发出其登录请求时,登录请求来自该浏览器。所以它仍然来自攻击者的计算机。每当它是手动中间人工具时。嗯,在这种情况下,受害者将其凭证提交到凭证收集页面,然后攻击者读取它们,然后从他们自己的工作站实际提交凭证,所以再次凭证被提交,登录是从攻击者自己的计算机完成的。这给了我们一个机会尝试找到中间人的弱点,尝试找到它的氪石。我们需要做的就是识别登录何时来自攻击者的计算机。
那么我们该怎么做?我们如何在攻击者进行这些攻击之一时找到攻击者的计算机?嗯,我们可能尝试做的一件事是尝试识别用于登录用户账户的任何可疑IP地址。可能是Tor网络上的IP地址,可能来自VPN网络。可能是与某些云服务如DigitalOcean等相关的IP地址。嗯,那在某些时候会奏效,但不会一直奏效。对于实际上知道他们在做什么的复杂攻击者来说,它不会奏效。如果我们的攻击者获得商业、住宅或移动IP地址,而不是Tor网络的一部分或与某种VPN相关联,它就不会奏效。实际上有合法的企业出售对商业、住宅和移动IP地址的访问。我们作为攻击者可以只是订阅其中一项服务并通过该服务发送我们的流量。现在我们有了一个合法IP地址在一个合理的区域,并且我们可以绕过可疑IP地址的检测。所以这对今天操作的大多数真实攻击者来说不会奏效。可疑设备或浏览器也是如此。所以如果我们说像,如果它是用户通常不登录的设备或浏览器呢?比如如果看起来他们从Kali Linux或类似东西登录呢?嗯,实际上再次对于大多数中间人攻击来说,情况并非如此。大多数中间人工具自动模仿受害者的设备和浏览器。所以只要攻击者知道他们在做什么,那不会作为检测发生。如果再次它将检测低挂果实,那些刚刚从GitHub下载此东西并首次使用的攻击者,但那些实际上知道他们在做什么的攻击者,它根本不会阻止他们。
所以现在我们有点陷入困境,比如我们将如何弄清楚,哪些登录来自攻击者的计算机?嗯,我们可以采取相反的方法。我们可以尝试识别登录何时不是来自攻击者的计算机。我们知道关于攻击者计算机的一件事是,攻击者的计算机总是不是受害者实际使用的计算机。在每一次这些攻击中,那台计算机都在世界其他地方,而不是受害者实际登录的计算机。如果您开始回想我最初关于多因素认证的说法,它是我们知道的东西和我们拥有的东西,我们不应该已经知道哪台计算机是真实用户登录的计算机吗?因为您拥有的东西,那整个您拥有的东西的概念,意味着我们的用户与他们登录的计算机以及他们手中的东西之间存在紧密接近。假设他们手中实际上有一个令牌。当您开始思考这一点时,您意识到多因素认证实际上不是它所描述的那样。它实际上不是某物加上您拥有的东西。实际上它是完全不同的东西。所以在实践中,我在此幻灯片上列出的这些不同的多因素令牌是不同的东西。一次性密码或基于时间的一次性密码。所以您从短信获得的代码,您通过电子邮件收到的代码,您从像Google Authenticator这样的东西获得的代码,这些都是某物,它们不是您拥有的东西。所以那是,您可以轻松地告诉别人该代码,那将是他们知道的某物。现在它是某人知道的某物,不是您实际手中物理拥有的某物。推送通知也是如此。如果您收到必须在设备上接受才能登录的推送通知,推送通知不是您拥有的东西。它实际上是拥有令牌设备的人会做的事情。您可以很容易地说明这一点,例如,如果您某天去办公室,不小心把手机忘在家里,但您有家人在家,他们知道您手机的PIN,您可以从办公室电话打给他们,因为您没有带手机,您可以要求他们解锁您的手机并为您接受推送通知,因为您正尝试登录工作计算机而无法登录。他们可以这样做,因为它不是您拥有的东西,它是可以访问令牌的人会做的事情。甚至Microsoft喜欢做的推送通知加上两位数代码也是如此。使用Microsoft Authenticator应用,您在屏幕上看到两位数代码,您收到推送通知,必须输入两位数然后接受,这是最后两个的组合。它是拥有多因素设备的人会做的事情,它是某物,这两个都不是您实际拥有的东西。
所以现在我们处于需要找出一种方法使多因素以应该的方式工作并实际证明有我们拥有的东西的情况。所以多因素真正需要的是某物,加上我们可以证明您拥有的东西。我们可以证明的方式,您实际拥有某物。至少一种我们可以证明的方式是用户拥有设备。我们从那里开始,然后第二步,该设备完成没有其他任何人可以做的操作。它完成没有其他任何人可以做的操作的方式是,它有权访问用于完成该操作的数据,没有其他任何人有权访问该数据。我们可以做到这一点的方式是使用公钥加密。我现在