修复防重感染脚本的误报问题
- 改进恶意进程检测逻辑,使用pgrep -x精确匹配进程名 - 排除清理脚本的子进程(通过检查父进程) - 排除系统工具进程(find, grep等) - 添加详细的日志记录,区分误报和真实威胁 - 对于.system3d等文件名匹配,检查可执行文件路径 修复后,日志将不再显示清理脚本的find进程为恶意进程, 只记录真正的恶意程序检测和终止。
This commit is contained in:
parent
00b8755838
commit
835aa4a06f
115
prevent-reinfection-fixed.sh
Executable file
115
prevent-reinfection-fixed.sh
Executable file
@ -0,0 +1,115 @@
|
||||
#!/bin/bash
|
||||
# 防止恶意软件重新感染的防护脚本(修复误报版本)
|
||||
|
||||
LOG="/var/log/prevent-malware-regeneration.log"
|
||||
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG"
|
||||
}
|
||||
|
||||
# 检查crontab是否被修改
|
||||
CURRENT_CRONTAB=$(crontab -l 2>/dev/null | md5sum | awk '{print $1}')
|
||||
CLEAN_CRONTAB=$(cat /root/.crontab.clean 2>/dev/null | md5sum | awk '{print $1}')
|
||||
|
||||
if [ "$CURRENT_CRONTAB" != "$CLEAN_CRONTAB" ]; then
|
||||
log "⚠️ 检测到crontab被修改!"
|
||||
if crontab -l 2>/dev/null | grep -qE 'est1|b4nd1d0|007idc'; then
|
||||
log "发现恶意定时任务,正在清理..."
|
||||
crontab -l 2>/dev/null | grep -vE 'est1|b4nd1d0|007idc' | crontab -
|
||||
log "已清理恶意定时任务"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 检查.bash_profile是否被修改
|
||||
if [ -f /root/.bash_profile.clean ]; then
|
||||
CURRENT_PROFILE=$(md5sum /root/.bash_profile 2>/dev/null | awk '{print $1}')
|
||||
CLEAN_PROFILE=$(md5sum /root/.bash_profile.clean 2>/dev/null | awk '{print $1}')
|
||||
|
||||
if [ "$CURRENT_PROFILE" != "$CLEAN_PROFILE" ]; then
|
||||
if grep -qE '007idc|curl.*bash|wget.*bash' /root/.bash_profile; then
|
||||
log "⚠️ 检测到.bash_profile被恶意修改!"
|
||||
cp /root/.bash_profile.clean /root/.bash_profile
|
||||
log "已恢复干净的.bash_profile"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# 检查恶意目录是否重新创建
|
||||
for dir in /tmp/.est1 /var/tmp/.ladyg0g0 /tmp/.esd101; do
|
||||
if [ -d "$dir" ] && [ "$(ls -A $dir 2>/dev/null)" ]; then
|
||||
log "⚠️ 检测到恶意目录重新创建: $dir"
|
||||
rm -rf "$dir"/*
|
||||
chmod 000 "$dir"
|
||||
chattr +i "$dir" 2>/dev/null
|
||||
log "已清理并锁定目录: $dir"
|
||||
fi
|
||||
done
|
||||
|
||||
# 改进的恶意进程检测(修复误报)
|
||||
# 使用更精确的方法,排除清理脚本的子进程
|
||||
detect_and_kill_malware() {
|
||||
# 定义恶意进程关键词(只匹配进程名,不匹配命令行)
|
||||
MALWARE_PATTERNS=('kinsing' 'kdevtmpfsi' 'b4nd1d0')
|
||||
|
||||
for pattern in "${MALWARE_PATTERNS[@]}"; do
|
||||
# 使用pgrep -x只匹配进程名(精确匹配)
|
||||
pgrep -x "$pattern" 2>/dev/null | while read pid; do
|
||||
# 获取进程详细信息
|
||||
if [ -d "/proc/$pid" ]; then
|
||||
cmd=$(ps -p $pid -o cmd= 2>/dev/null | head -1)
|
||||
ppid=$(ps -p $pid -o ppid= 2>/dev/null | tr -d ' ')
|
||||
pcmd=$(ps -p $ppid -o cmd= 2>/dev/null | head -1)
|
||||
|
||||
# 检查是否是清理脚本的子进程
|
||||
if echo "$pcmd" | grep -qE 'cleanup|prevent|monitor|aggressive|enhanced'; then
|
||||
log "跳过清理脚本的子进程: PID=$pid, 进程名=$pattern, 父进程=${pcmd:0:50}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 检查进程的可执行文件路径
|
||||
exe_path=$(readlink -f /proc/$pid/exe 2>/dev/null)
|
||||
if echo "$exe_path" | grep -qE 'cleanup|prevent|monitor|find|grep|bash.*script'; then
|
||||
log "跳过系统工具进程: PID=$pid, 可执行文件=${exe_path:0:50}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 这是真正的恶意进程
|
||||
log "⚠️ 发现真正的恶意进程: PID=$pid, 进程名=$pattern, 命令=${cmd:0:100}, 父进程=${pcmd:0:50}"
|
||||
kill -9 $pid 2>/dev/null
|
||||
log "✓ 已终止真正的恶意进程: PID=$pid"
|
||||
fi
|
||||
done
|
||||
|
||||
# 对于.system3d这种文件名匹配,使用更精确的方法
|
||||
if [ "$pattern" = 'system3d' ]; then
|
||||
# 检查是否有进程的可执行文件路径包含.system3d
|
||||
for pid in $(pgrep -f '\.system3d' 2>/dev/null); do
|
||||
if [ -d "/proc/$pid" ]; then
|
||||
exe_path=$(readlink -f /proc/$pid/exe 2>/dev/null)
|
||||
ppid=$(ps -p $pid -o ppid= 2>/dev/null | tr -d ' ')
|
||||
pcmd=$(ps -p $ppid -o cmd= 2>/dev/null | head -1)
|
||||
cmd=$(ps -p $pid -o cmd= 2>/dev/null | head -1)
|
||||
|
||||
# 排除清理脚本和系统工具
|
||||
if echo "$pcmd" | grep -qE 'cleanup|prevent|monitor' || \
|
||||
echo "$exe_path" | grep -qE '/usr/bin/find|/usr/bin/grep|/bin/bash.*cleanup'; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# 检查可执行文件路径是否真的是.system3d
|
||||
if echo "$exe_path" | grep -q '\.system3d'; then
|
||||
log "⚠️ 发现真正的.system3d恶意进程: PID=$pid, 路径=$exe_path"
|
||||
kill -9 $pid 2>/dev/null
|
||||
log "✓ 已终止.system3d进程: PID=$pid"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# 执行恶意进程检测
|
||||
detect_and_kill_malware
|
||||
|
||||
log "防护检查完成"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user