
0x00 概述
通常来说,当我们的服务器或PC资源(CPU)使用率接近或超过100%,并持续高居不下导致服务器或PC操作延缓,我们就可以判定被挖矿。
常见挖矿其它特征如下:
0x01 了解基本情况
1.1 如何发现
挖矿木马显著的行为特征就是极大的占用CPU及GPU和硬盘资源主要包括:高CPU和GPU、硬盘使用率、响应速度慢、崩溃或频繁重新启动、系统过热、异常网络活动(例如,连接挖矿相关的网站或IP地址)。其次是在网络流量中,挖矿木马通信过程采用专门的通信协议,因此存在一定的网络通信特征,因为要连接矿池,网络特征较多的都是TCP。
1.1.1 异常外联
- 安全设备告警
- 流量监控设备
- 工作人员人工发现
- ...
事件发生时的状况或安全设备告警等,能帮助应急处置人员快速分析确定事件类型,方便前期准备。
1.1.2 主机异常
1.2 事件的时间节点
了解事件发生时间节点:出现事件时间、发现事件时间、处置事件时间,确定这三个时间节点后,可通过时间相关性推算挖矿病毒产生大致时间,有助于后续挖矿病毒发现及清理。
1.3 临时处置情况
1.4 网络拓扑情况
获取网络构架,网络构架一般来讲是要拓补图,详细的拓扑图可以协助还原攻击流程时,准确定位网络连接方向。
0x02 判断是否属于挖矿
2.1 属于挖矿
2.1.1 根据告警和流量信息初步判断挖矿类型
在不影响主业务运行的情况下,拔掉受害主机网线,并且切断网络连接可使挖矿现场尽量保持完整,有助于接下来的溯源工作顺利开展。
可以先根据告警和流量信息初步判断挖矿类型,在互联网收集相关情报,若有相关分析文章可提高事件处置效率。
2.1.2 windows
2.1.2.1 信息收集
打开 cmd 窗口,输入 resmon
命令,通过资源监视器,找出CPU占用过高的程序,找到PID和进程名。

1、使用netstat -ano
命令查看目前的网络连接,定位可疑的 ESTABLISHED
2、根据 netstat 命令定位出的 PID 编号,再通过 tasklist 命令进行进程定位 tasklist | findstr "PID"
netstat -ano
tasklist | findstr "PID"

查看Windows服务所对应的端口:%systemroot%/system32/drivers/etc/services
【计算机管理】->【本地用户和组】->【用户】选项,可查看隐藏账户,名称以$结尾的为隐藏账户。
打开 cmd 窗口,输入 lusrmgr.msc
命令,查看是否有新增或可疑的账号。

a、打开控制面板->任务计划,查看计划任务属性,排查异常任务计划。
b、打开 cmd 窗口,然后输入 at
,检查计算机与网络上的其它计算机之间的会话或计划任务,如有,则确认是否为正常连接。
a、Win+R,输入 msinfo32
命令,依次点击 "软件环境 -- 正在运行任务" 可以查看到进程的详细信息。
b、通过安全分析工具进行排查。

a、开始->所有程序->启动,默认情况下此目录在是一个空目录,确认是否有非业务程序在该目录下。
b、Win+R,输入 msconfig
,查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。
c、Win+R,输入 regedit
,打开注册表,查看开机启动项是否正常,检查是否有启动异常的项目。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
d、利用安全软件查看启动项、开机时间管理。
服务也是挖矿病毒常见的守护方式之一,将注册表中服务启动方式写为挖矿病毒主程序,从而达到守护进程目的。
Win+R,输入 services.msc
,注意服务状态和启动类型,检查是否有异常服务。

TIPS:除以上方法外还可使用火绒剑、Process Explorer等安全工具进行分析和信息收集。
2.1.2.2 定位
通过[2.1.2.1信息收集](#####2.1.2.1 信息收集) 定位到PID和进程后,再定位挖矿程序文件和目录。
查看进程对应的程序位置
方法1:打开任务管理器,选择对应进程,右键打开文件位置

方法2:Win+R,输入 msinfo32
命令,软件环境->正在运行任务,即可定位到程序的目录信息。

方法3:通过安全分析工具进行定位。
火绒剑->进程->右键进程信息 可直接定位到程序位置,且可查看其命令行参数。


火绒剑->网络 可直接定位到程序位置

TIPS:对于打开文件位置还找不到挖矿文件的情况,则挖矿程序可能被隐藏,可通过配置文件夹选项或通过安全分析工具提取来解决
文件夹选项->查看->高级设置:取消隐藏受保护的操作系统文件、显示隐藏的文件、文件夹和驱动器。

2.1.2.3 样本提取
一般在挖矿程序文件目录中可找到对应的配置文件和信息,通过矿池地址和钱包地址能够进一步确认挖矿类型和挖矿程序的基本情况。
若无相应配置文件,可通过云沙箱或专家对其进行深层次的分析。
[0x03 样本分析](#0x03 样本分析)


2.1.2.4 查杀根除
防止挖矿木马继续外连,并且防止挖矿木马进行内网传播。
Windows:使用SchTasks /Delete /TN [任务名] 删除计划任务。
自启动项可以从以下三点入手:
a、开始->所有程序->【启动
b、系统配置中启动项(win+R->msconfig)
c、注册表查找病毒程序名。
Windows中删除服务可从任务管理器中手动删除
也可使用命令:sc stop [服务名称]
停止服务后,使用命令:sc delete [服务名称] 删除服务。
可使用进程管理工具或使用taskkill -PID [进程PID] -F结束恶意进程。
Windows中删除时可能存在权限不足等情况,可使用360终端强杀,也可使用进程管理工具强制删除。
2.1.3 linux
2.1.3.1 信息收集
top -c
-c 查看其完整的命令行参数
top默认的排序列是“%CPU”

ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu
按照CPU占用显示进程信息

Tips:查看隐藏进程:
ps -ef |awk '{print}' | sort -n|uniq >111
ls /proc|sort -n |uniq >222
diff 111 222
top -c -o %MEM

ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem
按照内存占用显示进程信息

netstat -pantl
-p 显示正在使用Socket的程序识别码和程序名称
-a 显示所有连线中的Socket
-n 直接使用IP地址,而不通过域名服务器
-t 显示TCP传输协议的连线状况
-l 显示监控中的服务器的Socket

a、 crontab
# 列出某个用户cron服务的详细内容
crontab -l
# 使用编辑器编辑当前的crontab文件
crontab -e
b、anacron
cat /etc/anacrontab
cat /var/spool/anacron/*
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*

服务也是挖矿病毒常见的守护方式之一,将注册表中服务启动方式写为挖矿病毒主程序,从而达到守护进程目的。
查询已安装的服务
a、RPM 包安装的服务
# 查看服务自启动状态,可以看到所有的RPM包安装的服务
chkconfig --list
# 查看当前服务
ps aux | grep crond
b、源码包安装的服务
检查/etc/rc.d/rc.local
| 命令 | 命令详解 |
| -------------------------------------------------------- | -------------------------------------------------- |
| who
| 查看当前登录用户(tty本地登陆 pts远程登录) |
| w
| 查看系统信息,想知道某一时刻用户的行为 |
| last
| 显示近期用户或终端的登录情况 |
| uptime
| 查看登陆多久、多少用户,负载 |
| cat /etc/passwd
| 查看用户信息文件 |
| cat /etc/shadow
| 查看影子文件 |
| awk -F: '$3==0{print $1}' /etc/passwd
| 查看管理员特权用户 |
| awk '/\$1|\$6/{print $1}' /etc/shadow
| 查看可以远程登录的用户 |
| cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
| 查看sudo权限的用户(有时攻击者会创建属于自己的用户) |
| cat /etc/passwd \|awk -F: 'length($2)==0 {print $1}'
| 查看空口令账户(有时攻击者会将正常账户改为空口令) |
2.1.3.2 定位
通过[2.1.3.1信息收集](#####2.1.3.1 信息收集) 定位到PID和进程后,再定位挖矿程序文件和目录。
方法1:通过top -c命令,可以看到可疑进程的完整目录信息和参数,从而定位到挖矿文件及目录

方法2:通过以下命令,定位到挖矿文件位置
lsof -p pid

systemctl status pid`

ls -al /proc/`pid`/exe

2.1.3.4 样本提取
一般在挖矿程序文件目录中可找到对应的配置文件和信息,通过矿池地址和钱包地址能够进一步确认挖矿类型和挖矿程序的基本情况。
若无相应配置文件,可通过云沙箱或专家对其进行深层次的分析。
[0x03 样本分析](#0x03 样本分析)

2.1.3.5 查杀根除
防止挖矿木马继续外连,并且防止挖矿木马进行内网传播。
crontab -e 删除对应的恶意计划任务
删除存在以下目录的恶意计划任务
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
删除/etc/rc.local与/etc/rc[0到6].d文件中恶意启动项
Linux中服务清除:sudo update-rc.d [服务名称] remove
查看是否存在子进程
ps ajfx
systemctl status
若无子进程,直接kill -9 pid
若有子进程,使用kill -9 -pid
杀死进程组
查看文件占用
lsof `文件名`

若在进程查杀后仍有文件占用,则该进程可能是恶意进程,需继续重复之前步骤再次排查。
无进程占用,直接使用rm
命令删除恶意文件
rm -rf [恶意文件绝对路径]
Tips:
若出现 rm: cannot remove ‘文件名’: Operation not permitted.
错误,则攻击者可能给文件添加了 a
和 i
的权限导致文件无法删除,可使用 lsattr
查看文件权限:
lsattr [文件名]
使用 chattr -i [文件名]
或 chattr -a [文件名]
修改文件权限,再用 rm
命令删除:
chattr -i [文件名]
chattr -a [文件名]
rm -rf [文件名]

2.2 其他事件处理流程
0x03 样本分析
3.1 备份挖矿程序
对于发现的恶意文件和目录应及时备份,为后续分析做准备。
Tips: 对于同系统文件一定要打包后再备份,防止发生二次感染。
a、Linux:
scp -P 22 user@127.0.0.1:/usr/local/target /home/aaa
其中:
b、Windows:
- 通过 RDP 3389 复制粘贴。
- 使用向日葵、ToDesk 等远程工具。
- 使用SMB共享服务传输。
- ...
3.2 云沙箱分析
对可疑文件可先通过云沙箱在线分析,常用的云沙箱包括:
3.3 专家分析
对云沙箱无法分析或分析不全时,可请求安全专家进行分析。
0x04 溯源攻击
溯源攻击是挖矿病毒应急响应的重要环节,以下是常规溯源流程:
确定攻击入口:
- 检查系统日志、安全设备日志(如防火墙、IDS/IPS等)。
- 分析网络流量,定位可疑IP地址或域名。
- 检查系统是否存在未修复的漏洞或弱密码。
分析攻击手法:
- 通过样本分析确定挖矿病毒的类型和传播方式。
- 检查是否有横向移动的痕迹,如内网扫描、横向传播等。
确定攻击者身份:
- 通过IP地址、域名等线索,结合威胁情报,确定攻击者身份。
- 分析攻击者的C2服务器,追踪其活动轨迹。
总结攻击过程:
- 绘制攻击流程图,还原攻击者入侵路径。
- 撰写溯源报告,记录攻击细节和处置过程。
0x05 附录
5.1 常见挖矿病毒类型
| 类型 | 特征 |
| -------------- | ------------------------------------------------------------ |
| XMRig | 使用CPU挖矿,常见于Linux系统,配置文件通常为 config.json
。 |
| MinerGate | 支持多种加密货币,常见于Windows系统,会创建大量进程。 |
| Claymore | 主要用于以太坊挖矿,常见于GPU挖矿,会生成大量日志文件。 |
| 门罗币挖矿病毒 | 使用XMRig或类似工具,常见于Web服务器,通过Web漏洞传播。 |
| 蠕虫类挖矿病毒 | 具有横向传播能力,通过弱密码或漏洞在内网传播。 |
5.2 常见挖矿病毒传播方式
| 传播方式 | 描述 |
| ------------ | ---------------------------------------------- |
| 弱密码爆破 | 通过SSH、RDP等服务的弱密码进行传播。 |
| Web漏洞利用 | 通过Web应用漏洞(如Struts2、ThinkPHP等)传播。 |
| 恶意邮件 | 通过钓鱼邮件传播,附件中包含挖矿程序。 |
| 横向移动 | 通过内网扫描和漏洞利用,感染其他主机。 |
| 供应链攻击 | 通过第三方软件或更新包传播挖矿病毒。 |
5.3 加固建议
系统加固:
- 及时更新系统和软件补丁,修复已知漏洞。
- 禁用不必要的服务和端口,减少攻击面。
- 使用强密码策略,避免弱密码。
网络加固:
- 部署防火墙和IDS/IPS,监控异常流量。
- 限制外部访问,仅开放必要的端口和服务。
- 使用VPN等安全通道访问内网。
安全监控:
- 部署安全监控系统,实时监控系统资源使用情况。
- 定期检查系统日志,发现异常及时处置。
- 使用威胁情报平台,及时获取最新的攻击信息。
备份与恢复:
- 定期备份重要数据,确保数据安全。
- 制定应急响应预案,确保快速恢复业务。
5.4 参考工具
| 工具名称 | 用途 |
| ----------------------------- | ---------------------------------------- |
| Wireshark | 网络流量分析工具,用于分析异常流量。 |
| Process Explorer | 进程管理工具,用于分析可疑进程。 |
| Sysinternals Suite | 系统分析工具集,用于分析系统行为和进程。 |
| VirusTotal | 在线病毒扫描工具,用于分析可疑文件。 |
| Threat Intelligence Platforms | 威胁情报平台,用于获取最新的攻击信息。 |
以上为清理病毒程序方式,后续还需使用终端杀毒对系统进行全面杀毒及加固,并观察是否还有反复迹象。
一切以挖矿木马不再重启,不存在可疑外连为止。