如何在不使用黑客工具的情况下测试中间人攻击
本网络研讨会最初于2025年3月13日播出。在本视频中,Michael Allen讨论了如何在不使用黑客工具的情况下测试中间人攻击。他深入探讨了凭证收集的复杂性、多因素认证(MFA)的演变,以及攻击者如何调整策略以绕过安全措施。Michael提供了识别弱MFA方法的见解,并提供了加强安全的实用步骤,强调了使用FIDO2密钥作为防御中间人攻击的强大方法。
关键点
- 凭证收集攻击的演变突显了攻击者如何不断适应多因素认证等安全措施。
- 中间人攻击利用攻击者的计算机拦截登录凭证,包括会话令牌,从而绕过传统的MFA安全。
- FIDO2密钥代表了MFA的重大进步,使用公钥加密确保认证与用户物理拥有的设备绑定。
亮点
- 2:28 多因素认证时代的战术演变:攻击者通过添加虚假表单或使用社会工程学来适应多因素认证,增加了努力和失败的风险。
- 2:10 利用中间人攻击绕过多因素认证:攻击者开发了一种工具,使用中间人方法绕过多因素认证,有效捕获会话令牌。
- 1:47 利用实时多因素认证绕过进行凭证收集:本文描述了一种使用虚假登录页面窃取凭证的网络钓鱼攻击,通过社会工程学绕过多因素认证。
- 1:41 通过IP和设备识别追踪攻击者的挑战:检测攻击者涉及识别可疑IP,但复杂的攻击者使用合法IP地址,逃避常见检测方法。
- 1:51 重新思考多因素认证:“你所拥有的事物”的误解:本文认为多因素认证通常依赖于知识而非拥有,挑战了传统安全假设。
- 1:40 使用公钥加密增强多因素认证:为了使多因素认证有效,将设备拥有与独特操作结合,使用公钥加密进行安全验证。
- 1:52 理解FIDO2密钥及其安全认证过程:FIDO2密钥使用公钥加密进行安全认证,将密钥存储在硬件模块中以增强安全性。
- 1:48 使用加密令牌验证的安全认证过程:登录过程涉及挑战-响应系统,其中令牌通过加密签名验证用户身份。
- 3:07 测试不同认证令牌的安全性:使用不同令牌测试账户安全性:Joseph使用SMS登录,然后尝试认证器应用,展示漏洞。
- 2:34 加强组织中的多因素认证:通过测试允许的令牌、启用安全选项和禁用弱方法来识别和修复弱多因素认证。
完整视频
[视频链接]
文字记录
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的聊天类型功能的功能与该凭证收集页面交互。就像您今天在许多网站上与客户服务交互时可能看到的那样。但不是向用户发送显示在网站上的消息,他们发送一个虚假的多因素提示,要求任何真实登录门户刚刚要求攻击者提供的内容。可能是推送通知,可能再次是代码等。然后受害者在他们那一端执行该操作,然后攻击者被允许进入该网站。如果受害者输入了六位数代码,攻击者输入相同的代码。如果受害者接受了推送通知,攻击者已经进入。此时我没有这种工具的任何示例,因为我知道的唯一示例是 either like pen testing companies that are private and haven’t released it to the public or that are used by real world attackers. 因此没有任何公开工具我知道可以做到这一点。但说实话,这不是我最喜欢的方法。尽管它相当复杂和有效。但它需要有人坐在键盘前24/7才能与受害者互动。因此对于执行者来说工作量很大。
因此我们开始思考所有这些工具以及这种攻击的执行方式。我想立即问自己的是,所有这些工具有什么共同点?是什么使中间人攻击无论使用什么工具都能工作?所有这些工具和攻击的共同点是登录总是来自攻击者的计算机每次。无论是反向代理方法,我们在互联网上有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应用,您在屏幕上看到一个两位数代码,您收到一个推送通知,您必须输入两位数然后接受,这是最后两个的组合。它是拥有多因素设备的人会做的事情,并且它是某物,这两个都不是您实际拥有的东西。
因此现在我们处于需要找出一种方法使多因素以它应该的方式工作并实际证明有我们拥有的东西的情况。因此多因素真正需要的是“某物,加上我们可以证明您拥有的东西”。我们可以证明的方式,您实际拥有某物。至少一种我们可以证明的方式是用户拥有一个设备。我们从那里