CN117522583A - 一种基于余额分析的链上合约攻击交易检测方法 - Google Patents
一种基于余额分析的链上合约攻击交易检测方法 Download PDFInfo
- Publication number
- CN117522583A CN117522583A CN202410022606.9A CN202410022606A CN117522583A CN 117522583 A CN117522583 A CN 117522583A CN 202410022606 A CN202410022606 A CN 202410022606A CN 117522583 A CN117522583 A CN 117522583A
- Authority
- CN
- China
- Prior art keywords
- transaction
- balance
- contract
- attack
- address
- 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.)
- Granted
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 62
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000008859 change Effects 0.000 claims abstract description 64
- 238000012216 screening Methods 0.000 claims abstract description 20
- 238000012544 monitoring process Methods 0.000 claims abstract description 4
- 230000008439 repair process Effects 0.000 claims abstract description 4
- 238000012546 transfer Methods 0.000 claims description 19
- 230000000977 initiatory effect Effects 0.000 claims description 12
- 230000009191 jumping Effects 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 10
- 238000001914 filtration Methods 0.000 claims description 8
- 230000001960 triggered effect Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 1
- 102100035183 ERC protein 2 Human genes 0.000 description 1
- 101000876444 Homo sapiens ERC protein 2 Proteins 0.000 description 1
- 241000084978 Rena Species 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 238000012106 screening analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Health & Medical Sciences (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Databases & Information Systems (AREA)
- Technology Law (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Debugging And Monitoring (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明涉及信息安全技术领域,具体涉及一种基于余额分析的链上合约攻击交易检测方法,包括步骤:实时监测链上的交易状态,发现新的交易;对每一笔新的交易进行地址分析,筛选出符合条件的嫌疑交易;对筛选出的嫌疑交易进行日志和余额变化分析,以识别出攻击交易;播报和推送识别出的攻击交易,以便及时追溯链上资产,定位和修复合约漏洞,降低损失。本发明通过分析区块链上的历史交易记录,总结出合约攻击的特性,实时监测链上的新交易并提取,基于合约攻击特性,设定筛选条件,以过滤掉新交易中的一批非攻击交易,通过地址‑余额相结合的方式,对筛选提取出的嫌疑交易进行递进式地层层筛选,以定位识别出攻击交易。
Description
技术领域
本发明涉及信息安全技术领域,特别涉及一种基于余额分析的链上合约攻击交易检测方法。
背景技术
区块链的去中心化和防篡改特性以及智能合约自动化执行的特性,吸引了大量开发项目,项目之间通过智能合约进行交互,但,由于合约一旦部署,很难更改,若项目方的项目设计或开发存在漏洞,容易受到攻击,造成合约中数字财产损失。因此,及时检测识别出攻击交易并进行防御,提高区块链环境安全性,是亟待解决的问题。
当前,通常是根据代币的价格的方式来判断某种代币是否被攻击。然而代币的价格更新不及时,在发现攻击时,攻击者已将盗取的资产转移到别处,项目方或安全工程师来不及做出回应,造成大量资金损失,且根据代币价格更新变化的方式,能够知道链上有合约被攻击,但无法追溯并定位攻击交易,很难做出反应以及时减少损失。因此,本发明提供一种基于余额分析的链上合约攻击交易检测方法,以解决现有技术中存在的问题。
发明内容
本发明目的是:提供一种基于余额分析的链上合约攻击交易检测方法,以解决现有技术中无法从大量交易的快速识别出合约攻击并快速反击的,造成资金损失的技术问题。
本发明的技术方案是:一种基于余额分析的链上合约攻击交易检测方法,包括:
根据历史攻击事件,总结攻击合约特性,并设定筛选条件;
实时监测链上的交易状态,发现新的交易;
对每一笔新的交易进行地址分析,基于筛选条件提取出嫌疑交易;
对筛选出的嫌疑交易进行日志和余额变化分析,以识别出攻击交易;
播报和推送识别出的攻击交易,以便及时追溯链上资产,定位和修复合约漏洞,降低经济损失。
优选的,对新交易进行分析筛选,以提取出符合条件的嫌疑交易,筛选条件包括:
条件1:交易的To是一个合约账户,而不是外部账户;
条件2:交易调用了To合约中的函数,且交易的From地址是To合约的部署者地址;
条件3:To合约的所有交易的不同发起地址的数量不超过三个;
条件4:To合约中包含了闪电贷函数;
条件5:To合约不是标准合约代币;
同时满足条件1~条件5的新交易,筛选并标记为嫌疑交易。
优选的,通过多级并行和条件跳转相结合的方式,对嫌疑交易进行日志和余额分析,以识别出攻击交易;
分析内容主要包括:原生代币的余额变化;标准合约代币余额变化;嫌疑交易的日志中是否记录选定事件,以及与选定事件对应的地址余额变化。
优选的,识别出攻击交易的流程为:
根据From地址和To地址代币在交易前后的余额情况,进行预分析,以先行过滤掉大部分的非攻击交易;
对过滤后剩下的嫌疑交易进行分析,过程包括:
根据From地址中原生代币余额的变化情况无法判断是否是攻击交易的状态下,跳转至分析From地址中标准合约代币的余额变化情况;
在From地址中标准合约代币余额的变化情况无法判断是否是攻击交易的状态下,跳转至分析To地址中标准合约代币余额变化情况;
交易前后To合约中原生代币余额变化无法判断是否是攻击交易的状态下,跳转至分析To地址中标准合约代币余额变化情况;
根据To地址中标准合约代币余额变化情况无法判断是否是攻击交易的状态下,跳转至嫌疑交易中其他外部账户的地址进行余额分析。
优选的,过滤掉嫌疑交易中的非攻击交易,过滤条件为:
From地址在扣除交易费后,原生代币余额减少,则判定该嫌疑交易为非攻击交易;
From地址的标准合约代币余额减少,则判定该嫌疑交易为非攻击交易;
To地址交易前的原生代币余额大于零,则判定该嫌疑交易为非攻击交易;
To地址交易前的标准合约代币余额总数大于零,则判定该嫌疑交易为非攻击交易;
其中,过滤后剩余的嫌疑交易,满足如下标准:
a、From地址没有支出任何代币,包括原生代币和标准合约代币;
b、To地址中在交易前任何代币的余额都是零,包括原生代币和标准合约代币。
优选的,基于From地址原生代币余额变化以识别攻击交易,包括:
在扣除交易费后,From地址中原生代币余额增加,且余额增加量不低于1个代币,则判定该嫌疑交易为攻击交易;
在扣除交易费后,From地址中原生代币余额增加,且增加量低于1个代币,则判定该交易为非攻击交易;
在扣除交易费后,原生代币保持不变,则跳转至分析From地址中的标准合约代币的余额变化。
优选的,通过分析交易日志中触发的标准合约代币的Transfer事件、原生代币封装合约的Withdrawal事件和Deposit事件,统计日志中From地址所有标准合约代币的接受和支出情况,计算余额增减量:
若From地址的代币余额增加,增加的代币总价值不低于1000美元,并且交易后To合约对应代币余额为零,则判定该嫌疑交易为攻击交易;
若From地址的代币余额增加,增加的代币总价值低于1000美元,或者交易后To合约对应代币余额不为零,则判定该嫌疑交易为非攻击交易;
From地址的所有代币余额不变,则跳转分析To地址的代币余额变化情况。
优选的,根据交易前后To合约的原生代币余额状态以识别攻击交易,内容包括:
To合约中交易后的原生代币余额不小于1个原生代币,则判定该嫌疑交易为攻击交易;
To合约中交易后的原生代币余额小于1个原生代币,则判定该嫌疑交易为非攻击交易;
To合约中,交易前和交易后的原生代币余额均为零,则跳转分析To地址的标准合约代币的余额变化情况。
优选的,通过分析交易日志中触发标准合约代币的Transfer事件、原生代币封装合约的Withdrawal事件和Deposit事件,统计日志中To合约所有标准合约代币余额的接受和支出情况,计算每一种代币的余额增减量,然后根据交易后的To合约的标准合约代币余额,计算出交易前的余额;
交易后To合约的代币余额大于零,且代币的总价值不低于1000美元,则判定对应嫌疑交易是攻击交易;
交易后To合约的代币余额大于零,且代币的总价值小于1000美元,则判定对应嫌疑交易是非攻击交易;
交易前和交易后To合约的所有代币余额始终是零,则跳转分析嫌疑交易中的除交易发起地址外的其他外部地址的余额变化情况。
优选的,基于嫌疑交易中其他外部地址的余额变化情况,识别攻击交易的过程包括:
查询交易日志中是否存在Withdrawal事件;
若存在Withdrawal事件,且第一个地址参数是外部账户地址且不是交易发起地址,第二个整数参数的值不小于1个原生代币,则判定对应嫌疑交易为攻击交易;否则,跳转分析Transfer事件;
查询交易日志中是否存在参数from是To合约且参数to是外部账户地址的Transfer事件;
若不存在,则判定对应嫌疑交易不是攻击交易;
若存在,则进一步分析外部账户地址的余额变化:
若余额增加,并且增加的余额总价值不低于1000美元,则判定对应嫌疑交易为攻击交易,否则,判定对应嫌疑交易不是攻击交易。
与现有技术相比,本发明的优点是:
(1)本发明对链上的交易进行分析,通过分析交易前后地址的代币余额变化来判断交易是否是攻击者发起的攻击。在交易层面上识别攻击事件。相比于根据代币的价格来判断攻击事件,不仅可以更快的识别交易,而且更方便定位攻击的根本原因,方便项目方和安全工程师快速应对攻击事件;及时追溯链上资产,定位和修复合约漏洞,降低经济损失。
(2)实时监测链上的交易,对每一笔新的交易进行条件分析,避免漏掉任何一笔交易。
(3)基于筛选条件过滤掉大量非攻击交易,对提取出的嫌疑交易进行代币余额变化分析,先分析From和To地址的原生代币余额变化,能够快速识别攻击交易,提高攻击交易的识别速度。
(4)分析From和To地址的原生代币余额变化后,对交易日志进行查询访问,以分析From和To的标准合约代币的余额变化,然后再分析其他相关的外部账户地址余额变化,能够全方面覆盖所有代币的转账情况,降低攻击交易的漏报率。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1为本发明所述基于余额分析的链上合约攻击交易检测方法的流程框图;
图2为本发明所述嫌疑交易中对From和To地址中余额变化的分析流程图;
图3为本发明所述其他相关外部地址中余额变化的分析流程图;
图4为本发明实施例中对新交易层层递进式筛选分析以识别出攻击交易的交易筛选过程变化示意图。
具体实施方式
下面结合具体实施例,对本发明的内容做进一步的详细说明:
参照附图1中的流程图,本发明实施例提供了一种基于余额分析的链上合约攻击交易检测方法,包括如下过程:
实时监测区块链上的交易,及时发现新的交易。
对检测到的新的交易进行地址分析,筛选出符合条件的嫌疑交易;
对筛选出的嫌疑交易进行日志和余额变化分析,以识别出攻击交易;
播报和推送识别出的攻击交易,以便及时追溯链上资产,定位和修复合约漏洞,降低经济损失。
合约攻击是攻击者通过攻击合约发起攻击交易实现的。因此,攻击交易中的To必然是一个合约账户,而不是外部账户(External Owned Account, EOA)。
而在攻击交易发生前,攻击者部署攻击合约,然后调用合约发起攻击,因此,交易的From是To合约的部署者地址。
根据攻击者发起攻击交易为了获利的目的,为了减少攻击步骤和节约成本,降低攻击者的暴露风险,一起攻击交易的发起者通常为一人,初始资金通过闪电贷来实现,且使用同一个地址实施合约攻击,复杂的攻击交易会涉及到2-3个地址,因此,To合约的所有交易的发起地址(不同地址)数量不超过三个。
其中,闪电贷是一个业务合约,合约提供无抵押贷款功能,只需要在交易结束之前还款(还款包括贷款和手续费)即可。闪电贷必须在同一笔交易内完成贷款和还款,而且贷款上限为合约中的全部资金。
根据对历史合约攻击交易的特点分析,本实施例将攻击合约的几个特性作为筛选条件对区块链上发生的新的交易进行筛选,剔除掉不符合攻击合约特性的交易。
综合对攻击合约的分析,设定筛选嫌疑交易的筛选条件为:
条件1:交易的To是一个合约账户,而不是外部账户(External Owned Account,EOA)。
判断To账户是否是合约账户的方式为:判断To账户中的CodeHash字段是否为空,若该字段不为空,则To是一个合约账户。
条件2:交易调用了To合约中的函数,且交易的From地址是To合约的部署者地址。
To地址的首笔交易为合约部署交易,读取其中的From,然后与交易的From进行比较,两者相同时,满足条件,否则不满足。
条件3:To合约的所有交易的不同发起地址的数量不超过三个;
条件4:To合约中包含了闪电贷函数;
条件5:To合约不是标准合约代币;
攻击交易的目的是为了获利,即交易或可获得净利润。但交易的发起以及攻击都需要成本,且攻击成本较高。通常情况下,攻击者选择闪电贷获取大量代币(Token),在攻击交易获利后偿还闪电贷,最后获得净利润离场。因此,攻击交易与一般交易最大的区别在于代币的余额变化情况。
实时监测链上的交易,对每一笔新的交易进行分析,识别其中的攻击交易,不会漏掉任何一笔交易。
本实施例通过Python语言实现并部署到以太坊(Ethereum)主链上,参照表格1中交易信息,从结果可以看出,实现了对以太坊主链上的交易的实时检测:
表格1.连续三日攻击交易检测统计
经过审核,表格1检测结果中的交易都是攻击交易,而且都是Hope.moneyExploiter发起的攻击交易。
基于总结分析获得的五个筛选条件,筛选掉大量不符合条件的交易,对提取出的嫌疑交易递进式地层层分析代币余额变化,从而识别出攻击交易。
不同的地址和代币分析难度存在差异,本实施例综合了分析难度和攻击交易的概率来进行分析。交易地址分为From地址和To地址,根据代币的数据和转账格式等,将代币分为原生代币(如ETH、BNB)和标准的合约代币(如ERC20/BEP20、ERC721/BEP721)。为了描述方便,本实施方式以ETH和ERC20为例,对两种类型的代币进行分析,对其他类型的代币同样适用。
通过地址-代币组合的方式,对交易的From和To的Token余额变化(转账行为)进行分析。
由于ETH容易被攻击交易,且易于获得余额变化(读取交易前后交易地址状态就可得到ETH余额变化)的特点,相比于分析交易日志,分析ETH相对较简单,能更快地排除掉非攻击交易。
另外,通过分析大量历史攻击交易,攻击者将获利地址转换为ETH,因为ETH更容易参与混币,而ERC20代币可能会被锁死而不能提取。
因此,先分析ETH余额变化,然后再进一步通过交易日志分析ERC20代币的余额变化情况,识别出攻击交易,可以提高攻击交易的识别速度。
而ETH的余额变化中,由于多数交易都会直接引起From的代币增加,其中,From的ETH余额增加的情况比From的ERC2代币余额增加的更多,所以优先分析From的ETH余额是否增加。
又因为ETH余额变化分析比ERC20余额变化分析要简单的多,因为不需要分析交易日志,只需要读取交易前后区块中地址余额即可,可以同时读取From和To两个地址的ETH余额。
因此,在实际分析时,优先分析From和To的ETH余额变化,然后是From的ERC20的余额变化,最后是To的ERC20的余额。
通过交易对账户余额的影响来判断是否是攻击交易,在判断过程中会受到障碍交易的干扰,导致难以准确检测。例如,小金额的正常获利交易。
因此,本实施通过余额分析检测攻击交易的过程中,设定获利余额量的范围,以界定攻击交易和通常的获利交易。
参照附图2中的流程框图,对交易的From和To的Token余额变化(转账行为)进行详细分析,内容如下:
一、分析交易From地址的ETH余额在扣除掉交易费后的变化情况,包括:
A.在扣除交易费后,From地址的ETH余额有增加,且增量是From或To通过原生代币封装合约(如WETH合约)提取的ETH数量,且余额增加量不低于1个代币(如1ETH),且To的WETH和ETH余额是0,即From是通过To合约获取到的ETH,该嫌疑交易是一笔攻击者发起的攻击。
在扣除交易费后,From地址中原生代币余额增加,且增加量低于1个代币(如1ETH),则判定该交易为非攻击交易。即,在考虑获利交易的情况下,过滤掉小额的获利交易。
读取交易中从WETH合约中提取的ETH数量,只需要分析交易Logs中的Withdrawal事件即可。
表格2.交易1:Ethereum
表格2中的数字和字母组成的字符串为交易编号。(其他交易的表格类似)
在生成的该编号表示的交易1中,From的ETH余额增加了148.79ETH,不低于1ETH,并且To地址的WETH的余额为零,因此判定该交易编号表示的交易为攻击交易。
表格3.交易2:Arbitrum
表格3中的交易2中,From地址的ETH余额增加了94.32ETH,并且To地址的WETH和ETH余额是0,因此判定该交易为攻击交易。
表格2和表格3中出现Arbitrum和Ethereum,表示交易1和交易2均为区块链主链上的交易,而其中Arbitrum是以太坊的二层网络,其原生代币仍是ETH,对应的ARB币是代币中的一种标准合约代币(ERC20)。
B.在扣除交易费后,ETH余额仍有减少,即From在交易中有支出ETH,则判定该交易为非攻击交易。
C.扣除交易费后,ETH余额保持不变,即From在交易中没有支出任何除交易费外的费用,无法明确判断交易是否为攻击交易,则跳转下一步,对From中的ERC20代币余额情况进行进一步分析。
表格4.交易3:Ethereum
在交易3中From的ETH余额不变,RENA(一种ERC20代币)余额增加了352835.76RENA,总价值不低于1000美元。因此,判定该交易为攻击交易。
区块链上的代币通常按照个数来计算(如多少个代币),通过价格预言机提供兑换价格,将代币按照价格兑换成美元,然后再兑换成其它代币,实现货币单位的转换。本实施例以交易余额增加的总价值衡量其是否是攻击交易。
二、分析交易前后To的ETH余额情况,包括:
分析交易前后To合约的ETH余额是否为零。
A.交易前To合约的ETH余额大于零,且小于1个原生代币(如1ETH),说明交易前合约中保存了ETH,判定该交易为非攻击交易;若余额为零,则需要分析To合约交易后的ETH余额。
B.在交易前To合约的ETH余额为零的前提下:若交易后To合约的ETH余额不是零,且不小于1个原生代币(如1ETH),说明交易中To合约有来自其他合约的转账,则判定交易为攻击交易。
若交易后To合约的ETH余额为0,即To合约交易前后余额没有变化,始终是零,则需要进一步分析To合约的ERC20余额情况。
另外,需要说明的是,对于交易前后To合约的ETH余额均为非零(都有代币余额)的情况几乎不存在。理由如下:
其一:攻击的初始资金一般来自于闪电贷,以降低攻击行为所要支付的成本,这就使得发起攻击时,攻击者部署的攻击合约中不会有ETH和其他ERC代币。
其二:有些代币如果不及时提取,且数量较大,可能会被代币发行方锁死在合约中,所以攻击发生后,攻击者最终都会将合约中的代币提取到外部账户进行混币,因此,攻击交易的交易后余额几乎不可能是非零。
故,考虑到攻击者攻击的获利并变现的目的,交易前后To合约的ETH余额均为非零的情况视为没有。
通过分析交易Logs中触发的ERC20的Transfer事件、原生代币封装合约(如WETH)的Withdrawal事件和Deposit事件,统计Logs中From地址所有ERC20 Token的接受和支出情况,计算每一种Token的余额增减量。
三、From地址的ERC20余额分析,具体过程如下:
A. From地址的Token余额总数减少,即From在交易中有支出某一种Token,判定该交易为非攻击交易。
B. From地址的Token余额总数增加,增加的代币总价值不低于1000美元,没有Token余额减少,并且To合约所有Token余额为0,即From地址在交易中在没有任何支出的情况下获利,判定该交易为攻击交易。
若From地址的代币余额增加,增加的代币总价值低于1000美元,或者交易后To合约对应代币余额不为零,则判定该嫌疑交易为非攻击交易。
C. From地址的所有Token余额不变。这种情况下需要进一步分析To可约Token余额的变化情况。
通过分析交易Logs中触发的ERC20的Transfer事件、原生代币封装合约(如WETH)的Withdrawal事件和Deposit事件,统计Logs中To合约所有ERC20 Token的接受和支出情况,计算每一种Token的余额增减量。然后根据交易后的To合约的ERC20 Token余额,可以计算出交易前的余额。
四、To地址的ERC20余额分析,具体过程如下:
A.交易前To合约的Token余额大于零,且代币的总价值小于1000美元,即To合约在交易前就存储了代币,判定该交易为非攻击交易。
B.交易前To合约的所有Token余额都是零并且交易后To合约的某一种Token余额大于零,且代币的总价值不低于1000美元,即,To合约在没有任何支出的情况下有接收到来自某个合约的Token,判定该交易为攻击交易。
C.交易前和交易后To合约的所有Token余额始终是0。无法明确判断是否为攻击交易,结合附图3中流程图,进一步对交易中的其他外部账户地址进行代币余额分析。
表格5.交易4:Ethereum
表格5中显示的一笔交易4中,From的ETH余额不变,所有ERC20代币余额不变;To的ETH余额不变,WETH(一种ERC20代币)余额增加了6106.65WETH,总价值不低于1000美元,因此判定交易4为一笔攻击交易。
为了表述方便,将地址和货币进行分类组合介绍,在具体实施时,可以按照流程图的顺序(或上述的四种组合的先后顺序)进行执行。也可以不按照流程顺序执行。
以下提供一种实施方式:
根据攻击交易的初始资金通常是闪电贷实现的特点,在攻击交易中,攻击发起的地址不可能支出除交易费之外的ETH的,故,在扣除交易费后仍然有ETH支出的交易不是攻击交易。基于此,可以优先滤除掉嫌疑交易中的非攻击交易。
即,根据From地址和To地址代币在交易前后的余额变化,优先过滤掉前述四种组合方式中的一(B)、二(A)、三(A)和四(A)的四个为非攻击交易的交易,减少后续分析工作量,提高识别速度。
滤掉嫌疑交易中的非攻击交易,然后对剩下的嫌疑交易进一步分析。本实施例过滤后剩下的嫌疑交易具备特点:
a、From地址没有支出任何代币(包括原生代币和标准合约代币);
b、To地址中在交易前的任何代币(包括原生代币和标准合约代币)的余额都是零。
经过初始的五个条件筛选和过滤条件筛选,然后对剩下的嫌疑交易执行其他余额情况分析,在四种分类情况中,每一种方式再分析时能够直接识别出攻击交易,或跳转到另一组合情况进一步分析。
参照附图4中给出了,对交易递进式分析识别攻击交易的过程变化示意图。
过滤剩下的嫌疑交易大概率是攻击交易且实现较容易,优先进行分析能够在快速识别攻击交易的同时降低漏报率。
五、其他外部账户地址ETH余额分析
其他外部账户地址为来自To合约且不是交易发起地址的外部账户地址。
查询交易Logs(交易日志)中是否存在Withdrawal事件;
若不存在,则判定该嫌疑交易不是攻击交易;
若存在,且第一个地址参数是外部账户地址且不是交易发起地址,第二个整数参数的值不小于1个原生代币(如1ETH),则判定对应嫌疑交易为攻击交易;否则,跳转分析Transfer事件。
六、其他相关外部账户地址ERC20余额分析
查询交易Logs中是否存在参数from是To合约,且to是外部账户地址的Transfer事件;
若不存在,则判定该嫌疑交易为非攻击交易;
若存在,则分析这些外部账户地址的余额变化。
若余额增加,并且增加的余额总价值不低于1000美元,则判定该嫌疑交易为攻击交易;否则,该嫌疑交易为非攻击交易。
根据以上余额变化的分析,将攻击交易发送到播报平台,然后推送给项目方和安全工程师,进行预警,方便安全工程师对合约漏洞进行分析定义,同时也方便项目方及时采取安全措施降低经济损失,尽可能地及时定位到漏洞并进行修复。
随着攻击交易的增加,能够不断优化根据历史事件总结出的共同特性,不断优化筛选条件和提高攻击交易的识别效率,降低漏报率。
例如,合约的owner账户调用claim函数,提取合约中的全部代币,这种交易即使在攻击策略优化中存在,也不会从攻击交易的预警栏目中移除;又如,一些直接的攻击交易不符合预警条件,理论上在条件筛选时会被筛除掉,但当攻击者提取代币时,也会被预警,如此,根据对攻击者的交易分析,就不会漏掉真正的攻击交易。
本发明实施例对链上的交易进行分析,通过分析交易前后地址的代币余额变化来判断交易是否是客户发起的攻击,在交易层面识别攻击交易,相比于根据代币价格来判断攻击事件,本发明不仅可以更快的识别交易,而且能够更方便定位出攻击的原因,快速追溯资金去向并及时追讨被盗资金,降低经济损失。
快速且准确地识别出合约攻击交易,以便快速应对,实施反击,尽可能地不让资金流入到攻击者手中,甚至能够让项目方挽回一部分资金损失。若是每一次攻击的资金都不会流入攻击者账户,即,攻击者无法实际获利,甚至还要支付手续费,那么链上环境将会变得更加安全。
在分析了From和To地址的原生代币余额变化后,查询分析交易日志以分析From和To的标准合约代币的余额变化;然后再分析其他相关的外部账户的余额变化情况,能够全面覆盖所有的代币转账情况,降低攻击交易的漏报率。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明,因此无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。
Claims (10)
1.一种基于余额分析的链上合约攻击交易检测方法,其特征在于,包括:
根据历史攻击事件,总结攻击合约特性,并设定筛选条件;
实时监测链上的交易状态,发现新的交易;
对每一笔新的交易进行地址分析,基于筛选条件提取出嫌疑交易;
对筛选出的嫌疑交易进行日志和余额变化分析,以识别出攻击交易;
播报和推送识别出的攻击交易,以便及时追溯链上资产,定位和修复合约漏洞,降低经济损失。
2.根据权利要求1所述的一种基于余额分析的链上合约攻击交易检测方法,其特征在于,对新交易进行分析筛选,以提取出符合条件的嫌疑交易,筛选条件包括:
条件1:交易的To是一个合约账户,而不是外部账户;
条件2:交易调用了To合约中的函数,且交易的From地址是To合约的部署者地址;
条件3:To合约的所有交易的不同发起地址的数量不超过三个;
条件4:To合约中包含了闪电贷函数;
条件5:To合约不是标准合约代币;
同时满足条件1~条件5的新交易,筛选并标记为嫌疑交易。
3.根据权利要求1所述的一种基于余额分析的链上合约攻击交易检测方法,其特征在于,通过多级并行和条件跳转相结合的方式,对嫌疑交易进行日志和余额分析,以识别出攻击交易;
分析内容主要包括:原生代币的余额变化;标准合约代币余额变化;嫌疑交易的日志中是否记录选定事件,以及与选定事件对应的地址余额变化。
4.根据权利要求3所述的一种基于余额分析的链上合约攻击交易检测方法,其特征在于,识别出攻击交易的流程为:
根据From地址和To地址代币在交易前后的余额情况,进行预分析,以先行过滤掉大部分的非攻击交易;
对过滤后剩下的嫌疑交易进行分析,过程包括:
根据From地址中原生代币余额的变化情况无法判断是否是攻击交易的状态下,跳转至分析From地址中标准合约代币的余额变化情况;
在From地址中标准合约代币余额的变化情况无法判断是否是攻击交易的状态下,跳转至分析To地址中标准合约代币余额变化情况;
交易前后To合约中原生代币余额变化无法判断是否是攻击交易的状态下,跳转至分析To地址中标准合约代币余额变化情况;
根据To地址中标准合约代币余额变化情况无法判断是否是攻击交易的状态下,跳转至嫌疑交易中其他外部账户的地址进行余额分析。
5.根据权利要求4所述的一种基于余额分析的链上合约攻击交易检测方法,其特征在于,过滤掉嫌疑交易中的非攻击交易,过滤条件为:
From地址在扣除交易费后,原生代币余额减少,则判定该嫌疑交易为非攻击交易;
From地址的标准合约代币余额减少,则判定该嫌疑交易为非攻击交易;
To地址交易前的原生代币余额大于零,则判定该嫌疑交易为非攻击交易;
To地址交易前的标准合约代币余额总数大于零,则判定该嫌疑交易为非攻击交易;
其中,过滤后剩余的嫌疑交易,满足如下标准:
a、From地址没有支出任何代币,包括原生代币和标准合约代币;
b、To地址中在交易前任何代币的余额都是零,包括原生代币和标准合约代币。
6.根据权利要求4所述的一种基于余额分析的链上合约攻击交易检测方法,其特征在于,基于From地址原生代币余额变化以识别攻击交易,包括:
在扣除交易费后,From地址中原生代币余额增加,且余额增加量不低于1个代币,则判定该嫌疑交易为攻击交易;
在扣除交易费后,From地址中原生代币余额增加,且增加量低于1个代币,则判定该交易为非攻击交易;
在扣除交易费后,原生代币保持不变,则跳转至分析From地址中的标准合约代币的余额变化。
7.根据权利要求4所述的一种基于余额分析的链上合约攻击交易检测方法,其特征在于,通过分析交易日志中触发的标准合约代币的Transfer事件、原生代币封装合约的Withdrawal事件和Deposit事件,统计日志中From地址所有标准合约代币的接受和支出情况,计算余额增减量:
若From地址的代币余额增加,增加的代币总价值不低于1000美元,并且交易后To合约对应代币余额为零,则判定该嫌疑交易为攻击交易;
若From地址的代币余额增加,增加的代币总价值低于1000美元,或者交易后To合约对应代币余额不为零,则判定该嫌疑交易为非攻击交易;
From地址的所有代币余额不变,则跳转分析To地址的代币余额变化情况。
8.根据权利要求4所述的一种基于余额分析的链上合约攻击交易检测方法,其特征在于,根据交易前后To合约的原生代币余额状态以识别攻击交易,内容包括:
To合约中交易后的原生代币余额不小于1个原生代币,则判定该嫌疑交易为攻击交易;
To合约中交易后的原生代币余额小于1个原生代币,则判定该嫌疑交易为非攻击交易;
To合约中,交易前和交易后的原生代币余额均为零,则跳转分析To地址的标准合约代币的余额变化情况。
9.根据权利要求4所述的一种基于余额分析的链上合约攻击交易检测方法,其特征在于,通过分析交易日志中触发标准合约代币的Transfer事件、原生代币封装合约的Withdrawal事件和Deposit事件,统计日志中To合约所有标准合约代币余额的接受和支出情况,计算每一种代币的余额增减量,然后根据交易后的To合约的标准合约代币余额,计算出交易前的余额;
交易后To合约的代币余额大于零,且代币的总价值不低于1000美元,则判定对应嫌疑交易是攻击交易;
交易后To合约的代币余额大于零,且代币的总价值小于1000美元,则判定对应嫌疑交易是非攻击交易;
交易前和交易后To合约的所有代币余额始终是零,则跳转分析嫌疑交易中的除交易发起地址外的其他外部地址的余额变化情况。
10.根据权利要求4所述的一种基于余额分析的链上合约攻击交易检测方法,其特征在于,基于嫌疑交易中其他外部地址的余额变化情况,识别攻击交易的过程包括:
查询交易日志中是否存在Withdrawal事件;
若存在Withdrawal事件,且第一个地址参数是外部账户地址且不是交易发起地址,第二个整数参数的值不小于1个原生代币,则判定对应嫌疑交易为攻击交易;否则,跳转分析Transfer事件;
查询交易日志中是否存在参数from是To合约且参数to是外部账户地址的Transfer事件;
若不存在,则判定对应嫌疑交易不是攻击交易;
若存在,则进一步分析外部账户地址的余额变化:
若余额增加,并且增加的余额总价值不低于1000美元,则判定对应嫌疑交易为攻击交易,否则,判定对应嫌疑交易不是攻击交易。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410022606.9A CN117522583B (zh) | 2024-01-08 | 2024-01-08 | 一种基于余额分析的链上合约攻击交易检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410022606.9A CN117522583B (zh) | 2024-01-08 | 2024-01-08 | 一种基于余额分析的链上合约攻击交易检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117522583A true CN117522583A (zh) | 2024-02-06 |
CN117522583B CN117522583B (zh) | 2024-04-26 |
Family
ID=89749846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410022606.9A Active CN117522583B (zh) | 2024-01-08 | 2024-01-08 | 一种基于余额分析的链上合约攻击交易检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117522583B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110650128A (zh) * | 2019-09-17 | 2020-01-03 | 西安电子科技大学 | 一种检测以太坊数字货币盗取攻击的系统及方法 |
AU2020202793A1 (en) * | 2017-09-29 | 2020-05-21 | Leverage Rock Llc | Scalable distributed ledger system, transaction privacy and combating fraud, theft and loss |
CN111787017A (zh) * | 2020-07-02 | 2020-10-16 | 电子科技大学 | 一种区块链攻击溯源系统及方法 |
US20220058734A1 (en) * | 2020-08-20 | 2022-02-24 | Mark Walter Vick | System and method for secure anonymous payment processing of virtual assets or services |
CN115099798A (zh) * | 2022-06-21 | 2022-09-23 | 华南理工大学 | 一种基于实体识别的比特币异常地址追踪系统 |
CN115375480A (zh) * | 2022-09-14 | 2022-11-22 | 华东师范大学 | 基于图神经网络的异常虚拟币钱包地址检测方法 |
CN117081818A (zh) * | 2023-08-29 | 2023-11-17 | 广州大学 | 基于智能合约防火墙的攻击交易识别与拦截方法及系统 |
-
2024
- 2024-01-08 CN CN202410022606.9A patent/CN117522583B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2020202793A1 (en) * | 2017-09-29 | 2020-05-21 | Leverage Rock Llc | Scalable distributed ledger system, transaction privacy and combating fraud, theft and loss |
CN110650128A (zh) * | 2019-09-17 | 2020-01-03 | 西安电子科技大学 | 一种检测以太坊数字货币盗取攻击的系统及方法 |
CN111787017A (zh) * | 2020-07-02 | 2020-10-16 | 电子科技大学 | 一种区块链攻击溯源系统及方法 |
US20220058734A1 (en) * | 2020-08-20 | 2022-02-24 | Mark Walter Vick | System and method for secure anonymous payment processing of virtual assets or services |
CN115099798A (zh) * | 2022-06-21 | 2022-09-23 | 华南理工大学 | 一种基于实体识别的比特币异常地址追踪系统 |
CN115375480A (zh) * | 2022-09-14 | 2022-11-22 | 华东师范大学 | 基于图神经网络的异常虚拟币钱包地址检测方法 |
CN117081818A (zh) * | 2023-08-29 | 2023-11-17 | 广州大学 | 基于智能合约防火墙的攻击交易识别与拦截方法及系统 |
Non-Patent Citations (1)
Title |
---|
梅秋丽;龚自洪;刘尚焱;王妮娜;: "区块链平台安全机制研究", 信息安全研究, no. 01, 5 January 2020 (2020-01-05) * |
Also Published As
Publication number | Publication date |
---|---|
CN117522583B (zh) | 2024-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8417600B2 (en) | Systems and methods for graduated suspicious activity detection | |
CN106875078B (zh) | 交易风险检测方法、装置及设备 | |
CN103119634A (zh) | 在投注和彩票游戏中检测欺诈行为的方法和系统 | |
CN110414914A (zh) | 业务数据监控方法和装置 | |
CN101976419A (zh) | 交易数据的风险监控处理方法和系统 | |
CN110895758B (zh) | 存在作弊交易的信用卡账户的筛选方法、装置及系统 | |
CN108932585A (zh) | 一种商户运营管理方法及其设备、存储介质、电子设备 | |
CA2687870A1 (en) | Fraud protection | |
CN111179066B (zh) | 业务数据的批量处理方法、装置、服务器和存储介质 | |
CN203165071U (zh) | 一种现金支付与管理装置 | |
CN117522583B (zh) | 一种基于余额分析的链上合约攻击交易检测方法 | |
CN113837512A (zh) | 异常用户的识别方法及装置 | |
JP6760875B2 (ja) | 口座管理装置及びプログラム | |
JP6760874B2 (ja) | 情報処理装置及びプログラム | |
CN115187366A (zh) | 一种基于智能合约的闪电贷识别方法和装置 | |
CN110956445B (zh) | 用于生成风险文件的方法和装置 | |
CN112116450A (zh) | 风险预警方法和装置 | |
US8595040B2 (en) | Associate risk analysis | |
CN112634473B (zh) | 一种基于车联网的停车缴费方法及系统 | |
CN117522582B (zh) | 一种基于字节码分析的智能合约闪电贷攻击预警系统及方法 | |
JP7016394B2 (ja) | 情報処理装置及びプログラム | |
Julisch | Risk-based payment fraud detection | |
CN116091059B (zh) | 一种虚拟预付卡防盗刷系统 | |
CN117952619B (zh) | 基于数字人民币钱包账户关联性的风险行为分析方法、系统及计算机可读介质 | |
JP7049417B2 (ja) | 口座管理装置及びプログラム |
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 |