尝试(并失败)破解 Wall of Sheep (2022)
Honeypot.net
从秩序中提取混沌
尝试(并失败)破解 Wall of Sheep
Wall of Sheep 是 DEF CON 上一个很受欢迎的展区。参与者在一个不安全的 Wi-Fi 网络上运行 packet sniffers,试图抓取人们登录未加密网站和其他服务的行为。如果他们发现了这种情况,他们会将此人的用户名和密码发布在一个巨大的显示器上。它看起来像这样:
这是一个很好的提醒,告诫人们在连接到未知网络时要小心,不要公开发送你的登录凭据。
但是,从我第一次看到它时,我就忍不住想:这个墙本身是否可以被破解?我是否可以把它变成这样?
这个想法一直在我的脑海中盘旋,直到我把它添加到我的待办事项列表中,这样我才能停止思考它。我至少得 尝试 一下。
假设
我对 Wall of Sheep 的内部运作一无所知。这是故意的。我想测试这个纯粹是为了好玩,而挑战的一部分是看看在没有任何知识的情况下,我能走多远。我必须做出一些假设:
- 如果你连接到正确的 Wi-Fi 网络并在明文中提交凭据,它们将显示在墙上。
- 将捕获的凭据显示在墙上的过程是自动化的。
- 墙由 Web 浏览器渲染。
- 墙的软件已经存在一段时间了,并且没有被编写成特别安全。毕竟,它是在 攻击 端,对吧?
- 之前没有人尝试过,所以之前没有人修复过它。
选择攻击方式
如果上述假设成立,那么显而易见的攻击媒介是 Cross Site Scripting (XSS)。方法是创建一个 JavaScript 代码片段,然后诱骗 Wall of Sheep 显示它——并执行它。这应该可行:
<script type="text/javascript">alert("I was here.");</script>
但是,我如何才能将其放到墙上?密码字段通常会被审查,例如 hunter2
会被屏蔽为 hunt***
。这会破坏 payload,所以行不通。有没有办法创建一个可以正确渲染的 DNS 主机名?嗯,也许吧,但是制作 那个 听起来像是项工作。(提醒自己:但是,天哪,那会对 Web 造成多大的破坏啊?嗯。我必须研究一下。)
但是,看看那个可爱的登录字段。它就那样完整地、未经过审查地、以明文的形式在那里。简直是意外之财!我将在那里注入 JavaScript。
设置 Web 服务器
此攻击需要一个 Web 服务器来发送那些伪造的凭据。为了便于实现,我配置了 HTTP Basic authentication,其中:
- 用户名:
Me<script ...
- 密码:
lol
还记得我多年来一直想做这件事吗?猜猜谁突然想起来在 DEF CON 的最后一天做这件事。此后的所有事情都是在我的 iPhone 上用 SSH 客户端中的 Vim 完成的。这不是做技术工作的理想方式。从我的错误中吸取教训:不计划就是计划失败。
连接到 DefCon-open Wi-Fi
你带了备用设备,对吧?我没有。在 DEF CON 上将一个现成的设备连接到开放网络会有什么问题呢! YOLO(You Only Live Once)。
访问网页
我用 Web 服务器的裸 IP 地址登录了该页面,观察着墙,但是……什么也没有。我重新加载了它;仍然什么也没有。我四处看看是否有任何参与者看起来像是发现了什么;仍然什么也没有。糟糕。
寻求帮助
Jan 和 Pat1 是坐在我设置这个东西的地方附近的参与者。我需要他们的帮助,但又不想直接问他们。我开始向 Jan 提出一些无辜的问题:“嘿,你在做什么?什么是 Wireshark?” 虽然他们很友善地用一般术语解释,但他们显然对他们自己的项目比辅导一个路人更感兴趣。Pat 更愿意教我,我拉了一把椅子坐在他们旁边。他们耐心地回答我的问题,并指出了他们屏幕上有趣的东西。他们也很快注意到我一边看着他们,一边经常在手机上重新加载一个页面。“嘿,呃,你是想被抓住吗?” “也……也许吧……” “为什么?” 我向他们简要解释了我的项目,他们立刻就加入了:
Pat: 你觉得这能行吗? 我: 可能不行,但值得一试。 Pat: 哇哦。如果它真的行得通,那将是传奇!
我有一个帮手了。不久之后,Jan 注意到我们在搞什么鬼,这导致了我在 DEF CON 上最喜欢的一次交流:
Jan: 你们两个是不是想把什么东西放到墙上去? 我,咧嘴一笑: 是的。这是一个 JavaScript 注入。 Jan,睁大了眼睛: 你们到底是谁?
谢谢你,Jan。在那之后,我觉得自己是一个真正的安全研究员。
另一位随机访客看到我们挤在一起,问我们是否在尝试破解什么东西。Jan 看着我,看着访客,说“没有”,然后又看着我。我向 Jan 眨了眨眼。Jan 回应地点了点头。访客眯起眼睛看着我们,然后走开了。Jan 支持我。
Pat 和 Jan 太棒了。当我们无法捕获我手机的请求时,Pat 问我是否碰巧使用了 VPN。 捂脸. 是的,我全局开启了 iCloud Private Relay。
社会工程学攻击 Shepherd
经过实验,我们有了可用的 Wireshark 捕获,记录了我登录我的网站的过程。但是,它们没有显示在 Wall of Sheep 上。事实证明,我的假设是错误的:我们必须向运行比赛的“Shepherd”演示捕获。Pat 叫了一个过来。我们向他们展示了 Pat 的捕获,但他们起初并不相信。大多数网站登录都是通过 POST 提交到服务器的表单进行的,而不是通过 HTTP Basic authentication。Shepherd 也对登录是否成功表示怀疑,因为服务器返回的是默认的“welcome to Nginx!”页面,而不是为(明显是假的)用户名个性化的东西。我非常努力地扮演“无辜的观察者”的角色,问诸如“但那不就是成功捕获的样子吗?”和“天哪,在我看来好像是对的。你不这么认为吗?”以及“在我看来这也很可疑,但我们能不能试试看会发生什么?”之类的问题。我们的 Shepherd 似乎几乎准备同意了——直到他们彻底摧毁了我的计划。
失败
我问 Shepherd 一个登录信息从被捕获到在 Wall of Sheep 上显示的过程是怎样的。他们的回答注定了我们的乐趣:“我会手动输入。” 哦,不。这不好。“它不是自动的吗?”,我问道。Shepherd 停顿了一下,揉了揉鼻梁。“好吧,”他们叹了口气,“曾经是,直到人们开始发送一堆卑鄙的用户名和密码,并有点搞砸了它2,所以现在我们必须审核这个过程。” 但是我没有放弃。“你能输入那个用户名看看会发生什么吗?” “它只会那样显示出来,”他们回答。“我们可以试试吗?”,我恳求道。“我的意思是,那只是文本。嗯,那不是一个网页”,他们反驳道。
什么。
然后,我第一次看到 Wall of Sheep 的底部角落里有一个闪烁的光标。我的心沉了下去。“那是 Excel 还是什么?” 他们咧嘴一笑:“这只是我们运行的一些旧软件。”
灾难。
重整旗鼓
那时我正式放弃了这次尝试。如果说曾经有可能破解 Wall of Sheep,那也不是在那一天。但这并不意味着我会永远放弃。明年,我将做出更明智的努力,方法是:
- 提前设置好。再说一遍,在手机上的 SSH 上使用 Vim 太糟糕了。我会在离开家之前让假的登录能够工作。
- 早点到那里。如果 Wall of Sheep 曾经要实现自动化并在浏览器中渲染,那将是在 DEF CON 开幕时,在任何人污染水域之前。
- 使用比 HTTP Basic auth 更常见的身份验证方法,例如典型的登录表单。
- 让结果页面看起来像我真的登录了一个合法的服务。
- 带一个备用设备,因为把我的个人设备放在那个特定的 Wi-Fi 网络上不是我做过的最好的主意。
如果 Jan 和 Pat 在场,我会再次招募他们的帮助。
- 我没有得到任何人的名字,也没有得到他们允许我描述他们的许可。假名就是你得到的一切。↩︎
- 我很欣赏这种讽刺意味,我正在抱怨黑客们在 Wall of Sheep 上显示东西,而在我的一篇文章中,我正在谈论在 Wall of Sheep 上显示东西。然而,一个好的恶作剧的首要原则是“不要做个混蛋,毁了每个人的乐趣”。我想要的是一些我希望 Shepherds 会觉得有趣的东西,而不是试图让种族歧视和其他卑鄙的垃圾出现在大屏幕上。不要做那样的人。↩︎
相关文章
- Veilid in The Washington Post
- Accidentally Hacking the Planet
- Slack was broadcasting hashed passwords for 5 years
- Do not use Readdle's Spark email app
- 2025-03-17: I report a critical vulnerability …
由 Micro.blog 提供支持。由 Tiny Theme 驱动。由 Matt Langford 用 ♥ 设计。