EvilProxy AiTM钓鱼攻击检测技术详解

本文深入分析EvilProxy AiTM钓鱼攻击的检测方法,重点介绍如何通过租户背景图像、可疑引用源和代理请求等特征进行威胁检测,包含具体的Splunk查询规则和Azure日志分析技术。

EvilProxy AiTM— 第2部分 检测

使用EvilProxy的中间人攻击正逐渐成为一种网络钓鱼威胁,其能够窃取MFA令牌的能力使其快速成为网络钓鱼的主要手段。

这是一个由两部分组成的博客文章 - 请参阅第1部分了解在我蜜罐租户中的攻击演练: https://medium.com/@martinconnarty/adversary-in-the-middle-part-1-walkthrough-2c91fb00197

以下是我提出的一些想法。随着学习的深入,这些方法将会不断更新。

您的租户图像

我观察到的许多中间人攻击页面都利用了一个功能:加载受害者租户的背景图像(当然,如果存在的话!)。作为防御者,如果我们能够访问适当类型的日志(包含URL和引用源的Web代理日志),我们就可以进行一些检测!

AiTM页面通常会直接从authcdn拉取图像(https://aadcdn.msauthimages.net/<唯一租户ID>/logintenantbranding/0/illustration?ts=)

如何找到您的租户ID?很简单:

  1. 访问 https://login.microsoftonline.com

  2. 打开开发者工具(Ctrl+Shift+I)

  3. 打开网络标签页: 图片描述

  4. 输入或选择您的电子邮件 - 这将导致背景加载: 图片描述

  5. 选择您看到的’illustration?ts…‘的URL - 右键单击并"复制链接地址"

  6. 您应该找到类似这样的内容: https://aadcdn.msauthimages.net/52ksdjfklj-kdr3246598sgljsdlfk-j2-k287s84lsj3j/logintenantbranding/0/illustration?ts=638307426057595200

  7. 唯一的租户字符串(是的,我已经更改了我的!)将是这一部分: “52ksdjfklj-kdr3246598sgljsdlfk-j2-k287s84lsj3j”

优先缓解 - 在背景图像上使用覆盖层

我首先建议您在背景图像上使用覆盖层(在此处设置:https://entra.microsoft.com/#view/Microsoft_AAD_UsersAndTenants/CompanyBrandingOverview.ReactView)

如果您能让用户在每次看到登录页面时检查URL,那么可能会阻止很多此类攻击。可能像这样: 随意使用!

这会导致类似这样的结果: 图片描述

寻找可疑引用源 - 直接访问情况

如果我们在Web代理日志中对引用源进行基线分析 - 我们通常会观察到它们通常是合法的Microsoft页面,如 https://login.microsoftonline.com/

如果我们看到任何其他内容,我们应该调查/创建新规则。

1
| tstats `summariesonly` count from datamodel=Web where Web.url="https://aadcdn.msauthimages.net/<这是您的租户ID>/logintenantbranding/0/illustration?*" AND NOT Web.http_referrer IN ("login.microsoftonline.com/*") by Web.user Web.http_referrer

寻找可疑请求 - 代理情况

在一个AiTM页面的示例中,不是受害者的浏览器直接访问图像,而是访问的站点访问了它。然而,我们可以在日志中看到相同的租户ID。这是不寻常的,我们可以寻找这种情况:

1
| tstats `summariesonly` count from datamodel=Web where Web.url="*<这是您的租户ID>*" AND Web.dest!="aadcdn.msauthimages.net" by Web.user Web.dest Web.url

注意:对于这两种情况,我想象未来的AiTM工具包会相应适应,因此追逐将继续。确保用户养成检查URL栏的习惯将更加稳健。

在Azure日志中寻找请求

这有点棘手,然而在我看到的示例中,尝试中经常出现非典型的应用程序或位置。根据我所看到的,它们通常在短时间内来自多个位置,并且在网络钓鱼点击的时间附近。

待完成 - 用于寻找用户位置异常激增的Splunk规则。类似这样(注意待完成!):

1
| index=azure category=SignInLogs | bucket span=5m | stats dc(src) as srccount by user _time | where srccount>5
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计