挖矿行为检测方法和装置与流程

未命名 07-14 阅读:155 评论:0


1.本技术实施例涉及计算机领域,具体涉及一种挖矿行为检测方法和装置。


背景技术:

2.挖矿指的是消耗计算机资源进行运算,达到赚取数字加密货币目的的行为。其中,参与挖矿的计算机被称之为矿工,每个矿工所拥有的计算资源称之为算力。单个矿工的算力占全球所有矿工总算力的比值越高,矿工挖掘到加密货币的概率就越大。早期的时候,全球参与挖掘加密货币的矿工数量少,全球总算力低,单个矿工的算力占全球总算力的比值高,单个矿工足以挖掘到收益可观的加密货币。随着全球矿工数量和算力的不断提升,全球总算力提升,单个矿工挖掘到加密货币的概率降低,难以获得挖矿收益。矿池的出现解决了这个问题,多个低算力矿工通过网络连接到矿池,矿池将一个挖矿任务拆分成多个子任务,每个矿工负责一部分子任务,联合在一起完成一个完整的挖矿任务。最终单个矿工可根据对矿池的贡献,即完成子任务的数量来获得加密货币奖励。
3.恶意挖矿行为是指在非授权情况下使用计算机资源挖掘加密货币。由于加密货币的价值持续升高,攻击者利用受害者计算机进行恶意挖矿获取收益的方式逐渐流行。如前面所述,由于单个受害者计算机的算力低,无法获取收益,因此攻击者会将受害者计算机连接到矿池进行挖矿,以此获取收益。目前的一些挖矿行为检测方法需要人工介入且通用性差,针对一种加密货币的模型常常无法应用于其他加密货币。
4.因此,如何构建一个免人工运维、且通用性强的挖矿行为检测方法是一个亟待解决的技术问题。


技术实现要素:

5.本技术实施例提供一种挖矿行为检测方法和装置,能够免人工运维,覆盖多种挖矿场景,且可以保护用户隐私,通用性强。
6.第一方面,提供了一种挖矿行为检测方法,该方法包括:第一计算机设备获取数据包到达时间序列,所述数据包到达时间序列包括到来自于目标设备的至少一个数据包到达第二计算机设备的时间;所述第一计算机设备获取区块到达时间序列,所述区块到达时间序列包括至少一个挖矿任务到达挖矿设备的时间;所述第一计算机设备判断所述数据包到达时间序列和所述区块到达时间序列在时间上的近似程度;若所述近似程度大于或者等于预设的第一阈值,则确定所述目标设备为疑似挖矿设备。
7.应理解,第二计算机设备为待检测计算机设备中的任一个计算机设备,若确定所述目标设备为疑似挖矿设备,则认为第二计算机设备有疑似挖矿行为。
8.可选地,数据包到达时间可以是第二计算机设备接收到目标设备发来的数据包的时间,也可以是根据网络设备接收到目标设备发来的数据包的时间预测得到的数据包到达第二计算机设备的时间。网络设备可以是交换机或者路由器等。
9.可选地,可以指定数据包到达时间序列和区块到达时间序列中任意一个序列作为
基准序列,并指定该基准序列中时间的数量。
10.示例性地,可以将区块到达时间序列作为基准序列,若有至少一个数据包到达时间与区块到达时间的时间差值小于等于预设阈值时,则判定该区块到达时间被对齐。被对齐的区块到达时间的个数与区块到达时间序列中区块到达时间的总个数的比例为两个序列在时间上的近似程度。当该近似程度大于等于第一预设阈值时,判断该目标设备为疑似挖矿设备。
11.示例性地,区块到达时间序列包括10个区块到达时间,其中8个区块到达时间被对齐,则此时数据包到达时间序列和区块到达时间序列在时间上的近似程度为80%。若预设的第一阈值为70%,则此时近似程度大于预设的第一阈值,确定所述目标设备为疑似挖矿设备。
12.本技术实施例可以获取区块到达时间序列和数据包到达时间序列,并基于该区块到达时间序列和数据包到达时间序列,来判定目标设备是否为疑似挖矿设备。不仅不需要读取用户网络流量内容,可以做到隐私保护,而且通用性强,适用于所有的加密货币。
13.结合第一方面,在第一方面的某些实现方式中,所述第一计算机设备获取数据包到达时间序列,包括:所述第一计算机设备通过所述目标设备与所述第二计算机设备的单次网络连接获取所述数据包到达时间序列。
14.应理解,第一计算机设备获得的数据包到达时间序列可以是通过目标设备与第二计算机设备的一次网络连接获得的。
15.本技术实施例通过目标设备与第二计算机设备一次网络连接获得数据包到达序列,并基于区块到达时间序列和该数据包到达时间序列,来判定目标设备是否为疑似挖矿设备。不仅不需要读取用户网络流量内容,做到隐私保护,还可以提高判定的准确率,并且通用性强,适用于所有的加密货币。
16.结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述第一计算机设备获取最新区块的区块高度;若所述最新区块的区块高度大于当前的区块高度,则将当前系统时间添加至所述区块到达时间序列,得到更新后的区块到达时间序列,其中所述当前的区块高度为所述区块到达时间序列中最新时间所对应的区块高度;若所述最新区块的区块高度小于或者等于所述当前的区块高度,则所述第一计算机设备休眠指定时间后,重新获取所述最新区块的区块高度,并根据重新获取的最新区块的区块高度对所述区块到达时间序列进行更新。
17.可选地,第一计算机设备还可以获取最新区块的区块编号,通过判断最新区块的区块编号和当前的区块编号的大小来更新区块到达时间序列,其中所述当前的区块编号为区块到达时间序列中最新时间所对应的区块编号。
18.本技术实施例通过对比最新区块的区块高度和当前的区块高度来更新区块到达时间序列,并基于该区块到达时间序列和数据包到达时间序列,来判定目标设备是否为疑似挖矿设备。不仅不需要读取用户网络流量内容,可以做到隐私保护,而且通用性强,适用于所有的加密货币。
19.结合第一方面,在第一方面的某些实现方式中,所述第一计算机设备获取最新区块的区块高度,包括:所述第一计算机设备向区块链网络发送查询请求,所述查询请求用于查询所述区块链网络中所述最新区块的区块高度;所述第一计算机设备接收所述区块链网
络发送的第一返回请求,所述第一返回请求包括所述区块链网络中所述最新区块的区块高度。
20.本技术实施例可以主动利用公开可访问的区块链网络,获取最新区块的区块高度,并基于最新区块的区块高度更新区块到达时间序列。通过该区块到达时间序列和数据包到达时间序列,来判定目标设备是否为疑似挖矿设备。不仅不需要读取用户网络流量内容,可以做到隐私保护,而且通用性强,适用于所有的加密货币。
21.结合第一方面,在第一方面的某些实现方式中,在所述第一计算机设备获取最新区块的区块高度之前,所述方法还包括:所述第一计算机设备加入矿池;所述第一计算机设备获取最新区块的区块高度,包括:所述第一计算机设备接收所述矿池中的计算机设备发送的第一挖矿任务,所述第一挖矿任务包括所述最新区块的区块高度。
22.本技术实施例通过加入矿池来获取最新区块的区块高度,并基于最新区块的区块高度更新区块到达时间序列。通过该区块到达时间序列和数据包到达时间序列,来判定目标设备是否为疑似挖矿设备。不仅不需要读取用户网络流量内容,可以做到隐私保护,而且通用性强,适用于所有的加密货币。
23.结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述第一计算机设备向所述目标设备发送挖矿请求;所述第一计算机设备接收所述目标设备的第二返回请求;所述第一计算设备确定所述第二返回请求是否符合矿池协议的数据特征;若所述第二返回请求符合所述矿池协议的数据特征,则确定所述目标设备为所述挖矿设备;若所述第二返回请求不符合所述矿池协议的数据特征,则确定所述目标设备不是所述挖矿设备。
24.应理解,当通过数据包到达时间序列和区块到达时间序列在时间上的近似程度的方式判断目标设备为疑似挖矿设备后,还可以通过第二返回请求来对目标设备进行进一步的判断。
25.应理解,第一计算机设备首先与目标设备建立网络连接,并通过所述网络连接,向所述目标设备发送挖矿请求。
26.可选地,第一计算机设备可以使用传输控制协议(transmission control protocol,tcp)和传输层安全性协议/安全套接层(transport layer security/secure sockets layer,tls/ssl)协议中任意一种或两种方式与目标设备的网际协议(internet protocol,ip)地址和端口进行连接,如果连接成功,就会获得创建好的网络连接。应理解,可以进行多种方式的网络连接,有一个网络连接成功即可。
27.应理解,所述矿池协议为挖矿设备和矿池通信所使用的网络协议,例如stratum协议、getwork协议、getblocktemplate协议。
28.可选地,判断第二返回请求是否符合矿池协议的数据特征可以是基于模式匹配的方法,如支持正则表达式的字符串匹配。示例性的,hash*表示能够匹配上包含hash字符串的字符串。
29.可选地,判断第二返回请求是否符合矿池协议的数据特征还可以是基于统计学特征的识别方法,示例性的,可以通过协议中数据包的大小,字符出现频率,信息熵等信息来进行矿池协议的判断。
30.可选地,判断第二返回请求是否符合矿池协议的数据特征还可以是基于人工智能或机器学习的识别方法,示例性的,可以训练一个挖矿协议识别模型。
31.本技术实施例提供的挖矿行为检测方法无需人工介入,只需要与目标设备的ip地址和端口发起一次网络连接,就可以实现对单个ip地址和端口的秒级检测,自动识别目标设备是否为挖矿设备,不仅可以免人工运维,还可以保护数据隐私。
32.结合第一方面,在第一方面的某些实现方式中,所述第一计算设备确定所述第二返回请求是否符合矿池协议的数据特征,包括:确定所述第二返回请求携带的数据中是否包含所述矿池协议的关键字,所述矿池协议的关键字包括区块高度,挖矿任务,种子哈希。
33.示例性的,该矿池协议可以是stratum协议,若第二返回请求包含stratum协议的关键字,则确定所述目标设备为挖矿设备。
34.本技术实施例支持对tls/ssl加密流量的检测。由于挖矿请求是主动发起,主动发起方拥有解密tls/ssl加密流量的密钥,继而可以检测加密流量。相比于被动检测用户数据的隐私侵入方式,本技术实施例的挖矿请求是主动发起获取的,因此获取的数据不属于用户隐私。
35.本技术实施例提供的挖矿行为检测方法通过判断返回请求是否符合矿池协议的数据特征来确定目标设备是否为挖矿设备,不仅可以免人工运维,还可以保护数据隐私。
36.结合第一方面,在第一方面的某些实现方式中,所述第一计算设备确定所述第二返回请求是否符合矿池协议的数据特征还包括:确定所述第二返回请求的格式是否为文本格式,所述文本格式包括json格式、txt格式、yaml格式或者xml格式。
37.可选地,还可以判断第二返回请求是否为文本格式,若返回数据不仅包括矿池协议的关键字,而且是文本格式,如json格式、txt格式、yaml格式或者xml格式,则该ip地址和端口是挖矿地址的概率更大,目标设备是挖矿设备的概率也就更大。
38.由于矿池没有认证机制,任意软件都可以向矿池发起挖矿请求,矿池收到请求后会返回一个挖矿任务。本技术实施例可以主动向网络中的目标设备发送挖矿请求,如果目标设备返回了挖矿任务信息,那么就认定该目标设备为挖矿设备。
39.本技术实施例提供的挖矿行为检测方法通过判断返回请求是否符合矿池协议的数据特征和是否为特定格式来确定目标设备是否为挖矿设备,检测速度快且准确,不仅可以免人工运维,还可以保护数据隐私。
40.第二方面,提供了一种挖矿行为检测方法,该方法包括:第一计算机设备向目标设备发送挖矿请求;所述第一计算机设备接收所述目标设备的第一返回请求;所述第一计算设备确定所述第一返回请求是否符合矿池协议的数据特征;若所述第一返回请求符合所述矿池协议的数据特征,则确定所述目标设备为挖矿设备。
41.可选地,第一计算机设备可以使用tcp和tls/ssl协议中任意一种或两种方式与目标设备的ip地址和端口进行连接,如果连接成功,就会获得创建好的网络连接。应理解,可以进行多种方式的网络连接,有一个网络连接成功即可。
42.应理解,所述矿池协议为挖矿设备和矿池通信所使用的网络协议,例如stratum协议、getwork协议、getblocktemplate协议。
43.可选地,判断第一返回请求是否符合矿池协议特征可以是基于模式匹配的方法,如支持正则表达式的字符串匹配。示例性的,hash*表示能够匹配上包含hash字符串的字符串。
44.可选地,判断第一返回请求是否符合矿池协议特征还可以是基于统计学特征的识
别方法,示例性的,可以通过协议中数据包的大小,字符出现频率,信息熵等信息来进行矿池协议的判断。
45.可选地,判断第一返回请求是否符合矿池协议特征还可以是基于人工智能或机器学习的识别方法,示例性的,可以训练一个挖矿协议识别模型。
46.本技术实施例提供的挖矿行为检测方法无需人工介入,只需要与目标设备的ip地址和端口发起一次网络连接,就可以实现对单个ip地址和端口的秒级检测,自动识别目标设备是否为挖矿设备,不仅可以免人工运维,还可以保护数据隐私。
47.结合第二方面,在第二方面的某些实现方式中,所述第一计算设备确定所述第一返回请求是否符合矿池协议的数据特征,包括:确定所述第一返回请求携带的数据中是否包含所述矿池协议的关键字,所述矿池协议的关键字包括区块高度,挖矿任务,种子哈希。
48.示例性的,该矿池协议可以是stratum协议,若第一返回请求包含stratum协议的关键字,则确定所述目标设备为挖矿设备。
49.本技术实施例支持对tls/ssl加密流量的检测。由于挖矿请求是主动发起,主动发起方拥有解密tls/ssl加密流量的密钥,继而可以检测加密流量。相比于被动检测用户数据的隐私侵入方式,本技术实施例的挖矿请求是主动发起获取的,因此获取的数据不属于用户隐私。
50.本技术实施例提供的挖矿行为检测方法通过判断返回请求是否符合矿池协议的数据特征来判断目标设备是否为挖矿设备,不仅可以免人工运维,还可以保护数据隐私。
51.结合第二方面,在第二方面的某些实现方式中,所述第一计算设备确定所述第一返回请求是否符合矿池协议的数据特征还包括:确定所述第一返回请求的格式是否为文本格式,所述文本格式包括json格式、txt格式、yaml格式或者xml格式。
52.可选地,还可以判断第一返回请求是否为文本格式,若返回数据不仅包括stratum协议的关键字,而且是文本格式,如json格式、txt格式、yaml格式或者xml格式,则该ip地址和端口是挖矿地址的概率更大,目标设备是挖矿设备的概率也就更大。
53.由于矿池没有认证机制,任意软件都可以向矿池发起挖矿请求,矿池收到请求后会返回一个挖矿任务。本技术实施例可以主动向网络中的目标设备发送挖矿请求,如果目标设备返回了挖矿任务信息,那么就认定该目标设备为挖矿设备。
54.本技术实施例提供的挖矿行为检测方法通过判断返回请求是否符合矿池协议特征和是否为特定格式来判断目标设备是否为挖矿设备,检测速度快且准确,不仅可以免人工运维,还可以保护数据隐私。
55.结合第二方面,在第二方面的某些实现方式中,所述方法还包括:若所述第一返回请求不符合所述矿池协议的特征,所述第一计算机设备获取数据包到达时间序列,所述数据包到达时间序列包括来自于所述目标设备的至少一个数据包到达第二计算机设备的时间;所述第一计算机设备获取区块到达时间序列,所述区块到达时间序列包括至少一个挖矿任务到达所述挖矿设备的时间;所述第一计算机设备判断所述数据包到达时间序列和所述区块到达时间序列在时间上的近似程度;若所述近似程度大于或者等于预设的第一阈值,则确定所述目标设备为所述挖矿设备。
56.应理解,当第一返回请求不符合所述矿池协议的特征时,可以通过计算数据包到达时间序列和区块到达时间序列在时间上的近似程度的方式来对目标设备进行进一步的
判断。
57.应理解,第二计算机设备为待检测计算机设备中的其中任一个计算机设备,若确定所述目标设备为挖矿设备,则认为第二计算机设备有挖矿行为。
58.可选地,数据包到达时间可以是第二计算机设备接收到目标设备发来的数据包的时间,也可以是根据网络设备接收到目标设备发来的数据包的时间预测得到的数据包到达第二计算机设备的时间。网络设备可以是交换机或者路由器等。
59.可选地,可以指定数据包到达时间序列和区块到达时间序列中任意一个序列作为基准序列,并指定该基准序列中时间的数量。
60.示例性地,可以将区块到达时间序列作为基准序列,若有至少一个数据包到达时间与区块到达时间的时间差值小于等于预设阈值时,则判定该区块到达时间被对齐。被对齐的区块到达时间的个数与区块到达时间序列中区块到达时间的总个数的比例为两个序列在时间上的近似程度。当该近似程度大于等于第一预设阈值时,判断该网络连接与挖矿行为相关,即判定该网络连接的ip地址和端口为挖矿地址,该目标设备为挖矿设备。
61.示例性地,区块到达时间序列包括10个区块到达时间,其中8个区块到达时间被对齐,则此时数据包到达时间序列和区块到达时间序列在时间上的近似程度为80%。若预设的第一阈值为70%,则此时近似程度大于预设的第一阈值,确定所述目标设备为挖矿设备。
62.本技术实施例可以获取区块到达时间序列和数据包到达时间序列,并基于该区块到达时间序列和数据包到达时间序列,来判定目标设备是否为挖矿设备。不仅不需要读取用户网络流量内容,可以做到隐私保护,而且通用性强,适用于所有的加密货币。
63.结合第二方面,在第二方面的某些实现方式中,所述第一计算机设备获取数据包到达时间序列,包括:所述第一计算机设备通过所述目标设备与所述第二计算机设备的单次网络连接获取所述数据包到达时间序列。
64.应理解,第一计算机设备获得的数据包到达时间序列可以是通过目标设备与第二计算机设备的一次网络连接获得的。
65.本技术实施例通过目标设备与第二计算机设备一次网络连接获得数据包到达序列,并基于区块到达时间序列和该数据包到达时间序列,来判定目标设备是否为挖矿设备。不仅不需要读取用户网络流量内容,做到隐私保护,还可以提高判定的准确率,并且通用性强,适用于所有的加密货币。
66.结合第二方面,在第二方面的某些实现方式中,所述方法还包括:所述第一计算机设备获取最新区块的区块高度;若所述最新区块的区块高度大于当前的区块高度,则将当前系统时间添加至所述区块到达时间序列,得到更新后的区块到达时间序列,其中所述当前的区块高度为所述区块到达时间序列中最新时间所对应的区块高度;若所述最新区块的区块高度小于或者等于所述当前的区块高度,则所述第一计算机设备休眠指定时间后,重新获取所述最新区块的区块高度,并根据重新获取的最新区块的区块高度对所述区块到达时间序列进行更新。
67.可选地,第一计算机设备还可以获取最新区块的区块编号,通过判断最新区块的区块编号和当前的区块编号的大小来更新区块到达时间序列,其中所述当前的区块编号为区块到达时间序列中最新时间所对应的区块编号。
68.本技术实施例通过对比最新区块的区块高度和当前的区块高度来更新区块到达
时间序列,并基于该区块到达时间序列和数据包到达时间序列,来判定目标设备是否为挖矿设备。不仅不需要读取用户网络流量内容,可以做到隐私保护,而且通用性强,适用于所有的加密货币。
69.结合第二方面,在第二方面的某些实现方式中,所述第一计算机设备获取最新区块的区块高度,包括:所述第一计算机设备向区块链网络发送查询请求,所述查询请求用于查询所述区块链网络中所述最新区块的区块高度;所述第一计算机设备接收所述区块链网络发送的第二返回请求,所述第二返回请求包括所述区块链网络中所述最新区块的区块高度。
70.本技术实施例可以主动利用公开可访问的区块链网络,获取最新区块的区块高度,并基于最新区块的区块高度更新区块到达时间序列。通过该区块到达时间序列和数据包到达时间序列,来判定目标设备是否为挖矿设备。不仅不需要读取用户网络流量内容,可以做到隐私保护,而且通用性强,适用于所有的加密货币。
71.结合第二方面,在第二方面的某些实现方式中,在所述第一计算机设备获取最新区块的区块高度之前,所述方法还包括:所述第一计算机设备加入矿池;所述第一计算机设备获取最新区块的区块高度,包括:所述第一计算机设备接收所述矿池中的计算机设备发送的第一挖矿任务,所述第一挖矿任务包括所述最新区块的区块高度。
72.本技术实施例通过加入矿池来获取最新区块的区块高度,并基于最新区块的区块高度更新区块到达时间序列。通过该区块到达时间序列和数据包到达时间序列,来判定目标设备是否为挖矿设备。不仅不需要读取用户网络流量内容,可以做到隐私保护,而且通用性强,适用于所有的加密货币。
73.第三方面,本技术实施例提供一种计算机装置,该计算机装置包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。
74.第四方面,本技术实施例提供一种计算机装置,该计算机装置包括用于实现第二方面或第二方面的任一种可能的实现方式的单元。
75.第五方面,本技术实施例提供一种计算机装置,该计算机装置包括处理器,该处理器用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行第一方面或第一方面的任一种可能的实现方式。
76.第六方面,本技术实施例提供一种计算机装置,该计算机装置包括处理器,该处理器用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行第二方面或第二方面的任一种可能的实现方式。
77.第七方面,本技术实施例提供一种芯片系统,该芯片系统包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第一方面或第一方面任一种可能的实现方式。
78.第八方面,本技术实施例提供一种芯片系统,该芯片系统包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第二方面或第二方面任一种可能的实现方式。
79.第九方面,本技术实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如第一方面或第一方面的任一种可能的实现方式。
80.第十方面,本技术实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如第二方面或第二方面的任一种可能的实现方式。
81.第十一方面,本技术实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如第一方面或第一方面的任一种可能的实现方式。
82.第十二方面,本技术实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如第二方面或第二方面的任一种可能的实现方式。
83.本技术不涉及任何数字加密货币的挖矿计算,不会产生任何算力消耗,并且不会获得任何加密货币收益。
附图说明
84.图1是本技术实施例提供的一种区块结构的示意图。
85.图2是本技术实施例提供的一种区块链网络的示意图。
86.图3是本技术实施例提供的一种矿池的示意图。
87.图4是本技术实施例提供的一种公开矿池直连场景的示意图。
88.图5是本技术实施例提供的一种代理直接转发场景的示意图。
89.图6是本技术实施例提供的一种代理二次封装场景的示意图。
90.图7是本技术实施例提供的一种挖矿行为检测装置的应用场景示意图。
91.图8是本技术实施例提供的一种挖矿行为检测装置的应用架构图。
92.图9是本技术实施例提供的一种矿池地址自动化检测子模块内部处理的示例性流程图。
93.图10是本技术实施例提供的一种挖矿请求的示意图。
94.图11是本技术实施例提供的一种返回请求的示意图。
95.图12是本技术实施例提供的一种矿池进行挖矿工作的示例性流程图。
96.图13是本技术实施例提供的一种区块监控子模块内部处理的示例性流程图。
97.图14是本技术实施例提供的一种挖矿流量检测子模块内部处理的示意图。
98.图15是本技术实施例提供的另一种挖矿行为检测装置的应用架构图。
99.图16是本技术实施例提供的另一种区块监控子模块内部处理的示例性流程图。
100.图17是本技术实施例提供的另一种挖矿流量检测子模块内部处理的示意图。
101.图18是本技术实施例提供的一种计算机装置的结构示例图。
102.图19是本技术实施例提供的另一种计算机装置的结构示例图。
103.图20是本技术实施例提供的一种计算机程序产品的示例图。
具体实施方式
104.区块链是一连串通过验证的区块。其中,每一个区块都与上一个相连,一直连到创世区块,创世区块是区块链的第一个区块。以比特币的底层区块链为例,图1是本技术实施例提供的一种区块结构的示意图。一个区块包括区块头000和区块体010。版本号表明此区
块遵循的验证规则。前一区块哈希是使用安全散列算法(secure hash algorithm 256,sha256)对前一区块的区块头进行哈希计算得出的前一区块的哈希值。根哈希是指区块体中交易的默克尔树根的哈希值,是将区块体010中的每个交易经过sha256计算得出的值。时间戳是指该区块被创建的近似时间,精确到unix的秒时间戳。随机数是指使用比特币中工作量证明算法得到的随机数。目标哈希是为了验证是否达到工作量所需要的阈值。区块体010由交易数量和交易组成。
105.图2是本技术实施例提供的一种区块链网络的示意图。区块链网络100包括矿池110,矿池120,矿池150,矿池160和多个计算机设备。
106.图3是本技术实施例提供的一种矿池的示意图。矿池110包括多个计算机设备。区块链网络中的计算机设备都可以被称为矿工,也可以被称为计算机节点。例如,计算机设备130,计算机设备140,计算机设备111至计算机设备116都是矿工。
107.区块链网络100中任何计算机设备都有权限创建区块。在矿池110中,通常是由矿池110中的一个计算机设备负责创建区块,该计算机设备可以被称为矿主,然后将区块任务拆分给矿池110中的其他矿工进行挖掘。示例性地,矿池110中计算机设备111创建区块后,将一个挖矿任务拆分成多个子任务,然后将这些子任务发给矿池中其他矿工。例如,将其中一个子任务发送给计算机设备111,将另外一个子任务发送给计算机设备113。矿池中的每个矿工负责一部分子任务,联合在一起完成一个完整的挖矿任务。最终单个矿工可根据对矿池的贡献,即完成子任务的数量来获得奖励。
108.为便于理解本技术实施例,首先对本技术中涉及的一些定义做简单说明。
109.1.区块创建时间:区块被创建的时间即为区块创建时间,该时间被记录在区块的区块头中。示例性地,图1区块头000中的时间戳就是区块创建时间。
110.2.区块添加时间:区块被添加进区块链网络的时间即为区块添加时间。当一个区块被挖掘出,且被区块链中的计算机设备验证有效,并添加到区块链网络时,此时该区块被添加进区块链网络的时间为区块添加时间。区块被挖掘出即意味着矿工通过哈希运算计算出了符合要求的哈希值。一个区块在被添加进区块链网络之前,是无法在区块链网络中被查询到的。也就是说,区块添加时间无法被准确得知。本技术实施例通过将计算机设备加入到区块链网络来同步区块链的所有区块信息。若检测到区块链中有新的区块被添加,则记录当前系统时间,用该当前系统时间来代替区块添加时间。
111.3.区块到达时间:矿池中的矿主创建区块后,会将包含该区块信息的挖矿子任务通过网络发送给矿工,包含该挖矿子任务的数据包到达矿工的时间为区块到达时间。
112.4.区块高度:指的是区块在区块链网络中的编号,换句话说,就是一个区块与创世区块之间的块数。
113.下面将结合附图,介绍三种恶意挖矿行为的矿池连接场景。
114.图4是本技术实施例提供的一种公开矿池直连场景的示意图。
115.在此类场景中,恶意挖矿软件通过网络连接公开可访问的矿池进行挖矿。恶意挖矿软件和矿池的网络通信使用的是专用于挖矿的网络协议。以stratum协议为例,stratum协议是目前最常用的矿工和矿池之间通信的网络协议。当前,公开矿池支持两种数据传输方式,一种是通过明文传输stratum协议数据,即传输数据是未加密的;另外一种方式是通过tls/ssl协议传输stratum协议数据,即流量数据是加密的。
116.图5是本技术实施例提供的一种代理直接转发场景的示意图。
117.在此类场景中,恶意挖矿软件通过网络连接一个代理服务器,代理服务器通过网络连接公开矿池。代理服务器负责将恶意挖矿软件发送过来的网络流量数据无修改地转发到公开矿池,并在接收到公开矿池返回的网络流量数据时,无修改地转发给恶意挖矿软件。在这种场景下,中间代理服务器并没有对流量进行修改,仅仅充当一个流量中转的节点。和图4中公开矿池直连场景类似,恶意挖矿软件和代理服务器存在两种通信方式,stratum明文和stratum tls/ssl,分别对应流量不加密和流量加密两种情况。
118.图6是本技术实施例提供的一种代理二次封装场景的示意图。
119.不同于图5中代理直接转发的场景,在这类场景下,中间代理服务器会具备对网络流量数据进行二次封装的能力。具体来说,矿池中的矿主会将一个挖矿任务拆分成多个挖矿任务并分发该拆分后的挖矿任务。当代理接收到公开矿池发来的拆分后的挖矿任务时,代理会二次拆分该任务,分解成多个子任务,并将子任务下发给多个恶意挖矿软件。此时恶意挖矿软件和中间代理服务器的通信方式可以不局限于公开矿池提供的stratum矿池协议以及tls加密方式,可以使用任意协议和加密算法来与恶意挖矿软件进行通信。
120.下面将结合附图,对本技术实施例中的技术方案进行描述。显然,所描述的实施例是本技术的一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本技术保护的范围。
121.图7是本技术实施例提供的一种挖矿行为检测装置的应用场景示意图。
122.如图7所示的挖矿行为检测装置的应用示例包括内部网络400和外部网络403。内部网络400包括计算机设备406,网络设备408和挖矿行为检测装置401。外部网络403包括互联网404和区块链网络100。在一些实施例中,挖矿行为检测装置401的功能还可以内置在交换机中,本技术对此不作限定。
123.计算机设备406可以是服务器,台式计算机,平板电脑,笔记本电脑等。
124.网络设备408可以是交换机或者路由器等。
125.内部网络400可以是需要进行挖矿行为检测的企业或个人用户网络,内部网络400的计算机设备406会通过网络设备408与外部网络403进行通信。互联网404是用户业务运行时与外部进行交互的网络,互联网404也可以包括区块链网络。
126.网络流量是网络上传输的数据,网络流量包括数据包的时间信息、入站数据包大小、出站数据包大小、数据包入站方向和数据包出站方向等。当网络流量经过网络设备408时,网络设备408会将经过的网络流量复制一份发送给挖矿行为检测装置401,复制的网络流量可以称为旁路流量。
127.图8是本技术实施例提供的一种挖矿行为检测装置的应用架构图。
128.挖矿行为检测装置401包括区块链数据采集模块200,网络流量采集模块210和检测模块220。
129.区块链数据采集模块200包括区块链节点进程子模块202和区块监控子模块204。网络流量采集模块210包括流量缓存子模块212,ip地址和端口记录子模块214。检测模块220包括挖矿流量检测子模块222和矿池地址自动化检测子模块224。
130.其中,区块链节点进程子模块202负责将区块链网络100的区块信息同步到本地。
每种加密货币都会提供一个开源可下载的区块链全节点程序,区块链全节点保存了区块链网络的全部数据文件,本技术实施例直接从网络下载并运行该区块链全节点程序,将区块链节点进程子模块202与区块链网络连接,并提供第三方程序查询当前区块链网络数据的远程过程调用(remote procedure call,rpc)接口。
131.区块监控子模块204负责通过rpc接口向区块链节点进程子模块202查询当前区块链网络中区块的最新状态。例如,指定区块是否被挖出。然后根据区块最新状态,获取区块添加时间,并存储到区块添加时间数据库240中。
132.网络流量采集模块210会处理输入的旁路流量,得到待检测数据包序列250和待检测ip地址和端口260。
133.流量缓存子模块212负责从旁路流量中提取并记录下每一个网络连接的每个数据包到达计算机设备406的时间,并按照时间顺序排列,得到待检测数据包序列250。数据包到达计算机设备406的时间可以是计算机设备406接收到数据包的时间,还可以是根据网络设备408接收到数据包的时间预测得到的数据包到达计算机设备406的时间。示例性地,可以根据网络设备408接收到数据包的时间,加上数据包从网络设备408到达计算机设备406的传输时延,得到数据包到达计算机设备406的时间。或者,还可以根据网络设备408接收到数据包的时间加上数据包从网络设备408到达网络中的其他计算机设备的平均传输时延,得到数据包到达计算机设备406的时间。
134.挖矿流量检测子模块222负责读取待检测数据包序列250的数据包到达时间及区块添加时间数据库240中的区块添加时间,并将数据包到达时间序列和区块添加时间序列进行匹配,如果匹配成功,则认为该网络流量与挖矿行为相关,输出告警信息。
135.ip地址和端口记录子模块214负责从旁路流量中提取所有网络连接的ip地址和端口,输出待检测ip地址和端口数据。可选地,ip地址和端口记录子模块214可以包括一个序列,该序列中每一个行以键值对的形式存在,即《ip地址和端口,该ip地址和端口是否已经被检测》。示例性的,若f2pool.com:13531没有被检测过,则为《f2pool.com:13531,0》,0代表该ip地址和端口没有被检测过,1代表该ip地址和端口已经被检测。没有被检测过的ip地址和端口输出为待检测ip和端口260。
136.可选地,可以设置一个检测周期。例如,每过一小时就将ip地址和端口记录子模块214中所有的ip地址和端口都设置为没有被检测过,重新开始新一轮的检测。
137.可选地,ip地址和端口记录子模块214中的ip地址和端口还可以设有优先级,若一个待检测ip地址和端口是矿池地址的概率更大,则该待检测ip地址和端口的优先级更高。例如,网络连接中的长连接比短连接有更高的优先级。ip地址和端口记录子模块214中的ip地址和端口信息可以首先按照优先级排列,其次按照时间顺序排列。
138.矿池地址自动化检测子模块224会向目标设备发送挖矿请求,根据该请求的返回信息判断该目标设备是否为挖矿设备,如果是就输出告警信息。
139.下面,本技术在图8所示的应用架构示例的基础上,详细说明各模块的交互和工作流程。
140.图9是本技术实施例提供的一种矿池地址自动化检测子模块内部处理的示例性流程图。
141.610,获取待检测ip地址和端口。
142.ip地址和端口记录子模块214会从旁路流量中提取所有网络连接的ip地址和端口,输出待检测ip地址和端口数据。本技术实施例的挖矿行为检测装置401会将ip地址和端口记录子模块214输出的待检测ip地址和端口输入到网络连接程序中。
143.示例性地,ip地址和端口记录子模块214输出了一个待检测网络ip地址和端口,f2pool.com:13531。该ip地址和端口会被输入到网络连接程序中。
144.620,与目标设备建立连接。
145.目标设备的ip地址和端口是610中获取的ip地址和端口。可选地,可以使用tcp(即明文)和tls/ssl(即密文)中任意一种或两种方式进行连接,如果连接成功,就会获得创建好的网络连接。应理解,可以进行多种方式的网络连接,有一个网络连接成功即可。
146.示例性地,目标设备的ip地址和端口为f2pool.com:13531。可以分别尝试使用tcp和tls/ssl的方式向f2pool.com:13531发起连接,由于f2pool.com:13531不支持tls/ssl通信方式,因此tls/ssl连接就会失败,最终只获得一个创建好的tcp网络连接。
147.630,向目标设备发送挖矿请求。
148.示例性地,图10是本技术实施例提供的一种挖矿请求的示意图。挖矿请求为json(javascript object notation)格式,json是一种轻量级的数据交换格式,以键值对的形式存在。挖矿请求中包含了钱包地址(login字段),挖矿算法(algo字段)等字段。
149.640,接收目标设备的返回请求。
150.向目标设备发送过挖矿请求后会收到目标设备的返回请求。示例性地,图11是本技术实施例提供的一种返回请求的示意图,显示的是目标设备的ip地址和端口f2pool.com:13531返回的数据。
151.650,返回请求是否符合矿池协议的数据特征。
152.可选地,可以通过返回请求是否包含矿池协议的关键字来判断。示例性地,若矿池协议为stratum协议,关键字可以是区块高度height,挖矿任务job等。可选地,还可以判断返回数据是否为文本格式,如json格式、txt格式、yaml格式或者xml格式。若返回请求不仅包括stratum协议的关键字,而且是文本格式,则该目标设备是挖矿设备的概率更大。示例性地,图8中目标设备的返回请求符合json格式且包括挖矿任务job,还包括区块高度height,任务编号job_id,种子哈希seed_hash和任务目标target等信息。因此判定目标设备为挖矿设备。
153.识别挖矿协议的方式还可以利用基于模式匹配的方法,如支持正则表达式的字符串匹配。示例性的,hash*表示能够匹配上包含hash字符串的字符串。
154.识别挖矿协议的方式还可以是基于统计学特征的识别方法,示例性的,可以通过协议中数据包的大小,字符出现频率,信息熵等信息来进行矿池协议的判断。
155.识别挖矿协议的方式还可以是基于人工智能或机器学习的识别方法,示例性的,可以训练一个挖矿协议识别模型。
156.若接收到的返回请求符合矿池协议格式则执行步骤660。
157.660,输出告警信息。
158.判定该目标设备为挖矿设备,输出告警信息。
159.示例性地,告警信息可以是用户设备使用的安全软件中收集到的安全告警信息。
160.由于矿池没有认证机制,任意软件都可以向矿池发起挖矿请求,矿池收到请求后
会返回一个挖矿任务。本技术实施例可以主动向互联网404中的目标设备发送挖矿请求,如果该目标设备返回了挖矿任务信息,那么就认定这个目标设备为挖矿设备,否则,认定为非挖矿设备。
161.本技术实施例的矿池地址自动化检测子模块224的内部处理适用于图4的公开矿池直连场景和图5的代理直接转发场景,支持stratum tls/ssl加密流量场景检测,无需人工介入,检测速度快,只需要发起一次网络连接,就可以实现对单个ip地址和端口的秒级检测,自动识别目标设备是否为挖矿设备,不仅可以免人工运维,还可以保护数据隐私。
162.为了弥补矿池地址自动化检测子模块224的内部处理不支持图6的代理二次封装场景的缺点,本技术实施例提供了挖矿流量检测子模块222,支持图6中的检测自定义协议/加密算法场景下的挖矿行为。
163.为便于理解本技术实施例的挖矿流量检测子模块222内部处理流程,首先对本技术中涉及的矿池进行挖矿工作的流程做简单说明。
164.以比特币的挖矿过程为例,当矿池的矿主创建一个新的区块时,需要寻找一个随机数跟区块链网络中最新区块的区块头的一些信息,如时间戳,根哈希等一起计算出一个哈希值。比特币协议对这个哈希值有一个难度要求,比如哈希值的前若干位必须为零。因此区块被打包添加到区块链网络之前必须大量重试随机数,并不断进行哈希计算,以求能够计算出满足难度条件的哈希值。挖矿就是重试随机数以计算符合难度条件的哈希值的过程,只有区块的哈希值满足了难度条件才会被区块链网络中其他矿工认可和接受进而赚取交易手续费和比特币奖励。
165.挖矿任务拆分指的是矿池的矿主将随机数分片,拆分成多个范围的随机数,并将这些被拆分的随机数分发给矿池中的矿工进行挖矿。整个矿池中只要有一个矿工计算出符合难度条件的哈希值,矿池就可以将区块打包添加到区块链网络,获得奖励。
166.挖矿程序的行为必须要与区块链网络的状态进行同步。例如,一旦一个新的区块被挖出,即最新的区块已经被添加到了区块链网络。所有的挖矿程序都会放弃现有区块,开始挖掘下一个区块。由于区块链网络具有去中心化的特点,因此区块链网络中的每一个计算机设备都能访问到整个区块链的信息。
167.图12是本技术实施例提供的一种矿池进行挖矿工作的示例性流程图。
168.矿池进行挖矿工作可以分为矿池侧180进行的挖矿工作和矿工侧190进行的挖矿工作。应理解,图12中矿池侧的工作可以看作矿池中某个被选定的计算机设备所做的工作。
169.s101,矿池访问区块链网络,查询最新被添加到区块链网络的区块n。
170.矿池会连接到区块链网络中,查询此时区块链网络中的最新区块n,n为大于等于1的正整数。
171.s102,矿池获取新的区块n+1。
172.应理解,新的区块n+1是由矿池中的某个指定的计算机设备创建得到的。矿池为了优化挖矿速度,有可能在步骤s101发生之前,创建好区块n+1,在步骤s102时直接获取该创建好的区块,这也就意味着区块的创建时间与区块到达时间存在时间差。如果矿池没有提前创建好区块,则会在步骤s102创建区块n+1。
173.s103,矿池将新区块n+1的计算目标拆分为多个子任务。
174.矿中的矿主负责将随机数分片,拆分成多个范围的随机数,并将这些被拆分的随
机数分发给矿池中的矿工进行挖矿。
175.s104,矿池发送网络数据包,通知矿工新区块n+1的子任务信息。
176.示例性地,矿池可以通过stratum网络协议将新区块n+1的挖矿子任务信息发送给矿工。
177.s105,矿工接收网络数据包,获得新区块n+1的子任务信息。
178.包含新区块n+1子任务信息的数据包到达矿工的时间为区块到达时间。
179.s106,矿工执行子任务,寻找符合要求的哈希值,找到后将该哈希值发送给矿池。
180.矿工开始进行哈希计算来挖掘区块n+1。一旦发现有效的哈希值,即该哈希值符合区块链网络预设的难度条件,则将该哈希值发送回矿池。
181.s107,矿池检验该哈希值的有效性,有效则将区块n+1广播至区块链网络。
182.矿池接收到哈希值后,会先对该哈希值进行校验,如果校验成功,则会将该有效哈希值以及区块n+1广播给区块链网络中所有的计算机设备。区块链网络中计算机设备收到该哈希值以及区块n+1并验证该区块有效后,将该区块添加到区块链网络中。
183.本技术实施例的挖矿流量检测子模块需要利用区块到达时间序列与数据包到达时间序列进行对比。如图12所示,矿工通过矿池来与区块链网络进行信息交换和同步。虽然区块链网络中的区块信息是公开可访问的,但是区块信息中只有区块创建时间,没有区块到达时间。
184.本技术实施例挖矿流量检测子模块的内部处理包括两种情况,一种是将区块添加时间作为区块到达时间。另外一种是挖矿行为检测装置401可以模拟获得区块到达时间,即通过加入矿池作为矿池中的一个矿工接收挖矿任务信息,接收到挖矿任务信息的时间即为区块到达时间。
185.由于矿池侧180的步骤s101中区块n被添加进区块链网络的时间与矿工侧190的步骤s105接收网络数据包的时间(即区块到达时间)是接近的,二者的时间差主要由网络传输时间构成。这就意味着,可以通过步骤s101中区块n的区块添加时间来代替矿工在步骤s105接收网络数据包的区块到达时间。本技术实施例通过将区块链节点进程子模块202连接到区块链网络230中,模拟步骤s101的过程,获取步骤s101中区块n的区块添加时间来代替步骤s105的区块到达时间。
186.图13是本技术实施例提供的一种区块监控子模块内部处理的示例性流程图。区块监控子模块204可以获得区块添加时间并将该区块添加时间存储到区块添加时间数据库240中。
187.710,区块链节点进程子模块202的rpc服务是否有效。
188.检测区块链节点进程子模块202的rpc服务是否开启。如果未开启,则进行步骤720,休眠一段时间后,再次执行步骤710。区块链节点进程子模块202的rpc服务开启后即可执行步骤730。
189.区块链网络中的计算机节点可以分为全节点和轻节点,全节点可以发起交易或者接收交易,参与区块链的共识,拥有全部的区块链数据。轻节点可以连接到全节点,通过全节点访问区块链数据。
190.应理解,本技术实施例中,区块链节点进程子模块202加入了区块链网络100,区块链节点进程子模块202为全节点,拥有完整的区块链数据。区块链节点进程子模块202还可
以为轻节点,即可以就近向区块链网络中的全节点查询区块链网络的区块信息。
191.720,休眠指定时间。
192.示例性地,可以指定休眠时间为0.1s。应理解,指定的休眠时间越短,则得到的区块添加时间越准确。
193.730,初始化当前的区块高度current_height。
194.在初始化过程中,当检测到区块链节点进程子模块202的rpc服务开启后,区块监控子模块204向区块链节点进程子模块202发送rpc请求,查询区块链网络中最新的区块高度,将该最新的区块高度存储到变量current_height中。
195.示例性地,在初始化过程中,区块监控子模块204查询到区块链网络中最新的区块高度为2278260,则此时将current_height的值赋为2278260。
196.740,查询最新区块的区块高度latest_height。
197.区块监控子模块204向区块链节点进程子模块202发送rpc请求,查询区块链网络中最新区块的区块高度,将该最新区块的区块高度存储到变量latest_height中。
198.示例性地,区块监控子模块204查询到区块链网络中最新区块的区块高度为2278261,则此时将latest_height的值赋为2278261。
199.750,latest_height是否大于current_height。
200.判断latest_height是否大于current_height。如果大于,表示区块链网络中新的区块已经被挖出,继续执行步骤760。否则,执行步骤780。
201.示例性地,当此时latest_height的值为2278261,current_height的值为2278260时,意味着区块2278261已经被挖出且已经被添加进区块链网络中,此时执行步骤760来记录区块2278261的区块添加时间。
202.760,将键值对《当前时间戳,latest_height》存储到数据库中。
203.将键值对《当前时间戳,latest_height》存储到区块添加时间数据库240中,以供后续检测时使用。应理解,当前时间戳为当前系统的时间,本技术实施例将当前系统时间作为区块高度为latest_height的区块被添加进区块链网络时的区块添加时间。
204.示例性地,将当前步骤760的系统时间作为区块2278261的区块添加时间,将键值对《当前步骤760的系统时间,2278261》存储到区块添加时间数据库240中。
205.770,current_height=latest_height。
206.更新当前的区块高度为最新区块的区块高度,即将latest_height的值赋值给current_height。
207.示例性地,当前的区块高度为2278260,更新后的当前的区块高度为2278261。
208.780,休眠指定时间。
209.休眠一段时间,再次执行步骤740。示例性地,可以指定休眠时间为0.1s。应理解,指定的休眠时间越短,则得到的区块添加时间越准确。
210.应理解,在本技术实施例中,710和720为非必要步骤。也可以不经过步骤710和720,直接在初始化当前的区块高度之后查询最新区块的区块高度,若区块链节点进程子模块202返回了查询请求则直接进行步骤750,若在指定时间内区块链节点进程子模块202没有返回请求则休眠一段时间后重新发送查询请求,查询最新区块的区块高度。
211.应理解,由于区块链网络中一直都有新的区块到达,因此区块监控子模块204内部
处理的循环会一直持续,直至挖矿行为检测装置401停止运行。
212.图14是本技术实施例提供的一种挖矿流量检测子模块内部处理的示意图。
213.当将区块添加时间作为区块到达时间时,挖矿流量检测子模块222的输入是数据包到达时间序列以及区块添加时间序列,输出是该网络连接是否与挖矿行为相关的判断。本技术实施例通过计算数据包到达时间序列和区块添加时间序列在时间轴上的近似程度来判断该网络连接是否与挖矿行为相关。如果近似程度大于等于预设的阈值,则认为该网络连接与挖矿行为相关。
214.为了计算数据包到达时间序列和区块添加时间序列在时间轴上的近似程度,首先需要选择一个时间序列作为基准,并确定该基准序列中时间的数量,然后设定一个第一阈值和第二阈值,用于判断该网络连接是否与挖矿行为相关。
215.可选地,可以指定数据包到达时间序列和区块添加时间序列中任意一个序列作为基准序列,并指定该基准序列中时间的数量。
216.示例性地,如图14所示,可以将区块添加时间序列作为基准序列,该基准序列包括节点编号为2278259至2278276的共18个区块添加时间。若有至少一个数据包到达时间与区块添加时间的时间差值小于等于第一预设阈值,则判定该区块添加时间被对齐。被对齐的区块添加时间的个数与区块添加时间序列中区块添加时间的总个数的比值为两个序列的近似程度。当该近似程度大于或者等于第二预设阈值时,判断该网络连接与挖矿行为相关,即判定该网络连接的ip地址和端口为挖矿地址。
217.示例性地,第一预设阈值可以是0.8s、0.9s或者1s,第二预设阈值可以是80%、90%或者100%。
218.应理解,第一预设阈值和第二预设阈值的取值范围还取决于加密货币的种类。示例性地,对于门罗币来说,第一预设阈值的取值范围可以是0.5至1秒,第二预设阈值的取值范围可以是80%至100%。
219.由公式(1)所示,m为被对齐的区块添加时间个数,n为区块添加时间序列中区块添加时间的总个数,p为两个序列的近似程度。示例性地,若被对齐的区块添加时间有15个,且第二预设阈值为80%,则此时p约为83%,大于第二预设阈值,判定此时的网络连接与挖矿行为相关。
[0220][0221]
本技术实施例提供的挖矿流量检测方法可以主动利用公开可访问的区块链网络,获取每个区块的添加时间,并将该区块添加时间作为挖矿数据包的区块到达时间,最终判定目标设备是否为挖矿设备。本技术实施例不仅适用于图4的公开矿池直连场景和图5的代理直接转发场景,还适用于图6的代理二次封装场景。不仅不需要读取用户网络流量内容,可以做到隐私保护,而且通用性强,适用于所有的加密货币。
[0222]
图15是本技术实施例提供的另一种挖矿行为检测装置的应用架构图。当挖矿行为检测装置401模拟获得区块到达时间,即通过加入矿池作为矿池中的一个矿工接收挖矿任务信息时,此时区块链数据采集模块200包括挖矿软件进程子模块203和区块监控子模块204。
[0223]
挖矿软件进程子模块203负责接收矿池280发来的网络数据包并输出最新的挖矿
任务信息。应理解,此时的挖矿软件进程子模块203可以看做本技术实施例模拟的矿工,即此时的挖矿软件进程子模块203可以接收矿池280发送来的挖矿子任务,但是不执行该子任务。
[0224]
区块监控子模块204监测挖矿软件进程子模块203是否输出新的挖矿任务信息。监测到挖矿软件进程子模块203输出新任务信息的时间为区块到达时间,将该区块到达时间和挖矿任务信息中的区块高度存储到区块到达时间数据库290中。
[0225]
图15中其余模块与图8中的相同,本技术不再重复赘述。
[0226]
图16是本技术实施例提供的另一种区块监控子模块内部处理的示例性流程图。区块监控子模块204可以获得区块到达时间并将该区块到达时间存储到区块到达时间数据库290中。
[0227]
810,初始化当前的区块高度current_height=0。
[0228]
在初始化过程中,先将当前的区块高度current_heigh赋值为0。
[0229]
820,等待挖矿软件进程子模块输出任务信息。
[0230]
区块监控子模块204监测到挖矿软件进程子模块203输出挖矿任务信息后执行步骤830。
[0231]
830,将任务信息中包含的区块编号存储到latest_height中。
[0232]
示例性地,任务信息中包含的区块编号为2278261,则此时将latest_height的值赋为2278261。
[0233]
840,latest_height是否大于current_height。
[0234]
判断latest_height是否大于current_height。如果大于,表示包含新任务的网络数据包已到达矿工设备,继续执行步骤850。否则,执行步骤820。
[0235]
示例性地,当此时latest_height的值为2278261,current_height的值为0时,意味着包含区块2278261任务信息的网络数据包已经到达矿工设备,此时执行步骤850来记录区块2278261的区块到达时间。
[0236]
850,将键值对《当前时间戳,latest_height》存储到数据库中。
[0237]
将键值对《当前时间戳,latest_height》存储到区块到达加时间数据库290中,以供后续检测时使用。应理解,当前时间戳为当前系统时间,即当前系统时间为节点编号为latest_height的区块任务到达矿工设备的区块到达时间。
[0238]
示例性地,将此时步骤850的系统时间作为区块2278261的区块到达时间,将键值对《此时步骤850的系统时间,2278261》存储到区块到达时间数据库290中。
[0239]
860,current_height=latest_height。
[0240]
更新当前的区块高度为最新任务中包含的区块高度,即将latest_height的值赋值给current_height。赋值后继续执行步骤820。
[0241]
示例性地,当前的区块高度为0,更新后的当前的区块高度为2278261。
[0242]
应理解,由于区块链网络中一直都有新的区块到达,因此区块监控子模块204内部处理的循环会一直持续,直至挖矿行为检测装置401关闭。
[0243]
图17是本技术实施例提供的另一种挖矿流量检测子模块内部处理的示意图。
[0244]
此时挖矿流量检测子模块222的输入是数据包到达时间序列以及区块到达时间序列,输出是该网络连接是否与挖矿行为相关的判断。本技术实施例通过计算数据包到达时
间序列和区块到达时间序列在时间轴上的近似程度来判断该网络连接是否与挖矿行为相关。如果近似程度大于或者等于预设的阈值,则认为该网络连接与挖矿行为相关。
[0245]
为了计算数据包到达时间序列和区块到达时间序列在时间轴上的近似程度,首先需要选择一个时间序列作为基准,并确定该基准序列中时间的数量,然后设定一个第一阈值和第二阈值,用于判断该网络连接是否与挖矿行为相关。
[0246]
可选地,用户可以指定数据包到达时间序列和区块到达时间序列中任意一个序列作为基准序列,并指定该基准序列中时间的数量。
[0247]
示例性地,如图17所示,可以将区块到达时间序列作为基准序列,该基准序列包括节点编号为2278259至2278276的共18个区块添加时间。若有至少一个数据包到达时间与区块到达时间的时间差值小于等于第一预设阈值,则判定该区块到达时间被对齐。被对齐的区块到达时间的个数与区块到达时间序列中区块到达时间的总个数的比值为两个序列的近似程度。当该近似程度大于或者等于第二预设阈值时,判断该网络连接与挖矿行为相关,即判定该网络连接的ip地址和端口为挖矿地址。
[0248]
示例性地,第一预设阈值可以是0.8s、0.9s或者1s,第二预设阈值可以是80%、90%或者100%。
[0249]
应理解,第一预设阈值和第二预设阈值的取值范围还取决于加密货币的种类。示例性地,对于门罗币来说,第一预设阈值的取值范围可以是0.5至1秒,第二预设阈值的取值范围可以是80%至100%。
[0250]
由公式(2)所示,m1为被对齐的区块到达时间个数,n1为区块到达时间序列中区块到达时间的总个数,p1为两个序列的近似程度。若被对齐的区块到达时间有15个,且第二预设阈值为80%,则此时p1约为83%,大于第二预设阈值,判定此时的网络连接与挖矿行为相关。
[0251][0252]
本技术实施例提供的挖矿流量检测方法可以获取每个区块的到达时间,并基于该区块到达时间和网络数据包的到达时间,来判定目标设备是否为挖矿设备。本技术实施例不仅适用于图4的公开矿池直连场景和图5的代理直接转发场景,还适用于图6的代理二次封装场景。不仅不需要读取用户网络流量内容,可以做到隐私保护,而且通用性强,适用于所有的加密货币。
[0253]
下面将结合附图,对本技术实施例中的另一个技术方案进行描述。
[0254]
本技术实施例首先获取数据包到达时间序列和区块到达时间序列,然后判断两者在时间上的近似程度,根据两者的近似程度判断目标设备是否为疑似挖矿设备。
[0255]
获取数据包到达时间序列的方式可以参见图8,流量缓存子模块212负责从旁路流量中提取并记录下每一个网络连接的每个数据包到达计算机设备406的时间,并按照时间顺序排列,得到待检测数据包序列250。
[0256]
获取区块到达时间的方式包括两种,一种是将区块添加时间作为区块到达时间,另外一种是挖矿行为检测装置401可以模拟获得区块到达时间,即通过加入矿池作为矿池中的一个矿工接收挖矿任务信息,接收到挖矿任务信息的时间即为区块到达时间。
[0257]
本技术实施例通过对比最新区块的区块高度和当前的区块高度来更新区块到达
时间序列,其中,当前的区块高度为区块到达时间序列中最新时间所对应的区块高度。获取最新区块的区块高度可以通过向区块链网络发送查询请求或者加入矿池作为矿池中的一个矿工接收挖矿任务信息,具体流程可以参见图13和图16,本技术不再重复赘述。
[0258]
判断数据包到达时间序列和区块到达时间序列的近似程度的具体过程可以参见图14和图17,若满足预设的阈值条件则判定目标设备为疑似挖矿设备。
[0259]
应理解,当通过数据包到达时间序列和区块到达时间序列在时间上的近似程度的方式判断目标设备为疑似挖矿设备后,还可以通过主动向目标设备发送挖矿请求来进行进一步的确认。
[0260]
矿池地址自动化检测子模块224会向目标设备发送挖矿请求,根据该请求的返回信息判断该目标设备是否为挖矿设备,如果是就输出告警信息,具体实现方式可以参见图9。
[0261]
以上描述了根据本技术实施例的挖矿行为检测方法,下面分别结合图18和图19描述根据本技术实施例的装置和设备。
[0262]
本技术实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,所述程序执行时可包括如图9、图13、图14、图16、图17对应实施例中的挖矿行为检测方法的部分或全部步骤。
[0263]
图18为本技术实施例提供的一种计算机装置的结构示例图。该计算机装置900包括获取模块910,处理模块920和发送模块930。
[0264]
其中,获取模块910,用于获取数据包到达时间序列和区块到达时间序列、待检测ip地址和端口、区块链网络的返回请求、最新区块的区块高度,执行图9方法中的610和640,图13方法中的740,图16方法中的820。
[0265]
处理模块920,用于根据数据包到达时间序列和区块到达时间序列、待检测ip地址和端口、区块链网络的返回请求、最新区块的区块高度,执行图9、图13、图14、图16和图17的方法中的部分或全部步骤。
[0266]
发送模块930,用于向区块链网络发送查询请求和挖矿请求。
[0267]
图19为本技术实施例提供的另一种计算机装置1300的结构示例图。计算机装置1300包括处理器1302、通信接口1303和存储器1304。计算机装置1300的一种示例为芯片。计算机装置1300的另一种示例为计算设备。
[0268]
上述本发明实施例揭示的方法可以应用于处理器1302中,或者由处理器1302实现。处理器1302可以是中央处理器(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。在实现过程中,上述方法的各步骤可以通过处理器1302中的硬件的集成逻辑电路或者软件形式的指令完成。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。
[0269]
存储器1304可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性
存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0270]
处理器1302、存储器1304和通信接口1303之间可以通过总线通信。存储器1304中存储有可执行代码,处理器1302读取存储器1304中的可执行代码以执行对应的方法。存储器1304中还可以包括操作系统等其他运行进程所需的软件模块。操作系统可以为linuxtm,unixtm,windowstm等。
[0271]
例如,存储器1304中的可执行代码用于实现图9、图13、图14、图16、图17所示的方法,处理器1302读取存储器1304中的该可执行代码以执行图9、图13、图14、图16、图17所示的方法。
[0272]
在本技术的一些实施例中,所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。图20示意性地示出根据这里展示的至少一些实施例而布置的示例计算机程序产品的概念性局部视图,所述示例计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。在一个实施例中,示例计算机程序产品1400是使用信号承载介质1401来提供的。所述信号承载介质1401可以包括一个或多个程序指令1402,其当被一个或多个处理器运行时可以提供以上针对图9、图13、图14、图16、图17所示的方法中描述的功能或者部分功能。因此,例如,参考图9、图13、图14、图16、图17中所示的实施例,其中的一个或多个特征可以由与信号承载介质1401相关联的一个或多个指令来承担。
[0273]
在一些示例中,信号承载介质1401可以包含计算机可读介质1403,诸如但不限于,硬盘驱动器、紧密盘(cd)、数字视频光盘(dvd)、数字磁带、存储器、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等等。在一些实施方式中,信号承载介质1401可以包含计算机可记录介质1404,诸如但不限于,存储器、读/写(r/w)cd、r/w dvd、等等。在一些实施方式中,信号承载介质1401可以包含通信介质1405,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质1401可以由无线形式的通信介质1405(例如,遵守ieee 802.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令1402可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,前述的计算设备可以被配置为,响应于通过计算机可读介质1403、计算机可记录介质1404、和/或通信介质1405中的一个或多个传达到计算设备的程序指令1402,提供各种操作、功能、或者动作。应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素
(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。
[0274]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0275]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0276]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0277]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0278]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0279]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0280]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种挖矿行为检测方法,其特征在于,包括:第一计算机设备获取数据包到达时间序列,所述数据包到达时间序列包括来自于目标设备的至少一个数据包到达第二计算机设备的时间;所述第一计算机设备获取区块到达时间序列,所述区块到达时间序列包括至少一个挖矿任务到达挖矿设备的时间;所述第一计算机设备判断所述数据包到达时间序列和所述区块到达时间序列在时间上的近似程度;若所述近似程度大于或者等于预设的第一阈值,则确定所述目标设备为疑似挖矿设备。2.根据权利要求1所述的方法,其特征在于,所述第一计算机设备获取数据包到达时间序列,包括:所述第一计算机设备通过所述目标设备与所述第二计算机设备的单次网络连接获取所述数据包到达时间序列。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:所述第一计算机设备获取最新区块的区块高度;若所述最新区块的区块高度大于当前的区块高度,则将当前系统时间添加至所述区块到达时间序列,得到更新后的区块到达时间序列,其中所述当前的区块高度为所述区块到达时间序列中最新时间所对应的区块高度;若所述最新区块的区块高度小于或者等于所述当前的区块高度,则所述第一计算机设备休眠指定时间后,重新获取所述最新区块的区块高度,并根据重新获取的最新区块的区块高度对所述区块到达时间序列进行更新。4.根据权利要求3所述的方法,其特征在于,所述第一计算机设备获取最新区块的区块高度,包括:所述第一计算机设备向区块链网络发送查询请求,所述查询请求用于查询所述区块链网络中所述最新区块的区块高度;所述第一计算机设备接收所述区块链网络发送的第一返回请求,所述第一返回请求包括所述区块链网络中所述最新区块的区块高度。5.根据权利要求3所述的方法,其特征在于,在所述第一计算机设备获取最新区块的区块高度之前,所述方法还包括:所述第一计算机设备加入矿池;所述第一计算机设备获取最新区块的区块高度,包括:所述第一计算机设备接收所述矿池中的计算机设备发送的第一挖矿任务,所述第一挖矿任务包括所述最新区块的区块高度。6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:所述第一计算机设备向所述目标设备发送挖矿请求;所述第一计算机设备接收所述目标设备的第二返回请求;所述第一计算设备确定所述第二返回请求是否符合矿池协议的数据特征;若所述第二返回请求符合所述矿池协议的数据特征,则确定所述目标设备为所述挖矿设备;
若所述第二返回请求不符合所述矿池协议的数据特征,则确定所述目标设备不是所述挖矿设备。7.根据权利要求6所述的方法,其特征在于,所述第一计算设备确定所述第二返回请求是否符合矿池协议的数据特征,包括:确定所述第二返回请求携带的数据中是否包含所述矿池协议的关键字,所述矿池协议的关键字包括区块高度,挖矿任务,种子哈希。8.根据权利要求7所述的方法,其特征在于,所述第一计算设备确定所述第二返回请求是否符合矿池协议的数据特征还包括:确定所述第二返回请求的格式是否为文本格式,所述文本格式包括json格式、txt格式、yaml格式或者xml格式。9.一种计算机装置,其特征在于,包括:获取模块,用于获取数据包到达时间序列,所述数据包到达时间序列包括来自于目标设备的至少一个数据包到达第二计算机设备的时间;所述获取模块,还用于获取区块到达时间序列,所述区块到达时间序列包括至少一个挖矿任务到达挖矿设备的时间;处理模块,用于判断所述数据包到达时间序列和所述区块到达时间序列在时间上的近似程度;所述处理模块具体用于,若所述近似程度大于或者等于预设的第一阈值,则确定所述目标设备为疑似挖矿设备。10.根据权利要求9所述的装置,其特征在于,所述获取模块,具体用于:通过所述目标设备与所述第二计算机设备的单次网络连接获取所述数据包到达时间序列。11.根据权利要求9或10所述的装置,其特征在于,所述获取模块,还用于获取最新区块的区块高度;所述处理模块,具体用于:若所述最新区块的区块高度大于当前的区块高度,则将当前系统时间添加至所述区块到达时间序列,得到更新后的区块到达时间序列,其中所述当前的区块高度为所述区块到达时间序列中最新时间所对应的区块高度;若所述最新区块的区块高度小于或者等于所述当前的区块高度,则所述第一计算机设备休眠指定时间后,重新获取所述最新区块的区块高度,并根据重新获取的最新区块的区块高度对所述区块到达时间序列进行更新。12.根据权利要求11所述的装置,其特征在于,还包括:第一发送模块,用于向区块链网络发送查询请求,所述查询请求用于查询所述区块链网络中所述最新区块的区块高度;所述获取模块,还用于接收所述区块链网络发送的第一返回请求,所述第一返回请求包括所述区块链网络中所述最新区块的区块高度。13.根据权利要求11所述的装置,其特征在于,所述处理模块,还用于加入矿池;所述获取模块,还用于接收所述矿池中的计算机设备发送的第一挖矿任务,所述第一挖矿任务包括所述最新区块的区块高度。
14.根据权利要求9至13任一项所述的装置,其特征在于,还包括:第二发送模块,用于向所述目标设备发送挖矿请求;所述获取模块,还用于接收所述目标设备的第二返回请求;所述处理模块,具体用于:确定所述第二返回请求是否符合矿池协议的数据特征;若所述第二返回请求符合所述矿池协议的数据特征,则确定所述目标设备为所述挖矿设备;若所述第二返回请求不符合所述矿池协议的数据特征,则确定所述目标设备不是所述挖矿设备。15.根据权利要求14所述的装置,其特征在于,所述处理模块,具体用于:确定所述第二返回请求携带的数据中是否包含所述矿池协议的关键字,所述矿池协议的关键字包括区块高度,挖矿任务,种子哈希。16.根据权利要求15所述的装置,其特征在于,所述处理模块,具体用于:确定所述第二返回请求的格式是否为文本格式,所述文本格式包括json格式、txt格式、yaml格式或者xml格式。17.一种计算机设备,其特征在于,包括:处理器,所述处理器用于与存储器耦合,读取并执行所述存储器中的指令和/或程序代码,以执行如权利要求1-8中任一项所述的方法。18.一种芯片系统,其特征在于,包括:逻辑电路,所述逻辑电路用于与输入/输出接口耦合,通过所述输入/输出接口传输数据,以执行如权利要求1-8中任一项所述的方法。19.一种计算机可读介质,其特征在于,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求1-8中任一项所述的方法。

技术总结
本申请实施例提供了一种挖矿行为检测方法,其中,该方法包括:第一计算机设备获取数据包到达时间序列,所述数据包到达时间序列包括来自于目标设备的至少一个数据包到达第二计算机设备的时间;所述第一计算机设备获取区块到达时间序列,所述区块到达时间序列包括至少一个挖矿任务到达挖矿设备的时间;所述第一计算机设备判断所述数据包到达时间序列和所述区块到达时间序列在时间上的近似程度;若所述近似程度大于或者等于预设的第一阈值,则确定所述目标设备为疑似挖矿设备。本申请的技术方案能够免人工运维,覆盖多种挖矿场景,且可以保护用户隐私,通用性强。通用性强。通用性强。


技术研发人员:杨润青 何博远
受保护的技术使用者:华为技术有限公司
技术研发日:2021.12.31
技术公布日:2023/7/13
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐