执行了一个 shell 脚本,被吓了一跳 - V2EX
请不要在回答技术问题时复制粘贴 AI 生成的内容
DosLee

执行了一个 shell 脚本,被吓了一跳

  •  
  •   DosLee May 9, 2024 8906 views
    This topic created in 734 days ago, the information mentioned may be changed or developed.

    开了台虚拟机,本来是想着解锁一下某视频网站的非自制剧观看权限。查了一下大部分都是推荐用 Cloudflare Warp 代理来解锁。这只是开头。

    然后我搜索的时候卡看到一个博客写的不错,就按照给出的 Github 地址执行了给出的脚本。执行时使用的是普通用户,不能执行,我就切换到了 root 用户执行脚本。

    执行后等待了一会,提示我 “更新依赖时出错,建议重启 SSH 客户端。如果依旧如此建议卸载重装 SSH 客户端” 我看到后很疑惑,这跟 SSH 客户端有什么关系。

    我尝试打开最开始执行命令中的连接,看一下脚本运行的步骤。结果,不看不知道,一看吓一跳,打开后整个屏幕都是密密麻麻的字符,仔细看了一眼好像是变量赋值,中间部分有一个 eval 命令读取变量后拼接到一起然后组成一个“明文”脚本。

    我看明白后当场就觉得完了,是不是植入挖矿或是其他可执行文件了,要隐藏的这么深。

    我尝试写了一个 Python 脚本,解析后我发现,竟然还用 Base64 编码了。还需要解码,我找了一个在线网页进行解码后,这家伙,还是一个套娃,有好几层(命令我会发到第一层评论)。

    改了改了 Python 脚本全部解析后,看到了脚本的真实面目。然后发现,竟然还有反转。

    脚本在一开始定义了一个 skip 变量,在这个变量指定的地方写的是 "BZh91AY&SYX" 开头的字符,后边全是乱码了。我一看,这不会是把压缩文件放脚本中了吧。我试着使用 tail -n +76 endip.sh | bzip2 -cd > output.sh 仔细查看了脚本,竟然没发现有什么不同。那这“里三层外三层”又是拼接又是下载新脚本的到底是干什么?

    40 replies    2024-05-11 10:06:58 +08:00
    defunct9
        1
    defunct9  
       May 9, 2024   5
    Moyyyyyyyyyyye
        2
    Moyyyyyyyyyyye  
    PRO
       May 9, 2024
    可能是提供这个服务,但是不想让你修改,类似闭源软件吧
    DosLee
        4
    DosLee  
    OP
       May 9, 2024
    最一开始的脚本内容(因为太长,删除了一部分)

    ```shell
    z="
    ";IeCz='MTBi';Qz='Cllt';oQCz='RlZH';htz='cFVs';mBCz='STBW';XYz='SlVV';qgBz='a1r';BKBz='bUpY';JYBz='VWRY';ISz='aGtS';vPCz='UFYw';qcBz='a1ZW';iIBz='aERh';enBz='blpX';hDz='dFJr';RiBz='b2FR';Vz='aGlZ';WBBz='dFdN';eJCz='Mk5z';eICz='VlRJ';IWBz='VTJO';RfBz='RVZX';kOCz='R2Ez';Cmz='MjVT';WLCz='WlNX';WOz='VjAx';lQBz='aGti';
    eval "$Az$Bz$Cz$Dz$Ez$Fz$Gz$z$Hz$Iz$Jz$Kz$Lz$Mz$Nz$Oz$Pz$Qz$Rz$Sz$Tz$Uz$Vz$Wz$Xz$Yz$Zz$z$az$bz$cz$dz$ez$fz$gz$hz$iz$jz$kz$lz$mz$nz$oz$pz$qz$rz$sz$z$tz$uz$vz$wz$xz$yz$ABz$BBz$CBz$DBz$EBz$FBz$GBz$HBz$IBz$JBz$KBz$LBz"
    ```
    DosLee
        5
    DosLee  
    OP
       May 9, 2024
    嵌套 Base64 解码后的脚本

    ```shell
    #!/bin/bash
    #
    # Encrypted by Rangga Fajar Oktariansyah (Anak Gabut Thea)
    #
    # This file has been encrypted with BZip2 Shell Exec <https://github.com/FajarKim/bz2-shell>
    # The filename '2endip.sh' encrypted at Fri Jan 19 07:09:45 UTC 2024
    # I try invoking the compressed executable with the original name
    # (for programs looking at their name). We also try to retain the original
    # file permissions on the compressed file. For safety reasons, bzsh will
    # not create setuid or setgid shell scripts.
    #
    # WARNING: the first line of this file must be either : or #!/bin/bash
    # The : is required for some old versions of csh.
    # On Ultrix, /bin/bash is too buggy, change the first line to: #!/bin/bash5
    #
    # Don't forget to follow me on <https://github.com/FajarKim>
    skip=75

    tab=' '
    nl='
    '
    IFS=" $tab$nl"

    # Make sure important variables exist if not already defined
    # $USER is defined by login(1) which is not always executed (e.g. containers)
    # POSIX: https://pubs.opengroup.org/onlinepubs/009695299/utilities/id.html
    USER=${USER:-$(id -u -n)}
    # $HOME is defined at the time of login, but it could be unset. If it is unset,
    # a tilde by itself (~) will not be expanded to the current user's home directory.
    # POSIX: https://pubs.opengroup.org/onlinepubs/009696899/basedefs/xbd_chap08.html#tag_08_03
    HOME="${HOME:-$(getent passwd $USER 2>/dev/null | cut -d: -f6)}"
    # macOS does not have getent, but this works even if $HOME is unset
    HOME="${HOME:-$(eval echo ~$USER)}"
    umask=`umask`
    umask 77

    bztmpdir=
    trap 'res=$?
    test -n "$bztmpdir" && rm -fr "$bztmpdir"
    (exit $res); exit $res
    ' 0 1 2 3 5 10 13 15

    case $TMPDIR in
    / | */tmp/) test -d "$TMPDIR" && test -w "$TMPDIR" && test -x "$TMPDIR" || TMPDIR=$HOME/.cache/; test -d "$HOME/.cache" && test -w "$HOME/.cache" && test -x "$HOME/.cache" || mkdir "$HOME/.cache";;
    */tmp) TMPDIR=$TMPDIR/; test -d "$TMPDIR" && test -w "$TMPDIR" && test -x "$TMPDIR" || TMPDIR=$HOME/.cache/; test -d "$HOME/.cache" && test -w "$HOME/.cache" && test -x "$HOME/.cache" || mkdir "$HOME/.cache";;
    *:* | *) TMPDIR=$HOME/.cache/; test -d "$HOME/.cache" && test -w "$HOME/.cache" && test -x "$HOME/.cache" || mkdir "$HOME/.cache";;
    esac
    if type mktemp >/dev/null 2>&1; then
    bztmpdir=`mktemp -d "${TMPDIR}bztmpXXXXXXXXX"`
    else
    bztmpdir=${TMPDIR}bztmp$$; mkdir $bztmpdir
    fi || { (exit 127); exit 127; }

    bztmp=$bztmpdir/$0
    case $0 in
    -* | */*'
    ') mkdir -p "$bztmp" && rm -r "$bztmp";;
    */*) bztmp=$bztmpdir/`basename "$0"`;;
    esac || { (exit 127); exit 127; }

    case `printf 'X\n' | tail -n +1 2>/dev/null` in
    X) tail_n=-n;;
    *) tail_n=;;
    esac
    if tail $tail_n +$skip <"$0" | bzip2 -cd > "$bztmp"; then
    umask $umask
    chmod 700 "$bztmp"
    (sleep 5; rm -fr "$bztmpdir") 2>/dev/null &
    "$bztmp" ${1+"$@"}; res=$?
    else
    printf >&2 '%s\n' "Cannot decompress ${0##*/}"
    printf >&2 '%s\n' "Report bugs to <[email protected]>."
    (exit 127); res=127
    fi; exit $res
    BZh91AY&SYX _D0mw[m ) #I=S h~M4J zh=@
    6 2 dHi0 L 0 ` d LF & 0L C 0 C & 211 ` ( h&h&T)h HS E<M2`C .BEBUUUUUUUUTIHT* HU!JBB9%B R-ydX:*2suLo>},v6| e9 k _ Xhh|='~KRi4 Yв #e ( OZYy hmCm~#FXyK s #4V0c2%Y k~/1 $C" j ~P W.[i!%k#w{ - oh ;9d/* a
    GI2e-N_,,E gI: Nt *J; &T!`5}6 n7M e> χ 0 0h&^% T^HiR! | FQ A p p px
    KRRey(p]+ P;k{yFl q| >3XIzu/RT/M]'v kcj 0l> 'iUG E '^:v 'Tl"PZ(DCre } QQ DD2
    #ě* E+{Ht7PS !j sa=v-z3; d[/_+А\JzLqA""q
    Qv KK' Tdo$[#=G"fE5N&Q8wUs,&[ql4k DL0C 7x^ 376F rwoH"u#MZc|xv* n :e4!LV,oWpesrlLZQcp8
    g 1%%]I ,B N"-Be$208-6 Eσ5MeFrJ1O=
    KNg KpiXI% Mc26bvu]r `mY b de47hXD V%MqvlXXifq67g<W p ǚs # ?a ovS@!|% q OaV e &",k cD:I B.V bVU 7hZ &L0 2 ;fEr`hj :% 1Fl4jk`BfUT, "`XWwV ; kL9X1_.
    .Z I rE8PX
    ```
    selca
        6
    selca  
       May 9, 2024
    放 GitHub 假装开源的,一大堆人说他脚本有问题,肯定不是空穴来风的
    DosLee
        7
    DosLee  
    OP
       May 9, 2024
    @defunct9 原来是这样
    mohumohu
        8
    mohumohu  
       May 9, 2024
    薅羊毛项目给油管营销号赚麻了,GitHub 上一个脚本没有的开源,命令都是下载 gitlab 的,这就是 3.2k star 含金量
    InDom
        9
    InDom  
       May 9, 2024
    对脚本分析了一波,然后看着仓库底下“加密”原因,我在思考我为什么没去吃这口饭,赚这个钱呢?

    我改个名叫 XX 哥,搞一些乱七八糟的东西,是不是就可以开工了?
    InDom
        10
    InDom  
       May 9, 2024
    看完那个文章,吃瓜真爽........么?这都什么乱七八糟的?
    pecsj
        11
    pecsj  
       May 9, 2024
    这玩意没有用也有这么多人 star 么
    defunct9
        12
    defunct9  
       May 9, 2024
    个人感觉,就上面贴出来这个脚本,写的稀烂。这也配放到 github 上?果真无耻无畏
    Y25tIGxpdmlk
        13
    Y25tIGxpdmlk  
       May 9, 2024
    应该只是不想让你们看到源码,然后用某类代码混淆软件处理过而已,省的被别人抄过去,改一下就变自己的了。

    至于有没有后门啥的,另说了
    Y25tIGxpdmlk
        14
    Y25tIGxpdmlk  
       May 9, 2024   5
    @defunct9 #12 个人认为代码最大的意义应该是实现某个功能,至于实现方法优不优美,写的好不好是其次的东西。
    MineDog
        15
    MineDog  
       May 9, 2024
    就一个 readme 文件的项目,为啥这么多 star ,大受震撼
    liaoyigou
        16
    liaoyigou  
       May 9, 2024 via iPhone
    wget -O snell.sh --no-check-certificate https://git.io/Snell.sh && chmod +x snell.sh && ./snell.sh

    试试这个
    Jokesy
        17
    Jokesy  
       May 9, 2024
    @defunct9 #12 ssh 哥,来个您的博客,让小弟膜拜学习一下
    james122333
        18
    james122333  
       May 9, 2024 via Android
    bz2-shell?这个看起来就是 gzexe 指令的 bz 版本 都是自解压缩用
    noahlias
        19
    noahlias  
       May 9, 2024
    智商税?
    jqtmviyu
        20
    jqtmviyu  
       May 9, 2024   1
    我是用这个 3Kmfi6HP / EDtunnel , 屁事真多呀.
    defunct9
        21
    defunct9  
       May 9, 2024   2
    @Jokesy < target="_blank" href="https://bajie.dev/" rel="nofollow noopener">https://bajie.dev/
    lujiaxing
        22
    lujiaxing  
       May 9, 2024
    估计 整件事都是他自己在炒作自己... 让更多人用自己的脚本.
    Misaka 跟他是同一个人.

    加密代码明面说的是防止 Misaka 抄袭,
    本质上是植入挖矿代码或者为植入挖矿代码做准备
    xxx027
        23
    xxx027  
       May 9, 2024 via Android
    因为真的会被那个小朋友直接改成自己的,被那个小朋友祸害过的可不少
    脚本作者好像说过如果找得到脚本挖矿的证据直接奖励 10 万元
    uub
        24
    uub  
       May 9, 2024
    之前有人发过他脚本的源码
    https://gitlab.com/openyg1/openyg
    vB4h3r2AS7wOYkY0
        25
    vB4h3r2AS7wOYkY0  
       May 9, 2024
    啥脚本看都不看直接 root 跑也是没谁了,再说配置一个 warp 又不是多费劲儿的事儿。
    没被风控的区域直接 wgcf+wireguard 搞定,风控的区域用 warp-go (不过后者也是没开源的东西,建议 systemd dynamic user 跑。
    Greendays
        26
    Greendays  
       May 9, 2024
    这个 Misaka 和 Jellyfin 的那个 Misaka 应该没啥关系吧(
    Remember
        27
    Remember  
       May 9, 2024
    @MayKiller 很多人是看都不看源码,就执行别人的一键脚本的。
    xjngbla
        28
    xjngbla  
       May 9, 2024
    @defunct9 #1 花了我半小时
    DosLee
        29
    DosLee  
    OP
       May 9, 2024
    @MayKiller 害,不是主力机,当时也是想着实验一下,能不能获取到 Warp 比较好的 IP ,不能用就删了。

    平时很少用脚本,都是包管理器安装。用脚本也会用 GPT 检查一下的。
    banyasmya23
        30
    banyasmya23  
       May 9, 2024
    @defunct9 #21 大佬 博客代码前面的序号,复制的时候也会被复制下面,运行就报错 很麻烦啊 优化下吧
    banyasmya23
        31
    banyasmya23  
       May 9, 2024
    @defunct9 #21 https://i.mji.rip/2024/05/09/a4d937354f2d070c106363db4d555a1c.png 大佬 博客代码前面的序号,复制的时候也会被复制下面,运行就报错 很麻烦啊 优化下吧
    halofingle
        32
    halofingle  
       May 10, 2024 via iPhone
    之前看到视频评论说这人脚本里面有挖矿程序。。。还能看机器配置决定是否启动。。。配置低的就不挖
    cosette
        33
    cosette  
       May 10, 2024   1
    拒绝任何 `bash -c $(curl example.com)` 或者类似的管道安装和运行的方式,尤其是直接使用 root 用户的情况下。

    跑来源不明的脚本属于心比较大的情况,除非是非常值得信赖的情况。
    defunct9
        34
    defunct9  
       May 10, 2024
    @banyasmya23 https://mjj.today/i/TSpFYG . 应该是你自己的问题。markdown 的文件,本身也没有序号。你自己检查自己的机器吧。
    lisxour
        35
    lisxour  
       May 10, 2024
    根据我见过这么多类似事件的经验,代码开源 + 无故混淆加密、二次动态分发下载,90%都有鬼
    FrankAdler
        36
    FrankAdler  
       May 10, 2024
    @defunct9 大佬留个联系方式,下次发代码到 GitHub 前先找你掌掌眼
    ClarkAbe
        37
    ClarkAbe  
       May 11, 2024
    @defunct9 就是...应该给他电脑开个 ssh, 连上去全给他删了
    defunct9
        38
    defunct9  
       May 11, 2024
    @FrankAdler 不敢。github 本身就是个人平台,写自己的就是。至于好还,不好就改呗。写的多了自然就好了。
    FrankAdler
        39
    FrankAdler  
       May 11, 2024 via Android
    @defunct9 个人感觉,就上面贴出来这个脚本,写的稀烂。这也配放到 github 上?果真无耻无畏
    真的不会骂我吗
    defunct9
        40
    defunct9  
       May 11, 2024
    @FrankAdler 上面这种夹杂着 2 进制,伪开源的东西,你看着不闹心么
    About     Help     Advertise     Blog     API     FAQ     Solana     999 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 101ms UTC 22:29 PVG 06:29 LAX 15:29 JFK 18:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86