一种基于静态特征和动态插桩的区块链交易监测方法及系统技术方案

技术编号:31847576 阅读:15 留言:0更新日期:2022-01-12 13:28
本发明专利技术公开了一种基于静态特征和动态插桩的区块链交易监测方法及系统,通过交易数据静态语义分析以及交易重放动态执行检测的方式,最大程度地降低恶意交易的检测误报率,更准确地区分恶意交易和正常交易行为,并通过智能合约虚拟机插桩和动态污点分析的方法,检测交易中敏感数据的传播行为;同时利用了机器学习的方法,分析了恶意交易行为和正常交易行为通过系统动静态的方法检测后的返回结果,并增加了最后的研判阶段,可以有效判断该交易是否为恶意交易。本发明专利技术可检测区块链相应智能合约的交易,并辅助了机器学习算法采用静态特征分析和动态执行检测结合分析的方式有效提高检测准确率,对于提升检测准确度有着显著效果。对于提升检测准确度有着显著效果。对于提升检测准确度有着显著效果。

【技术实现步骤摘要】
一种基于静态特征和动态插桩的区块链交易监测方法及系统


[0001]本专利技术涉及计算机安全
,尤其涉及一种基于静态特征和动态插桩的区块链交易监测方法及系统。

技术介绍

[0002]随着网络信息化程度的进一步提高以及区块链技术的发展,近年来基于区块链的交易市场规模扩张迅速,同时由于链上的交易和数据缺乏监管,使得区块链上存有大量的恶意交易,威胁着链上智能合约和用户资金的安全,造成不可估量的经济损失。
[0003]区块链最重要的技术特色之一就是智能合约。智能合约是存储在区块链上的程序,可以协助和验证合约的谈判和运行。很多区块链平台都支持了智能合约的运行。区块链的智能合约可以用数种图灵完备的编程语言写成。智能合约使得区块链平台的开发者能够定义更多的规则,生成更多去中心化的应用供平台用户进行调用和交互。一方面,因为合约内容公开,合约可以证明其宣称的功能是真实的。另一方面,合约的公开性也表示如果合约中有漏洞,任何人都可以立刻看到,而修正程序可能会需要一些时间。同时由于智能合约要保证充分的公正性,往往无法向其他软件一样进行更新升级,因此一旦出现漏洞难以修复。The DAO 就是一个例子,无法及时阻止,最终通过硬分叉的形式强行挽回了资金损失,但是硬分叉是一种相对来说损害去中心化的方式,因此如何检测这种针对智能合约漏洞的攻击是很有必要的。
[0004]目前对于区块链上的智能合约的漏洞检测方案有oyente、securify、mythril等,只能静态地针对合约代码进行审计,检测其是否存在某一类的漏洞或者缺陷。但是由于目前智能合约丰富的可组合性,使得很多潜在的威胁无法被检测到,例如闪电贷攻击就是通过各个合约的组合,借出大量资金,对某一合约的预言机漏洞或者其他漏洞进行攻击利用,套取大量利润。因此有时需要实时监测恶意交易才能确定是否有恶意行为的出现,并且及时采取相关防御措施,并且后续修复和溯源。目前针对智能合约的经典漏洞(整数溢出、重入漏洞、时间戳依赖漏洞等)的恶意交易检测和研究比较丰富,但是无法对于一些代码逻辑上的漏洞进行检测,也无法对闪电贷漏洞进行检测,同时静态分析产生的漏洞误报率比较高。另外目前针对区块链上的交易监测和数据分析,都仅仅是用于追踪资产流向的目的,很少涉及到恶意交易的监测。

技术实现思路

[0005]为了克服上述现有技术的不足,本专利技术提供一种基于静态特征和动态插桩的区块链交易监测方法及系统,可检测包括造成资金流失结果的各类恶意交易,并通过动态监测和动态执行的方法来提高恶意交易的检测准确率。
[0006]本专利技术提供的基于静态特征和动态插桩的区块链交易监测方法及系统,建立了各种恶意交易模型,通过对目前区块链实时交易数据的分析处理,能够最大程度地检出恶意交易,并且在本地区块链网络进行重放,确认恶意交易是否真正危害到合约和用户安全,最
大程度地分辨出正常交易和恶意交易。具体技术方案如下:一种基于静态特征和动态插桩的区块链交易监测方法,主要包括:交易数据提取与解析阶段、交易数据静态检测阶段、交易数据动态执行测试阶段、交易确认与上报阶段;其中:交易数据提取与解析阶段执行如下步骤:步骤1,运行区块链主网络节点客户端,对要监测的智能合约地址进行收集;步骤2,监测将要验证确认的交易,提取其中from或者to地址为目标智能合约地址的交易;步骤3,解析交易的Input Data字段,对应相关智能合约获取调用函数和参数;交易数据静态检测阶段具体执行如下步骤:步骤4,将步骤3获得的调用函数和参数放入智能合约的恶意交易静态检测规则中进行匹配,如果有恶意交易特征则进行步骤5,如果无恶意交易特征则为正常交易,予以忽略;交易数据动态执行测试阶段具体执行如下步骤:步骤5,将静态检测中存有恶意交易特征的交易,放入系统中本地运行的节点网络中进行广播;步骤6,通过虚拟机动态插桩和动态污点分析的方法,对执行过程中的合约状态进行监测,同时将最后事件日志和交易结果进行提取解析,与既定的正常和恶意的交易特征规则进行匹配;交易确认与上报阶段执行如下步骤:步骤7,将步骤4和步骤6中对该交易的分析结果返回,通过机器学习辅助规则匹配分析结果,研判是否存在恶意行为;步骤8,将研判后确认为恶意交易的交易上报给监测系统的使用者和管理员,进行预警。
[0007]利用上述区块链交易监测方法,本专利技术实现了相应的区块链交易监测系统,包括:交易数据提取与解析子系统、交易数据静态检测子系统、交易数据动态执行测试子系统以及交易确认与上报子系统;其中:交易数据提取与解析子系统包括交易数据提取模块和交易数据解析模块;交易数据提取模块用于提取与目标智能合约相关的交易的from地址、to地址、Input Data字段以及value值;交易数据解析模块用于解析交易数据Input Data字段为相应的函数以及传入的参数信息;交易数据静态检测子系统包括全局状态获取模块和静态规则匹配模块;全局状态获取模块用于获取区块链当前合约下的全局状态,包括持有者地址、余额等状态信息;静态规则匹配模块中集成了各种资金流失类恶意交易的行为特征,如异常无符号整型参数、敏感data参数等等,用于匹配恶意交易数据特征,分析是否存在有恶意行为。
[0008]交易数据动态执行测试子系统包括交易重放模块、虚拟机动态插桩模块和动态污点分析模块;交易重放模块用于在本地的动态测试区块链环境重放疑似恶意的交易;虚拟机动态插桩模块用于对智能合约中的指令前后进行Hook,生成相应的回调函数,分析所执行的指令行为,同时对智能合约中的事件的生成进行Hook,生成相应的回调函数,分析新生
成事件的结果,与指令行为进行比对;动态污点分析模块用于检测污点数据的传播路径,支持不同智能合约相互调用间的污点传播。
[0009]交易确认与上报子系统包括恶意交易研判确认模块和恶意交易上报模块;恶意交易研判确认模块用于采集和分析交易数据静态检测子系统与交易数据动态执行测试子系统生成的恶意交易信息,最后通过机器学习辅助规则匹配的方式生成判断结果;恶意交易上报模块用于上报经过系统确认过的恶意交易,并通知到系统的使用者。
[0010]本专利技术的有益效果是:本专利技术提供的基于静态特征和动态插桩的区块链交易监测方法及系统,通过交易数据静态语义分析以及交易重放动态执行检测的方式,最大程度地降低恶意交易的检测误报率,更准确地区分恶意交易和正常交易行为,并通过智能合约虚拟机插桩和动态污点分析的方法,检测交易中敏感数据的传播行为。同时利用了机器学习的方法,分析了恶意交易行为和正常交易行为通过系统动静态的方法检测后的返回结果,并增加了最后的研判阶段,可以有效判断该交易是否为恶意交易。本专利技术可检测区块链相应智能合约的交易,并辅助了机器学习算法采用静态特征分析和动态执行检测结合分析的方式有效提高检测准确率,对于提升检测准确度有着显著效果。
附图说明
[0011]图1为本专利技术的区块链交易检测方法的流程框图。
[0012]图2为本专利技术实施例提供的区块链交易监测系统的结构框图。
具体实施方式
[0013]下面结合本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链交易监测方法,包括交易数据提取与解析阶段、交易数据静态检测阶段、交易数据动态执行测试阶段、交易确认与上报阶段,具体执行步骤如下:1) 运行区块链主网络节点客户端,对要监测的智能合约地址进行收集;2) 监测将要验证确认的交易,提取其中from或者to地址为目标智能合约地址的交易;3) 解析交易的Input Data字段,对应相关智能合约获取调用函数和参数;4) 将步骤3)获得的调用函数和参数放入智能合约的恶意交易静态检测规则中进行匹配,如果有恶意交易特征则进行步骤5;5) 将静态检测中存有恶意交易特征的交易放入系统中本地运行的节点网络中进行广播;6) 通过虚拟机动态插桩和动态污点分析的方法,对执行过程中的合约状态进行监测,同时将最后事件日志和交易结果进行提取解析,与既定的正常和恶意的交易特征规则进行匹配;7) 将步骤4)和步骤6)中对该交易的分析结果返回,通过机器学习辅助规则匹配分析结果,研判是否存在恶意行为;8) 将研判后确认为恶意交易的交易上报给监测系统的使用者和管理员,进行预警。2.如权利要求1所述的区块链交易监测方法,其特征在于,步骤1)中要监测的智能合约地址包括资金量较大的DeFi合约项目地址和NFT合约项目地址。3.如权利要求1所述的区块链交易监测方法,其特征在于,步骤4)中所述恶意交易静态检测规则中的恶性交易特征包括:整数溢出交易行为、超额借贷行为、敏感函数调用行为、巨额资金流动行为和敏感用户资金流动行为。4.如权利要求1所述的区块链交易监测方法,其特征在于,步骤6)中所述虚拟机动态插桩包括指令级插桩、函数级插桩、合约级插桩以及交易级插桩,其中:指令级插桩,对每一个op指令执行前后进行插桩,分别设置beforeOp和afterOp回调函数供编写实现相应测试规则;函数级插桩,执行每一个函数前后进行插桩,分别设置beforeFunc和afterFunc回调函数供编写实现相应测试规则;合约级插桩,执行每一个合约前后进行插桩,分别设置beforeContract和afterContract回调函数供编写实现相应测试规则;交易级插桩,对每一个交易执行前后进行插桩,分别设置beforeTX和afterTX回调函数供编写实现相应测试规则。5.如权...

【专利技术属性】
技术研发人员:刘宇航陈夏润肖遥杨洲胡叶舟方莹刘军杰
申请(专利权)人:北京雁翎网卫智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1