主页 > 官网imtoken安卓版 > 基于行为检测的挖矿木马检测技术研究与有效实践

基于行为检测的挖矿木马检测技术研究与有效实践

官网imtoken安卓版 2023-02-14 06:20:10

与此同时,其他类型虚拟货币的市值也大幅增长。 在利益的驱使下,通过散布挖矿木马获取数字加密货币的黑产集团闻讯纷纷加入主机算力资源争夺战。 典型最常见的方法是在被入侵的受害者主机上植入大量挖矿木马,利用受害者电脑的算力进行挖矿,从而获取利益。

这种在用户不知情的情况下植入用户电脑进行挖矿的挖矿程序,属于挖矿木马。 挖矿木马的使用分为3个阶段:

1、攻击者利用主机漏洞或缺陷获取上传木马所需的权限。 相关主机漏洞或缺陷,如未授权访问漏洞、Web服务器远程代码执行漏洞、服务器系统组件漏洞(如MS17-010)等;

2、攻击者将挖矿木马上传到受害主机。 获得必要权限后,将恶意挖矿木马上传至受害人内网Web服务器或个人主机,然后启动挖矿木马程序,通过系统计划任务、操作系统自启动、修改系统注册表、修改系统文件权限等,以达到持久运行和隐藏的目的;

3、挖矿木马在内网主机间传播。 利用受害主机对内网进行检测扫描,发现其他潜在受害主机,从受控主机传播挖矿木马并感染其他主机,实现挖矿木马在内网主机间的海量传播。

由此可见,在内网用户的主机中植入挖矿木马,不仅会大量消耗主机的系统资源,造成主机无法使用或运行速度变慢等问题,还可能以内网为跳板进一步入侵其他内网主机,导致挖矿木马传播等内网破坏行为,是内网安全的重大隐患。 下面,本文将介绍“利用CPU/GPU算力挖矿”和“利用硬盘挖矿”两种不同模式对应的行为检测原理和有效实践。

二、挖矿木马行为检测原理及有效实践

挖矿木马的使用一般采用基于矿池的加密货币挖矿模式,利用CPU/GPU算力进行挖矿。 目前主流的挖矿币种是门罗币。 原因分析如下:

1. 矿池挖矿使攻击者获得稳定收益。 虽然有两种挖矿模式:SOLO模式和矿池模式,但SOLO模式需要挖矿主机直接连接主机客户端进行挖矿,不能被挖矿木马利用。 矿池模式是给矿机主机分配任务,统计工作量和收益分配,即无论矿池是否挖出区块币,矿机主机都可以根据工作量获得相应的币种收益。 挖矿木马主要采用矿池模式获取稳定收益。

2、比特币主机挖矿效率和投资比例的持续下降,使得攻击者转向在挖矿效率上更具优势的门罗币。 由于专业矿机的出现,个人电脑与矿机算力的巨大差异(差距超过10000倍),以及挖矿奖励每4年减半的机制,比特币挖矿难度从整体上看网络持续增加。 随着单位收益的增加和减少,比特币越来越不适合个人参与,犯罪分子需要选择新的货币。 随着2014年门罗币(代号XMR)的问世,由于其匿名性高,使用RandomX、CryptoNight等算法可以最有效地利用CPU挖矿,并拥有稳定的维护团队和生态来维护币种的稳定性货币价值。 逐渐成为挖矿木马热衷的主要货币。 我们还专注于门罗币挖矿的分析和检测。

基于上述挖矿木马行为特征,我们构建了以行为检测和关联分析检测技术为核心,威胁情报分析为辅助的挖矿木马行为检测技术解决方案。

2.1 挖矿木马行为检测技术方案

2.1.1 基于Stratum协议的通信过程行为检测方法

本技术方案是检测矿池与矿机之间的挖矿通信协议。 矿池一般使用Stratum协议与矿机进行交互通信。 Stratum协议是一种基于JSON-RPC2.0封装的TCP通信协议。 矿机与矿池交互过程中,支持矿机注册、任务下发、账号登录、结果提交、挖矿任务难度调整这五个行为。 矿机与矿池的交互流程如下图2所示:

1624360678_60d1c6e6ee96cf5482508.png?1624360679610

图2 Stratum协议挖矿通信流程图

我们的挖矿行为检测可以根据Stratum协议挖矿的不同阶段检测出这五种不同的挖矿行为,并对各种行为的有效性进行关联分析,最终确认是否存在挖矿木马利用Stratum协议挖矿。 具体方案包括:

(1) 矿机注册行为检测,检测矿机启动后是否主动连接矿池申请注册挖矿任务,包括两个子行为的检测:

a) 检测到挖矿主机使用“mining.subscribe”方式向矿池发起挖矿任务申请行为;

b) 矿池通过“mining.notify”方式响应申请,通知矿机已收到挖矿任务申请。

挖矿主机数据样例:
{"id":1,"method":"mining.subscribe","params":[]}
矿池回应样例:
{"id":1,"result":[["mining.notify","ae6812eb4cd7735a302a8a9dd95cf71f"],"08000002",4],"error":null}

(2) 矿池采用“mining.notify”方式检测向挖矿主机分配挖矿任务的行为。 该行为会在挖矿主机注册行为发生后立即触发。

矿池分配挖矿任务的数据样例:
{"params":["bf","4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000", 
"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff20020862062f50325348
2f04b8864e5008","072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef990332704
8ed988ac00000000",["c5bd77249e27c2d3a3602dd35c3364a7983900b64a34644d03b930bfdb19c0e5", "049b4e78e2d0b24f7c6a2856aa7b41811ed961ee52ae75527df9e80043fd2f12"], "00000002","1c2ac4af","504e86b9",false],"id":null,"method":"mining.notify"

上述数据包括分配的任务号、区块哈希、交易ID列表、区块版本号、当前时间、通知方式等特征。 如果存在以上特征中的一种以上,则确认该通信行为作为挖矿任务下发。

(3) 矿机使用账号密码登录矿池的行为检测。 检测到挖矿主机使用mining.authorize方式或者jsonrpc方式登录矿池。 如果矿池响应的“result”字段为“true”,则表示登录成功。

挖矿主机直接通过 mining.authorize 方法登录的数据样例:
{"params":["miner1","password"],"id":2,"method":"mining.authorize"}
矿池回应登录成功的数据样例:
{"error":null,"id":2,"result":true}
挖矿主机通过 jsonrpc 方式登录的数据样例:
{"id":2,"jsonrpc":"2.0","method":"login","params":{"login":"blue1","pass":"x","agent":"Windows NT 6.1; Win64; x64"}}
矿池回应登录成功的数据样例:
{"error":null,"id":2,"jsonrpc":"2.0","result":true}

(4) 矿机向矿池提交任务结果的行为检测。 挖出区块后,挖矿主机使用“mining.submit”方法将任务提交至矿池。 如果矿池响应的“result”字段为“true”,则表示提交成功; 否则,响应“错误”字段给出错误的原因。

挖矿主机箱矿池提交任务的数据样例:
{"params":["miner1","bf","00000001","504e86ed","b2957c02"],"id":4,"method":"mining.submit"}
矿池回应结果的数据样例:
{"error":null,"id":4,"result":true}

(5) 矿池调整挖矿任务难度行为检测。 矿池使用“mining.set_difficulty”方式调整难度,“params”字段给出难度值。

矿池调整挖矿任务难度的数据样例:
Server:{"id":null,"method":"mining.set_difficulty","params":[2]}

矿机收到任务难度调整通知后,会在下一个任务开始时采用新的难度,有时矿池会立即下发新的任务,让矿机在新的难度下立即开始工作。

在我们的行为检测方法中,前三种行为包括“挖矿主机注册行为”、“矿池采用‘挖矿。使用密码登录矿池的行为’被认为是顺序触发的行为。这些三种行为在预设时间段内依次发生,第一阶段确认宿主被植入木马并被控制。

挖矿木马主机不断向矿池提交任务的行为被视为挖矿木马活跃挖矿的第二阶段,即主机挖矿进程的维护阶段。 在这个阶段,矿池的地址会被统计并提交给每个人,这是检测和取证的关键证据。

矿池调整任务难度的行为作为主机被控制的辅助证据,仅在检测到挖矿木马主动挖矿的第二阶段行为时作为证据。

另外,虽然目前矿池与矿机之间的通信使用的是stratum协议,但是在不同的币种、不同的工具、不同的流程、不同的流量中btc矿池下载官方,协议字段会存在一定程度的差异。 我们公司的行为检测算法会相应调整。

2.1.2 门罗币挖矿代理行为检测方法

挖木马的主流货币门罗币采用Randomx或Cryptonight算法,基于xmr-stak或xmrig等挖矿代理程序接入矿池。 与2.1.1节介绍的Stratum协议的通用挖矿木马数据相比,具有以下特点:

1.使用jsonrpc数据样本的格式进行通信;

2、账户登录请求包含门罗币钱包地址;

3、部分矿机通信数据中包含代理程序xmr-stak或xmrig的特征以及代理程序使用的算法名称;

因此,在2.1.1节的行为检测算法中,根据以上三个特征调整检测算法,即可确认是否为门罗币挖矿木马。

以xmrig6.12.1代理程序为例说明门罗与一般层协议在挖矿数据特性上的差异,包括挖矿主机使用jsonrpc封装数据格式登录,添加门罗钱包地址登录挖矿矿池和矿池任务有发送、矿机提交任务、矿池发布新任务等不同行为。

1、矿机使用jsonrpc封装数据格式登录矿池。 新增字段algo表示使用的算法,agent字段表示矿机使用的代理程序。 矿池会在返回登录状态信息的同时下发任务:

1624360906_60d1c7ca56c870290d3ad.png?1624360906921

其中,红色字体为矿机使用jsonrpc封装数据格式登录矿池的数据样本,蓝色字体为矿池下发任务同时返回登录状态信息的数据样本。

2、挖矿主机采用jsonrpc数据封装格式将挖矿结果提交给矿池,矿池返回响应并下发新的挖矿任务:

1624360923_60d1c7db0bead014282c6.png?1624360923533

其中,红色字体为矿机使用jsonrpc数据封装格式将挖矿结果提交给矿池的数据样本,蓝色字体为矿池返回响应并下发新挖矿的数据样本任务。

使用xmr-stak代理程序挖矿与xmrig代理程序类似,区别在于agent字段不同,没有algo字段,因为算法默认使用randomx算法。 使用xmr-stak代理的数据示例如下:

1624360938_60d1c7ea637f7d79f20ed.png?1624360939014

2.1.3 基于挖矿木马情报IOC的威胁情报检测方法

自有大数据威胁情报系统btc矿池下载官方,会及时跟进最新的矿池情报,支持独立的知识库升级方式,为使用我们安全产品的用户自动升级。 我司支持的挖矿木马情报种类包括挖矿木马家族使用的C Chia币。 它使用廉价、冗余和高度分散的未使用硬盘存储空间来验证其区块链算法。 这种模式是“时间-空间证明”,即硬盘空间越大,挖矿效率越高。

目前主流的热门硬盘挖矿币种有奇亚币和FileCoin,两种币种差异较大。 其中,Fil币由于其挖矿机制,需要抵押币,即需要先投入一定的资金。 根据6月4日的计算数据,新增算力成本为:8.51 FIL/TiB × 95.19$/FIL≈810 $/TiB,折合人民币约为5187 CNY/TiB。 此外,还有较高的硬件成本和维护成本。

1624361414_60d1c9c648cfd56e685c8.png?1624361414579

(数据源)

奇亚币不同。 它们不需要任何抵押费用,只需要少量的CPU资源、一定的内存和大量的硬盘存储空间。 因此,目前Chia币比Fil币更受欢迎。 以下也是基于奇亚币。 做硬盘挖矿做技术分析。

3.1 奇亚币挖矿过程简析

Chiacoin采用的共识机制是POC(Proof of Capacity),也就是通常所说的容量证明。 不同于比特币等加密货币的POW共识机制,POC共识机制在内存计算方式上使用磁盘空间存储(相当于使用缓存)而不是Mining。 简单来说,挖矿主机下载完挖矿软件后,会执行两个步骤:

1、先进行P(Plot)盘的操作,即挖矿软件先将计算出的Hash值存入硬盘。 在此过程中,无需连接网络与其他挖矿节点通信,即可进行下一步挖矿;

2. 挖矿开始后,矿工根据最新的区块hash、前一个区块的签名、Target(类似于比特币中的网络难度)计算出deadline,然后与数据包中查询到的deadline进行比较。 如果前者小于钱包截止时间,则返回挖矿成功。 挖矿软件把挖矿的过程比作耕种农田,农田的收获就是硬币。

下面详细介绍以上两个过程:

(1)操作P(Plot)盘前,确认开垦农田的大小(用于保存P盘操作写入的hash值,中间会占用一些临时硬盘空间):

1624361498_60d1ca1a757bb3e243030.png?1624361498972

目前一般要求最低耕地面积为K32。 其他选项确定后,进入回收过程(将Hash写入硬盘):

1624361512_60d1ca28aa0df39dc8878.png?1624361512950

其中,在临时文件夹下可以看到大量的临时文件:

1624361524_60d1ca34245a948fa75f2.png?1624361524851

填海完成后会在result文件夹下生成一个plot格式的文件:

1624361541_60d1ca4559eaf30cbb056.png?1624361541671

(2) 挖矿阶段,挖矿软件在P盘文件中寻找最佳答案,即根据最新区块hash、前一个区块签名、Target(类似于比特币中的网络难度)计算截止时间),然后跟钱包里查询的deadline比较,如果前者小于钱包里的deadline,则返回挖矿成功。

1624361561_60d1ca59a7b5807ff8882.png?1624361562050

在挖矿过程中,需要与其他挖矿节点实时同步信息:

1624361574_60d1ca6621d4c8f58d8a6.png

奇亚币挖矿软件提供的节点使用8444端口进行通信,通信流量采用TLS加密:

1624361590_60d1ca7682952c216c077.png?1624361591131

3.2 硬盘挖矿检测

分析3.1节的Chia币挖矿流程,我们可以看到挖矿主机在P盘阶段(开荒)不对外通信,无法通过流量检测挖矿行为,但可以检测是否有plot文件格式在主机硬盘上。 大档案,作为初步认定可疑挖矿的依据;

然后在挖矿阶段(耕种农田)捕获挖矿主机与其他节点之间的TLS加密通信。 结合嘉币挖矿软件的默认端口是8444(也可以更改,或者其他正常的应用软件使用这个端口)进一步判断。 由于TLS加密流量无法通过特征或行为检测手段进行判断,我司后续将基于恶意加密流量AI模型检测技术,通过深入分析硬盘挖矿软件的TLS数据统计特征,训练AI用于适合硬盘挖矿的加密流量 该模型用于准确判断硬盘挖矿的加密通信过程。

4、挖矿木马防护建议

检测到内网被植入挖矿木马后,建议采取以下应急措施:

1、及时更新到最新系统,防止攻击者利用漏洞控制系统;

2、对Redis、Hadoop Yarn、Docker、XXL-JOB、Postgres等应用增加授权验证,控制访问对象;

3、SSH、RDP、Mysql、Mssql等服务访问入口使用强密码,减少敏感端口对外开放;

4、如果服务器部署了Weblogic、Apache Struts、Apache Flink、ThinkPHP等经常暴露高危漏洞的服务器组件,应及时更新至最新版本,并实时关注官网主要安全供应商发布的组件和安全公告。 根据提示修复相关漏洞;

5、对于个人电脑,建议做好个人防护,安装杀毒软件,及时更新系统,不要点击可疑文件。