挖矿木马简要技术分析
The following article is from 高校信息化应用 Author 请关注
此文为哈工大安天联合CERT实验室发布的针对挖矿木马的简要技术分析,首发于”高校信息化应用“公众号,安天公众号现对其进行转载,以便读者进一步了解挖矿木马,同时为读者提供处置建议。
挖矿木马概述
互联网的虚拟货币,如比特币(BTC)、门罗币(XMR)等,是一种由开源的P2P软件产生的网络电子虚拟货币。主要用于互联网金融投资,也可以作为新式货币直接在生活中使用。
01
漏洞利用:利用系统漏洞快速获取相关服务器权限,植入挖矿木马是目前最为普遍的传播方式之一。常见的漏洞包括Windows系统漏洞、服务器组件插件漏洞、中间件漏洞、web漏洞等。
部分攻击者选择直接利用永恒之蓝漏洞,降低了利用漏洞攻击的难度,提高了挖矿木马的传播能力。例如传播较广的WannaMine挖矿家族,利用了永恒之蓝漏洞在内网蠕虫式传播,给不少公司和机构带来巨大损失。
02
弱口令:弱口令指的是仅包含简单口令、有规律的键盘组合或历次泄漏过的密码,例如“qwe123”、“666666”及“p@ssw0rd”等,攻击者通常会针对redis、ssh、3389、mssql、IPC$等服务进行爆破弱口令攻击。爆破成功后,尝试获取系统权限,植入挖矿木马并设置持久化。
03
伪装正常软件:攻击者将挖矿木马伪装为游戏软件、娱乐社交软件、安全软件、游戏外挂等进行传播,欺骗用户下载并执行。由于多数游戏对显卡、CPU等硬件性能要求较高,故挖矿木马通常伪装成游戏辅助外挂,通过社交群、网盘等渠道传播,感染大量机器。
挖矿木马有很多控制机器挖矿的方式,主要分为三种:
01
可执行文件:存储在机器上的典型恶意程序,通常通过设置计划任务或修改注册表项实现持久化,长期进行加密货币的挖矿作业。
02
基于浏览器的挖矿木马:使用JavaScript(或类似技术)的挖矿木马是在浏览器中执行。只要浏览器打开被植入挖矿木马的网站,就会执行挖矿执行,持续消耗资源。
03
无文件挖矿木马:利用如PowerShell等合法工具在机器的内存中执行挖矿作业,具有不落地、难检测等特点。
挖矿木马能在各种平台上运行,包括:Windows、Mac、Linux、Android、物联网(IoT)设备。
如何检测挖矿木马
挖矿木马行为特征
挖矿木马显著的行为特征就是极大的占用CPU及GPU资源主要包括:高 CPU 和 GPU 使用率、响应速度慢、 崩溃或频繁重新启动、系统过热、异常网络活动(例如,连接挖矿相关的网站或 IP 地址)。其次是在网络流量中,挖矿木马通信过程采用专门的通信协议,因此存在一定的网络通信特征。
检测方法
方法 1
网络侧检测
在网络侧检测可分为通信内容检测和矿池地址域名请求(DNS请求历史记录)检测。
矿池主要有公开矿池和私有矿池,对应域名也就有公开的矿池地址和私有的矿池地址。其中部分公有的矿池地址如下表所示:
私有矿池地址一般有域名+端口或IP地址+端口的形式,域名可能也和公有的矿池地址一样存在一些特殊字符串,如:pool、xmr、mine等。在检测过程中都可结合威胁情报和对应通信内容进行综合判定。
如采用使用威胁情报(VirusTotal等)进行关联查询,综合域名、对应IP、关联样本进行判定矿池地址威胁性。示例中域名虽然在VT上显示无检测结果,可进一步分析关联。
进一步排查IP地址,关联样本,最终发现多个Linux平台的挖矿木马脚本。
方法 2
主机侧检测
挖矿木马的主机侧检测主要依据的就是对应进程CPU使用率长时间居高不下,部分挖矿木马采用多方式隐藏进程,且具备多种持久化驻留方式。
针对不具备隐藏进程功能的挖矿木马检测场景:
Windows:使用任务管理器查看
Linux:使用命令top -c查看
Windows:使用ProcessExplorer、ProcessHacker、PcHunter等软件查看系统所有进程及其进程关系,依据CPU使用率筛选可疑进程,进一步在主机上排查该可疑进程的网络连接,计算可疑进程对应文件hash,通过公开的威胁情报(Virustotal等)进行查询,综合判定结果。 Linux系统挖矿木马进程隐藏方式存在多种方式:
01
篡改预加载的配置(/etc/ld.so.preload),写入恶意so文件路径,加载恶意的so文件,使得ls、top、ps等命令在查询可疑进程时执行结果被挖矿木马的动态链接库屏蔽,无法获得挖矿木马进程相关的信息。
通过以下命令恢复相关命令的正常执行:
> /etc/ld.so.preload && rm -rf 恶意so文件路径
02
通过其他手段修改Linux系统常用命令。
a.针对这种隐藏方式,可以查看系统版本(uname -a),将其他相同版本的Linux系统的top命令文件重名了,导入该受害系统中,使用新的文件名命令进行排查。
b.安装busybox程序,使用内置的Linux常用命令(top、ps、ls等)对系统进行排查。
如何处置挖矿木马
针对独立运行的挖矿木马感染场景处置
独立运行的挖矿木马无其他附加功能,重复利用目标主机上的系统资源进行挖矿。此种挖矿木马通常利用垃圾邮件或捆绑软件进行传播,主要针对的是Windows系统终端,因此对于这种挖矿木马在处置上较为简单,依据系统资源使用率在主机侧排查可疑进程,结合网络连接情况,综合判定该进程为挖矿木马后,即可结束该挖矿木马进程,而后删除对应的挖矿木马文件。
针对集成化的挖矿木马感染场景处置
在当前活跃挖矿木马家族大多数都是集成化的挖矿木马,集成多种功能,组建相应挖矿木马僵尸网络。集成化的挖矿木马主要有传播、挖矿、控制、持久化驻留、更新等功能,攻击者依据这些功能收获巨大的利益。
在传播上使用端口扫描工具、漏洞利用工具、暴力破解,对内网或外网的其他目标进行渗透并传播挖矿木马。
传播行为 | 具体工具/漏洞 | 处置 |
端口扫描 | masscan pnscan | 这些传播行为在网络上主要体现对外频繁连接多个指定端口(22、3389、7001、6379等) 排查方法: 网络抓包分析 特别注意:~/.ssh/authorized_keys,该文件若存在非法的SSH公钥,可将该文件删除。 初步处置方法利用Windows和Linux系统的防火墙功能配置规则,阻断传播行为。 Windows:新建出站规则,设置阻断对外指定端口的网络连接。 Linux:通过iptables命令进行设置 iptables -A OUTPUT -p tcp –dport 目标端口 -j DROP 记录相关行为对的进程和文件路径 |
漏洞利用 | WebLogic相关漏洞 Struts 相关漏洞 Redis 相关漏洞 | |
暴力破解 | 攻击者自研工具 |
针对挖矿程序进程,初步处置以屏蔽对矿池的连接为主,记录挖矿进程信息和对应文件路径。
具体方法(该方法同样使用于挖矿木马控制功能中投放的远控木马以及更新功能中更新脚本或程序):
系统 | 方法 |
Windows | 新建出站规则,设置阻断对外指定IP的网络连接。 |
Linux | 通过iptables命令进行设置:(可疑地址包括矿池地址、C2地址、挖矿木马更新地址) iptables -A INPUT -s 可疑地址 -j DROP iptables -A INPUT -s 可疑地址 -j DROP |
针对持久化驻留功能,主要在系统敏感路径上排查相关文件。
系统 | 排查方向 | 方法 |
Windows | 计划任务 | 使用autorun工具进行查询分析,同时参考前期发现的相关路径(挖矿木马进程、端口扫描进程等) |
自启动项 | ||
注册表/服务 | ||
敏感路径 | %tmp% %appdata% %programdata% C:\Windows\temp C:\windows\Fonts | |
Linux | 计划任务 | 查看计划任务 more /etc/cron.*/* 查看当前用户计划任务 crontab -l 查看所有用户计划任务 ls -al /var/spool/cron/ |
自启动目录 | ls -alr /etc/init.d ls -alr /etc/rc* | |
服务 | 排查服务: chkconfig –list systemctl list-unit-files 关闭服务: chkconfig 服务名 off systemctl disable 服务名 | |
敏感路径 | /tmp/ /root/ |
挖矿木马相关文件处置方法
01
统计收集前期排查发现的挖矿木马相关文件和进程信息;
02
分析挖矿木马相关文件执行和依赖关系;
03
按顺序删除挖矿木马的挖矿程序、传播工具、释放的远控木马等文件。
处置过程通常的顺序为:(具体操作主要以删除文件、结束进程为主)
a. 删除计划任务
b. 删除自启动项
c. 停止服务
d. 结束进程 (Linux:kill -9 进程pid)
e. 删除文件
04
Windows系统在结束进程时遇到任务管理器无法结束进程,可使用如ProcessExplorer、PcHunter、ProcessHacker结束挖矿木马相关进程。
05
Linux系统在删除文件时,如遇到“Operation not permitted”告警:
可使用如下命令,修改文件属性,并删除文件。
06
以上处置方法,根据实际情况可编写成相关脚本进行自动化处置。
防护建议
发现机器可能感染了挖矿木马,可以通过以下步骤清除:
01
从内网DNS服务器、DNS防火墙、流量审计设备等设备获取恶意域名信息,根据域名查询威胁情报确定木马类型;
02
查看系统CPU、内存、网络占用情况,获取异常进程相关信息;
03
根据进程名或部分字符串获取进程号或进程相关的命令行命令;
04
根据进程号查看由进程运行的线程;
05
结束挖矿进程及其守护进程;
06
通过挖矿进程的相关信息,定位到文件的具体位置,删除恶意文件;
07
查看启动项,如果发现非法开机自启服务项,停止并删除对应数据;
08
查看定时任务,多数挖矿木马会在受感染机器中写入定时任务完成程序的驻留。如果只结束挖矿木马进程并删除挖矿木马文件,定时任务会再次从服务器下载挖矿进程或直接执行挖矿脚本,导致挖矿进程清除失败;
09
溯源挖矿木马入侵途径,查找系统漏洞,打上对应补丁,完成漏洞修复,防止再次入侵。
针对挖矿木马的防护要做到以下几点:01
规范上网行为,不安装来历不明的软件、工具;
02
不打开来历不明的文档,以及带有图片、文件夹、文档、音视频等图标的文件;
03
进行严格的隔离,有关系统、服务尽量不要开放到互联网,在内网中的系统也要通过防火墙、VLAN或网闸等进行隔离。对于系统要采取最小化服务的原则,只提供必要的服务无关的服务必须要关闭,同时采用本机防火墙进行访问要进行访问控制;
04
及时安装系统补丁,修复系统应用漏洞、中间件漏洞、组件、插件等相关漏洞;
05
加强密码策略,增加密码复杂度并进行定期修改,开启相关登录失败处理功能。