一、挖矿木马行为特征
挖矿木马显著的行为特征就是极大的占用CPU及GPU资源主要包括:
1.高CPU和GPU使用率
2.响应速度慢
3.崩溃或频繁重新启动
4.系统过热
5.异常网络活动(例如连接挖矿相关的网站或IP地址)。
其次是在网络流量中,挖矿木马通信过程采用专门的通信协议,因此存在一定的网络通信特征。
二、检测方法
1.网络侧检测
在网络侧检测可分为通信内容检测和矿池地址域名请求(DNS请求历史记录)检测。
挖矿木马感染主机和矿池的通信过程使用的通信协议是最常用的stratum协议,该协议内容为JSON数据格式。stratum协议的JSON数据格式存在多个固定的特征字段,在检测通信内容时,可根据这些特征设置告警规则,并应用与suricata、snort和其他通信检测软件或设备。
通信特征字符串:id、method、jsonrpc、params、result、login、pass、agent、job_id、seed_hash、blob、target、rigid。
方法示例:使用wireshark抓包并分析TCP通信内容。
矿池主要有公开矿池和私有矿池,对应域名也就有公开的矿池地址和私有的矿池地址。其中部分公有的矿池地址如下表所示:
币种 |
矿池地址 |
比特币 |
mine3.btcguild.com:8332pit.deepbit.net:8332 |
门罗币 |
xmr-us-east1.nanopool.org:14444pool.supportxmr.com:7777pool.supportxmr.com:5555pool.minexmr.com:5555 |
私有矿池地址一般有域名+端口或IP地址+端口的形式,域名可能也和公有的矿池地址一样存在一些特殊字符串,如:pool、xmr、mine等。在检测过程中都可结合威胁情报和对应通信内容进行综合判定。
如采用使用威胁情报(VirusTotal等)进行关联查询,综合域名、对应IP、关联样本进行判定矿池地址威胁性。示例中域名虽然在VT上显示无检测结果,可进一步分析关联。
进一步排查IP地址,关联样本,最终发现多个Linux平台的挖矿木马脚本。
2.主机侧检测
挖矿木马的主机侧检测主要依据的就是对应进程CPU使用率长时间居高不下,部分挖矿木马采用多方式隐藏进程,且具备多种持久化驻留方式。
针对不具备隐藏进程功能的挖矿木马检测场景:
Windows:使用任务管理器查看;
Linux:使用命令top -c查看。
针对具备隐藏进程功能的挖矿木马检测场景(即系统CPU使用率高,但未发现存在CPU使用率高的进程):
Windows:使用ProcessExplorer、ProcessHacker、PcHunter等软件查看系统所有进程及其进程关系,依据CPU使用率筛选可疑进程,进一步在主机上排查该可疑进程的网络连接,计算可疑进程对应文件hash,通过公开的威胁情报(Virustotal等)进行查询,综合判定结果。
Linux系统挖矿木马进程隐藏方式存在多种方式:
(1)篡改预加载的配置(/etc/ld.so.preload),写入恶意so文件路径,加载恶意的so文件,使得ls、top、ps等命令在查询可疑进程时执行结果被挖矿木马的动态链接库屏蔽,无法获得挖矿木马进程相关的信息。
通过以下命令恢复相关命令的正常执行:
> /etc/ld.so.preload && rm -rf恶意so文件路径
(2)通过其他手段修改Linux系统常用命令
a.针对这种隐藏方式,可以查看系统版本(uname -a),将其他相同版本的Linux系统的top命令文件重名了,导入该受害系统中,使用新的文件名命令进行排查。
b.安装busybox程序,使用内置的Linux常用命令(top、ps、ls等)对系统进行排查。
安装方法:
下载busybox: wget https://busybox.net/downloads/binaries
/1.28.1-defconfig-multiarch/busybox-x86_64
赋予执行权限:chmod +x busybox-x86-64
执行:./busybox-x86-64常用命令(即正常情况下的相关命令:top -c、ps -ef、ls -al等)。
除以上排查方法外,还可采用自动化脚本排查,脚本排查思路主要源于挖矿木马为了竞争CPU资源而在相关脚本中设置查找并删除其他挖矿木马的代码。收集整理其中的查找挖矿木马的代码,形成一定功能的挖矿木马进程排查脚本。此种方式的脚本排查误报率高,需要结合人工分析判定。