一种检测挖矿虚拟货币的方法、设备及存储介质与流程

文档序号:22041644发布日期:2020-08-28 18:11阅读:3167来源:国知局
一种检测挖矿虚拟货币的方法、设备及存储介质与流程

本发明涉及虚拟货币挖矿检测领域,特别涉及一种检测挖矿虚拟货币的方法、设备及存储介质。



背景技术:

随着虚加密货币价格增长,挖矿已经成为了网络黑产团伙在入侵服务器之后最直接的变现手段。网络中出现大量挖矿木马、蠕虫入侵服务器,盗取服务器资源进行挖矿活动。怎么能精准快速发现网络中存在的挖矿行为,成为网络运营人员非常重要的一个工作。

挖矿一般采用stratum、getwork、getblocktemplate协议,目前的方案主要是采用特征签名的方式,识别出挖矿协议。比如利用ips基于签名的匹配技术识别出挖矿行为,判断应用程序是否访问了虚拟货币矿池相关的域名,导致目前的挖矿方式存在以下缺陷:

1、攻击者为了逃避基于特征签名技术的检测方法,在挖矿协议通信过中加入混淆技术,导致基于签名的检测技术无效,甚至很多攻击已经开始利用https加密挖矿通信流量,目前的检测方案无法检测出利用https加密的挖矿行为。

2、只判断应用虚拟货币矿池节点域名会存在大量的误报,比如一般虚拟货币矿池域名80端口用来提供http网站服务,但是3333、443等端口用来提供挖矿服务。当用户去查看相关网站或者访问到相关网站的广告链接时,都会错误检测。

3、现有方案基于全域名匹配,虚拟货币矿池提供商扩充节点的时候会变化域名前缀,基于全域名检测系统无法检测这种情况。

4、攻击者自己部署虚拟货币矿池节点,不对外公布矿池节点域名或者直接通过ip进行访问,基于域名检测系统无法检测这种情况。

因而现有技术还有待改进和提高。



技术实现要素:

鉴于上述现有技术的不足之处,本发明的目的在于提供一种检测挖矿虚拟货币的方法、设备及存储介质,可准确无误的检测出挖矿行为,避免误报。

为了达到上述目的,本发明采取了以下技术方案:

一方面,本发明提供了一种检测挖矿虚拟货币的方法,包括如下步骤:

s1、获取若干个虚拟货币矿池的挖矿地址,以形成一虚拟货币矿池情报库;

s2、使用卷积神经网络对所述虚拟货币矿池情报库中的所有矿池域名进行训练,生成虚拟货币矿池域名ai检测模型;

s3、获取采集的dns请求中的dns元数据以及netflow流信息,将所述dns元数据中请求的域名与虚拟货币矿池情报库进行域名匹配,并在匹配成功时,将请求的域名对应的ip地址以及请求的域名在虚拟货币矿池情报库中对应的端口与netflow流信息进行比较,以判断出是否存在挖矿行为;

s4、当域名匹配不成功时,利用所述ai检测模型对所述请求的域名进行检测;

s5、当检测出所述请求的域名为高可疑矿池域名时,利用预设的矿池服务探测组件进行服务扫描,并将扫描获取的端口以及请求的域名对应的ip地址与netflow流信息进行比较,以判断出是否存在挖矿行为。

优选的,所述的检测挖矿虚拟货币的方法中,所述步骤s3具体包括:

s31、获取采集的nds请求中的dns元数据以及netflow流信息;

s32、将所述dns元数据中请求的域名的全域名与虚拟货币矿池情报库进行全域名匹配,如果匹配成功,则将请求的域名对应的ip地址以及请求的域名在虚拟货币矿池情报库中对应的端口与netflow流信息进行比较,以判断出是否存在挖矿行为;

s33、当全域名匹配不成功时,将所述dns元数据中请求的域名的一级域名和二级域名与虚拟货币矿池情报库进行分级域名匹配,如果匹配成功,则将请求的域名对应的ip地址以及请求的域名在虚拟货币矿池情报库中对应的端口与netflow流信息进行比较,以判断出是否存在挖矿行为。

优选的,所述的检测挖矿虚拟货币的方法中,所述步骤s32和步骤s33中,判断是否存在挖矿行为的方法为:

当netflow流信息中的目的ip地址等于所述请求的域名对应的ip地址,且所述netflow流信息中的目的端口等于所述请求的域名在虚拟货币矿池情报库中对应的端口时,判断存在挖矿行为;否则判断不存在挖矿行为。

优选的,所述的检测挖矿虚拟货币的方法中,所述步骤s5具体包括:

当检测出所述请求的域名为高可疑矿池域名时,利用预设的矿池服务探测组件根据挖矿协议探测域名服务器是否开启了矿池服务,并通过构造挖矿订阅请求进行服务扫描,如果判断所述域名服务器开启了矿池服务,则将服务扫描获取的端口以及请求的域名对应的ip地址与netflow流信息进行比较,以判断出是否存在挖矿行为。

优选的,所述的检测挖矿虚拟货币的方法中,所述挖矿协议至少包括stratum协议、getwork协议、getblocktemplate协议中的一种或多种。

优选的,所述的检测挖矿虚拟货币的方法中,所述步骤s5中,判断是否存在挖矿行为的方法为:

当服务扫描获取的端口等于netflow流信息中的目的端口,且所述请求的域名对应的ip地址等于netflow流信息中的目的ip地址时,判断存在挖矿行为;否则判断不存在挖矿行为。

优选的,所述的检测挖矿虚拟货币的方法中,所述步骤s2之后还包括:

获取访问请求输入的ip地址,根据预设的流量行为分析规则对netflow流信息进行分析打分,当打分值超过预设值时,利用预设的矿池服务探测组件进行服务扫描,并将扫描获取的端口以及所述输入的的ip地址与netflow流信息进行比较,以判断出是否存在挖矿行为。

优选的,所述的检测挖矿虚拟货币的方法中,所述流量行为分析规则具体为:

设置初始得分为0,当响应报文tcp头部90%以上都有psh+ack标志位时,得到加3;当请求报文的长度都是在50-70字节之间时,得分加2;当响应报文的长度都是在400-600字节之间时,得分加2;当情报报文的间隔都是在30秒以上时,得到加3。

另一方面,本发明还提供了一种检测挖矿虚拟货币的设备,包括处理器和存储器,

所述存储器上存储有可被所述处理器执行的计算机可读程序;

所述处理器执行所述计算机可读程序时实现如上所述的检测挖矿虚拟货币的方法中的步骤。

又一方面,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上所述的检测挖矿虚拟货币的方法中的步骤。

相较于现有技术,本发明具有以下有益效果:

1、能检测通过加密流量进行挖矿的行为;

2、结合虚拟货币矿池域名和服务端口,达到100%精确检测,不存在误报;

3、基于全域名匹配和二级域名匹配方式,能够对于虚拟货币矿池提供商扩充节点进行有效检测;

4、利用ai技术能够检测没有被收集到的虚拟货币矿池节点,减少漏检测;

5、利用流量行为分析规则,可以不基于域名进行检测,直接通过流量行为就能识别可疑流量,对于直接通过ip访问虚拟货币矿池服务节点也能有效检测。

附图说明

图1为本发明提供的检测挖矿行为虚拟货币的方法的一较佳实施例的流程图;

图2为本发明提供的检测挖矿行为虚拟货币的方法中,所述步骤s3的一较佳实施例的流程图;

图3为本发明检测挖矿行为虚拟货币的程序的较佳实施例的运行环境示意图;

图4为本发明安装检测挖矿行为虚拟货币的程序的系统较佳实施例的功能模块图。

具体实施方式

本发明提供一种检测挖矿虚拟货币的方法、设备及存储介质,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

请参阅图1,本发明提供的检测挖矿虚拟货币的方法,包括如下步骤:

s1、获取若干个虚拟货币矿池的挖矿地址,以形成一虚拟货币矿池情报库。

具体来说,,所述挖矿地址至少包括挖矿协议、传输层协议、矿池域名和矿池端口;所有的矿池服务的提供商都会把挖矿地址公布给使用者,所以可直接通过查询收集到所有的虚拟货币矿池的挖矿地址,例如网址为www.f2pool.com的网站就提供了各种加密货币的挖矿地址,挖矿地址根据虚拟货币的不同而不同,例如btc-比特币的挖矿地址为stratum+tcp://dash.f2pool.com:5588,xmr-门罗币的挖矿地址为:stratum+tcp://xmr.f2pool.com:13531,ltc-莱特币的挖矿地址为stratum+tcp://ltc.f2pool.com:8888;当搜集到这些虚拟货币矿池的挖矿地址后,即可形成一个虚拟货币矿池情报库,其中,必须收集提供服务的端口,包括利用的挖矿协议、传输层协议、矿池域名和矿池端口,矿池端口就是挖矿服务的监听端口,如果流量连接矿池域名和矿池端口,就能精准判定为挖矿行为。

s2、使用卷积神经网络对所述虚拟货币矿池情报库中的所有矿池域名进行训练,生成虚拟货币矿池域名ai检测模型。

具体来说,经过收集和研究发现,矿池域名都有比较明显的特征,一般都带有虚拟货币类型的命如ltc,eth,xmr,ethereum,并且同时有pool关键字等其它特征,所以使用卷积神经网络(cnn)可以对矿池域名进行有效训练,生成虚拟货币矿池域名ai检测模型,可以利用该检测模型检测出高可疑的矿池域名,而且利用ai技术能够检测没有被收集到的虚拟货币矿池节点,减少漏检测。

s3、获取采集的dns请求中的dns元数据以及netflow流信息,将所述dns元数据中请求的域名与虚拟货币矿池情报库进行域名匹配,并在匹配成功时,将请求的域名对应的ip地址以及请求的域名在虚拟货币矿池情报库中对应的端口与netflow流信息进行比较,以判断出是否存在挖矿行为。

具体的,当有终端向服务器发起访问请求时,获取请求中的dns元数据以及netflow流信息,其中,所述dns元数据包括请求时间、源ip、目的ip、源端口、目的端口、传输层协议、查询内容、请求的域名、响应内容、响应域名以及a类型响应数据,所述netflow流信息包括请求时间、源ip、目的ip、源端口、目的端口、传输层协议、发送报序列及报文大小、发送报文时间间隔以及接收报文序列及报文大小。在获取了请求的域名后,可通过查询得到请求的域名对应的ip地址,然后进行域名匹配,如果匹配成功,则可在虚拟货币矿池情报库中找出请求的域名对应的端口,然后将请求的域名及其对应的ip地址与netflow流信息中的目的ip和目的端口进行比较,进而判断出是否存在挖矿行为,本发明结合虚拟货币矿池域名和服务端口进行挖矿检测,可以100%准确的判断出是否存在挖矿行为,此外,为了避免出现虚拟货币矿池提供商扩充节点导致变化域名前缀,最终出现无法检测的情况,本发明提供了两种域名匹配的方式,具体的,请参阅图2,所述步骤s3具体包括:

s31、获取采集的nds请求中的dns元数据以及netflow流信息;

s32、将所述dns元数据中请求的域名的全域名与虚拟货币矿池情报库进行全域名匹配,如果匹配成功,则将请求的域名对应的ip地址以及请求的域名在虚拟货币矿池情报库中对应的端口与netflow流信息进行比较,以判断出是否存在挖矿行为;

s33、当全域名匹配不成功时,将所述dns元数据中请求的域名的一级域名和二级域名与虚拟货币矿池情报库进行分级域名匹配,如果匹配成功,则将请求的域名对应的ip地址以及请求的域名在虚拟货币矿池情报库中对应的端口与netflow流信息进行比较,以判断出是否存在挖矿行为。

具体来说,在进行全域名匹配时,利用全域名匹配虚拟货币矿池情报库,如果查询成功,记录请求的域名对应的ip地址为ip1,虚拟货币矿池情报库中域名对应的端口为port1,如果全域名未匹配成功,用一级和二级域名匹配虚拟货币矿池情报库,如果匹配成功,记录域名对应的ip地址为ip1,虚拟货币矿池情报库中域名对应的端口为port1,在进行挖矿行为判断时,将ip1与netflow流信息中的目的ip进行比较,将port1与netflow流信息中的目的端口进行比较,进而判断出是否存在挖矿行为,且该检测手段不会存在误报情况。具体的,所述步骤s32和步骤s33中,判断是否存在挖矿行为的方法为:

当netflow流信息中的目的ip地址等于所述请求的域名对应的ip地址,且所述netflow流信息中的目的端口等于所述请求的域名在虚拟货币矿池情报库中对应的端口时,判断存在挖矿行为;否则判断不存在挖矿行为。

s4、当域名匹配不成功时,利用所述ai检测模型对所述请求的域名进行检测。

具体的,当全域名匹配和分级域名匹配都不成功时,则把请求的域名送入矿池域名ai检测模型中进行匹配,模型匹配有两种输出结果,一种为高可疑矿池域名,另一种为不是矿池域名。利用ai技术能够检测没有被收集到的虚拟货币矿池节点,减少漏检测。

s5、当检测出所述请求的域名为高可疑矿池域名时,利用预设的矿池服务探测组件进行服务扫描,并将扫描获取的端口以及请求的域名对应的ip地址与netflow流信息进行比较,以判断出是否存在挖矿行为。

具体的,由于ai检测模型输出的高可疑域名可能会存在误报情况,为了降低检测系统的误报行为,本发明预设有矿池服务探测组件来进行服务扫描,通过对扫描获取的端口和域名对应的ip地址对netflow流信息进行分析,进而判断出是否存在挖矿行为。具体的,所述步骤s5具体包括:

当检测出所述请求的域名为高可疑矿池域名时,利用预设的矿池服务探测组件根据挖矿协议探测域名服务器是否开启了矿池服务,并通过构造挖矿订阅请求进行服务扫描,如果判断所述域名服务器开启了矿池服务,则将服务扫描获取的端口以及请求的域名对应的ip地址与netflow流信息进行比较,以判断出是否存在挖矿行为。

具体来说,所述挖矿协议至少包括stratum协议、getwork协议、getblocktemplate协议中的一种或多种。矿池服务探测组件会利用stratum协议、getwork协议、getblocktemplate协议探测域名服务器是否开启了矿池服务,通过构造挖矿订阅请求进行服务扫描,如果探测成功,利用通过服务扫描获取的端口port2和域名对应的ip2对netflow流信息进行分析,以判断出是否存在挖矿行为。本发明通过构件矿池服务扫描组件,确定主机或者端口是否存在矿池服务,避免出现误报情况。具体的,所述步骤s5中,判断是否存在挖矿行为的方法为:

当服务扫描获取的端口等于netflow流信息中的目的端口,且所述请求的域名对应的ip地址等于netflow流信息中的目的ip地址时,判断存在挖矿行为;否则判断不存在挖矿行为。

本发明通过利用域名加端口检测方式,可以检测出加密的挖矿行为,而且检测结果精确,不存在误报,同时还能够对于虚拟货币矿池提供商扩充节点进行有效检测,还能避免出现漏检测的情况。

进一步来说,为了避免直接通过ip进行访问挖矿时,基于域名检测系统无法检测,本发明还可通过流量进行挖矿行为检测,具体的,在所述步骤s2之后,所述检测挖矿虚拟货币的方法还包括:

获取访问请求输入的ip地址,根据预设的流量行为分析规则对netflow流信息进行分析打分,当打分值超过预设值时,利用预设的矿池服务探测组件进行服务扫描,并将扫描获取的端口以及所述输入的的ip地址与netflow流信息进行比较,以判断出是否存在挖矿行为。

具体来说,通过对大量的流量进行分析、统计,发现挖矿客户端跟服务端交互的网络流量有明显的特征,比如响应的报文tcp头部都有psh+ack标志位,请求的报文长度都在50-70字节之间,响应报文都在400-600之间,每次同步数据间隔比较固定,跟心跳报文一样,所以可基于此构建一流量行为分析规则,对netflow流信息进行分析打分,如果打分值超过预设值时则认为异常,此时再利用矿池服务探测组件进行服务扫描判断出是否存在挖矿行为。本实施例中,所述预设值为8,所述流量行为分析规则具体为:

设置初始得分为0,当响应报文tcp头部90%以上都有psh+ack标志位时,得到加3;当请求报文的长度都是在50-70字节之间时,得分加2;当响应报文的长度都是在400-600字节之间时,得分加2;当情报报文的间隔都是在30秒以上时,得到加3。

本发明通过设置流量行为分析规则,可以不基于域名进行检测,直接通过流量行为就能识别可以流量,对于直接通过ip访问虚拟货币矿池服务节点的行为也能有效检测。

为了更好的理解本发明,以下结合门罗币挖矿检测对本发明的技术方案作具体说明:

首先下载挖矿软件,并设置挖矿地址为xmr.viabtc.com:8888,挖矿之前,会通过dns请求矿池域名对应的的ip地址,例如获取的ip地址为120.78.243.113,然后提取到ip,把矿池域名xmr.viabtc.com、矿池ip120.78.243.113、矿池端口8888关联起来。开始挖矿后,挖矿软件会连接挖矿地址和矿池端口。通过检测网络流量的协议、目的ip、目的端口是否为矿池协议、矿池ip、矿池端口就能检测出挖矿行为。

如图3所示,基于上述检测挖矿虚拟货币的方法,本发明还相应提供了一种检测挖矿虚拟货币的设备,所述检测挖矿虚拟货币的设备可以是移动终端、桌上型计算机、笔记本、掌上电脑及服务器等计算设备。该检测挖矿虚拟货币的设备包括处理器10、存储器20及显示器30。图3仅示出了检测挖矿虚拟货币的设备的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

所述存储器20在一些实施例中可以是所述检测挖矿虚拟货币的设备的内部存储单元,例如检测挖矿虚拟货币的设备的硬盘或内存。所述存储器20在另一些实施例中也可以是所述检测挖矿虚拟货币的设备的外部存储设备,例如所述检测挖矿虚拟货币的设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器20还可以既包括检测挖矿虚拟货币的设备的内部存储单元也包括外部存储设备。所述存储器20用于存储安装于所述检测挖矿虚拟货币的设备的应用软件及各类数据,例如所述安装检测挖矿虚拟货币的设备的程序代码等。所述存储器20还可以用于暂时地存储已经输出或者将要输出的数据。在一实施例中,存储器20上存储有检测挖矿虚拟货币的程序40,该检测挖矿虚拟货币的程序40可被处理器10所执行,从而实现本申请各实施例的检测挖矿虚拟货币的方法。

所述处理器10在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其他数据处理芯片,用于运行所述存储器20中存储的程序代码或处理数据,例如执行所述检测挖矿虚拟货币的方法等。

所述显示器30在一些实施例中可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。所述显示器30用于显示在所述检测挖矿虚拟货币的设备的信息以及用于显示可视化的用户界面。所述检测挖矿虚拟货币的设备的部件10-30通过系统总线相互通信。

在一实施例中,当处理器10执行所述存储器20中检测挖矿虚拟货币的程序40时实现如上述实施例所述的检测挖矿虚拟货币的方法,由于上文已对检测挖矿虚拟货币的方法进行详细描述,在此不再赘述。

请参阅图4,其为本发明安装检测挖矿虚拟货币的程序的系统较佳实施例的功能模块图。在本实施例中,安装检测挖矿虚拟货币的程序的系统可以被分割成一个或多个模块,所述一个或者多个模块被存储于所述存储器20中,并由一个或多个处理器(本实施例为所述处理器10)所执行,以完成本发明。例如,在图4中,安装检测挖矿虚拟货币的程序的系统可以被分割成情报库建立模块21、ai检测模型生成模块22、域名匹配模块23、ai检测模块24以及服务扫描模块25。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述检测挖矿虚拟货币的程序在所述检测挖矿虚拟货币的设备中的执行过程。以下描述将具体介绍所述模块21-25的功能。

情报库建立模块21,用于获取若干个虚拟货币矿池的挖矿地址,以形成一虚拟货币矿池情报库;

ai检测模型生成模块22,用于使用卷积神经网络对所述虚拟货币矿池情报库中的所有矿池域名进行训练,生成虚拟货币矿池域名ai检测模型;

域名匹配模块23,用于获取采集的dns请求中的dns元数据以及netflow流信息,将所述dns元数据中请求的域名与虚拟货币矿池情报库进行域名匹配,并在匹配成功时,将请求的域名对应的ip地址以及请求的域名在虚拟货币矿池情报库中对应的端口与netflow流信息进行比较,以判断出是否存在挖矿行为;

ai检测模块24,用于当域名匹配不成功时,利用所述ai检测模型对所述请求的域名进行检测;

服务扫描模块25,用于当检测出所述请求的域名为高可疑矿池域名时,利用预设的矿池服务探测组件进行服务扫描,并将扫描获取的端口以及请求的域名对应的ip地址与netflow流信息进行比较,以判断出是否存在挖矿行为。

进一步的,所述域名匹配模块23具体用于:

获取采集的nds请求中的dns元数据以及netflow流信息;

将所述dns元数据中请求的域名的全域名与虚拟货币矿池情报库进行全域名匹配,如果匹配成功,则将请求的域名对应的ip地址以及请求的域名在虚拟货币矿池情报库中对应的端口与netflow流信息进行比较,以判断出是否存在挖矿行为;

当全域名匹配不成功时,将所述dns元数据中请求的域名的一级域名和二级域名与虚拟货币矿池情报库进行分级域名匹配,如果匹配成功,则将请求的域名对应的ip地址以及请求的域名在虚拟货币矿池情报库中对应的端口与netflow流信息进行比较,以判断出是否存在挖矿行为。

进一步的,所述域名匹配模块23判断是否存在挖矿行为的方法为:

当netflow流信息中的目的ip地址等于所述请求的域名对应的ip地址,且所述netflow流信息中的目的端口等于所述请求的域名在虚拟货币矿池情报库中对应的端口时,判断存在挖矿行为;否则判断不存在挖矿行为。

进一步的,服务扫描模块25具体用于:

当检测出所述请求的域名为高可疑矿池域名时,利用预设的矿池服务探测组件根据挖矿协议探测域名服务器是否开启了矿池服务,并通过构造挖矿订阅请求进行服务扫描,如果判断所述域名服务器开启了矿池服务,则将服务扫描获取的端口以及请求的域名对应的ip地址与netflow流信息进行比较,以判断出是否存在挖矿行为。

进一步的,所述挖矿协议至少包括stratum协议、getwork协议、getblocktemplate协议中的一种或多种。

进一步的,服务扫描模块25判断是否存在挖矿行为的方法为:

当服务扫描获取的端口等于netflow流信息中的目的端口,且所述请求的域名对应的ip地址等于netflow流信息中的目的ip地址时,判断存在挖矿行为;否则判断不存在挖矿行为。

进一步的,安装检测挖矿虚拟货币的程序的系统还包括:

流量分析模块,用于获取访问请求输入的ip地址,根据预设的流量行为分析规则对netflow流信息进行分析打分,当打分值超过预设值时,利用预设的矿池服务探测组件进行服务扫描,并将扫描获取的端口以及所述输入的的ip地址与netflow流信息进行比较,以判断出是否存在挖矿行为。

进一步的,所述流量行为分析规则具体为:

设置初始得分为0,当响应报文tcp头部90%以上都有psh+ack标志位时,得到加3;当请求报文的长度都是在50-70字节之间时,得分加2;当响应报文的长度都是在400-600字节之间时,得分加2;当情报报文的间隔都是在30秒以上时,得到加3。

可以理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其发明构思加以等同替换或改变,而所有这些改变或替换都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1