# 恶意程序来源深入调查报告 ## 调查时间 2025年1月1日 ## 调查目的 深入调查 `kinsing`、`kdevtmpfsi` 等恶意挖矿程序的启动来源和传播途径。 --- ## 执行摘要 ### ✅ 好消息:恶意程序已被成功清除 **当前系统状态**: - ✅ **真正的恶意进程数**: 0 - ✅ **恶意文件数**: 0 - ✅ **CPU空闲率**: 98.5%(挖矿程序会导致接近100%使用率) - ✅ **系统负载**: 正常(0.35) - ✅ **网络连接**: 无异常 ### ⚠️ 重要发现:日志存在误报 **关键问题**: - 日志中显示的"恶意进程"检测实际上大部分是**误报** - 清理脚本使用 `find / -name .system3d` 命令时,产生的 `find` 进程被防重感染脚本误判为恶意进程 - 防重感染脚本使用 `pgrep -f` 匹配命令行,导致误匹配清理脚本的子进程 **实际情况**: - 真正的恶意程序已被清理脚本成功清除 - 当前系统无真正的恶意进程在运行 - 所有启动源(定时任务、systemd服务、启动脚本等)均已检查,均为正常 - 日志的高频率检测是误报,不是真正的威胁 ### 📋 建议 1. **立即行动**:修复脚本误报问题(使用更精确的检测方法) 2. **持续监控**:关注CPU使用率等真实指标,而不是误报日志 3. **系统加固**:继续保持现有安全措施,加强SSH和网络安全 --- ## 1. 恶意程序行为分析 ### 1.1 恶意程序特征 根据日志分析,检测到以下恶意程序: - **kinsing** - 加密货币挖矿恶意软件 - **kdevtmpfsi** - 恶意挖矿程序 - **.system3d** - 隐藏的恶意程序 ### 1.2 活动频率 - **检测频率**:每1-2分钟检测到新的恶意进程启动 - **终止次数**:最近1小时内约100次 - **模式**:恶意程序持续尝试重新启动,但很快被清理脚本终止 --- ## 2. 启动源检查结果 ### 2.1 定时任务 (Cron) 检查位置: - `/var/spool/cron/root` - ✅ 仅包含正常的清理脚本 - `/etc/crontab` - ✅ 正常系统定时任务 - `/etc/cron.d/*` - ✅ 仅包含 `0hourly` - `/etc/cron.hourly`, `/etc/cron.daily` 等 - ✅ 正常 **结果**:✅ **未发现恶意定时任务** ### 2.2 Systemd 服务 检查位置: - `/etc/systemd/system/` - ✅ 仅发现防护服务: - `prevent-malware-regeneration.service` - 防护服务(正常) - `malware-monitor.service` - 监控服务(正常) - `/usr/lib/systemd/system/` - ✅ 系统服务正常 - `~/.config/systemd/user/` - ✅ 目录不存在 **结果**:✅ **未发现恶意systemd服务** ### 2.3 系统启动脚本 检查位置: - `/etc/rc.local` - ✅ 仅包含标准内容(touch /var/lock/subsys/local) - `/etc/rc.d/rc.local` - ✅ 仅包含标准内容 - `~/.bashrc` - ✅ 正常 - `~/.bash_profile` - ✅ 正常(无恶意命令) - `~/.profile` - ✅ 文件不存在 **结果**:✅ **启动脚本均为正常内容** ### 2.4 文件系统位置 检查位置: - `/tmp/` - ✅ 未发现恶意文件(可疑目录已删除) - `/var/tmp/` - ✅ 未发现恶意文件(可疑目录已删除) - `/dev/shm/` - ✅ 未发现恶意文件 - `/root/` - ✅ 仅包含正常的脚本文件 - `/etc/data/` - ✅ 目录已被锁定 **结果**:✅ **文件系统中无恶意文件** --- ## 3. 网络活动分析 ### 3.1 可疑网络连接 检查是否有: - 可疑的外部IP连接 - ✅ 未发现 - 下载恶意脚本的网络活动 - ✅ 未发现 - 与挖矿池的连接 - ✅ 未发现 - 反向shell或后门连接 - ✅ 未发现 **结果**:✅ **网络连接正常,无可疑活动** ### 3.2 下载记录 检查日志中的: - wget/curl 下载记录 - ✅ 系统日志中未发现 - 可疑URL访问 - ✅ 未发现 - 文件下载活动 - ✅ 监控脚本日志正常 **结果**:✅ **未发现恶意下载活动** --- ## 4. 进程分析 ### 4.1 进程树分析 **关键发现**:捕获到的"恶意进程"实际上是清理脚本的子进程! 示例: - **进程PID**: 1003037 - **命令**: `find / -name .system3d -type f -exec rm -f {} ;` - **父进程**: `aggressive-malware-cleanup.sh` (PID 1003009) - **工作目录**: `/root` - **可执行文件**: `/usr/bin/find` **结论**:这是清理脚本在删除恶意文件时启动的正常 `find` 进程,不是恶意程序本身。 ### 4.2 真正的恶意进程检查 使用精确方法检查(只检查进程名,不检查命令行): - **方法1**: 检查进程名(`ps aux | awk '{print $11}'`) - ✅ 未发现 - **方法2**: 检查可执行文件路径 - ✅ 未发现 - **当前运行**: 0个真正的恶意进程 - **恶意文件**: 0个 **结果**:✅ **当前无真正的恶意进程在运行** --- ## 5. 日志分析 ### 5.1 系统日志 检查 `/var/log/` 中的: - secure - SSH登录和命令执行 - ✅ 未发现恶意命令记录 - messages - 系统消息 - ✅ 正常 - audit - 审计日志 - ⚠️ 服务未启用 **结果**:✅ **系统日志中未发现恶意活动记录** ### 5.2 应用日志 检查应用相关的日志: - 清理脚本日志 - ⚠️ 包含大量"恶意进程"记录(实际是误报) - 防重生成日志 - ⚠️ 包含大量"发现恶意进程"记录(实际是误报) - 监控日志 - ✅ 正常 **关键问题**:日志中的"恶意进程"记录大部分是误报,因为: - 清理脚本使用 `find / -name .system3d` 命令 - 这些 `find` 进程的命令行包含 `.system3d` 关键词 - 防重感染脚本的 `pgrep -f` 匹配到了这些进程 **结果**:⚠️ **日志存在误报,但真正的恶意活动已被清除** --- ## 6. 安全脚本分析 ### 6.1 清理脚本逻辑 **aggressive-malware-cleanup.sh** 脚本分析: - **检测方法**: 使用 `pkill -9 -f` 匹配进程命令行 - **终止方式**: 强制终止(`-9` 信号) - **清理策略**: 1. 终止恶意进程(kinsing, kdevtmpfsi, .system3d等) 2. 删除恶意文件和目录 3. 使用 `find` 搜索并删除隐藏文件 4. 锁定目录(`chattr +i`) 5. 清理定时任务和启动脚本 **问题**:脚本使用 `find / -name '.system3d' -type f -exec rm -f {} \;` 时,这个 `find` 进程会被防重感染脚本误判为恶意进程。 ### 6.2 防重生成脚本 **prevent-reinfection.sh** 脚本分析: - **检测逻辑**: 使用 `pgrep -f 'kinsing|kdevtmpfsi|system3d|b4nd1d0'` 匹配进程 - **问题**: `-f` 参数会匹配整个命令行,包括参数,导致误报 - **防护机制**: 1. 检查crontab是否被修改 2. 检查.bash_profile是否被修改 3. 检查恶意目录是否重新创建 4. 检测并终止恶意进程 **改进建议**: - 使用 `pgrep -x` 只匹配进程名,不匹配命令行 - 或排除清理脚本的进程(通过检查父进程) - 记录进程的完整信息以便分析 --- ## 7. 调查结论 ### 7.1 关键发现 ⚠️ **重要发现:日志中的"恶意进程"大部分是误报!** 通过深入分析发现: 1. **误报问题**: - 防重感染脚本使用 `pgrep -f 'kinsing|kdevtmpfsi|system3d'` 检测恶意进程 - 但清理脚本执行的命令如 `find / -name .system3d -type f -exec rm -f {} ;` 也包含关键词 `.system3d` - 这导致清理脚本的 `find` 进程被误判为"恶意进程" - 实际上这些进程是清理脚本在清理恶意文件时产生的正常进程 2. **真正的恶意进程**: - 当前检查未发现真正的 `kinsing` 或 `kdevtmpfsi` 可执行文件 - 当前系统无真正的恶意进程在运行(排除误报后) - 之前的恶意程序已被清理脚本成功清除 3. **启动源检查结果**: - ✅ **定时任务**:未发现恶意定时任务,只有正常的清理脚本 - ✅ **Systemd服务**:只有防护服务,无恶意服务 - ✅ **启动脚本**:`.bash_profile`、`.bashrc` 等均为正常内容 - ✅ **文件系统**:未发现恶意可执行文件 - ✅ **网络连接**:无可疑外部连接 - ✅ **容器**:未使用Docker/Podman容器 - ✅ **Web脚本**:未发现通过Web服务器执行的恶意脚本 ### 7.2 实际情况分析 **日志显示的高频率检测实际上是:** 1. 清理脚本每分钟执行,使用 `find` 命令搜索并删除恶意文件 2. `find` 进程的命令行包含 `.system3d` 等关键词 3. 防重感染脚本每2分钟执行,使用 `pgrep -f` 匹配包含这些关键词的进程 4. 误将清理脚本的 `find` 进程识别为"恶意进程" 5. 脚本记录日志并尝试终止这些进程(但由于进程很快结束,实际无影响) **真正的状态:** - ✅ 恶意程序已被成功清除 - ✅ 当前无真正的恶意进程在运行 - ✅ 清理脚本工作正常,持续清理可能的残留 - ⚠️ 日志记录存在误报,导致看起来恶意程序很活跃 ### 7.3 恶意程序的原始来源推测 虽然当前未发现活跃的恶意程序,但从历史记录和常见攻击模式推测,可能的来源: 1. **SSH暴力破解**:通过弱密码或密钥泄露获得SSH访问权限 2. **Web应用漏洞**:通过Web应用(如Redis未授权访问、Web Shell等)获得执行权限 3. **供应链攻击**:通过被感染的依赖包或第三方脚本 4. **已修复的漏洞**:通过已修复的已知漏洞入侵(系统已更新) 由于恶意程序已被清除,原始入侵痕迹可能已被清理或覆盖。 --- ## 8. 建议措施 ### 8.1 立即行动 1. **修复脚本误报问题** ⭐ **重要** 修改 `/root/scripts/prevent-reinfection.sh` 脚本: ```bash # 当前代码(有问题): if pgrep -f 'kinsing|kdevtmpfsi|system3d|b4nd1d0' > /dev/null; then # 这会误匹配清理脚本的find进程 fi # 建议修改为: # 方法1: 只检查进程名(更精确) if pgrep -x 'kinsing' > /dev/null || pgrep -x 'kdevtmpfsi' > /dev/null; then # 只匹配进程名,不匹配命令行 fi # 方法2: 排除清理脚本的进程 pgrep -f 'kinsing|kdevtmpfsi|system3d' | while read pid; do # 检查父进程,排除清理脚本 ppid=$(ps -o ppid= -p $pid | tr -d ' ') if ! ps -p $ppid -o cmd= | grep -qE 'cleanup|prevent'; then # 这是真正的恶意进程 kill -9 $pid fi done ``` 2. **持续监控** - ✅ 继续保持清理脚本运行(已有效清除恶意程序) - ⚠️ 注意日志中的误报,关注真正的威胁指标 - ✅ **最重要的指标**:CPU使用率(当前98.5%空闲,正常) - ✅ 系统负载(当前正常) - ✅ 恶意文件数量(当前为0) ### 8.2 系统加固 1. **SSH安全** - 使用密钥认证,禁用密码登录 - 限制SSH访问IP(如可能) - 使用fail2ban防止暴力破解 2. **网络安全** - 确保Redis等服务仅监听本地或使用密码 - 定期检查开放的端口和服务 - 使用防火墙限制不必要的网络访问 3. **应用安全** - 保持系统和应用更新 - 使用最小权限原则 - 定期进行安全审计 ### 8.3 监控优化 1. **改进日志记录** ⭐ **推荐** 建议修改脚本,添加更详细的进程信息: ```bash # 记录进程详细信息 pgrep -f 'kinsing|kdevtmpfsi' | while read pid; do cmd=$(ps -p $pid -o cmd=) ppid=$(ps -p $pid -o ppid=) pcmd=$(ps -p $ppid -o cmd=) log "发现进程 PID=$pid, CMD=$cmd, PPID=$ppid, PCMD=$pcmd" # 只终止真正的恶意进程(排除清理脚本的子进程) if ! echo "$pcmd" | grep -qE 'cleanup|prevent'; then kill -9 $pid log "已终止真正的恶意进程: $pid" else log "跳过清理脚本的子进程: $pid (父进程: $pcmd)" fi done ``` 2. **资源监控** ✅ **当前正常** - ✅ CPU使用率:98.5% 空闲(挖矿程序会导致接近100%使用) - ✅ 系统负载:0.35(正常) - ✅ 内存使用:正常 - ⚠️ 建议:设置CPU使用率告警(如>80%持续5分钟) - ⚠️ 建议:监控网络流量(挖矿程序需要连接挖矿池) ### 8.4 长期建议 1. **备份和恢复** - 建立定期备份机制 - 测试恢复流程 - 保存系统配置的干净副本 2. **安全审计** - 定期进行安全审计 - 检查系统日志 - 关注安全公告和更新 3. **事件响应** - 建立事件响应流程 - 记录所有安全事件 - 分析攻击模式和来源 --- **报告生成时间**: 2025年1月1日 **调查人员**: AI Assistant **服务器**: 45.192.99.48