黑客爸爸的Minecraft模组破解之旅:利用Burp代理绕过授权验证

一位黑客爸爸在母亲节周末为儿子破解Minecraft付费模组授权系统的经历,涉及Java反编译、UUID机制分析和Burp代理流量劫持技术,展示了实际网络安全技巧的应用。

Minecraft模组、母亲节与黑客爸爸

上周末,我妻子身体不适。这意味着我们只能待在家里,由于她生病且正值母亲节周末——情况不太理想——我需要尽量让儿子有事可做,以便她休息和恢复。

当我问儿子想做什么时,他提到在某个YouTube频道上看到的一个新的Minecraft模组。这个模组允许你扮演各种漫威超级英雄!然而,我们下载的模组版本……缺少了他在YouTube上看到的套装(当然会这样)。

我做了些功课,发现他想要的版本只向Patreon支持者发布。现在,我完全愿意花5美元购买别人倾注心血开发的软件,而且最近刚看了《复联4》……对这款付费模组中钢铁侠装备的渴望超过了守住5美元的欲望。我上了Patreon,捐了5美元,下载了模组。启动后,一切看起来正常……然后我看到了这个:

未授权使用提示

什么?真的吗?好吧,我回去重新阅读Patreon的消息……

Patreon消息

呃,这里有几个问题。第一,我们现在就想访问。等一天(也许)才被添加到某个神奇列表中并不理想(而且创作者至今未回复我的邮件,所以可能……永远等不到?)。第二,我怀疑这是某种“每月捐5美元才能继续留在神奇列表中使用模组”的机制。而且,既然我已经为软件付了钱,我完全不喜欢受制于人。

是时候成为儿子需要的黑客爸爸英雄了 :P(另外,我想教他一点关于黑客精神的人生课程)。

好吧……模组只是一个jar文件……让我们用JD-GUI打开它,搜索“未授权使用”。

JD-GUI反编译界面

每个处理程序都有相同的代码,它们基本上看起来一模一样,都在检查你是否在列表中,如果不在,就不能玩。

授权检查代码

那么这个列表是从哪里来的?看起来是SuperHeroesBetaTesterChecker.getList()

获取列表方法

什么?我们真的从pastebin.com拉取某个列表来找出授权用户是谁?

Pastebin列表调用

好吧……UUID?事实证明,UUID映射到用户名,这些信息完全可以检索,这个方便的网站有帮助:https://mcuuid.net/。

酷,所以现在我知道了我们的UUID(你们也知道了,但再说一次,任何人都能查到,所以无所谓)。

最初,我尝试反编译、修改源代码并重新编译。有段时间我甚至设置了环境,用Eclipse和Forge编译这段源代码。但这花了几小时,我需要一个快速解决方案。这时Burp派上了用场。以下是我的操作:

  1. 在代理选项中设置Burp监听所有接口
  2. 导出其证书,让我和儿子的机器都信任代理处理HTTPS流量(无证书警告)
  3. 将我们的机器设置为所有安全网络流量使用Burp代理
  4. 添加几个代理匹配和替换规则,将其他UUID替换为我们的(以及用户名用于开发者级别访问,因为……为什么不呢)

基本上就是这样。一旦我们的机器开始通过我的Burp代理路由流量,每个从pastebin.com返回的带有那些UUID的响应都会自动将我们的UUID添加到授权用户列表中,效果拔群。

注意,我没有详细说明以上4个步骤,因为……如果你还不熟悉Burp和代理网络流量,外面已经有大量教程。

总结一下。我们付了5美元,却被告知仍需特殊权限才能使用这个模组。感觉不爽,想让它工作,并觉得可以教儿子一点计算机/黑客知识。现在,我有没有给模组创作者发邮件?有,事实上我告诉他们我发现了什么以及变通方法。对此非常坦率。还提供了用户名,以防创作者真的想添加它们(尽管我怀疑他是否超级慷慨)。但我们玩得开心,学了一点东西,并且用上了模组。

话虽如此,如果你有能力为别人花大量时间编写的软件捐几美元,我会说去做吧。但如果他们没有如约交付……戴上你的黑客帽子 :-)。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计