标签 安全分析 下的文章
一次ComfyUI第三方未授权凭据访问分析
【应急响应】挖矿病毒应急响应处置手册

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

也可通过D盾查看系统中是否存在影子账户。
- 计划任务
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\Runonced、利用安全软件查看启动项、开机时间管理。
- 服务
服务也是挖矿病毒常见的守护方式之一,将注册表中服务启动方式写为挖矿病毒主程序,从而达到守护进程目的。
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 信息收集
- CPU占用
- 进程信息
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命令:
scp -P 22 user@127.0.0.1:/usr/local/target /home/aaa其中:
-P指定SSH端口从远程服务器将
target文件下载到本地的/home/aaa使用 Xshell、FinalShell、MobaXterm 等集成工具。
b、Windows:
- 通过 RDP 3389 复制粘贴。
- 使用向日葵、ToDesk 等远程工具。
- 使用SMB共享服务传输。
- ...
3.2 云沙箱分析
对可疑文件可先通过云沙箱在线分析,常用的云沙箱包括:
- 微步云沙箱:https://s.threatbook.cn/
- 安恒威胁情报中心:https://ti.dbappsecurity.com.cn/
- 大圣云沙箱:https://sandbox.freebuf.com/
- ...
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 | 威胁情报平台,用于获取最新的攻击信息。 |
以上为清理病毒程序方式,后续还需使用终端杀毒对系统进行全面杀毒及加固,并观察是否还有反复迹象。
一切以挖矿木马不再重启,不存在可疑外连为止。
PyTorch 最新版本反序列化漏洞分析
【应急响应】挖矿病毒应急响应处置手册

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

也可通过D盾查看系统中是否存在影子账户。
- 计划任务
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\Runonced、利用安全软件查看启动项、开机时间管理。
- 服务
服务也是挖矿病毒常见的守护方式之一,将注册表中服务启动方式写为挖矿病毒主程序,从而达到守护进程目的。
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 信息收集
- CPU占用
- 进程信息
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命令:
scp -P 22 user@127.0.0.1:/usr/local/target /home/aaa其中:
-P指定SSH端口从远程服务器将
target文件下载到本地的/home/aaa使用 Xshell、FinalShell、MobaXterm 等集成工具。
b、Windows:
- 通过 RDP 3389 复制粘贴。
- 使用向日葵、ToDesk 等远程工具。
- 使用SMB共享服务传输。
- ...
3.2 云沙箱分析
对可疑文件可先通过云沙箱在线分析,常用的云沙箱包括:
- 微步云沙箱:https://s.threatbook.cn/
- 安恒威胁情报中心:https://ti.dbappsecurity.com.cn/
- 大圣云沙箱:https://sandbox.freebuf.com/
- ...
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 | 威胁情报平台,用于获取最新的攻击信息。 |
以上为清理病毒程序方式,后续还需使用终端杀毒对系统进行全面杀毒及加固,并观察是否还有反复迹象。
一切以挖矿木马不再重启,不存在可疑外连为止。
【论文分享】从混乱到清晰:面向安全分析的综合性JavaScript反混淆
打开一个可疑的JavaScript文件,你可能会看到这样的代码: 这不是乱码,而是攻击者精心设计的”隐身衣”——JavaScript代码混淆。这段看似天书般的代码,实际上可能隐藏着窃取用户数据、植入后门或发起网络攻击的恶意逻辑。 JavaScript作为互联网前端和客户端脚本的核心语言,在网页及各类网络应用中被广泛使用,这也使其成为了攻击者的首选目标。攻击者频繁利用JavaScript的动态特性,通过多层、多样化的混淆技术隐藏恶意代码,极大增加了安全分析的难度。 面对这一日益严峻的安全威胁,奇安信技术研究院星图实验室与北京邮电大学联合研究团队在NDSS 2026会议上发表了论文《From Obfuscated to Obvious: A Comprehensive JavaScript Deobfuscation Tool for Security Analysis》。该论文由北京邮电大学和奇安信联合培养的卓越工程师计划博士研究生周董超在奇安信技术研究院联培期间主导完成,导师为应凌云博士(奇安信星图实验室)和王东滨教授(北京邮电大学),参与该项工作的还有柴华君(奇安信星图实验室)。这篇论文也是我们继PowerPeeler (CCS 2024)和Invoke-Deobfuscation (DSN 2022)之后的又一项脚本反混淆工作。 通过系统性文献调研和样本分析,研究团队将JavaScript混淆技术归纳为四大类共20种技术:词法级混淆(变量重命名、间接属性访问等5种)、语法级混淆(表达式转函数、特殊编码等6种)、语义级混淆(字符串数组、控制流平坦化等7种)和多层混淆(OB混淆、AI辅助混淆2种)。针对这些复杂化的混淆趋势,研究开发的综合性反混淆工具JSIMPLIFIER能够自动破解各种混淆技术,将晦涩的恶意代码还原为安全分析师能够快速理解的清晰形式。 当前的JavaScript反混淆工具面临着三个核心挑战,这些挑战严重限制了它们在实际安全分析中的应用效果。 输入处理的脆弱性: 现有工具在遇到不同语法、混合编码、打包器包装等”不规范”输入时经常直接崩溃。真实世界的恶意代码往往包含这些问题,导致工具连分析机会都没有。 针对以上挑战,我们提出了JSIMPLIFIER,一款集代码预处理、静态抽象语法树分析、动态执行跟踪和大语言模型(LLM)智能变量重命名与代码美化于一体的综合性反混淆工具。JSIMPLIFIER采用三阶段流水线架构,每个阶段专门解决一类核心问题,形成了从”输入修复”到”逻辑还原”再到”可读性提升”的完整处理链条。 预处理器是整个系统的基石,负责将各种”问题代码”标准化为可分析的格式。它首先进行代码有效性检查,使用容错性强的Meriyah解析器,即使面对不同灵活语法或不完整的代码也能生成完整的抽象语法树(AST)。接着进行词法清理,系统性地处理字符编码冲突,比如将过时的八进制转义序列(如\302)转换为标准的十六进制格式(如\xC2),并重建被分割的多字节UTF-8字符。在语义兼容化阶段,系统将遗留的JavaScript构造替换为跨平台等价物,确保在现代JavaScript环境中的兼容性。最后通过结构优化,利用AST作用域链遍历解决声明冲突,将代码重构为严格模式兼容的形式。 反混淆器采用混合分析设计,巧妙结合静态AST分析和受控动态执行。 增强的静态AST分析 方面,JSIMPLIFIER配备强化表达式求值引擎,专门处理混淆代码中的复杂构造:对于 受控动态执行监控 方面,JSIMPLIFIER首先进行预执行风险评估,扫描危险关键字组合( 混合分析协调技术 通过双向信息流实现两种分析方法的有机融合。在静态到动态的移交中,当静态分析遇到无法安全求值的 虽然反混淆器成功恢复了程序逻辑,但结果往往仍然难以阅读。人性化器通过LLM技术将机械正确但晦涩的代码转化为专业、可读的形式。在智能标识符重命名方面,JSIMPLIFIER可以利用多种LLM模型(GPT、Gemini、本地模型等)进行上下文感知的变量和函数重命名,将无意义的混淆标识符替换为语义明确的名称。同时通过专业代码美化,集成Prettier格式化工具,确保输出符合行业标准的代码规范,包括一致的缩进、标准化的括号放置和规范的引号使用,最终生成既功能正确又易于理解的高质量代码。 为公正全面地评估工具性能,我们构建了业界最大的真实JavaScript混淆数据集进行验证。MalJS数据集包含23,212个野生恶意样本(平均391.78KB),这些样本来自超过1000万个真实恶意代码中的精选,覆盖所有已知的20种混淆技术。BenignJS数据集包含21,209个良性样本(平均41.40KB),来源于GitHub热门项目和合法网站。这两个数据集提供了真实世界中多样化和多层混淆技术的样本,远超现有数据集仅包含人工生成样本的局限。 实验评估采用了多个互补维度进行综合测评。在反混淆能力评估中(表II),JSimplifier实现了对全部20种混淆技术的100%处理能力和100%正确率,远超现有工具。与13种现有方法(包括10种传统工具和3种基于LLM的方案)的对比表明,传统工具在面对复杂语义级混淆时表现不足,而即便是先进的LLM方案也难以处理最复杂的混淆方法。 在代码简化评估中,JSimplifier在多个维度上展现了卓越的性能。首先,工具在CombiBench基准测试上达到了0.8820的Halstead长度减少分数——这一指标衡量代码中操作符和操作数的数量变化,分数越高说明代码复杂度降低更多。JSimplifier实现的88.2%复杂度降低意味着反混淆后的代码比原始混淆代码简单了近9成,显著超越了现有工具。 此外,研究团队还采用熵值分析来量化代码的随机性和混乱程度。熵值越低,代码的结构越清晰、可读性越强。大规模评估显示,JSimplifier在全部44,421个样本上实现了显著的熵值降低(如图2)——无论是AST结构熵(衡量代码语法树的复杂度)还是代码文本熵(衡量文本层面的混乱度)均达到最低中位值,充分证明了工具在真实场景中的有效性。 为验证代码可读性提升,研究团队采用了多个先进LLM模型(Claude 3.7 Sonnet、Gemini 2.5 Pro、DeepSeek-R1、GPT-o3)进行独立评估。这些模型对代码可读性进行0-10分的打分,其中0分代表完全不可读,10分代表极易理解。评估结果如下表所示,JSimplifier实现了平均466.94%的可读性提升,将难以理解的混淆代码(评分1.02-1.81,接近完全不可读)转化为适合安全分析的清晰代码(评分6.21-7.83,达到良好可读性水平)。 此外,研究团队还进行了用户研究,邀请9名不同专业水平的参与者(新手、中级、专家各3名)分析混淆样本。结果表明JSimplifier显著提升了分析准确率(新手提升12.7%)并大幅减少了分析时间(中级用户减少47.7%),主观评分在可读性、清晰度和逻辑性方面均显著提高。用户研究显示,工具显著提升了分析准确率(新手提升12.7%)并大幅减少了分析时间(中级用户减少47.7%)。一位中级参与者评价道:”变量重命名让我能够快速跟踪逻辑流程,我可以在几分钟内识别出可疑的网络调用,而不是在整个分析过程中大海捞针。” JSFireTruck恶意软件活动是JSIMPLIFIER实战能力的最佳证明。这个复杂的攻击活动仅使用六个ASCII字符!+就构建了极其复杂的混淆代码,传统工具几乎束手无策。 原始混淆代码(部分): JSIMPLIFIER反混淆结果: 通过JSIMPLIFIER,安全分析师可以清晰地看到攻击逻辑:检测搜索引擎来源、注入恶意iframe、重定向到攻击域名。这种从”天书”到”明文”的转换,极大提升了威胁分析和响应的效率,展现了工具在真实安全分析场景中的实用价值。 JSIMPLIFIER的成功体现了针对JavaScript混淆这一具体安全问题的有效解决方案。通过将静态分析、动态执行和LLM技术相结合,该工具在处理复杂混淆代码方面取得了显著进展。 技术贡献的实际价值主要体现在三个方面:三阶段流水线架构有效解决了输入多样性、分析复杂性和输出可读性的问题;静态与动态分析的协调机制克服了单一方法的局限性;LLM技术的合理应用显著改善了代码的人机交互体验。这些技术改进为反混淆工具的发展提供了新的参考方向。 实验验证的充分性通过大规模真实数据集得到了有力支撑。在44,421个样本上的测试结果——100%的技术覆盖率、88.2%的复杂度降低、466.94%的可读性提升——证明了该方法的有效性。JSFireTruck等真实案例的成功处理进一步验证了工具在实际安全分析场景中的实用价值。 当然,JavaScript混淆技术仍在不断发展,新的挑战也会持续出现。JSIMPLIFIER的模块化设计为应对这些变化提供了一定的灵活性。我们期待通过持续的技术改进和社区合作,进一步提升JavaScript安全分析的效率和准确性。 目前,JSimplifier及对应数据集已开源发布,面向安全研究和防护社区共享。未来工作将继续优化工具性能,扩展对更多混淆技术的支持,为脚本安全分析提供更好的技术工具。一、当恶意代码穿上”隐身衣”:JavaScript混淆的现实威胁


二、现有反混淆工具的三重困境
分析策略的单一性: 静态分析工具无法处理运行时依赖的混淆(如动态代码生成),动态分析工具又难以应对大规模样本和安全风险。更关键的是,现有工具通常只针对特定混淆模式,缺乏对多层混淆的综合支持。以JSFireTruck恶意软件为例,这个一个月内感染26.9万网页的攻击使用了复杂的多层混淆,现有工具要么无法处理,要么只能部分解码。
输出可读性的缺失: 即使成功反混淆,输出代码仍充斥着_0x4f2a、_0x1b3c等这样的无意义标识符,安全分析师需要花费大量时间才能理解代码逻辑,严重影响威胁响应效率。三、JSIMPLIFIER的创新设计

预处理器:让”坏代码”变”好代码”(Preprocessor)
反混淆器:静态与动态的完美协作(Deobfuscator)
LogicalExpressions,实现正确的短路求值处理嵌套的&&和||链(如False && anything直接返回False);对于ES6解构赋值如[a, b, c] = [getValue(), obj.prop, func.call(this)],JSIMPLIFIER扩展AssignmentExpression处理,解析左侧模式结构并递归遍历嵌套数组模式,将每个元素位置映射到对应的右侧值;对于UnaryExpressions中的环境检测代码如typeof window !== 'undefined',JSIMPLIFIER维护excludedNames白名单(包含window、document、navigator等关键全局变量),避免静态求值破坏环境特定的代码路径。push、shift、eval、await)识别可能导致无限循环或递归死锁的代码模式,并通过函数依赖映射追踪混淆函数间的调用关系。然后使用Node.js的vm.runInNewContext创建隔离执行环境,每个混淆代码段在独立的沙箱VM实例中运行,无法访问文件系统、网络或全局对象,仅暴露必要的内置对象。JSIMPLIFIER实现了全面的安全机制,包括执行超时防止进程挂起、递归深度限制防止无限循环、内存监控防止资源耗尽攻击。CallExpression时(如函数调用者通过变量查找确定、涉及运行时代码生成的调用、依赖运行时状态的调用),JSIMPLIFIER的canbetransformed标记机制识别这些表达式并打包上下文信息传递给动态执行监控。在动态到静态的反馈整合中,动态执行结果经过类型感知处理后重新整合到静态AST:简单数据类型直接转换为字面量AST节点,函数结果解析为FunctionExpression节点,复杂对象通过JSON序列化确保安全表示,同时更新作用域链中的变量绑定并触发依赖代码段的重新分析。人性化器:从机器码到人类语言(Humanizer)
四、最大规模验证与突破性成果
全面的数据集构建
全面的技术覆盖突破

显著的代码简化效果

质的可读性飞跃

实战验证:破解JSFireTruck的”密码”


五、结论:从”混乱”到”清晰”的技术突破
IDA Pro MCP+Trae结合分析远古病毒熊猫烧香






























