挖矿恶意软件应急响应记录

on 2025-07-24

事件背景

本次故事的起因是,我向其他学院借了一台服务器跑代码。 这台服务器在学校内网,由于内网的连接较为麻烦,因此我做了内网穿透, 开放了ssh端口,方便我在外网访问。

异常发现

然后这天,我用btop观测代码性能指标的时候,发现存在两个奇怪的进程。 一个名叫sshd,另一个名叫rcu-sched。

这两个进程是由另一个学生账户启动的,且parent进程是systemd。 内存和cpu占用都相当高,已经达到我cpu密集型代码的程度了。

可疑指标分析

通过观察,我发现了以下几个明显的异常指标:

1. 资源占用异常

  • sshd进程占用过多资源:正常的sshd守护进程应该只占用很少的CPU和内存资源,主要用于处理SSH连接请求。而这个sshd进程的资源占用达到了CPU密集型程序的水平,明显异常。

2. 父进程异常

  • 父进程为systemd:正常情况下,用户启动的sshd会话进程的父进程应该是系统的sshd守护进程,而不是直接由systemd启动。这表明该进程可能通过其他方式(如定时任务)启动。

3. 进程启动用户异常

  • 普通用户启动系统服务进程:sshd通常是由root用户启动的系统服务,普通用户启动名为sshd的进程本身就很可疑。

4. 执行路径异常

  • 以./开头的执行路径:通过进一步检查发现,这些进程的执行路径是以./开头的相对路径,而不是标准的系统路径(如/usr/sbin/sshd),这是典型的恶意软件特征。

5. 进程名称仿冒

  • rcu-sched进程名称仿冒:rcu-sched是Linux内核的合法进程名,但内核进程通常显示为[rcu_sched](方括号包围),且不会消耗大量用户态资源。这个进程明显是在仿冒系统进程名称。

初步响应

我立刻联系了借给我服务器的同学,询问这两个进程的来历。 他对这个问题感到很疑惑,表示自己并没有启动过这两个进程。 我又询问他是否有使用弱口令(他的用户名只有3个字母), 果然不出我所料,他的密码是123456。

我立刻建议他修改密码,并且检查了该用户的历史命令。并未发现异常。

威胁分析

然后我开始排查这两个进程的来历。 发现这个sshd是一个脚本文件,负责下载rcu-sched这个进程。 rcu-sched这个文件是一个门罗币挖矿程序。 持久化也做的比较简单,仅添加了crontab。

恶意软件分析

为了更深入了解恶意软件的行为,我使用了在线沙箱进行分析:

推荐的恶意软件分析沙箱

国内沙箱

  • 微步在线沙箱(https://s.threatbook.com/)- 我主要使用的分析平台,提供详细的行为分析报告
  • 奇安信威胁情报中心(https://ti.qianxin.com/)- 提供威胁情报和样本分析
  • 360威胁情报中心(https://ti.360.net/)- 360安全大脑威胁情报平台

国外知名沙箱

  • VirusTotal(https://www.virustotal.com/)- Google旗下的多引擎检测平台
  • Hybrid Analysis(https://www.hybrid-analysis.com/)- CrowdStrike提供的免费恶意软件分析服务
  • Any.run(https://any.run/)- 交互式恶意软件分析平台
  • Joe Sandbox(https://www.joesandbox.com/)- 专业的恶意软件分析平台
  • Cuckoo Sandbox(开源)- 可自建的恶意软件分析系统

通过微步沙箱分析,确认了该恶意软件的主要行为模式和IOC指标。

权限评估

然后又排查了一下是否存在提权,发现这个用户没有在sudo组中, 暂且认为没有提权风险。

排查过程中使用的命令

进程分析

# 查看系统进程和资源占用
btop

# 查看详细进程信息
ps aux | grep sshd
ps aux | grep rcu-sched

# 查看进程树结构
pstree -p

# 查看进程的详细信息
ls -la /proc/[PID]/
cat /proc/[PID]/cmdline

用户账户检查

# 检查用户历史命令
history
cat ~/.bash_history

# 检查用户组信息
groups [username]
id [username]

# 检查sudo权限
sudo -l -U [username]

持久化机制排查

# 检查crontab
crontab -l -u [username]
cat /var/spool/cron/crontabs/[username]

# 检查系统级定时任务
ls -la /etc/cron*
cat /etc/crontab

# 检查启动项
systemctl list-unit-files --state=enabled
ls -la /etc/systemd/system/

文件分析

# 查看可疑文件
ls -la [suspicious_file_path]
file [suspicious_file_path]
strings [suspicious_file_path]

# 计算文件哈希
md5sum [suspicious_file_path]
sha256sum [suspicious_file_path]

网络连接检查

# 查看网络连接
netstat -tulnp
ss -tulnp

# 查看活动连接
lsof -i

清除措施

进程终止

# 终止恶意进程
kill -9 [PID]
pkill -f sshd
pkill -f rcu-sched

文件清理

# 删除恶意文件
rm -f [malicious_file_path]

# 清除持久化机制
crontab -r -u [username]

安全加固

# 修改弱密码
passwd [username]

# 检查SSH配置
cat /etc/ssh/sshd_config

# 查看登录日志
last
lastlog
cat /var/log/auth.log | grep ssh
粤ICP备2025368514号-1