一个Discord机器人如何黑入我朋友的账号
发动一次盗号攻击真的需要复杂且尖端的网络安全技术吗?我昨天遇到的情况告诉了我答案并非肯定。
起因
就在我和我的几个朋友们组团玩游戏的时候,我突然连续收到了几条来自我的一个朋友的消息,他的这条消息出现在了我们的私信和共同加入的Discord服务器之中。

第一秒,我并没有察觉到什么,毕竟这只是一个服务器邀请。我只是习惯性地点开了邀请内容,但当我即将点击加入服务器的时候,我意识到问题并不简单。
恰好,我的朋友正在语音频道里。我立即询问了他,他查看手机后告诉了我们他并没有主动发送这些消息。这条消息已经被他的账号群发到了每个服务器的至少三个公共频道、 以及所有他有过聊天的好友。
调查
我立即向那名朋友收集了有关问题发生的全部过程,以及可能可以用于复现的设备。他在当天的八点左右收到了其他朋友发来的邀请,他不假思索地加入了服务器,然后在十一 点时盗号发作,群发了完全一样的垃圾邀请信息。
我推测这是一次复杂的网络攻击,可能利用了潜在的网页版Discord的漏洞,进行了和盗用凭据(Token)的攻击。我怀疑可能是邀请页面或服务器页面上的某些内容含有恶意代码。
我准备好了一个小号,加了几个人的好友并且互发了消息。完全准备之后,我通过朋友的链接加入了服务器。
然而,什么都没有发生。我检查了一些安全设置,并没有什么发现。也许此时凭据已经被盗窃,然而攻击者并没有自动化利用这些token的操作?
然而下一秒,我注意到进入服务器的第一个页面是一个机器人验证频道,要求我进行机器人验证才能继续。

注:这个图片是我在编写此博客时的截图,在我调查的时候,验证机器人的外观发生过改变,这证明攻击者正在不断更换攻击链上的内容
然后我立即改变了猜测。我询问我的那名朋友,你是否有点击过这个验证按钮?
他在思考了一番后给出了肯定的回答。
令人惊讶的是,即使是他,也没有意识到自己并没有什么防备地点击了一个未知的按钮,尽管这个按钮来自于一个看起来相当可信的验证服务提供商。(但这个提供商是伪装的)
我点击了验证按钮,这个按钮以一个短链作为跳板,将我送到了"Captcha Bot"的验证页面。

这个网页的所有链接都有效,都会前往对应的"captcha.bot"的页面,例如文档、博客和联系方式等信息都高度可信。这误导了我很久,使得我去调查了Reddit等论坛上有关 Captcha Bot被攻击或者黑入的信息。在这之后,我又去调查了Captcha Bot的背景,尝试找出它与攻击者合作盗窃token的原因。
但并没有,我并没有找到什么信息,似乎没有人意识到这个问题。不过,我注意到Captcha Bot的挡泥板页面似乎和这个服务器验证页面有些不一样?
这个时候,我突然发现这个所谓的“Captcha Bot”页面,使用的是一个".info"结尾的域名,并且域名本身看起来专业却不常见。
很显然,这是一个伪装地相当不错的“Captcha Bot”页面克隆。而如何明显,却被已经被误导的我直接忽视。
注:当编写这篇博客的时候,域名再次发生了变化,并且这次的域名看起来更加专业和可信
接着,我点击了验证按钮,弹出了一个Discord登录界面。我输入了准备好的账号和密码,完成了登录。
我返回Discord,检查了安全信息。我注意到的第一件事就是我的登录设备列表里出现了两个距离我不远,但明显不是我的设备的设备。
尽管我并没有理解我的凭据是如何被盗的,但至少我知道我的朋友需要做的第一件事就是将这些设备移除。
转折
但这真的是凭据盗用吗?在我重复了这个登录流程两边后,我意识到了一些疑点。
我这台设备上已经登录过Discord了,按理来讲,此时出现Discord登录验证时,应该会保留我的登录态。而这个“Discord登录”窗口则完全没有我的登录信息。
其次,在我对这个诈骗网站的域名信息进行查询之后,发现这个域名已经注册三天了,这种盗窃凭据的高危漏洞不应该被Discord,这家大型企业,的安全响应团队花费这么 多的时间来解决。
并且,我发现这个登录窗口上有一个愚蠢的Emoji。
再次查看这个登录界面,即使是我也会被这个标题栏误导。而且实际上我确实去调查了这个Discord应用ID,却没有意识到这个窗口的真实地址是“about:blank”。
这种页面是受到父级窗口的完全控制的傀儡,这在我打开开发者工具之后得到了证实。
这个登录界面,只是一个内嵌了来自相同诈骗域名的iframe的页面,而标题栏上的所谓的权威的Discord网址只是诈骗的一部分。
而这个高度(或者连源代码都几乎一样)相似的登录界面,甚至做到了本地化和CAPTCHA验证等细节。
我在这之后给我的其他朋友也看了这个页面,没有一个人看出端倪。
随着调查的深入,我逐渐发现这次诈骗居然如此简单,甚至使用的已经是五年前的戏法了。
攻击者在Cloudflare上放置了几个简单的页面。这些页面经过了刻意的混淆加密,克隆了每个界面细节,具有很高的误导性。
通过吸引人的链接和标题,诱导年轻人(很显然,但在这种场景下是年轻人)点击链接,然后利用Discord用户信任验证机器人的思维惯性,使其导航到恶意网站。
而下一步的假Discord页面,则记录了所有被攻击人的账号和密码。
然而,这并没有解释攻击者是如何只使用账号和密码绕过Discord的2FA等验证机制的。
我总是会被手机浏览器上的Discord登录方式惹恼。要想通过2FA验证,得先通过2FA验证。这种设计闭环令人忍俊不禁。
但攻击者却以某种方式绕过了这一步骤,这个步骤反而是此次诈骗的技术关键。Discord会修复这个问题吗?我并不知道。
由于假登录页面有CAPTCHA等保护,并且这几个域名背后的服务器结构相当简单(甚至可能就是Cloudflare Page),我也无法更深入地调查具体细节。
我立即让我的朋友更改了他的账户密码,清理了所有连接的Discord机器人应用,以及登出了所有信任的设备,问题预期应该就此解决。
总结
无论这条攻击链上的任何一环出现问题,这种情况就不应该出现。
如果我的朋友仔细看了他朋友发给他的消息,在整个过程中对所经手的Web页面产生任何一丝怀疑,这样的攻击便会失败。
即使是多年以前的诈骗方式,以处心积虑的细节和对年轻人的了解,依旧能够在今天完成具有一定规模的传播。我个人无法验证这次诈骗的传播范围,但能肯定的是,我朋友 的朋友收到这些信息后也有相当一部分点击了链接。
也许,我们真的应该思考我们对待看似可信的信息的方式。