【问题标题】:Obfuscated python code on github that I suspect to be malicious codegithub上的混淆python代码,我怀疑是恶意代码
【发布时间】:2023-03-10 13:21:01
【问题描述】:

我对任何编程语言都不太熟悉或经验丰富,所以我有点卡在这里,想知道是否可以做任何事情。基本要点是,我在 GitHub 上浏览了一个用 python 编写的 selfbot,用于一个名为 discord 的应用程序。我想看看一些东西,看看我是否能知道发生了什么。我最终犯了一个大错误,忘记在运行脚本之前检查它。后来我看了看它,发现它被混淆了。几个小时后,我的三个 discord 帐户都通过我的帐户令牌登录,绕过了 2fa 和位置登录验证,所有 3 个帐户都立即被 discord 锁定。我运行的其他 python 脚本都没有被混淆,所以我认为这是最有可能的情况。我想知道是否有一种简单的方法可以对代码进行去混淆处理以找出这是否是罪魁祸首并将其从 GitHub 中删除。

这是被混淆的网站。

https://development-tools.net/python-obfuscator/

因为超出了 StackOverflow 的字符数限制,所以不得不在这里发布代码。

https://zerobin.net/?806880066f5b7356#wyixWYKBCtGhAThmhM4XSwGqVkeXqTaG744nENY/LpA=

这里是 github 仓库

https://github.com/zVilao/Luxuria-SelfBot-Nuker-Discord

【问题讨论】:

  • 我认为这对于 github 来说可能更像是一个问题,如果您将某些东西标记为潜在病毒,他们可能不得不对其进行调查。
  • 很遗憾,您已经学会了运行您不理解的代码的艰辛方法,很抱歉发生在您身上。
  • 除非是提交混淆竞赛,否则编码值和evalS 是一个死的赠品,这不是你想要运行而不分析它会做什么的东西。变量magiclovegoddestiny 几乎肯定是base64 编码值。您可以对这些值进行解码以了解它们所代表的含义。
  • 检查这个:pastebin.com/MMuC1C8B
  • 另一部分:pastebin.com/tkURTe2K

标签: python deobfuscation


【解决方案1】:

首先,我要警告你:你正在处理的代码可能是恶意的,不要相信链中的任何链接 - 不是混淆网站,甚至是我。自己验证一切。


看起来您可以简单地将最后一行中的eval(compile()) 替换为print() 以获取去混淆的代码,但是在前一行中有混淆的evals,它可能是恶意的。


手动操作

我将使用一些真正简单的示例代码:

print('foobar')

如我们所料,将其上传到网站会产生 8 行经过混淆的 Python 代码。为了安全起见,我不会将其全部发布在这里,一次只发布一篇。

首先有一些字符串包含\x 转义而不是字符本身。让我们提取它们,看看它们包含什么:

>>> joy = '\x72\x6f\x74\x31\x33'
>>> joy
'rot13'
>>> 
>>> '\x6d\x61\x67\x69\x63'
'magic'
>>> '\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65'\
... '\x28\x6c\x6f\x76\x65\x2c\x20\x6a\x6f\x79\x29'
'codecs.decode(love, joy)'
>>> '\x67\x6f\x64'
'god'
>>> '\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65'\
... '\x28\x64\x65\x73\x74\x69\x6e\x79\x2c\x20\x6a\x6f\x79\x29'
'codecs.decode(destiny, joy)'
>>> 
>>> '\x74\x72\x75\x73\x74'
'trust'

(为了避免在右边距隐藏分号,我将两行分开。)

ROT13 是一种基本的字母替换密码。让我们继续解密:

>>> love = 'DbW2Mi'
>>> destiny = 'pcPt=='
>>> import codecs
>>> codecs.decode(love, joy)
'QoJ2Zv'
>>> codecs.decode(destiny, joy)
'cpCg=='

现在我们可以把它们放在一起并解码:

>>> magic = 'cHJpbn'
>>> god = 'b2Jhci'
>>> trust = magic + 'QoJ2Zv' + god + 'cpCg=='
>>> import base64
>>> base64.b64decode(trust)
b"print('foobar')\n"

所以我们的原始代码又回来了,然后在最后一行进行编译和评估。

【讨论】:

  • 脚本分为两部分,第一部分从电脑获取信息并将信息发送到``canary.discord.com/api/webhooks/853348950941630525/…`` 第二部分我不会检查,但如果有人想检查:@ 987654322@ 建议只做静态分析,从502行开始到506行。
  • 感谢您的帮助和澄清。正是我想要的。对此,我真的非常感激。现在我有了 webhook,我可以将服务器 ID 报告给 discord。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多