Uber 和 MGM 被黑,都栽在同一个环节:聊聊 help desk 这个被忽视的攻击面

🔑 关键词:社工攻击,MFA 绕过,help desk 安全,身份安全,Uber 数据泄露

📖 摘要:Uber 2022 年入侵和 MGM 2023 年勒索事件的攻击路径其实高度重合:没有 0day,没有破解加密,攻击者打的是 IT 服务台的密码重置流程和 MFA 重注册流程。这篇文章梳理两次事件的真实细节,并给出五个可以立刻自查的具体步骤。

出事之后的复盘,几乎都有一句废话

图片

有没有发现一个规律:几乎每家公司出事之后的复盘 PPT 里,都会写上一句“员工安全意识不足”。这句话跟“多喝热水”一个性质,说了等于没说,但显得挺有道理,还没人反驳。

我去年帮一个做跨境电商的朋友看他公司的日志,三百来号人,买了 WAF、EDR、还上了一套 SIEM,一年的安全支出保守估计七位数。我从他 SIEM 里拉了一周的告警,一万两千多条,我抽了其中 200 条标记为“高危”的,真正被人工点开看过的,11 条。剩下的全在队列里躺着,最新的那条已经躺了九天。他当时的反应是“啊?”,然后问我是不是规则配错了。我说规则没问题,是没人看。

这才是大部分公司的真实状态。不是墙不够高,是墙上贴满了纸条,没人读。而攻击者不需要把墙推倒,他只要找到一个贴纸条的位置撬一下。

图片

Uber 和 MGM,两次攻击技术上都不复杂

2022 年 9 月 Uber 那次,细节后来都公开了。攻击者是个 18 岁的年轻人,先拿到一个外包商的 VPN 凭据,大概率是信息窃取木马带出来的,然后发现那个账号没开 MFA。进内网之后他到处翻,找到一个 PowerShell 脚本,脚本里明文写着 Thycotic 的 PAM 账号密码。拿这个账号进了 PAM,里面存着 Uber 的 AWS、GCP、Duo、OneLogin 凭据,一把梭。

中间还有一步:他要过 MFA 那道坎,用的办法是推送轰炸,一晚上给那个员工发了大概几十次 Duo 验证请求,凌晨一点多,那个人点了“同意”。整个链条里没有一个环节需要 0day。

图片

MGM 那次更直接。2023 年 9 月,Scattered Spider 的人打给 MGM 的 IT 服务台,自称某个员工,说要重置密码。服务台核实了姓名、生日、工号,这些信息在 LinkedIn 加历史泄露库里都能拼出来。据说通话只用了十分钟,密码重置完成,MFA 重新绑定。后面的结果是勒索软件上线,MGM 自己在 SEC 文件里写的损失约 1 亿美元;同期的 Caesars 走了另一条路,据媒体报道付了 1500 万美元赎金。

被攻击的不是技术边界,是流程

把这几件事并排看,会有一个挺刺眼的共同点:攻击者没有破解任何加密算法,没用 0day,技术含量甚至不如某些 CTF 题目。他们攻击的是流程——help desk 的密码重置流程、MFA 的重新注册流程、服务账号的凭据保管流程。

图片

问题在于,这些流程在绝大多数公司里,不归安全部门管。它们归 IT 运维、归 HR、归行政,写在某个共享盘的 SOP 文档第 4 页上,那句话通常是“核实身份后可重置密码”,而“核实身份”的定义是确认姓名、工号、部门。这三样东西在公开渠道能凑齐的概率,比大多数人想象的高得多。

所以我不太认同“人是最薄弱的环节”这种说法。员工半夜被打扰几十次之后点同意,是人之常情;服务台员工照着 SOP 走流程,他做得完全正确。错的是 SOP 本身,是写 SOP 的那套逻辑还停留在“内网是可信任的”这个假设上。

图片

与其搞钓鱼演练,不如花两周改这几件事

Verizon 的 DBIR 报告里有个数字每年都被反复引用,大意是三分之二左右的数据泄露涉及“人为因素”。我觉得这个数字的解读方式一直有问题,它听起来像是在怪员工手滑,但你翻案例会发现,员工的每一步几乎都是按规矩来的。

我的建议是,把每年一次钓鱼演练的预算和时间,抽一部分出来,把公司里所有跟“身份”相关的流程重新过一遍。具体就做下面这几件事:

图片

  1. 自测一下你们的 help desk 能不能被公开信息攻破。 拿一个同事的名字,去 LinkedIn、公司官网、HIBP 上查一下他的邮箱有没有出现在历史泄露库里,拼一份“身份资料”,然后打自己公司的服务台试一次。敢做的话,成功率会让你不太舒服。
  2. 检查 MFA 重注册有没有二次验证。 短信不算,短信可以 SIM swap。要的是线下核验或者视频加证件。
  3. 看一眼 MFA 推送有没有开数字匹配。 Okta 在 2023 年之后开始默认开启 number matching,Duo 也有类似功能。开没开,进后台十分钟能查清楚。
  4. 在内网脚本里搜一遍明文凭据。 这个土,但最管用。grep 一下 password= 这种字面量,翻翻带 -p 参数的脚本,再看看 Jenkins 和 GitLab CI 的变量里有没有硬编码。Uber 就是栽在这上面。
  5. 服务台通话录音,每周抽听十通。 不用全听,十通就能暴露出“核实身份”这一步的实际执行情况。

做完这几件事,花不掉多少钱,可能还不如一次渗透测试的报价。但按公开案例的分布来看,它能挡住的攻击会比再买一台下一代防火墙多。

安全这行有个挺别扭的地方:真正有效的手段往往不性感,卖不出价钱,也不好写进季度汇报。所以它们总是排在采购清单的最后一行。

🏷️ 标签: