fingers finger

简介:阿里云·云安全技术实验室正式推出一款二进制函数符号识别引擎--Finger
阿里云·云安全技术实验室正式推出一款二进制函数符号识别引擎--Finger,用户可以通过IDA插件和python SDK两种方式,识别二进制程序中的库函数与常见的第三方函数,快速定位恶意代码,提高样本分析效率 。
产品背景应用程序静态编译后,代码体积膨胀了几十倍,然而真正的用户逻辑代码所占比例很低 。下图仅是一个简单的测试程序,静态链接的函数数量约为动态链接函数数量的65倍 。这在二进制恶意代码检测领域中十分常见,恶意代码与库代码杂糅在一起,极大地增加了安全研究人员的逆向分析难度,分析过程极为耗时 。
#include <stdio.h>int main(){printf("hello world\n");return 0;}
fingers finger

文章插图
产品介绍【fingers finger】基于阿里云云安全中心在二进制检测能力建设上多年的经验,以及人工智能在软件安全领域中的实践探索,阿里云·云安全技术实验室立足于阿里云平台的大数据分析能力,将专家知识和人工智能技术结合,提出一套二进制函数签名算法,并将其集成于函数符号识别工具Finger中,免费向用户开放 。旨在推动二进制恶意代码检测领域的基础能力建设,促进未知样本发现、漏洞挖掘、二进制文件组成成分分析等研究领域的发展 。
fingers finger

文章插图
使用方式目前,Finger支持IDA插件和python SDK两种使用方式 。
方式一:Python SDK通过pip安装python SDK:
pip install finger_sdk提示:安装Finger的python的版本要与IDAPython的版本一致 。
使用示例如下:
# IDA Python# coding: utf-8import idcimport idaapiimport idautilsfrom finger_sdk import client, ida_funcimport platformdef recognize_functions(client):for func_ea in idautils.Functions():pfn = idaapi.get_func(func_ea)func_name = idaapi.get_func_name(func_ea)func_feat = ida_func.get_func_feature(pfn.start_ea)if func_feat:func_id, res = client.recognize_function(func_feat)if res and res[func_id]:func_symbol = res[func_id]print("[+]Recognize %s: %s" %(func_name, func_symbol))def main():url = "https://sec-lab.aliyun.com/finger/recognize/"headers = {'content-type': 'application/json'}timeout = 5version = platform.python_version()if version.startswith('3'):ida_auto.auto_wait()my_client = client.Client(url, headers, timeout)recognize_functions(my_client)ida_pro.qexit(0)else:Wait()my_client = client.Client(url, headers, timeout)recognize_functions(my_client)Exit(0)if __name__ == "__main__":main()方式二:IDA插件在方式一的基础上,再将Finger IDA plugin复制到IDA安装目录的plugins目录中 。
Finger IDA插件支持单个函数、选中的多个函数和全部函数上传,用户可以在菜单栏、反汇编窗口和函数窗口进行函数符号识别 。
菜单栏-Finger
fingers finger

文章插图
反汇编窗口-Finger
fingers finger

文章插图
函数窗口-Finger
fingers finger

文章插图
成功识别的函数符号将在反汇编窗口和函数窗口高亮显示 。
海量数据支持基于阿里云平台的大数据处理和分析能力,我们将阿里云海量样本数据与已知信息的公开二进制文件融合,利用基于专家知识和AI的二进制函数签名算法,从中提取函数签名并将其入库 。目前函数签名库中已有亿级的函数签名与函数符号,且每天以百万级的速度自动增长,这使得Finger可以自动迭代成长,降低了人工维护成本,并保证了Finger识别的准确率 。Finger目前已支持x86/ARM/MIPS架构的32位/64位的ELF/PE文件的函数符号识别 。
识别准确率高目前,Finger已作为基础组件集成于阿里云云安全中心的多个安全产品中,并在日常工作中辅助团队研究人员在样本分析中快速定位恶意代码 。经过数月阿里云平台日均过百万的海量样本数据训练和测试,准确率较高 。
示例程序1下图的二进制程序样本来源于上文产品背景中的测试程序,通过Finger进行函数符号识别,可将glibc中的库函数精准识别出来 。
fingers finger

文章插图
示例程序2下图是同属于Skidmap木马家族的两个恶意样本(样本md5分别为
04b75469060b9a2aa986af3c1533c058和4ff73477a06a3412145d1a7e6d9ce4c9),其中04b75469060b9a2aa986af3c1533c058样本静态编译没有符号 。

秒懂生活扩展阅读