【技术分享】Linux SkidMap 挖矿病毒处置
2023-12-28 / 0 评论 / 397 阅读 / 28 点赞

【技术分享】Linux SkidMap 挖矿病毒处置

发光的神
2023-12-28 / 0 评论 / 397 阅读 / 正在检测是否收录...

简介

初步处理,待更新...

工具分享

lrg20odp.png

这里分享个几个应急响应工具, 这里我用 toybox ,来查找恶意程序,再分享一个排查工具 GScan

lrfppi88.png

我把 toybox 这个工具上传到 /usr/bin 文件夹里,方便任意位置调用,它和 busybox 功能一样,那为什么不用 busybox?因为被恶意程序禁用掉了。

检查项

查找异常

lrekl0ad.png

tobybox top

通过 toybox 定位到可疑进程占用大量CPU,重启后 gettexted 后缀会随机变化,它是挖矿的主程序。

lrep0p2t.png

它有潜伏期现在是没挖矿状态,但后面跟着一堆可疑程序,通过计算哈希值提交给VT与微步,发现是有问题的。

system.pub

lrfr8jcd.png

lrfrbq2m.png

lrfrn029.png

gettexted.psscn

lrfrwb49.png

疑似多个命令文件被恶意程序给劫持,通过 ps、ls 发现并不能找到恶意程序,而用toybox来执行却能找到。

lrfs39uf.png

lrfs4ml1.png

lrfs5smn.png

review

lrft8v5l.png

通过VT查找可以看到程序的可以行为,并编写了清除恶意程序的 bash 脚本。

清除代码1

#!/bin/bash
processes=("gettexted.*" "postmaped.*" "matchpathcond.*" "postcated.*" "telinited.*" "devlinked.*")
for process in "${processes[@]}"; do
  echo "$process"
  toybox pkill -f "$process"
done

# 清理文件
files=(
  "/etc/init.d/dns-udp4"
  "/etc/profile.d/gateway.sh"
  "/.mod"
  "/etc/.cfg"
  "/boot/system.pub"
  "/etc/profile.d/bash.cfg"
  "/lib/system.mark"
  "/usr/lib/libgdi.so.0.8.2"
  "/usr/sbin/netstat.cfg"
  "/etc/profile.d/bash.cfg.sh"
)
cleanup_file() {
  local file="$1"
  toybox rm -rf "$file"
  toybox echo -n > "$file"
  toybox chmod 000 "$file"
  chattr +i "$file"
}
cleanup_files() {
  local files=("$@")
  for file in "${files[@]}"; do
    cleanup_file "$file"
  done
}
cleanup_files "${files[@]}"

# 系统加固
toybox echo 32768 > /proc/sys/kernel/pid_max
toybox echo 0 > /proc/sys/kernel/ns_last_pid
toybox rm -rf /usr/bin/review
toybox rm -rf /usr/bin/gettexted*
toybox rm -rf /usr/bin/biosdecoded*
toybox rm -rf /usr/bin/devlinked*
toybox rm -rf /usr/bin/telinited*
toybox rm -rf /usr/bin/postcated*
toybox rm -rf /usr/bin/matchpathcond*
toybox rm -rf /usr/bin/postmaped*
toybox rm -rf /usr/bin/mldconfig
systemctl enable kdump.service
systemctl restart ssh

清除代码2

#!/bin/bash
rm -rf /etc/init.d/dns-udp4
rm -rf /etc/profile.d/gateway.sh
sed -i '/\/usr\/sbin\/netstat.cfe/d' /etc/rc.d/rc.local
sed -i '/\*\/1 \* \* \* \* root \/\.mod/d' /etc/crontab
sed -i '/\/lib\/system.mark/d' /etc/rc.d/init.d/network
echo -n >/.mod
echo -n > /etc/.cfg
echo -n > /boot/system.pub
echo -n > /etc/profile.d/bash.cfg
echo -n > /lib/system.mark
echo -n > /usr/lib/libedi.so.8.8.2
echo -n > /usr/sbin/netstat.cfg
echo -n > /etc/profile.d/bash.cfg.sh
echo -n > /etc/selinux/config
echo -n > /dev/null
rm -rf /etc/selinux/targeted/tmp/modules/100/
chmod 000 /.mod /etc/.cfg /bot/system.pub /etc/profile.d/bash.cfg /lib/system.mark /usr/lib/libgdi.so.0.8.2 /usr/sbin/metstat.cfg /etc/profile.d/bash.cfg.sh
chmod +i  /.mod /etc/.cfg /bot/system.pub /etc/profile.d/bash.cfg /lib/system.mark /usr/lib/libgdi.so.0.8.2 /usr/sbin/metstat.cfg /etc/profile.d/bash.cfg.sh

###替换被篡改的文件
./toybox-x86_64 cp -f ./agetty /usr/bin/agetty
./toybox-x86_64 cp -f ./tty /usr/bin/tty
./toybox-x86_64 cp -f ./ssh /usr/bin/ssh
./toybox-x86_64 cp -f ./scp /usr/bin/scp
./toybox-x86_64 cp -f ./umount /usr/bin/umount
sed -i '/auth[[:space:]]\+sufficient[[:space:]]\+pam_sftp\.so/d' /etc/pam.d/sshd
sed -i '/auth[[:space:]]\+sufficient[[:space:]]\+pam_sftp\.so/d' /etc/pam.d/su
sed -i '/auth[[:space:]]\+sufficient[[:space:]]\+pam_sftp\.so/d' /etc/pam.d/sudo

if [ $? -eq 0 ]; then
    echo "命令执行成功。"
else
    echo "命令执行失败。"
fi

待分析...

28

评论 (0)

取消
0:00