CN111428239B - 一种恶意挖矿软件的检测方法 - Google Patents

一种恶意挖矿软件的检测方法 Download PDF

Info

Publication number
CN111428239B
CN111428239B CN202010193279.5A CN202010193279A CN111428239B CN 111428239 B CN111428239 B CN 111428239B CN 202010193279 A CN202010193279 A CN 202010193279A CN 111428239 B CN111428239 B CN 111428239B
Authority
CN
China
Prior art keywords
jumping
file
system call
mining software
mining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010193279.5A
Other languages
English (en)
Other versions
CN111428239A (zh
Inventor
李金库
汤飞
李永强
蒋忠元
马建峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN202010193279.5A priority Critical patent/CN111428239B/zh
Publication of CN111428239A publication Critical patent/CN111428239A/zh
Application granted granted Critical
Publication of CN111428239B publication Critical patent/CN111428239B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Computer Hardware Design (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Development Economics (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种恶意挖矿软件的检测方法,本发明制定的挖矿软件检测策略是基于挖矿软件的文件读写字符串序列、网络行为模式以及寄存器值的离散程度,在实际进行挖矿软件检测之前,先运行已知挖矿软件,利用Monitor模块来监控挖矿软件的文件行为和网络行为以及寄存器值离散程度情况,从而总结已知挖矿软件的文件读写字符串序列、网络行为模式和寄存器值离散程度规律。基于这些总结的已知挖矿软件的行为模式和规律特点,再使用Detector模块来进行实际匹配以确定样本是否为挖矿软件。本发明不需要对客户机操作系统进行任何更改,并且检测系统本身对挖矿软件是透明的,客户机中的挖矿软件无法绕过检测系统。

Description

一种恶意挖矿软件的检测方法
技术领域
本发明属于计算机科学与技术领域,涉及恶意软件的防护,具体是一种基于虚拟机自省技术的恶意挖矿软件检测方法,可用于保护64位Windows操作系统免受恶意挖矿软件的攻击。
背景技术
近些年来,随着加密货币的兴起,加密挖矿攻击也逐渐出现在人们的视野中。加密挖矿攻击者在未经授权的情况下,恶意利用受害者的计算资源来挖掘加密货币,并通过直接访问系统的资源,例如GPU、CPU、持久存储和网络资源等实现。恶意挖矿攻击除了给用户带来性能上的损失,还可能对用户机器造成硬件上的损坏。最近,加密货币身价暴涨,这让很多攻击者开始意识到,利用加密货币,他们无需与受害者实际互动,也无需在执法部门对各种软件攻击格外关注的形势下顶风作案,可以隐秘地实现以往攻击(例如勒索软件攻击)所能取得的全部经济收益,这使得与加密货币挖矿相关的攻击成为了攻击者的新宠。因此,对挖矿软件的特点进行研究,以找到更加有效的检测和防御方法,具有非常重大的意义。
当前,对于日益泛滥的恶意挖矿攻击,业界研究人员提出了一些针对性的检测和防御手段。例如,帕多瓦大学的Mauro Conti等人提出了利用硬件性能计数器HPC(HardwarePerformance Counter)来检测挖矿软件的方法。具体来说,它利用HPC值的变化情况作为判断挖矿算法的特征,并结合机器学习算法拟合出符合挖矿算法的曲线,从而判断程序(算法)是否符合挖矿算法的规则,进而确定是否为挖矿软件。复旦大学的Geng Hong等人利用Chrome Remote Interface(基于chrome调试协议,支持调试chrome浏览器)对网页进行远程调试,得到挖矿脚本运行时的相关信息。这种方法面向网页挖矿行为进行检测,主要检测依据包括两个方面。一个方面是选定常用的哈希函数库接口进行监控,根据hash运算的总花费时间来判断是否为挖矿软件(如果一个网页进行hash预算的时间超过执行时间的10%,就认定为在挖矿),这种方法的弊端是如果函数名被混淆,就无法使用。另一个方面是利用函数栈,把函数的调用和退出看作进栈和出栈。挖矿软件在运行中不断重复且按顺序的调用某些函数,这跟正常的网页行为是不同的;如果一个网页超过30%的时间都在重复执行某个函数栈,则认为是在挖矿。这种方法的好处是不受函数名被混淆的限制,只要运行过程中遵循某种重复函数栈的规律,就认为是在挖矿。
然而,当前的检测方法存在一些局限性和不足,这主要体现在两个方面:第一,挖矿软件检测系统和挖矿软件处在同一个系统中,这很容易被恶意挖矿软件绕过或被其攻击;第二,现存检测系统主要针对网页挖矿行为进行检测,针对二进制应用挖矿病毒的检测方法研究不足。
发明内容
针对当前方法的局限性,本发明提出了一种基于虚拟机自省(Virtual MachineIntrospection,VMI)技术的恶意挖矿软件检测方法,以抵御64位Windows操作系统中恶意挖矿软件的攻击,保护用户的安全。
为达到上述目的,本发明采用如下技术方案:
一种恶意挖矿软件的检测方法,包括以下步骤:
(1)制定挖矿软件检测策略;
(1.1)在虚拟机中运行已知恶意挖矿样本;
(1.2)在虚拟机产生系统调用时,捕获产生的系统调用;
(1.3)获取当前系统调用的上下文信息;
(1.4)利用Monitor模块对虚拟机寄存器的值进行监控;
(1.5)分析总结已知恶意挖矿软件的文件读写字符串序列、网络行为模式以及寄存器值的规律情况;
(2)按照策略进行挖矿软件检测;
(2.1)在虚拟机中运行待检测样本;
(2.2)在虚拟机产生系统调用时,捕获产生的系统调用;
(2.3)获取当前系统调用的上下文信息;
(2.4)利用Monitor模块对虚拟机寄存器的值进行监控;
(2.5)利用Detector模块检测恶意挖矿软件样本。
进一步地,步骤(1.1)具体包括:
(1.1a)启动虚拟机自省系统,开启虚拟机;
(1.1b)在虚拟机中运行已知恶意挖矿样本;
进一步地,步骤(1.2)具体包括:
(1.2a)将CPU EFER寄存器的SCE标志位清零;
(1.2b)虚拟机中产生无效操作码异常,陷入hypervisor中;
(1.2c)判断当前指令是否为SYSCALL或SYSRET;如果是则跳转到步骤(1.3a),否则跳转到步骤(1.3f);
进一步地,步骤(1.3)具体包括
(1.3a)读取CPU RAX寄存器中存储的系统调用号,通过系统调用号判断当前系统调用是否为文件或网络相关的系统调用,如果是则跳转到步骤(1.3b),否则跳转到步骤(1.2b);
(1.3b)通过系统调用号判断当前系统调用是否是与网络相关的系统调用,如果是,则通过解析当前系统调用的参数得到网络系统调用信息,跳转到(1.3d);否则跳转到步骤(1.3c);
(1.3c)通过解析当前系统调用的参数得到当前文件操作的文件系统调用相关信息,跳转到步骤(1.3d);
(1.3d)获取当前进程的上下文信息;
(1.3e)将当前截取到的信息按照特定的格式进行格式化;
(1.3f)模拟当前指令;
(1.3g)将控制权返还给虚拟机,向Detector模块发送格式化监控信息,如果产生新的系统调用,跳转到步骤(1.2b),否则跳转到步骤(1.4a);
进一步地,步骤(1.4)具体包括:
(1.4a)利用开源工具libvirt获取虚拟机中CPU寄存器的值;
(1.4b)向Detector模块实时发送寄存器值信息。
进一步地,步骤(1.5)具体包括:
(1.5a)在虚拟机中运行已知挖矿软件;
(1.5b)利用Monitor得到虚拟机监控日志,从中确定和挖矿软件样本同名进程ID;
(1.5c)根据当前进程ID查找到该进程的所有子孙进程,即挖矿软件相关的所有进程;
(1.5d)遍历监控日志中挖矿软件及其子进程的操作,包含文件操作和网络操作;
(1.5e)如果是文件操作则跳转到(1.5f),如果是网络操作,跳转到(1.5h);
(1.5f)对于产生的文件操作,获取文件名,如果挖矿软件及其子进程此前没有产生过对该文件的操作,则建立以此文件名命名的序列,并把文件操作加入到文件名序列中,如果有文件读写操作,同时记录文件读写的内容;如果已经有该文件名序列,直接把文件操作加入到文件名序列当中;然后跳转到步骤(1.5d)继续遍历监控日志,直到挖矿软件及其子进程没有文件操作产生,然后跳转至步骤(1.5g);
(1.5g)在遍历监控日志中挖矿软件及其子进程的操作之后,根据挖矿软件对文件操作的读写内容一致的特点,提取出挖矿软件读取文件读写字符串序列,跳转到步骤(1.5j);
(1.5h)对于产生的网络操作,加入到网络操作序列中,然后跳转到步骤(1.5d)继续遍历监控日志,直到挖矿软件及其子进程没有网络操作产生,然后跳转至步骤(1.5i);
(1.5i)在遍历监控中挖矿软件网络相关的操作序列之后,提取网络日志中挖矿软件的网络操作模式,跳转到步骤(1.5j);
(1.5j)计算寄存器值的离散程度规律,给各寄存器值的离散程度设定阈值。
进一步地,步骤(2.1)具体包括:
(2.1a)启动虚拟机自省系统,开启虚拟机;
(2.1b)在虚拟机中运行待检测挖矿样本;
进一步地,步骤(2.2)具体包括
(2.2a)将CPU EFER寄存器的SCE标志位清零;
(2.2b)虚拟机中产生无效操作码异常,陷入hypervisor中;
(2.2c)判断当前指令是否为SYSCALL或SYSRET;如果是则跳转到步骤(2.3a),否则跳转到步骤(2.3f);
进一步地,步骤(2.3)具体包括
(2.3a)读取CPU RAX寄存器中存储的系统调用号,通过系统调用号判断当前系统调用是否为文件或网络相关的系统调用,如果是则跳转到步骤(2.3b),否则跳转到步骤(2.2b);
(2.3b)通过系统调用号判断当前系统调用是否是与网络相关的系统调用,如果是,则通过解析当前系统调用的参数得到网络系统调用信息,跳转到(2.3d);否则跳转到步骤(2.3c);
(2.3c)通过解析当前系统调用的参数得到当前文件操作的文件系统调用相关信息,跳转到步骤(2.3d);
(2.3d)获取当前进程的上下文信息;
(2.3e)将当前截取到的信息按照特定的格式进行格式化;
(2.3f)模拟当前指令;
(2.3g)将控制权返还给虚拟机,向Detector模块发送格式化监控信息,如果产生新的系统调用,跳转到步骤(2.2b),否则跳转到步骤(2.4a);
进一步地,步骤(2.4)具体包括:
(2.4a)利用开源工具libvirt获取虚拟机中CPU寄存器的值;
(2.4b)向Detector模块实时发送寄存器值信息。
进一步地,步骤(2.5)具体包括:
(2.5a)接受由Monitor模块发送来的监控信息;
(2.5b)判断当前监控信息中的操作类型是否是文件相关的,如果是文件相关的,则跳转到步骤(2.5c),否则跳转到步骤(2.5e);
(2.5c)判断当前被访问的文件是否是用户文件,如果是,将监控信息添加到当前被访问文件所对应的文件操作队列中,跳转到步骤(2.5d);否则跳转到步骤(2.5a);
(2.5d)判断文件操作队列中的读写操作是否匹配挖矿软件的文件读写字符串序列,如果匹配,将变量file_match置为True,判定当前样本为恶意挖矿样本,向用户告警,停止检测过程;如果不匹配,跳转到步骤(2.5e);
(2.5e)将监控信息添加到网络操作队列中;
(2.5f)判断网络操作队列中的操作序列是否匹配挖矿软件的网络活动特征,如果匹配,将变量network_match置为True,判定当前样本为恶意挖矿样本,向用户告警,停止检测过程;如果不匹配,跳转到步骤(2.5g);
(2.5g)统计由monitor发送来的寄存器值信息,按照RAX、RBX、RCX、RDX、RSI、RSP、R8、R9、R10、R11、R12、R13、R14、R15寄存器值进行分类;
(2.5h)对每一个寄存器的值,按照时间顺序排成序列,对序列中的寄存器值按n个分为一组,对每一组寄存器值序列计算其离散系数,并取平均值;
(2.5i)以在挖矿软件运行时CPU各寄存器值的离散程度设定的阈值为界限,如果步骤(2.5h)获得的寄存器值的离散程度平均值大于等于阈值,则判定该样本为挖矿软件,否则判定不是挖矿软件。
与现有技术相比,本发明具有以下有益的技术效果:
1)本发明基于虚拟机自省技术,捕获虚拟机内部产生的系统调用,然后对系统调用参数进行解析,同时获取当前产生系统调用的进程的上下文信息,实现了在运行挖矿软件的客户机操作系统的下层(即hypervisor中)对虚拟机文件活动和网络活动进行监控。因此,本发明不需要对客户机操作系统进行任何更改,并且检测系统本身对挖矿软件是透明的,客户机中的挖矿软件无法绕过检测系统。
2)本发明结合了挖矿软件的寄存器值的特殊情况,在样本运行过程中对CPU寄存器信息进行监控,利用寄存器值的离散程度信息进行检测,准确度更高(误报率为0)。
3)现有的挖矿检测大多是对网页挖矿行为进行检测,虽然有部分研究对二进制挖矿环境进行了分析,但并没有提出切实可行的二进制挖矿软件检测方法。而本发明有效实现了对恶意二进制挖矿软件的检测。
附图说明
图1是本发明的总体架构图;
图2是本发明实现对虚拟机文件系统和网络监控的流程图;
图3是本发明总结的挖矿软件检测策略;
图4是本发明总结的挖矿软件网络行为模式流程图。
具体实施方式
下面对本发明作进一步详细说明:
本发明的基于虚拟机自省的恶意挖矿软件检测方法,包括:
(1)制定挖矿软件检测策略的步骤
(1.1)在虚拟机中运行已知恶意挖矿样本;
(1.1a)启动虚拟机自省系统,开启虚拟机;
(1.1b)在虚拟机中运行已知恶意挖矿样本;
(1.2)在虚拟机产生系统调用时,捕获产生的系统调用:
(1.2a)将CPU EFER寄存器的SCE标志位清零;
(1.2b)虚拟机中产生无效操作码异常,陷入hypervisor中;
(1.2c)判断当前指令是否为SYSCALL或SYSRET;如果是则跳转到步骤1.3a,否则跳转到步骤1.3f;
(1.3)获取当前系统调用的上下文信息:
(1.3a)读取CPU RAX寄存器中存储的系统调用号,通过系统调用号判断当前系统调用是否为文件或网络相关的系统调用,如果是则跳转到步骤1.3b,否则跳转到步骤1.2b;
(1.3b)通过系统调用号判断当前系统调用是否是与网络相关的系统调用,如果是,则通过解析当前系统调用的参数得到网络系统调用信息(包括控制码、IP、端口号等信息),跳转到1.3d;否则跳转到步骤1.3c;
(1.3c)通过解析当前系统调用的参数得到当前文件操作的文件系统调用相关信息(包括文件名、文件写入数据等信息),跳转到1.3d;
(1.3d)获取当前进程的上下文信息,包括当前进程的ID、进程名、父进程ID等;
(1.3e)将当前截取到的信息按照特定的格式进行格式化;
(1.3f)模拟当前指令;
(1.3g)将控制权返还给虚拟机,向Detector模块发送格式化监控信息,如果产生新的系统调用,跳转到步骤1.2b,否则跳转到步骤1.4a;
(1.4)Monitor模块对虚拟机寄存器的值进行监控的步骤
(1.4a)利用开源工具libvirt获取虚拟机中CPU寄存器的值
(1.4b)向Detector模块实时发送寄存器值信息;
(1.5)分析总结已知恶意挖矿软件的文件读写字符串序列、网络行为模式以及寄存器值的规律情况;
(1.5a)在虚拟机中运行已知挖矿软件;
(1.5b)利用Monitor得到虚拟机监控日志,从中确定和挖矿软件样本同名进程ID;
(1.5c)根据当前进程ID查找到该进程的所有子孙进程,这些进程就是挖矿软件相关的所有进程;
(1.5d)遍历监控日志中挖矿软件及其子进程的操作,包含文件操作和网络操作;
(1.5e)判断是否为文件操作,如果是跳转到1.5f,如果不是,跳转到1.5h;
(1.5f)对于产生的文件操作,获取文件名,如果挖矿软件及其子进程此前没有产生过对该文件的操作,则建立以此文件名命名的序列,并把文件操作加入到文件名序列中,如果有文件读写操作,还要记录文件读写的内容;如果已经有该文件名序列,直接把文件操作加入到文件名序列当中。跳转到步骤1.5d继续遍历监控日志,直到挖矿软件及其子进程没有文件操作产生,跳转至步骤1.5g;
(1.5g)在遍历监控日志中挖矿软件及其子进程的操作之后,根据挖矿软件对文件操作的读写内容一致的特点,提取出挖矿软件读取文件内容的操作模式,跳转到步骤1.5j;
即总结文件读写字符串序列:同一个挖矿软件对配置文件、挖矿记录日志操作时所采取的策略应该是一致的,因此在遍历监控日志中挖矿软件及其子进程的操作之后,可以观察到恶意挖矿软件产生的文件读写字符串序列是类似的;
(1.5h)对于产生的网络操作,加入到网络操作序列中,然后跳转到步骤1.5d继续遍历监控日志,直到挖矿软件及其子进程没有网络操作产生,跳转至步骤1.5i;
(1.5i)在遍历监控中挖矿软件网络相关的操作序列之后,提取网络日志中挖矿软件的网络操作模式,跳转到步骤1.5j;
即总结网络操作模式:我们结合挖矿软件的运行特点总结出了网络操作模式,这些操作模式反映了恶意挖矿软件在对受害者进行攻击时所采用的策略;
(1.5j)计算寄存器值的离散程度规律,给各寄存器值的离散程度设定阈值;即总结寄存器值的规律:我们结合挖矿软件的运行特点总结出了寄存器值的离散程度规律,给各寄存器值的离散程度设定一定的阈值;这些规律反映了恶意挖矿软件在对受害者进行攻击时所采用的策略;
(2)按照策略进行挖矿软件检测;
(2.1)在虚拟机中运行待检测样本;
(2.1a)启动虚拟机自省系统,开启虚拟机;
(2.1b)在虚拟机中运行待检测挖矿样本;
(2.2)在虚拟机产生系统调用时,捕获产生的系统调用;
(2.2a)将CPU EFER寄存器的SCE标志位清零;
(2.2b)虚拟机中产生无效操作码异常,陷入hypervisor中;
(2.2c)判断当前指令是否为SYSCALL或SYSRET;如果是则跳转到步骤(2.3a),否则跳转到步骤2.3f;
(2.3)获取当前系统调用的上下文信息;
(2.3a)读取CPU RAX寄存器中存储的系统调用号,通过系统调用号判断当前系统调用是否为文件或网络相关的系统调用,如果是则跳转到步骤2.3b,否则跳转到步骤2.2b;
(2.3b)通过系统调用号判断当前系统调用是否是与网络相关的系统调用,如果是,则通过解析当前系统调用的参数得到网络系统调用信息,跳转到2.3d;否则跳转到步骤2.3c;
(2.3c)通过解析当前系统调用的参数得到当前文件操作的文件系统调用相关信息,跳转到步骤2.3d;
(2.3d)获取当前进程的上下文信息;
(2.3e)将当前截取到的信息按照特定的格式进行格式化;
(2.3f)模拟当前指令;
(2.3g)将控制权返还给虚拟机,向Detector模块发送格式化监控信息,如果产生新的系统调用,跳转到步骤2.2b,否则跳转到步骤2.4a;
(2.4)利用Monitor模块对虚拟机寄存器的值进行监控;
(2.5)利用Detector模块检测恶意挖矿软件样本。
(2.5a)接受由Monitor模块发送来的监控信息;
(2.5b)判断当前监控信息中的操作类型是否是文件相关的,如果是文件相关的,则跳转到步骤2.5c,否则跳转到步骤2.5e;
(2.5c)判断当前被访问的文件是否是用户文件,如果是,将监控信息添加到当前被访问文件所对应的文件操作队列中,跳转到步骤2.5d;否则跳转到步骤2.5a;
(2.5d)判断文件操作队列中的操作序列是否匹配已总结的挖矿软件的文件读写字符串序列,如果匹配,将变量file_match置为True,判定当前样本为恶意挖矿样本,向用户告警,停止检测过程;如果不匹配,跳转到步骤2.5e;
(2.5e)将监控信息添加到网络操作队列中;
(2.5f)判断网络操作队列中的操作序列是否匹配挖矿软件的网络活动特征,如果匹配,将变量network_match置为True,判定当前样本为恶意挖矿样本,向用户告警,停止检测过程;如果不匹配,跳转到步骤2.5g;
(2.5g)统计由monitor发送来的寄存器值信息,按照RAX、RBX、RCX、RDX、RSI、RSP、R8、R9、R10、R11、R12、R13、R14、R15等寄存器值进行分类;
(2.5h)对每一个寄存器的值,按照时间顺序排成序列,对序列中的寄存器值按n(本发明中n为1000)个分为一组,对每一组寄存器值序列计算其离散系数,并取平均值;
(2.5i)以在挖矿软件运行时CPU各寄存器值的离散程度设定的阈值为界限,如果步骤2.5h获得的寄存器值的离散程度平均值大于等于阈值,则判定该样本为挖矿软件,否则判定不是挖矿软件。
下面结合附图及具体实施例对本发明作进一步详细描述:
参照图1,本发明主要包括两个模块:Monitor模块和Detector模块。Hypervisor中的Monitor模块捕获系统调用。Monitor模块负责对被捕获的系统调用进行解析得到系统调用的上下文信息,如当前进程的进程ID、系统调用参数、返回值等等,包括文件读、写系统调用对应的读写内容。然后Monitor模块将控制权交还给虚拟机系统(当系统调用服务例程执行完毕后,虚拟机系统将控制权返还给调用进程)。此外,Monitor模块会监控虚拟机内部的寄存器值的情况,并记录在日志中,作为监控信息的一部分。与此同时,Monitor模块将获取到的监控信息发送给Detector模块。当接收到监控信息后,Detector模块通过执行检测策略判断当前进程的操作序列是否匹配特定的挖矿软件文件读写字符串序列、网络活动模式以及寄存器值离散程度规律实现对挖矿软件攻击的检测。如果Detector模块检测到挖矿软件攻击,会向用户发出通知消息以达到告警作用。
本发明在开源的KVM中扩展了上述两个模块,使其实现对虚拟机的监控,并在监控信息的基础上实现对挖矿软件的检测。在具体的实现中,首先使用扩展的KVM模块将Ubuntu系统中原有的KVM内核模块替换,然后在使用KVM创建一个64位的Windows 7虚拟机,然后在虚拟机中运行挖矿软件样本进行测试。
本发明制定的挖矿软件检测策略是基于挖矿软件的文件读写字符串序列、网络行为模式以及寄存器值的离散程度。因此,在实际进行挖矿软件检测之前,要先运行已知挖矿软件,利用Monitor模块来监控挖矿软件的文件行为和网络行为以及寄存器值离散程度情况,从而总结已知挖矿软件的文件读写字符串序列、网络行为模式和寄存器值离散程度规律。基于这些总结的已知挖矿软件的行为模式和规律特点,我们再使用Detector模块来进行实际匹配以确定样本是否为挖矿软件。
本发明是基于三个关键点提出的:第一,加密货币是一个去中心化的网络架构,通过节点来转发新交易和新区块。而矿机、矿池也同时形成了另一个网络。这个网络分成矿机、矿池、钱包等几个主要部分。在挖矿活动进行中,矿机需要与不断与矿池进行通信从而使挖矿活动得以完成。以当前主流的Stratum矿池协议为例,在挖矿软件工作时,要经历矿机登记、任务下发、帐号登录、结果提交、难度调整等过程。无论是哪一个过程,都涉及到矿池与矿机之间的TCP通信。因此,我们可以根据这一特性,监控在挖矿攻击软件运行过程中相应进程的网络行为。从而确定挖矿攻击行为。第二,在挖矿软件运行过程中,会产生以下两种文件行为:一是读取挖矿软件配置文件信息;二是在挖矿过程中会产生与挖矿信息相关的日志文件。这两者都涉及到文件行为。我们可以通过监控这两者,来实现对挖矿攻击软件的检测。第三;CryptoNight是挖矿过程中的工作量证明(PoW)共识机制,CryptoNight是一个内存难解(memory-hard)哈希函数,在挖矿的过程中会产生大量的伪随机数,并把伪随机数中存放在寄存器中,由此,在存在挖矿攻击的过程中,寄存器的值显然会与正常情况有所不同。我们通过利用VMI监控虚拟机中寄存器的值,并计算寄存器值的变异系数,分析出与正常情况下寄存器值变异系数的差别,从而识别出挖矿软件。
一.监控虚拟机中的文件系统、网络活动和寄存器值
参照图2,本部分的具体实现如下:
步骤1,捕获系统调用。
(1a)将CPU EFER寄存器的SCE标志位复位;
对虚拟机中文件系统和网络活动的监控是通过利用VMI捕获系统调用并对其进行解析实现的。为了能够在hypervisor中捕获到系统调用,需要将虚拟机中产生的系统调用陷入到hypervisor中。直接将系统调用陷入hypervisor中并没有被当前的主流架构(如Intel IA-32和Intel 64)所支持,但是Intel Virtualization Extensions(VT-x)技术支持将系统中断(如页错误、不合理的操作码异常、一般性保护错误等)陷入hypervisor中。因此,要想在hypervisor中捕获系统调用,可以在虚拟机产生系统调用时强制操作系统发生异常或系统中断,使这些异常或系统中断陷入hypervisor中,从而使得系统调用间接陷入hypervisor中。
本发明所使用的虚拟机系统是64位Windows系统,在x64平台中,系统调用的实现方式是使用SYSCALL指令及其对应的STSRET指令构建一种快速调用系统服务例程的机制。这两个指令的执行依赖于一组MSR寄存器,而且这种机制可以通过将EFER(ExtendedFeature Enable Register)寄存器的SCE标志位清零而关闭。因此,如果将EFER寄存器的SCE标志位清零,那么当64位Windows虚拟机产生系统调用时,将产生不合理的操作码异常,该异常将陷入hypervisor,此时相当于hypervisor间接捕获了系统调用。
(1b)虚拟机中产生无效操作码异常,陷入hypervisor中;
(1c)判断当前指令是否为SYSCALL或SYSRET。
当虚拟机产生无效操作码异常时,都会陷入到hypervisor中,本发明所关注的仅仅是由于系统调用产生的异常。当控制权转入hypervisor中时,必须区分不合理操作码异常是自然产生的还是由于本文的设置而产生的。因此,需要通过判断当前指令去判断当前不合理操作码异常的产生源。如果当前指令为SYSCALL或STSRET,说明该异常是由于对EFER寄存器设置而产生的,则解析系统调用参数,获取当前进程信息,模拟当前指令,然后将控制权交还给虚拟机。否则,模拟当前指令,将控制权返还给虚拟机。
步骤2,获取系统调用上下文信息。
(2a)判断当前系统调用是否为文件或网络相关的系统调用,如果是则跳转到步骤2b,否则跳转到步骤1b。通过系统调用号来判断当前系统调用的类型。对于x64平台,在产生系统调用时,系统调用号被存放在RAX寄存器中。因此,我们需要利用VMI技术取得RAX寄存器中存取的系统调用号,通过系统调用号判断当前系统调用是否为文件或网络相关的系统调用。
(2b)通过系统调用号判断当前系统调用是否是与网络相关的系统调用,如果是,则通过解析当前系统调用的参数得到控制码、IP、端口号等信息,跳转到2d;否则跳转到步骤2c。在64位Windows 7中,所有的与网络相关的操作都是通过NtDeviceIoControlFile这个系统调用完成的。该系统调用的第6个参数IoControlCode用于指明执行哪种操作的控制码,第7个参数InputBuffer包含了发送给目标设备的信息。当IoControlCode不同时,InputBuffer所存储的信息的数据结构也是不相同的。例如,当IoControlCode为0x12023,表示发送UDP数据包,此时InputBuffer中包含了要发送的数据、目的端口和IP等信息,结合相应的数据结构实现对这些信息的解析,对其他网络操作的解析以此类推。
(2c)通过解析当前系统调用的参数得到当前文件操作的文件名、文件写入数据等信息;文件的写入操作是由NtWriteFile实现的,该系统调用的第6个参数Buffer位指向写入数据缓冲区的指针,而第1个参数FileHandle为指向文件对象的句柄,其中包含了文件名等信息。对其他文件操作的解析以此类推。
解析这些参数除了明确每个参数的数据结构外,还需要了解参数的地址。在此之前,首先需要理解x64 Windows系统发生函数调用时栈帧的结构。对于x64 Windows系统而言,RSP寄存器中存放栈顶指针,所有栈的操作都是通过RSP寄存器来完成的。当一个系统调用发生时,前4个参数并不一定存放在栈中,而是从左至右,依次被放入RCX、RDX、R8、R9这4个寄存器中,其余参数从左至右依次存储到栈中。需要注意的一点是,在系统调用执行之前,触发系统调用的call指令会使得一个8字节的返回值入栈,这样就导致了RSP-8。因此,当捕获到系统调用时,前4个参数依次存放在RCX、RDX、R8、R9这4个寄存器中,第5个参数的地址为RSP+5*8,第6个参数的地址为RSP+6*8,以此类推。这样就通过RSP寄存器得到了每一个参数的地址。至于系统调用的返回值,当系统调用执行完成后,被存放到RAX寄存器中。根据当前正在发生的系统调用以及该系统调用每一个参数的地址,按照每一个参数的数据结构去解析对应参数地址处的内存内容,就可以得到与虚拟机中文件和网络操作相关的信息。要注意上述地址为虚拟机中的虚拟地址,我们需要将其转换为物理机的物理地址。我们在系统中集成了开源的libvmi,实现这种地址空间的转换。
(2d)获取当前进程的上下文信息,包括当前进程的ID、进程名、父进程ID等。在Windows系统中,与进程相关的属性都被存储在执行体控制块(EPROCESS)中。EPROCESS的地址可以通过进程控制域(KPCR)获取。在KPCR中有一个叫做KPRCB(Kernel ProcessorControl Block)的数据结构,用来存储当前线程对象的指针,而在该线程对象中,可以获得当前进程所对应的EPROCESS的地址。这样,就得到了当前产生系统调用的进程信息。
在此之前,需要利用VMI获得KPCR的地址。x64使用SYSCALL指令来实现系统调用,但执行SYSCALL指令时,操作系统入口点没有内核堆栈,也没有一种简单的方法来获得内核结构的指针,因此,引入了SWAPGS指令。SWAPGS不需要任何通用寄存器或存储器,在使用指令之前不需要保存任何寄存器,SWAPGS将MSR地址0xC0000102H处的值与GS基址寄存器交换。然后内核可以在正常的内存引用上使用GS前缀来访问内核数据结构。而MSR地址C0000102H处保存的值就是KPCR的地址。这样当捕获系统调用时,就可以通过获取MSR地址C0000102H处的值来得到KPCR的地址。
(2e)将当前截取到的信息按照特定的格式进行格式化。格式化的目的是为了方便Detector模块对监控信息进行处理。我们将文件操作的监控信息格式化成以下条目:
[系统调用号,进程名,进程ID,父进程ID,文件名,新文件名,进程路径,文件读写内容,时间戳]
其中“新文件名”仅仅针对文件重命名操作,表示重命名之后的文件名。
将网络操作的监控信息格式化为如下条目:
[系统调用号,进程名,进程ID,父进程ID,控制码,端口号,IP,进程路径,时间戳]
(2f)模拟当前指令;
(2g)将控制权返还给虚拟机,跳转到1b;
(2h)向Detector模块发送格式化监控信息;
二.按照一定策略,进行挖矿软件检测
参照图3和图4,本部分的具体实现如下:
步骤1,总结已知挖矿软件的文件读写字符串序列和网络行为模式以及寄存器值的离散程度。
(1a)运行挖矿软件,这些样本从Hybrid Analysis和VirusShare上收集;
(1b)从监控日志当中根据进程名找到和挖矿软件样本同名进程ID;
(1c)根据父进程ID查找到该进程的所有子孙进程,这些进程就是挖矿软件相关的所有进程;
(1d)遍历监控日志中挖矿软件及其子进程的操作,包含文件操作和网络操作;
(1e)判断是否为文件操作,如果是跳转到1f,如果不是,跳转到1g;
(1f)对于挖矿软件及其子进程产生的文件操作,获取文件名,此前没有产生过对该文件的操作,则建立以此文件名命名的序列,并把文件操作加入到文件名序列中;如果已经有该文件名序列,直接把文件操作加入到文件名序列当中。跳转到步骤1d继续遍历监控日志,直到挖矿软件及其子进程没有文件操作产生;
(1g)对于产生的网络操作,加入到网络操作序列中。跳转到步骤1d继续遍历监控日志,直到挖矿软件及其子进程没有网络操作产生;
(1h)总结文件读写字符串序列。对于挖矿软件,会产生以下两种文件行为:一是读取挖矿软件配置文件信息;二是在挖矿过程中会产生与挖矿信息相关的日志文件。这两者都涉及到文件行为。我们通过与这两类文件读写操作进行匹配,来实现对挖矿攻击软件的检测;
(1i)总结网络操作模式。在挖矿软件工作时,要经历矿机登记、任务下发、帐号登录、结果提交、难度调整等过程。无论是哪一个过程,都涉及到矿池与矿机之间的TCP通信。因此,我们可以根据这一特性,监控在挖矿攻击软件运行过程中相应进程的网络行为。从而确定挖矿攻击行为(1j)总结寄存器值的规律:我们结合挖矿软件的运行特点总结出了寄存器值的离散程度规律,给各寄存器值的离散程度设定一定的阈值;这些规律反映了恶意挖矿软件在对受害者进行攻击时所采用的策略;
步骤2,结合上述挖矿软件行为模式制定策略,进行挖矿软件检测。
(2a)接受由Monitor模块发送来的监控信息;
(2b)判断当前监控信息中的操作类型是否是文件相关的,如果是文件相关的,则跳转到步骤2c,否则跳转到步骤2e;
(2c)判断当前被访问的文件是否是用户文件,如果是,将监控信息添加到当前被访问文件所对应的文件操作队列中;否则跳转到步骤2a;
(2d)判断文件操作队列中的操作序列是否匹配挖矿软件的文件读写字符串序列,如果匹配,将变量file_match置为True,判定当前样本为恶意挖矿样本,向用户告警;
(2e)将监控信息添加到网络操作队列中;
(2f)判断网络操作队列中的操作序列是否匹配挖矿软件的网络活动特征,如果匹配,将变量network_match置为True,判定当前样本为恶意挖矿样本,向用户告警;
(2g)统计由monitor发送来的寄存器值信息,按照RAX、RBX、RCX、RDX、RSI、RSP、R8、R9、R10、R11、R12、R13、R14、R15等寄存器值进行分类;
(2h)对每一个寄存器的值,按照时间顺序排成序列,对序列中的寄存器值按n(本发明中n为1000)个分为一组,对每一组寄存器值序列计算其离散系数,并取平均值;
(2i)以在挖矿软件运行时CPU各寄存器值的离散程度设定的阈值为界限,如果步骤2h获得的寄存器值的离散程度平均值大于等于阈值,则判定该样本为挖矿软件,否则判定不是挖矿软件。
本发明的功能和性能效果可以通过以下实验进一步说明:
1)实验条件
本发明是通过利用运行于Ubuntu 16.04/amd64系统中的开源KVM hypervisor,而挖矿软件样本运行在位于KVM hypervisor上层的虚拟机中。虚拟机的操作系统是64位Windows 7,为当前挖矿软件攻击的主要目标之一。为了实现对挖矿软件的检测,本发明扩展KVM hypervisor实现了系统调用的捕获、系统调用上下文信息的获取、虚拟机中CPU寄存器值的监控以及挖矿软件攻击的检测。
因为挖矿软件可能会检测是否在真实用户场景下,本发明首先建立了一个包含大量来自真实世界用户的多种类型文件的文档目录。这些文件的目录结构完全和真实世界的用户相同。为了排除阻止挖矿软件成功运行的因素,本发明关闭了虚拟机的防火墙、用户控制以及反病毒软件。为了使得挖矿软件样本能够成功进行网络通信,虚拟机能够访问因特网。最后,以管理员权限运行每个挖矿软件样本,并且每个样本都运行30分钟。每次都通过快照将虚拟机恢复到挖矿软件样本运行之前的状态已保证挖矿软件样本的运行不受上次样本运行的影响。
2)实验内容
实验内容主要包括两大部分:功能测试和性能测试。功能测试用来对本发明原型系统的有效性进行测试,而性能测试用来测试原型系统的负载情况。
为了对本文系统的有效性进行测试,利用本发明原型系统对279个恶意程序样本进行分析检测。另外,为了验证系统检测的准确性,本次试验还评估了检测的误报和漏报情况。
性能测试主要包括原型系统对文件系统和网络性能的影响。在性能测试实验中,使用IOzone来测试对文件系统读写性能的影响,测试指标主要包括Write、Re-write、Read、Re-read。为了便于比较挖矿软件防御系统对文件系统的影响,先在标准用户环境下用IOzone测试10次,取每次结果的平均值,然后在增加本原型系统的用户环境下使用IOzone测试10次,同样取每次结果的平均值,然后将两者进行分析比较。另外,使用NetPerf测试了原型系统系统对网络性能的影响,在评估本文系统对网络性能影响的实验中,分别对TCP_STREAM(TCP批量传输)、UDP_STREAM(UDP批量传输)、TCP_RR(TCP请求应答)和UDP_RR(UDP请求应答)这四个网络操作进行测试。分别在无原型系统和有原型系统部署的环境下对每个网络操作分别测试10次,然后取平均值。
3)结果分析
通过功能测试,本发明从这些样本中成功检测出了275个挖矿软件样本。表明结合挖矿软件的文件操作字符序列和网络活动模式以及寄存器值的离散程度作为检测依据是合理的,可以极大地提升挖矿软件检测的效率。本次功能测试中,没有产生误报,即误报为0,漏报为1.43%。
文件系统性能测试的结果如表1所示,由于原型系统所造成的平均文件I/O负载为5.75%。网络性能测试的结果如表2所示,由于原型系统所造成的平均网络性能负载为2.16%。由性能测试结果可以看出,原型系统对用户系统所产生的负载在可接受的范围之内,基本上不会对用户体验造成明显影响。
表1文件系统性能测试的结果
Figure BDA0002416687280000211
表2网络性能测试的结果
Figure BDA0002416687280000212
Figure BDA0002416687280000221
/>

Claims (3)

1.一种恶意挖矿软件的检测方法,其特征在于,包括以下步骤:
(1)制定挖矿软件检测策略;
(1.1)在虚拟机中运行已知恶意挖矿样本;
(1.2)在虚拟机产生系统调用时,捕获产生的系统调用;
(1.3)获取当前系统调用的上下文信息;
(1.4)利用Monitor模块对虚拟机寄存器的值进行监控;
(1.5)分析总结已知恶意挖矿软件的文件读写字符串序列、网络行为模式以及寄存器值的规律情况;
(2)按照策略进行挖矿软件检测;
(2.1)在虚拟机中运行待检测样本;
(2.2)在虚拟机产生系统调用时,捕获产生的系统调用;
(2.3)获取当前系统调用的上下文信息;
(2.4)利用Monitor模块对虚拟机寄存器的值进行监控;
(2.5)利用Detector模块检测恶意挖矿软件样本;
所述步骤(2.1)具体包括:
(2.1a)启动虚拟机自省系统,开启虚拟机;
(2.1b)在虚拟机中运行待检测挖矿样本;
所述步骤(2.2)具体包括:
(2.2a)将CPU EFER寄存器的SCE标志位清零;
(2.2b)虚拟机中产生无效操作码异常,陷入hypervisor中;
(2.2c)判断当前指令是否为SYSCALL或SYSRET;如果是则跳转到步骤(2.3a),否则跳转到步骤(2.3f);
所述步骤(2.3)具体包括:
(2.3a)读取CPU RAX寄存器中存储的系统调用号,通过系统调用号判断当前系统调用是否为文件或网络相关的系统调用,如果是则跳转到步骤(2.3b),否则跳转到步骤(2.2b);
(2.3b)通过系统调用号判断当前系统调用是否是与网络相关的系统调用,如果是,则通过解析当前系统调用的参数得到网络系统调用信息,跳转到(2.3d);否则跳转到步骤(2.3c);
(2.3c)通过解析当前系统调用的参数得到当前文件操作的文件系统调用相关信息,跳转到步骤(2.3d);
(2.3d)获取当前进程的上下文信息;
(2.3e)将当前截取到的信息按照特定的格式进行格式化;
(2.3f)模拟当前指令;
(2.3g)将控制权返还给虚拟机,向Detector模块发送格式化监控信息,如果产生新的系统调用,跳转到步骤(2.2b),否则跳转到步骤(2.4a);
所述步骤(2.4)具体包括:
(2.4a)利用开源工具libvirt获取虚拟机中CPU寄存器的值;
(2.4b)向Detector模块实时发送寄存器值信息;
所述步骤(2.5)具体包括:
(2.5a)接受由Monitor模块发送来的监控信息;
(2.5b)判断当前监控信息中的操作类型是否是文件相关的,如果是文件相关的,则跳转到步骤(2.5c),否则跳转到步骤(2.5e);
(2.5c)判断当前被访问的文件是否是用户文件,如果是,将监控信息添加到当前被访问文件所对应的文件操作队列中,跳转到步骤(2.5d);否则跳转到步骤(2.5a);
(2.5d)判断文件操作队列中的读写操作是否匹配挖矿软件的文件读写字符串序列,如果匹配,将变量file match置为True,判定当前样本为恶意挖矿样本,向用户告警,停止检测过程;如果不匹配,跳转到步骤(2.5e);
(2.5e)将监控信息添加到网络操作队列中;
(2.5f)判断网络操作队列中的操作序列是否匹配挖矿软件的网络活动特征,如果匹配,将变量network_match置为True,判定当前样本为恶意挖矿样本,向用户告警,停止检测过程;如果不匹配,跳转到步骤(2.5g);
(2.5g)统计由monitor发送来的寄存器值信息,按照RAX、RBX、RCX、RDX、RSI、RSP、R8、R9、R10、R11、R12、R13、R14、R15寄存器值进行分类;
(2.5h)对每一个寄存器的值,按照时间顺序排成序列,对序列中的寄存器值按n个分为一组,对每一组寄存器值序列计算其离散系数,并取平均值;
(2.5i)以在挖矿软件运行时CPU各寄存器值的离散程度设定的阈值为界限,如果步骤(2.5h)获得的寄存器值的离散程度平均值大于等于阈值,则判定该样本为挖矿软件,否则判定不是挖矿软件。
2.根据权利要求1所述的一种恶意挖矿软件的检测方法,其特征在于,步骤(1.1)具体包括:
(1.1a)启动虚拟机自省系统,开启虚拟机;
(1.1b)在虚拟机中运行已知恶意挖矿样本;
步骤(1.2)具体包括:
(1.2a)将CPU EFER寄存器的SCE标志位清零;
(1.2b)虚拟机中产生无效操作码异常,陷入hypervisor中;
(1.2c)判断当前指令是否为SYSCALL或SYSRET;如果是则跳转到步骤(1.3a),否则跳转到步骤(1.3f);
步骤(1.3)具体包括
(1.3a)读取CPU RAX寄存器中存储的系统调用号,通过系统调用号判断当前系统调用是否为文件或网络相关的系统调用,如果是则跳转到步骤(1.3b),否则跳转到步骤(1.2b);
(1.3b)通过系统调用号判断当前系统调用是否是与网络相关的系统调用,如果是,则通过解析当前系统调用的参数得到网络系统调用信息,跳转到(1.3d);否则跳转到步骤(1.3c);
(1.3c)通过解析当前系统调用的参数得到当前文件操作的文件系统调用相关信息,跳转到步骤(1.3d);
(1.3d)获取当前进程的上下文信息;
(1.3e)将当前截取到的信息按照特定的格式进行格式化;
(1.3f)模拟当前指令;
(1.3g)将控制权返还给虚拟机,向Detector模块发送格式化监控信息,如果产生新的系统调用,跳转到步骤(1.2b),否则跳转到步骤(1.4a);
步骤(1.4)具体包括:
(1.4a)利用开源工具libvirt获取虚拟机中CPU寄存器的值;
(1.4b)向Detector模块实时发送寄存器值信息。
3.根据权利要求1所述的一种恶意挖矿软件的检测方法,其特征在于,
步骤(1.5)具体包括:
(1.5a)在虚拟机中运行已知挖矿软件;
(1.5b)利用Monitor得到虚拟机监控日志,从中确定和挖矿软件样本同名进程ID;
(1.5c)根据当前进程ID查找到该进程的所有子孙进程,即挖矿软件相关的所有进程;
(1.5d)遍历监控日志中挖矿软件及其子进程的操作,包含文件操作和网络操作;
(1.5e)如果是文件操作则跳转到(1.5f),如果是网络操作,跳转到(1.5h);
(1.5f)对于产生的文件操作,获取文件名,如果挖矿软件及其子进程此前没有产生过对该文件的操作,则建立以此文件名命名的序列,并把文件操作加入到文件名序列中,如果有文件读写操作,同时记录文件读写的内容;如果已经有该文件名序列,直接把文件操作加入到文件名序列当中;然后跳转到步骤(1.5d)继续遍历监控日志,直到挖矿软件及其子进程没有文件操作产生,然后跳转至步骤(1.5g);
(1.5g)在遍历监控日志中挖矿软件及其子进程的操作之后,根据挖矿软件对文件操作的读写内容一致的特点,提取出挖矿软件读取文件读写字符串序列,跳转到步骤(1.5j);
(1.5h)对于产生的网络操作,加入到网络操作序列中,然后跳转到步骤(1.5d)继续遍历监控日志,直到挖矿软件及其子进程没有网络操作产生,然后跳转至步骤(1.5i);
(1.5i)在遍历监控中挖矿软件网络相关的操作序列之后,提取网络日志中挖矿软件的网络操作模式,跳转到步骤(1.5j);
(1.5j)计算寄存器值的离散程度规律,给各寄存器值的离散程度设定阈值。
CN202010193279.5A 2020-03-18 2020-03-18 一种恶意挖矿软件的检测方法 Active CN111428239B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010193279.5A CN111428239B (zh) 2020-03-18 2020-03-18 一种恶意挖矿软件的检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010193279.5A CN111428239B (zh) 2020-03-18 2020-03-18 一种恶意挖矿软件的检测方法

Publications (2)

Publication Number Publication Date
CN111428239A CN111428239A (zh) 2020-07-17
CN111428239B true CN111428239B (zh) 2023-05-23

Family

ID=71548079

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010193279.5A Active CN111428239B (zh) 2020-03-18 2020-03-18 一种恶意挖矿软件的检测方法

Country Status (1)

Country Link
CN (1) CN111428239B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949983A (zh) * 2020-08-13 2020-11-17 北京小佑科技有限公司 一种容器内挖矿行为的检测方法
CN112052053B (zh) * 2020-10-10 2023-12-19 国科晋云技术有限公司 一种清理高性能计算集群中挖矿程序的方法及系统
CN113268733B (zh) * 2021-04-22 2022-05-03 中国科学院信息工程研究所 一种基于神经网络的容器挖矿异常检测方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109347806A (zh) * 2018-09-20 2019-02-15 天津大学 一种基于主机监控技术的挖矿恶意软件检测系统及方法
CN110619217A (zh) * 2019-09-18 2019-12-27 杭州安恒信息技术股份有限公司 恶意挖矿程序主动防御的方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829829A (zh) * 2018-06-15 2018-11-16 深信服科技股份有限公司 检测虚拟货币挖矿程序的方法、系统、装置及存储介质
CN109409089B (zh) * 2018-09-28 2021-11-23 西安电子科技大学 一种基于虚拟机自省的Windows加密型勒索软件检测方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109347806A (zh) * 2018-09-20 2019-02-15 天津大学 一种基于主机监控技术的挖矿恶意软件检测系统及方法
CN110619217A (zh) * 2019-09-18 2019-12-27 杭州安恒信息技术股份有限公司 恶意挖矿程序主动防御的方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Secure and Efficient In-Hypervisor Memory Introspection Using Nested Virtualization;Weiwen Tang等;《2018 IEEE Symposium on Service-Oriented System Engineering(S0SE) 》;全文 *
网页恶意挖矿行为的检测及防范;秦玉海等;网络安全技术与应用(第12期);全文 *

Also Published As

Publication number Publication date
CN111428239A (zh) 2020-07-17

Similar Documents

Publication Publication Date Title
CN106850582B (zh) 一种基于指令监控的apt高级威胁检测方法
Corona et al. Lux0r: Detection of malicious pdf-embedded javascript code through discriminant analysis of api references
Moser et al. Exploring multiple execution paths for malware analysis
CN111428239B (zh) 一种恶意挖矿软件的检测方法
Zolkipli et al. A framework for malware detection using combination technique and signature generation
CN1328638C (zh) Windows环境下的主机入侵检测方法
CN109409089B (zh) 一种基于虚拟机自省的Windows加密型勒索软件检测方法
Shan et al. Growing grapes in your computer to defend against malware
Sheen et al. Ransomware detection by mining API call usage
Medhat et al. A new static-based framework for ransomware detection
Aurangzeb et al. On the classification of Microsoft-Windows ransomware using hardware profile
Alrawi et al. Forecasting malware capabilities from cyber attack memory images
Fleck et al. Pytrigger: A system to trigger & extract user-activated malware behavior
AlSabeh et al. Exploiting ransomware paranoia for execution prevention
Salehi et al. Detecting malicious applications using system services request behavior
Najari et al. Malware detection using data mining techniques
Chandrasekaran et al. Spycon: Emulating user activities to detect evasive spyware
Mei et al. CTScopy: hunting cyber threats within enterprise via provenance graph-based analysis
Pék et al. Membrane: a posteriori detection of malicious code loading by memory paging analysis
Shi et al. Detecting environment-sensitive malware based on taint analysis
CN111414616B (zh) Sgx恶意软件检测方法及系统
Asmitha et al. Linux malware detection using eXtended–symmetric uncertainty
Jawhar A Survey on Malware Attacks Analysis and Detected
Wang et al. MrKIP: Rootkit Recognition with Kernel Function Invocation Pattern.
Rashmitha et al. Malware analysis and detection using reverse Engineering

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant