CN110650128B - 一种检测以太坊数字货币盗取攻击的系统及方法 - Google Patents
一种检测以太坊数字货币盗取攻击的系统及方法 Download PDFInfo
- Publication number
- CN110650128B CN110650128B CN201910877466.2A CN201910877466A CN110650128B CN 110650128 B CN110650128 B CN 110650128B CN 201910877466 A CN201910877466 A CN 201910877466A CN 110650128 B CN110650128 B CN 110650128B
- Authority
- CN
- China
- Prior art keywords
- attack
- attacker
- address
- malicious
- request
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1491—Countermeasures against malicious traffic using deception as countermeasure, e.g. honeypots, honeynets, decoys or entrapment
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种检测以太坊数字货币盗取攻击的系统及方法,包括:部署以太坊蜜罐,诱导网络攻击者快速发现蜜罐主机并发送探测请求,捕获来自攻击者的恶意请求;将来自攻击者的恶意请求保存至数据库;分析攻击数据,对恶意请求进行关联,检测攻击行为,识别攻击者使用的攻击方法,对攻击者进行追踪,生成检测结果。本发明通过吸引并捕获攻击者发送的恶意请求,进一步识别攻击者使用的攻击手法,有效的发现现有系统的薄弱点,从而更好地保护以太坊系统。
Description
技术领域
本发明属于计算机网络安全技术领域,涉及恶意攻击的检测,具体是一种检测以太坊数字货币盗取攻击的系统和方法,可用于保护以太坊数字货币的安全。
背景技术
近年来,数字加密货币技术受到了世界范围内的广泛关注。以太坊是当前市值排名第二的区块链平台,用户可以使用此平台发行加密数字货币,包括以太币(Ether)和使用智能合约技术创造的代币(Token)。以太坊网络由运行着以太坊客户端软件的节点组成,主要包括Go-Ethereum(简称Geth)和Parity等。这些客户端软件都支持通过基于HTTP协议的远程过程调用(HTTP JSON-RPC)模块对系统的API功能模块进行远程控制。当用户启动该客户端软件时,RPC模块默认对主机操作系统的8545端口进行监听。由于以太坊RPC协议设计中缺少有效的身份认证机制,使得攻击者可以通过网络对客户端程序进行远程控制,盗取以太坊数字货币。以太坊数字货币盗取攻击通常遵循三步流程:发送探测请求,寻找开放以太坊RPC端口;发送获取节点信息的请求,构造最终攻击调用请求;发送最终攻击调用请求,造成实质性攻击。
蜜罐系统被广泛运用于收集互联网上的数据,通过捕获恶意活动以研究和了解攻击者的行为和动机,发现系统的薄弱点与新型攻击手段。但现有蜜罐系统和检测方法对以太坊数字货币盗取攻击的支持度很低,无法吸引盗取以太坊数字货币的攻击者向蜜罐系统发送实质性的攻击请求,因而也无法对以太坊数字货币攻击进行检测。
发明内容
为解决现有技术中存在的上述缺陷,本发明的目的在于提供一种检测以太坊数字货币盗取攻击的系统及方法,通过吸引并捕获攻击者发送的恶意请求,进一步识别攻击者使用的攻击手法,有效的发现现有系统的薄弱点,从而更好地保护以太坊系统。
本发明是通过下述技术方案来实现的。
一种检测以太坊数字货币盗取攻击的方法,包括以下步骤:
步骤一、部署以太坊蜜罐,诱导网络攻击者快速发现蜜罐主机并发送探测请求,捕获来自攻击者的恶意请求;
步骤二、将来自攻击者的恶意请求保存至数据库;
步骤三、分析攻击数据,对恶意请求进行关联,检测攻击行为,识别攻击者使用的攻击方法,对攻击者进行追踪,生成检测结果。
对于上述技术方案,本发明还有进一步优选的方案:
优选的,所述步骤一,捕获来自攻击者的恶意请求具体步骤如下:
1.1)初始化蜜罐系统,对以太坊API方法按照伪造API方法和无危害API方法进行分类;
1.2)在有公网IP的主机上部署以太坊客户端并连接至以太坊主网络;
1.3)监听主机8545端口,接收来自攻击者的恶意请求;
1.4)判断恶意请求中调用信息是否符合JSON-RPC协议,如是,执行步骤1.5),否则跳转到步骤1.6);
1.5)构造“请求无效”的答复信息;
1.6)判断攻击者调用的API方法是否在需伪造的API方法列表中,如是,执行步骤1.7),否则跳转到步骤1.8);
1.7)使用蜜饵以太坊账户地址构造答复信息或使用伪造的转账收据构造答复信息;
1.8)判断攻击者调用的API方法是否在无危害API方法列表中,如是执行步骤1.9),否则跳转到步骤1.10);
1.9)使用真实以太坊客户端获取无危害API方法的答复信息;
1.10)构造“请求方法不可用”的答复信息;
1.11)返回答复信息给攻击者;
1.12)将恶意请求信息记录到日志文件。
优选的,所述步骤二,保存攻击者的恶意请求至数据库具体步骤如下:
2.1)建立分布式非关系型数据库集群;
2.2)建立系统定时任务,运行日志处理程序;
2.3)日志处理程序按行读取并解析恶意请求记录,导入数据库;
2.4)压缩日志文件,进行存档。
进一步,所述步骤2.3)的具体过程包括:
2.3.1)日志处理程序与数据库系统建立连接;
2.3.2)从日志文件中按行读取恶意请求记录;
2.3.3)计算该行记录字符串的MD5,作为该次恶意请求的唯一标识符ID;
2.3.4)解析攻击请求中的攻击者的IP地址、User-Agent、时间戳、RPC调用信息以及蜜罐系统产生的答复信息;
2.3.5)将步骤2.3.3)和2.3.4)得到的结果保存为一个JSON对象;
2.3.6)将JSON对象保存至非关系型数据库。
优选的,所述步骤三,分析攻击数据,生成检测结果具体步骤如下:
3.1)查询数据库,筛选含有攻击者以太坊账户地址的恶意请求;
3.2)建立攻击来源IP地址列表;
3.3)使用IP地址数据库对攻击来源IP地址进行标注;
3.4)关联来自同一IP地址的恶意请求,得到攻击指令序列并检测攻击手法;
3.5)建立攻击者以太坊账户地址列表;
3.6)查询攻击者以太坊账户交易记录;
3.7)建立攻击者IP地址与以太坊账户地址映射列表;
3.8)关联攻击者使用的IP地址与以太坊账户地址;
3.9)输出检测结果。
进一步,所述步骤3.4)的具体过程包括:
3.4.1)检测暴力转账攻击:攻击指令序列中含有“eth_sendTransaction”或“eth_signTransaction”,但不含有“personal_unlockAccount”;
3.4.2)检测暴力破解攻击:攻击指令序列中含有“personal_unlockAccount”;
3.4.3)检测修改挖矿地址攻击:攻击指令序列中含有“miner_setEtherBase”;
3.4.4)检测恶意钱包攻击:攻击指令序列中含有“personal_importRawKey”;
3.4.5)检测零手续费攻击:攻击指令序列中含有“eth_sendRawTransaction”且对params字段进行RPL解码后gasPrice字段为0。
进一步,所述步骤3.6)的具体过程包括:
3.6.1)向数据库发送查询请求,查询单个以太坊账户的全部交易记录;单条交易记录中的数据包括:转出账户地址from、转入账户地址to和转账数额value;
3.6.2)遍历交易记录,判断并标记攻击交易;
3.6.3)对攻击交易的value字段进行累加,得到本次查询的以太坊账户的总攻击收益;
3.6.4)对攻击交易进行计数,得到本次查询的以太坊账户总攻击成功次数。
进一步,所述步骤3.8)的具体过程包括:
3.8.1)将每个IP地址和攻击者以太坊账户地址的映射关系标记为一组;
3.8.2)检查不同组中是否含有相同的IP地址或以太坊账户地址,如是,执行3.8.3),否则跳转到3.8.4);
3.8.3)合并具有相同IP地址或以太坊账户地址的组;
3.8.4)依次输出每一组结果;一组中的IP地址和以太坊账户地址为同一攻击者使用。
进一步,合并分组时排除步骤3.3)中标记为公共代理的IP地址;
关联具有相同C段的IP地址为同一攻击者;
关联两个有直接转账交易的以太坊账户地址为同一攻击者。
本发明给出了利用上述方法所采用的检测以太坊数字货币盗取攻击的系统,包括:
以太坊蜜罐系统,用于监听攻击者的恶意请求,诱导网络攻击者快速发现蜜罐主机并发送探测请求,捕获来自攻击者的恶意请求,将来自攻击者的恶意请求保存至数据库;
数据库模块,用于存储以太坊蜜罐系统来自攻击者的恶意请求;
数据分析模块,用于对恶意请求进行关联,检测攻击行为,识别攻击者使用的攻击方法,对攻击者进行追踪,生成检测结果。
本发明由于采取以上技术方案,其具有以下有益效果:通过部署以太坊蜜罐,可以诱导网络上的攻击者快速发现蜜罐主机并发送探测请求;通过对以太坊API方法进行分类、设置蜜饵以太坊账户地址、伪造转账收据,可以在保证系统安全的前提下,有效对攻击者发送的恶意请求做出回应,从而诱导攻击者发送实质攻击请求;通过使用数据库存储恶意请求日志,可以有效的对攻击进行分析和检测;通过对恶意请求进行关联,可以有效地检测攻击行为,识别攻击者使用的攻击方法,进一步对攻击者进行追踪。此外,本发明具有良好的适用性和扩展性,不仅可以对已知的攻击方法进行检测,并且可以用于发现新型攻击手法。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的不当限定,在附图中:
图1为本发明检测以太坊数字货币盗取攻击方法的整体流程图;
图2为本发明检测以太坊数字货币盗取攻击的系统架构示意图;
图3为本发明捕获恶意请求流程图;
图4为本发明数据分析模块工作原理图。
具体实施方式
本发明给出了一种检测以太坊数字货币盗取攻击的系统和方法,为了使本领域技术人员更好地理解和实现本发明中所述的技术方案,并使本发明的上述目的、特征和优点更加清楚,下面结合附图对本发明中所述的技术方案作进一步详细的说明。
图1为本发明检测以太坊数字货币盗取攻击方法的整体流程图。参照图1所示,本发明所述的方法包括了如下步骤:部署以太坊蜜罐,捕获来自攻击者的恶意请求;将来自攻击者的恶意请求保存至数据库;分析攻击数据,生成检测结果。
步骤一、部署以太坊蜜罐,诱导网络攻击者快速发现蜜罐主机并发送探测请求,捕获来自攻击者的恶意请求。
以太坊蜜罐是指一套可以模拟未受保护的以太坊远程过程调用(RPC)服务的系统。RPC服务是一种通过网络从远程计算机程序上请求服务,其信息协议由调用信息和答复信息两个不同结构组成,攻击者产生调用信息,以太坊蜜罐系统产生答复信息。
攻击者指任意可以与蜜罐系统进行交互的实体。恶意请求是指攻击者通过互联网发送的HTTP JSON-RPC请求,攻击者每发送一次恶意请求产生一次与以太坊蜜罐系统的交互,由于HTTP协议是无状态的协议,攻击者在进行一次攻击行为时会发送多个恶意请求,多个恶意请求共同构成了一次完整攻击。
如图3所示,本方法所述的以太坊蜜罐系统捕获来自攻击者恶意攻击请求的具体流程如下:
1.1)初始化蜜罐系统,对以太坊API方法按照伪造API方法和无危害API方法进行分类;
以太坊API接口是管理以太坊客户端的重要工具,默认情况下通过HTTP JSON-RPC接口可对以太坊客户端中的eth、net、rpc和web3模块进行管理。攻击者调用的API方法在其发送的RPC调用信息的method字段中指定,以太坊客户端会根据该指令来执行不同的处理逻辑。为了模拟以太坊客户端的RPC模块,以太坊蜜罐系统需要对这些API方法进行实现,当攻击者发送RPC请求调用信息时,蜜罐系统产生相应的答复信息。本方法根据API的功能对其进行分类。
1.1.1)建立需伪造API方法列表;
需伪造API方法是指用于欺骗并诱导攻击者与蜜罐系统进行下一步交互的方法。在1.7)中通过伪造RPC答复信息,诱导攻击者进行实质的攻击行为。
该类API方的法主要功能为查看、操作本地钱包或进行转账操作,包括但不限于:eth_accounts查询节点存放的钱包列表、eth_coinbase查询节点挖矿收益地址、eth_sendTransaction从本地钱包向任意地址转账、eth_sendRawTransaction发送已签名的交易。
1.1.2)建立无危害API方法列表;
无危害API方法是指不会对以太坊客户端造成实质危害的API方法。攻击者在进行实质攻击之前,需要发送一些请求对目标节点进行探测。当目标节点运行于以太坊主网时,其钱包存放的数字货币才是有价值的。对于这些调用请求,在1.9)中使用真实以太坊客户端产生RPC答复信息。
该类API方法主要功能为查询以太坊链上公共账本信息或查询以太坊节点状态信息,包括但不限于:net_version用于查询网络编号、net_peerCount查询节点邻居数量、eth_protocolVersion查询协议状态、eth_syncing查询节点同步状态、eth_mining、查询节点是否在挖矿、eth_hashrate查询节点挖矿效率、eth_gasPrice查询网络中发送交易需要的燃料价格、eth_blockNumber查询节点中区块高度、eth_getBalance查询特定账户余额、eth_getTransactionCount查询特定账户交易计数、eth_estimateGas估算发送一笔交易的燃料、eth_getBlockByHash通过哈希值获取最新区块、eth_getTransactionByHash通过哈希值获取特定交易、eth_getTransactionReceipt通过收据获取交易、eth_pendingTransactions查询待打包的交易,rpc_modules查询开放的RPC模块,web3_clientVersion查询以太坊客户端版本。
1.2)在有公网IP的主机上部署以太坊客户端并连接至以太坊主网络;
公网IP地址是指一个可以通过任意接入互联网设备直接访问的IP地址,其在整个互联网上具有唯一性。使用公网IP地址可以使来自任意IP地址的攻击者对步骤1.3中设置的RPC端口进行访问。
以太坊主网络是以太坊客户端启动后连接的默认网络,该网络上的数字货币有较高的价值,可以在交易所与法定货币进行兑换,是攻击者的主要目标。
以太坊客户端使用P2P协议与其他节点进行连接,通过邻居交换,可以使本地以太坊客户端被网络上的更多节点发现。攻击者通过监听邻居交换信息来寻找网络上的以太坊节点并进行攻击。邻居交换是指以太坊网络中一种邻居节点发现机制,交换的数据包括节点的标识符、IP地址和端口号。
具体地,在一个实施例中使用命令geth-rpc--rpcaddr localhost--rpcport9999启动以太坊Geth客户端。该命令表示启用RPC服务,在9999端口上接收自本地的RPC请求,为步骤1.9)提供答复信息。
1.3)监听主机8545端口,接收来自攻击者的恶意请求;
8545端口是以太坊Geth客户端HTTP JSON-RPC服务使用的默认端口。攻击者通过向该端口发送RPC调用信息来与蜜罐系统进行交互,所有的恶意请求均由该端口进入蜜罐系统。
1.4)判断恶意请求中调用信息是否符合JSON-RPC协议,如是执行1.5),否则跳转到1.6)。
标准JSON-RPC请求使用JSON作为数据格式,请求的调用信息包含下列成员:jsonrpc,指定JSON-RPC协议版本的字符串;method,表示所要调用方法名称的字符串;params,调用方法所需要的结构化参数值,该成员参数可以被省略;id,已建立客户端的唯一标识符。
判断条件包括:请求方法为POST,请求对象不为空,请求对象为JSON格式,可以从请求对象中解析到jsonrpc、method、params和id字段。
1.5)构造“请求无效”的答复信息;
当攻击者发起一次RPC请求时,服务端都必须回复一个JSON对象作为答复信息,当调用请求无效时,答复信息包含下列成员:jsonrpc;error,包含错误码code和错误信息message两个属性;id,该成员值必须与调用信息中的id成员值一致。
蜜罐系统生成的答复信息应与以太坊客户端的实现一致,对于无效请求返回错误码-32600和错误信息“Invalid request!”
1.6)判断攻击者调用的API方法是否在需伪造的API方法列表中,如是执行1.7,否则跳转到1.8。
1.7)构造需伪造API方法的答复信息;
当攻击者发起RPC请求调用需伪造API方法时,以太坊蜜罐系统构造调用成功的答复信息,答复信息包含下列成员:jsonrpc、result和id。其中result字段填写本次请求结果。
1.7.1)使用蜜饵以太坊账户地址构造答复信息;
蜜饵以太坊账户地址是指存放在蜜罐系统中的以太坊账户地址。具体地,在一个实施例中,使用“0xa33023b7c14638f3391d705c938ac506544b25c3”作为蜜饵以太坊账户地址。
本方法应选取至少一个以太币余额不为零的普通以太坊账户地址作为蜜饵以太坊账户地址,因为攻击者的主要目标是盗取数字货币,只有攻击者认为目标是有价值时,才会发送最终实质攻击请求。
具体地,当攻击者调用的API方法为“eth_accounts”或“personal_listWallets”时,使用蜜饵以太坊账户地址构造答复信息。
1.7.2)使用伪造的转账收据构造答复信息;
转账收据是指以太坊中发送转账交易成功时的返回结果,是一个长度为32字节哈希值,可以用来标识一笔交易。
具体地,当攻击者调用的API方法为“sendTransaction”或“sendRawTransaction”时,蜜罐系统生成32字节长随机字符串模拟转账收据,欺骗攻击者转账请求发送成功。
1.8)判断攻击者调用的API方法是否在无危害API方法列表中,如是,执行1.9,否则跳转到1.10);
1.9)使用真实以太坊客户端获取无危害API方法的答复信息;
对于无危害的API调用请求,本方法将攻击者发送的RPC调用请求原样转发到步骤1.2)部署的真实以太坊客户端,使用从客户端获取到的真实的数据作为答复信息。
1.10)构造“请求方法不可用”的答复信息;
以太坊客户端对于不存在或者不允许通过RPC接口调用的API模块,会构造“请求方法不可用”的答复信息。
蜜罐系统生成的答复信息与以太坊客户端的实现一致,错误码为-32601,错误信息为“The method does not exist/is not available”。
1.11)返回答复信息给攻击者;
1.12)将恶意请求信息记录到日志文件。
恶意请求信息是指在一次恶意请求中产生的各种数据,包括但不限于攻击者的IP地址、攻击者发起恶意请求使用程序的标识符User-Agent、蜜罐系统接收到恶意请求时的时间戳、恶意请求中包含的RPC调用信息(又称为攻击载荷Payload);以太坊蜜罐系统,返回攻击者的答复信息)。其中IP地址、User-Agent、时间戳、RPC调用信息是从攻击发送的HTTPJSON-RPC请求中解析得到。
具体地,将恶意请求信息有序排列成单行字符串,使用间隔符进行分割。再将字符串写入到日志文件。日志文件按天分割并以日期命名,文件中每一行记录表示一次恶意请求。
步骤二、将来自攻击者的恶意请求保存至数据库。
以太坊蜜罐系统将恶意请求记录到日志文件当中,由于该日志记录中混杂了来自多个恶意攻击者的恶意请求数据,并且含有产生大量重复数据,因此无法直接进行分析。为了更好的对以太坊数字货币盗取攻击进行检测好分析,需要将将来自攻击者的恶意请求保存至数据库,具体流程如下:
2.1)建立分布式非关系型数据库集群;
非关系型数据库,又被称为NoSQL,具有面向检索的列式存储、面向高性能并发读/写的缓存存储、面向海量数据访问的文档存储的特点。来自RPC端口的恶意请求为JSON格式,且攻击者在调用的不同API方法时产生的调用信息和答复信息在格式有较大差别,相对于传统关系型数据库,非关系型数据库可以很好的处理此类数据。
由于在以太坊数字货币窃取攻击过程中会产生大量的恶意请求,使用单机运行数据库系统会产生导入效率低、查询速度慢的问题,因此需要构建分布式数据库集群。具体地,在一个实施例中,使用九台普通主机组成了分布式MongoDB集群。
2.2)建立系统定时任务,运行日志处理程序;
定时任务是指系统以固定时间间隔执行系统指令或脚本程序。具体地,在一个实施例中,每日1时执行日志处理程序对前一日的日志文件进行处理。
2.3)日志处理程序按行读取并解析恶意请求记录,导入数据库;
2.3.1)日志处理程序与数据库系统建立连接;
2.3.2)从日志文件中按行读取恶意请求记录;
2.3.3)计算该行记录字符串的MD5,作为该次恶意请求的唯一标识符ID;
2.3.4)解析攻击请求中的攻击者的IP地址、User-Agent、时间戳、RPC调用信息以及蜜罐系统产生的答复信息;
2.3.5)将2.3.3)、2.3.4)得到的结果保存为一个JSON对象;
2.3.6)将JSON对象保存至非关系型数据库。
2.4)压缩日志文件,进行存档;
压缩日志文件可以有效的减少文件体积,减少文件传输时的带宽需求。在一个实施例中,一天产生的日志文件最高达到了5.4GB,使用gzip程序进行压缩后文件体积减少至589MB。
步骤三、分析攻击数据,对恶意请求进行关联,检测攻击行为,识别攻击者使用的攻击方法,对攻击者进行追踪,生成检测结果。
如图4所示,本方法使用数据库聚合查询的方法对以太坊攻击进行统计分析,检测攻击手法,对攻击者进行追踪,具体过程如下:
3.1)查询数据库,筛选含有攻击者以太坊账户地址的恶意请求;
在以太坊数字货币窃取攻击中,攻击者需要提供一个由其控制的以太坊账户用于接收赃款。
在数据库中以攻击者的源IP地址、调用的API方法名称Method、参数params进行聚合查询。查询结果为多组不重复的IP、Method、params的映射关系,使用下述方法提取攻击者的以太坊账户地址:
从“eth_sendTransaction”、“eth_signTransaction”、“eth_estimateGas”指令中提取params.to字段的值,即为攻击者的以太坊账户地址。这些是攻击者直接窃取以太坊客户端中存放钱包账户时使用的指令;从“miner_setEtherBase”指令中提取params字段的值。这是攻击者修改以太坊客户端挖矿收益地址时使用的指令;从“personal_importRawKey”指令中提取params字段的第一个值。并转换对应钱包地址,这是攻击者向节点导入恶意钱包时使用的指令;从“eth_sendRawTransaction”指令中提取params字段,进行RPL解码,如果结果data字段的前四字节为“0xa9059cbb”或“0x095ea7b3”,截取该字段的第17至36字节得到攻击者以太坊账户地址。这是攻击者使用零手续费攻击窃取ERC20代币时使用的指令。
3.2)建立攻击来源IP地址列表;
将3.1)中得到的攻击者IP地址列表进行去重,将得到攻击来源IP地址列表。
3.3)使用IP地址数据库对攻击来源IP地址进行标注;
IP地址数据库是汇集了IP地址分配和使用信息的数据库。一些企业和网站,如IP2Location,建立了IP地址数据库并对外提供查询服务。通过查询IP地址数据库,对恶意请求的来源IP地址进行标注,包括但不限于被分配到的国家、城市、服务提供商、绑定的域名以及是否由匿名代理设备使用等。这些信息可以用于对攻击者进行识别和追踪。
3.4)关联来自同一IP地址的恶意请求,得到攻击指令序列并检测攻击手法;
攻击指令序列是指在一次攻击操作中攻击者发送的一系列恶意请求。一次攻击操作会在蜜罐系统中留下多条恶意请求记录,本方法使用IP地址对这些记录进行关联。
具体地,在数据库中查询攻击来源IP地址列表中每一个IP地址发送的恶意请求记录,按照时间顺序进行排列。如指令序列较长,可对结果进行去重输出。检测攻击手法的方法包括:
3.4.1)检测暴力转账攻击:攻击指令序列中含有“eth_sendTransaction”或“eth_signTransaction”但不含有“personal_unlockAccount”;
3.4.2)检测暴力破解密码攻击:攻击指令序列中含有“personal_unlockAccount”;
3.4.3)检测修改挖矿地址攻击:攻击指令序列中含有“miner_setEtherBase”;
3.4.4)检测恶意钱包攻击:攻击指令序列中含有“personal_importRawKey”;
3.4.5)检测零手续费攻击:攻击指令序列中含有“eth_sendRawTransaction”且对params字段进行RPL解码后gasPrice字段为0。
3.5)建立攻击者以太坊账户地址列表;
将3.1)中得到的攻击者以太坊账户地址列表进行去重,得到攻击者以太坊账户地址列表。
3.6)查询攻击者以太坊账户交易记录;
攻击者在成功完成以太坊数字货币盗取攻击时,会在区块链系统的账本上留下转账记录。在以太坊系统中,所有的全节点都保存了完整的历史交易记录。通过导出节点数据可以建立以太坊交易数据库,如etherscan.io即是一个由开源社区提供的在线以太坊交易数据库。本方法通过使用以太坊交易数据库查询单个以太坊地址的全部交易历史。步骤如下:
3.6.1)向数据库发送查询请求,查询单个以太坊账户的全部交易记录;
单条交易记录中的数据包括但不限于:转出账户地址from,转入账户地址to,转账数额value。
3.6.2)遍历交易记录,判断并标记攻击交易;
判断依据是:from地址不在以太坊账户地址列表中,to地址为本次查询的以太坊账户地址;
3.6.3)对攻击交易的value字段进行累加,得到本次查询的以太坊账户的总攻击收益;
3.6.4)对攻击交易进行计数,得到本次查询的以太坊账户总攻击成功次数。
3.7)建立攻击者IP地址与以太坊账户地址映射列表;
将3.1)中得到的攻击者IP地址与以太坊账户地址列表进行去重,建立攻击者IP地址和以太坊账户地址的一对一映射关系。
3.8)关联攻击者使用的IP地址与以太坊账户地址;
在以太坊数字货币窃取攻击中,攻击者可以使用多台设备发送恶意请求,即对应多个IP地址,也可以使用多个以太坊账户地址进行收款。本方法使用如下步骤对将多个IP地址和多个以太坊账户地址关联到同一个攻击者上。具体流程如下:
3.8.1)将每个IP地址和攻击者以太坊账户地址的映射关系标记为一组;
3.8.2)检查不同组中是否含有相同的IP地址或以太坊账户地址。如是,执行3.8.3),否则跳转到3.8.4);
3.8.3)合并具有相同IP地址或以太坊账户地址的组;
3.8.4)依次输出每一组结果。本方法认为一组中的IP地址和以太坊账户地址为同一攻击者使用。
可选地,合并分组时排除步骤3.3)中标记为公共代理的IP地址。
可选地,关联具有相同C段的IP地址为同一攻击者。
可选地,关联两个有直接转账交易的以太坊账户地址为同一攻击者。
3.9)输出检测结果;
结果以步骤3.8)的分组为划分,每一组对应一个攻击者,结果包含以下信息:
攻击者使用的IP地址列表及步骤3.3)得到的标注信息;由步骤3.4)得到攻击者发送的指令序列和攻击手法;攻击者使用的以太坊账户地址列表及由步骤3.6)得到的收益信息。
如图2所示,示出了本发明方法所采用的系统,系统包括:
以太坊蜜罐系统,用于监听攻击者的恶意请求,诱导网络攻击者快速发现蜜罐主机并发送探测请求,捕获来自攻击者的恶意请求,将来自攻击者的恶意请求保存至数据库;其中以太坊蜜罐系统包括端口监听模块、请求处理模块、日志记录模块和以太坊客户端,端口监听模块连接攻击者端,端口监听模块分别连接请求处理模块和日志记录模块,以太坊客户端连接请求处理模块,日志记录模块连接至数据库模块;
数据库模块,用于存储以太坊蜜罐系统来自攻击者的恶意请求;
数据分析模块,用于对恶意请求进行关联,检测攻击行为,识别攻击者使用的攻击方法,对攻击者进行追踪,生成检测结果。
本发明的功能效果可以通过以下实验进一步说明:
步骤A在具有静态公网IP(47.98.252.101)的云主机上部署以太坊蜜罐系统,设置蜜饵以太坊账户地址:
"0xa33023b7c14638f3391d705c938ac506544b25c3";
步骤B发送探测请求:curl-s-H"Content-Type:application/json"-X POST--data'{"jsonrpc":"2.0","method":"net_version","params":[],"id":1}'http://47.98.252.101:8545
收到以太坊蜜罐系统答复信息:{"jsonrpc":"2.0","id":1,"result":"1"}表示连接至以太坊主网络;
步骤C发送获取信息请求:curl-s-H"Content-Type:application/json"-XPOST--data'{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":2}';http://47.98.252.101:8545
收到以太坊蜜罐系统答复信息:
{"jsonrpc":"2.0","id":2,"result":["0xa33023b7c14638f3391d705c938ac506544b25c3"]},表示目标系统存放有地址为0xa33023b7c14638f3391d705c938ac506544b25c3的以太坊钱包;
步骤D发送获取信息请求:curl-s-H"Content-Type:application/json"-XPOST--data
'{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xa33023b7c14638f3391d705c938ac506544b25c3","latest"],"id":3}'http://47.98.252.101:8545
收到以太坊蜜罐系统答复信息:
{"jsonrpc":"2.0","id":3,"result":"0xe04ad2e9f28f817"}表示当前钱包余额;
步骤E构造并发送实质攻击请求:curl-s-H"Content-Type:application/json"-XPOST–data
'{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xa33023b7c14638f3391d705c938ac506544b25c3","to":"0xcd2a3d9F938E13CD947EC05ABc7f E734Df8dd82a","gas":"0x5208","gasPrice":"0xBA43B7400","value":"0xdfd373e4521b817","data":"0x"}],"id":4}'http://47.98.252.101:8545
收到以太坊蜜罐系统答复信息:
{"jsonrpc":"2.0","id":4,"result":"0x5bf29cd723c1bdc0924b29c2696ec481fc86178dd42eca97aaa95b380e1b3a17"}表示攻击请求成功执行;
步骤F:在以太坊蜜罐系统中可以看到攻击日志,分析可得这是一个典型的以太坊蜜罐窃取攻击,攻击IP是122.225.220.138,攻击者以太坊账户地址0xcd2a3d9F938E13CD947EC05ABc7fE734Df8dd82a,使用攻击工具为curl/7.61.1,当前攻击收益为0。
为了进一步检查本发明的有效性和实用性,将本发明所述系统部署至一个的云服务器,并进行了总时长约为六个月的实验测试。捕获完成后,将日志记录导入至由九台普通主机组成的MongoDB分布式数据库集群进行分析。
实验结果分析:实验期间系统总共捕获了来自1072个独立IP地址,总计约3.08亿次的恶意请求,经过分析提取得到59个攻击者的以太坊账户地址,合并得到36组攻击者,其中34组进行以太币盗取攻击,攻击手法包括暴力转账、暴力破解密码、修改挖矿收益地址等,另外2组攻击者针对ERC20代币发起的零手续费交易攻击。截止2019年3月,34组针对以太币的窃取攻击的攻击者直接收益为4193以太币,市值约合60万美元。
本发明并不局限于上述实施例,在本发明公开的技术方案的基础上,本领域的技术人员根据所公开的技术内容,不需要创造性的劳动就可以对其中的一些技术特征作出一些替换和变形,这些替换和变形均在本发明的保护范围内。
Claims (9)
1.一种检测以太坊数字货币盗取攻击的方法,其特征在于,包括以下步骤:
步骤一、部署以太坊蜜罐,诱导网络攻击者快速发现蜜罐主机并发送探测请求,捕获来自攻击者的恶意请求;
步骤二、将来自攻击者的恶意请求保存至数据库;
步骤三、分析攻击数据,对恶意请求进行关联,检测攻击行为,识别攻击者使用的攻击方法,对攻击者进行追踪,生成检测结果;
所述步骤一,捕获来自攻击者的恶意请求具体步骤如下:
1.1)初始化蜜罐系统,对以太坊API方法按照伪造API方法和无危害API方法进行分类;
1.2)在有公网IP的主机上部署以太坊客户端并连接至以太坊主网络;
1.3)监听主机8545端口,接收来自攻击者的恶意请求;
1.4)判断恶意请求中调用信息是否符合JSON-RPC协议,如是,执行步骤1.5),否则跳转到步骤1.6);
1.5)构造“请求无效”的答复信息;
1.6)判断攻击者调用的API方法是否在需伪造的API方法列表中,如是,执行步骤1.7),否则跳转到步骤1.8);
1.7)使用蜜饵以太坊账户地址构造答复信息或使用伪造的转账收据构造答复信息;
1.8)判断攻击者调用的API方法是否在无危害API方法列表中,如是执行步骤1.9),否则跳转到步骤1.10);
1.9)使用真实以太坊客户端获取无危害API方法的答复信息;
1.10)构造“请求方法不可用”的答复信息;
1.11)返回答复信息给攻击者;
1.12)将恶意请求信息记录到日志文件。
2.根据权利要求1所述的一种检测以太坊数字货币盗取攻击的方法,其特征在于,所述步骤二,保存攻击者的恶意请求至数据库具体步骤如下:
2.1)建立分布式非关系型数据库集群;
2.2)建立系统定时任务,运行日志处理程序;
2.3)日志处理程序按行读取并解析恶意请求记录,导入数据库;
2.4)压缩日志文件,进行存档。
3.根据权利要求2所述的一种检测以太坊数字货币盗取攻击的方法,其特征在于,所述步骤2.3)的具体过程包括:
2.3.1)日志处理程序与数据库系统建立连接;
2.3.2)从日志文件中按行读取恶意请求记录;
2.3.3)计算该行记录字符串的MD5,作为该次恶意请求的唯一标识符ID;
2.3.4)解析攻击请求中的攻击者的IP地址、User-Agent、时间戳、RPC调用信息以及蜜罐系统产生的答复信息;
2.3.5)将步骤2.3.3)和2.3.4)得到的结果保存为一个JSON对象;
2.3.6)将JSON对象保存至非关系型数据库。
4.根据权利要求1所述的一种检测以太坊数字货币盗取攻击的方法,其特征在于,所述步骤三,分析攻击数据,生成检测结果具体步骤如下:
3.1)查询数据库,筛选含有攻击者以太坊账户地址的恶意请求;
3.2)建立攻击来源IP地址列表;
3.3)使用IP地址数据库对攻击来源IP地址进行标注;
3.4)关联来自同一IP地址的恶意请求,得到攻击指令序列并检测攻击手法;
3.5)建立攻击者以太坊账户地址列表;
3.6)查询攻击者以太坊账户交易记录;
3.7)建立攻击者 IP地址与以太坊账户地址映射列表;
3.8)关联攻击者使用的IP地址与以太坊账户地址;
3.9)输出检测结果。
5.根据权利要求4所述的一种检测以太坊数字货币盗取攻击的方法,其特征在于,所述步骤3.4)的具体过程包括:
3.4.1)检测暴力转账攻击:攻击指令序列中含有“eth_sendTransaction”或“eth_signTransaction”,但不含有“personal_unlockAccount”;
3.4.2)检测暴力破解攻击:攻击指令序列中含有“personal_unlockAccount”;
3.4.3)检测修改挖矿地址攻击:攻击指令序列中含有“miner_setEtherBase”;
3.4.4)检测恶意钱包攻击:攻击指令序列中含有“personal_importRawKey”;
3.4.5)检测零手续费攻击:攻击指令序列中含有“eth_sendRawTransaction”且对params字段进行RPL解码后gasPrice字段为0。
6.根据权利要求4所述的一种检测以太坊数字货币盗取攻击的方法,其特征在于,所述步骤3.6)的具体过程包括:
3.6.1)向数据库发送查询请求,查询单个以太坊账户的全部交易记录;单条交易记录中的数据包括:转出账户地址from、转入账户地址to和转账数额value;
3.6.2)遍历交易记录,判断并标记攻击交易;
3.6.3)对攻击交易的value字段进行累加,得到本次查询的以太坊账户的总攻击收益;
3.6.4)对攻击交易进行计数,得到本次查询的以太坊账户总攻击成功次数。
7.根据权利要求4所述的一种检测以太坊数字货币盗取攻击的方法,其特征在于,所述步骤3.8)的具体过程包括:
3.8.1)将每个IP地址和攻击者以太坊账户地址的映射关系标记为一组;
3.8.2)检查不同组中是否含有相同的IP地址或以太坊账户地址,如是,执行3.8.3),否则跳转到3.8.4);
3.8.3)合并具有相同IP地址或以太坊账户地址的组;
3.8.4)依次输出每一组结果;一组中的IP地址和以太坊账户地址为同一攻击者使用。
8.根据权利要求4所述的一种检测以太坊数字货币盗取攻击的方法,其特征在于,合并分组时排除步骤3.3)中标记为公共代理的IP地址;
关联具有相同C段的IP地址为同一攻击者;
关联两个有直接转账交易的以太坊账户地址为同一攻击者。
9.一种检测以太坊数字货币盗取攻击的系统,用于实现权利要求1-8任一项所述的方法,其特征在于,包括:
以太坊蜜罐系统,用于监听攻击者的恶意请求,诱导网络攻击者快速发现蜜罐主机并发送探测请求,捕获来自攻击者的恶意请求,将来自攻击者的恶意请求保存至数据库;
数据库模块,用于存储以太坊蜜罐系统来自攻击者的恶意请求;
数据分析模块,用于对恶意请求进行关联,检测攻击行为,识别攻击者使用的攻击方法,对攻击者进行追踪,生成检测结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910877466.2A CN110650128B (zh) | 2019-09-17 | 2019-09-17 | 一种检测以太坊数字货币盗取攻击的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910877466.2A CN110650128B (zh) | 2019-09-17 | 2019-09-17 | 一种检测以太坊数字货币盗取攻击的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110650128A CN110650128A (zh) | 2020-01-03 |
CN110650128B true CN110650128B (zh) | 2020-09-11 |
Family
ID=69010578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910877466.2A Active CN110650128B (zh) | 2019-09-17 | 2019-09-17 | 一种检测以太坊数字货币盗取攻击的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110650128B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111478912A (zh) * | 2020-04-10 | 2020-07-31 | 厦门慢雾科技有限公司 | 一种区块链入侵检测系统及方法 |
CN111585992B (zh) * | 2020-04-26 | 2022-05-10 | 数网金融有限公司 | 一种检测网络攻击的方法、客户端及存储介质 |
CN111683084B (zh) * | 2020-06-05 | 2022-05-10 | 广州大学 | 一种智能合约入侵检测方法、装置、终端设备及存储介质 |
CN111800407B (zh) * | 2020-06-30 | 2022-12-02 | 京东科技信息技术有限公司 | 网络攻击的防御方法、装置、电子设备及存储介质 |
CN111813999B (zh) * | 2020-08-13 | 2024-01-05 | 广州科创空间信息科技有限公司 | 一种提高以太坊智能合约字段扩展性的方法 |
CN112532636A (zh) * | 2020-12-02 | 2021-03-19 | 赛尔网络有限公司 | 一种基于T-Pot蜜罐和主干网流量的恶意域名检测方法及装置 |
CN114285640B (zh) * | 2021-12-24 | 2023-07-18 | 重庆邮电大学 | 面向区块链中以太坊节点日蚀攻击的检测系统及检测方法 |
CN117375866A (zh) * | 2022-06-30 | 2024-01-09 | 北京灵踪安全科技有限公司 | 一种追踪发生在区块链上合约攻击路径的方法 |
CN114866353B (zh) * | 2022-07-06 | 2022-09-30 | 广州锦行网络科技有限公司 | 高速公路网络的攻击者诱捕方法、装置以及电子设备 |
CN115174279B (zh) * | 2022-09-09 | 2022-11-29 | 南方科技大学 | 一种以太坊智能合约漏洞实时检测方法、终端及存储介质 |
CN116132142B (zh) * | 2022-12-30 | 2024-04-12 | 中国银联股份有限公司 | 一种区块链攻击拦截方法及装置 |
CN117522583B (zh) * | 2024-01-08 | 2024-04-26 | 江苏通付盾科技有限公司 | 一种基于余额分析的链上合约攻击交易检测方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108521426A (zh) * | 2018-04-13 | 2018-09-11 | 中国石油大学(华东) | 一种基于区块链的阵列蜜罐协同控制方法 |
CN109462599A (zh) * | 2018-12-13 | 2019-03-12 | 烽台科技(北京)有限公司 | 一种蜜罐管理系统 |
CN109495443A (zh) * | 2018-09-13 | 2019-03-19 | 中国科学院信息工程研究所 | 一种基于主机蜜罐对抗勒索软件攻击的方法和系统 |
CN109995789A (zh) * | 2019-04-10 | 2019-07-09 | 腾讯科技(深圳)有限公司 | 区块链系统中rpc接口的风险检测方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10778659B2 (en) * | 2012-05-24 | 2020-09-15 | Smart Security Systems Llc | System and method for protecting communications |
US10789597B2 (en) * | 2016-09-21 | 2020-09-29 | R-Stor Inc. | Systems and methods for using a distributed ledger for data handling |
-
2019
- 2019-09-17 CN CN201910877466.2A patent/CN110650128B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108521426A (zh) * | 2018-04-13 | 2018-09-11 | 中国石油大学(华东) | 一种基于区块链的阵列蜜罐协同控制方法 |
CN109495443A (zh) * | 2018-09-13 | 2019-03-19 | 中国科学院信息工程研究所 | 一种基于主机蜜罐对抗勒索软件攻击的方法和系统 |
CN109462599A (zh) * | 2018-12-13 | 2019-03-12 | 烽台科技(北京)有限公司 | 一种蜜罐管理系统 |
CN109995789A (zh) * | 2019-04-10 | 2019-07-09 | 腾讯科技(深圳)有限公司 | 区块链系统中rpc接口的风险检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110650128A (zh) | 2020-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110650128B (zh) | 一种检测以太坊数字货币盗取攻击的系统及方法 | |
US10867034B2 (en) | Method for detecting a cyber attack | |
CN107943951B (zh) | 一种区块链业务信息的检索方法及系统 | |
CN108881265B (zh) | 一种基于人工智能的网络攻击检测方法及系统 | |
CN102801697B (zh) | 基于多url的恶意代码检测方法和系统 | |
CN104144142B (zh) | 一种Web漏洞挖掘方法及系统 | |
US20110153811A1 (en) | System and method for modeling activity patterns of network traffic to detect botnets | |
US10659335B1 (en) | Contextual analyses of network traffic | |
CN103581363A (zh) | 对恶意域名和非法访问的控制方法及装置 | |
CN110489315B (zh) | 一种操作请求的跟踪方法、跟踪装置及服务器 | |
CN103888490A (zh) | 一种全自动的web客户端人机识别的方法 | |
CN110210213B (zh) | 过滤恶意样本的方法及装置、存储介质、电子装置 | |
CN101711470A (zh) | 一种用于在对等网络上创建共享信息列表的系统和方法 | |
CN110083391A (zh) | 调用请求监控方法、装置、设备及存储介质 | |
CN103067387B (zh) | 一种反钓鱼监测系统和方法 | |
CN104871171A (zh) | 分布式模式发现 | |
US11792157B1 (en) | Detection of DNS beaconing through time-to-live and transmission analyses | |
CN114205816B (zh) | 一种电力移动物联网信息安全架构及其使用方法 | |
CN115766258A (zh) | 一种基于因果关系图的多阶段攻击趋势预测方法、设备及存储介质 | |
CN115174279A (zh) | 一种以太坊智能合约漏洞实时检测方法、终端及存储介质 | |
CN111224981A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN111786990B (zh) | 一种针对web主动推送跳转页面的防御方法和系统 | |
CN110233821A (zh) | 一种智能设备网络空间的探测和安全扫描系统及其方法 | |
CN103647774A (zh) | 基于云计算的web内容信息过滤方法 | |
CN112714118A (zh) | 网络流量检测方法和装置 |
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 |