智能合约的第三方库检测
Eveneko Blogger

第三方库检测方法总结

函数检测是一种二进制分析技术,将二进制代码分类为原始代码级别的函数相近的函数。用于二进制插桩、二值漏洞搜索、二元保护方案(包括流的完整性),以及帮助反向工程师分析代码区域间隔,推理复杂的二进制代码。

白名单匹配

提取API级别的函数签名方法

  • 函数名、参数名等可以被轻易更改,但是调用参数类型,返回值类型是不可修改的。
  • 提取API目录级别的特征,提取函数方法签名(Method signatures),做修剪+hash操作
  • Reliable Third-Party Library Detection in Android and its Security Applications
    • Pruned Method signatures
      • 对signatures在method级别进行必要的修剪。
      • 方法签名可以唯一确定这个函数,由方法名称和有序的参数列表组成。
    • 得到修剪后的方法签名后,采用MD5将其hash成128位的比特串。这个bit值代表method级别的特征。但是我们要检测的库函数是一个package级别,一个package包含多个class,一个class包含多个method。于是利用Merkle trees将多个Method Hash集合再一次进行hash操作,形成class hash值,作为class级别的特征。

字节码特征匹配方法

  • 提取函数开头的32个字节机器码
  • 33->可变字节,进行CRC16值验证,记录校验值和字节数,外部符号引用引用属性(辅助特征)。
  • 先分好函数块,然后进行第三方库的识别 (IDA PRO)
  • pro
    • 完全是基于二进制代码操作,与编译器、优化级别等完全无关。
  • con
    • 由于函数头的二进制字节码被修改后,此方法便无法很好地区分混淆。
  • 反编译中的库函数识别技术研究

控制流图

多特征

  • BinShape: Scalable and Robust Binary Library Function Identification Using Function Shape
    • CFG、指令级特征、统计特征、函数调用图
    • 论文提出方法的主要步骤是,反编译,提取上述四个特征,采用互信息计算,选择最佳的特征子集,为每个函数构建特定的签名信息。
    • 排名靠前的特征被输入决策树,决策树的结果被存储在一个数据结构中,以形成每个库函数的签名。

Automated Detection and Classification of Third-Party Libraries in Large Scale Android Apps

Abstract

  • 通过白名单检测第三方库不完善且不准确
    • 第三方库的种类和数量很大
    • 常见的代码混淆或者第三方库伪装等技术使得白名单方法不能准确地识别第三方库
  • 提出一种第三方库自动检测和分类方法
    • 基于多级聚类技术准确识别第三方库
    • 基于机器学习对第三方库的功能进行准确分类

获取APK中第三方库信息的工具

在网上能够收集到的只有16年北大的LibRadar、reddr开源的LibScout和基于LibScout开发的apkLibDetect

  • LibRadar
    • 该工具使用基于多级聚类的方法来检测第三方库,其目的是为了快速分析应用中使用的第三方库。
    • 它能够识别应用中属于第三方库的代码,但不能完整地将第三方库的根目录识别出来;
    • 同时,该工作并没有考虑第三方库的功能分类。
    • 因为第三方库调用的次数多,再加上第三方库一般不会修改,根据这两个特点判断是否为第三方库。

RQ

  • 智能合约的第三方库有哪些
  • 智能合约的第三方库的类型
  • 智能合约的第三方库怎么用
  • 智能合约的第三方库在bytecode是什么样的
  • 怎么检测智能合约的第三方库可能可行
  • [] Ethereum中library与Wasm合约中library的区别

智能合约的第三方库有哪些

  • openzeppelin-contracts
    • 用于安全智能合同开发的库
    • ERC20和ERC721等标准的实施。
    • 基于角色的灵活权限方案。
    • 可重复使用的Solidity组件,以构建自定义合同和复杂的分散系统。

Reference

  • Post title:智能合约的第三方库检测
  • Post author:Eveneko
  • Create time:2021-11-30 16:20:54
  • Post link:https://eveneko.com/2021/11/30/3rd-in-smart-contract/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
 Comments