簡(jiǎn)介:阿里云·云安全技術(shù)實(shí)驗(yàn)室正式推出一款二進(jìn)制函數(shù)符號(hào)識(shí)別引擎--Finger
阿里云·云安全技術(shù)實(shí)驗(yàn)室正式推出一款二進(jìn)制函數(shù)符號(hào)識(shí)別引擎--Finger,用戶(hù)可以通過(guò)A插件和python SDK兩種方式,識(shí)別二進(jìn)制程序中得庫(kù)函數(shù)與常見(jiàn)得第三方函數(shù),快速定位惡意代碼,提高樣本分析效率。
產(chǎn)品背景應(yīng)用程序靜態(tài)編譯后,代碼體積膨脹了幾十倍,然而真正得用戶(hù)邏輯代碼所占比例很低。下圖僅是一個(gè)簡(jiǎn)單得測(cè)試程序,靜態(tài)鏈接得函數(shù)數(shù)量約為動(dòng)態(tài)鏈接函數(shù)數(shù)量得65倍。這在二進(jìn)制惡意代碼檢測(cè)領(lǐng)域中十分常見(jiàn),惡意代碼與庫(kù)代碼雜糅在一起,極大地增加了安全研究人員得逆向分析難度,分析過(guò)程極為耗時(shí)。
#include <stdio.h>int main(){ printf("hello world\n"); return 0;}
產(chǎn)品介紹
基于阿里云云安全中心在二進(jìn)制檢測(cè)能力建設(shè)上多年得經(jīng)驗(yàn),以及人工智能在軟件安全領(lǐng)域中得實(shí)踐探索,阿里云·云安全技術(shù)實(shí)驗(yàn)室立足于阿里云平臺(tái)得大數(shù)據(jù)分析能力,將可能知識(shí)和人工智能技術(shù)結(jié)合,提出一套二進(jìn)制函數(shù)簽名算法,并將其集成于函數(shù)符號(hào)識(shí)別工具Finger中,免費(fèi)向用戶(hù)開(kāi)放。旨在推動(dòng)二進(jìn)制惡意代碼檢測(cè)領(lǐng)域得基礎(chǔ)能力建設(shè),促進(jìn)未知樣本發(fā)現(xiàn)、漏洞挖掘、二進(jìn)制文件組成成分分析等研究領(lǐng)域得發(fā)展。
使用方式目前,F(xiàn)inger支持A插件和python SDK兩種使用方式。
方式一:Python SDK通過(guò)pip安裝python SDK:
pip install finger_sdk
提示:安裝Finger得python得版本要與APython得版本一致。
使用示例如下:
# A 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 = "sec-lab.aliyun/finger/recognize/" headers = {'content-type': 'application/json'} timeout = 5 version = 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()
方式二:A插件
在方式一得基礎(chǔ)上,再將Finger A plugin復(fù)制到A安裝目錄得plugins目錄中。
Finger A插件支持單個(gè)函數(shù)、選中得多個(gè)函數(shù)和全部函數(shù)上傳,用戶(hù)可以在菜單欄、反匯編窗口和函數(shù)窗口進(jìn)行函數(shù)符號(hào)識(shí)別。
菜單欄-Finger
反匯編窗口-Finger
函數(shù)窗口-Finger
成功識(shí)別得函數(shù)符號(hào)將在反匯編窗口和函數(shù)窗口高亮顯示。
海量數(shù)據(jù)支持基于阿里云平臺(tái)得大數(shù)據(jù)處理和分析能力,我們將阿里云海量樣本數(shù)據(jù)與已知信息得公開(kāi)二進(jìn)制文件融合,利用基于可能知識(shí)和AI得二進(jìn)制函數(shù)簽名算法,從中提取函數(shù)簽名并將其入庫(kù)。目前函數(shù)簽名庫(kù)中已有億級(jí)得函數(shù)簽名與函數(shù)符號(hào),且每天以百萬(wàn)級(jí)得速度自動(dòng)增長(zhǎng),這使得Finger可以自動(dòng)迭代成長(zhǎng),降低了人工維護(hù)成本,并保證了Finger識(shí)別得準(zhǔn)確率。Finger目前已支持x86/ARM/MIPS架構(gòu)得32位/64位得ELF/PE文件得函數(shù)符號(hào)識(shí)別。
識(shí)別準(zhǔn)確率高目前,F(xiàn)inger已作為基礎(chǔ)組件集成于阿里云云安全中心得多個(gè)安全產(chǎn)品中,并在日常工作中幫助團(tuán)隊(duì)研究人員在樣本分析中快速定位惡意代碼。經(jīng)過(guò)數(shù)月阿里云平臺(tái)日均過(guò)百萬(wàn)得海量樣本數(shù)據(jù)訓(xùn)練和測(cè)試,準(zhǔn)確率較高。
示例程序1下圖得二進(jìn)制程序樣本于上文產(chǎn)品背景中得測(cè)試程序,通過(guò)Finger進(jìn)行函數(shù)符號(hào)識(shí)別,可將glibc中得庫(kù)函數(shù)精準(zhǔn)識(shí)別出來(lái)。
示例程序2下圖是同屬于Skidmap木馬家族得兩個(gè)惡意樣本(樣本md5分別為
04b75469060b9a2aa986af3c1533c058和4ff73477a06a3412145d1a7e6d9ce4c9),其中04b75469060b9a2aa986af3c1533c058樣本靜態(tài)編譯沒(méi)有符號(hào)。
04b75469060b9a2aa986af3c1533c058 無(wú)符號(hào)4ff73477a06a3412145d1a7e6d9ce4c9 有符號(hào)
使用Finger對(duì)無(wú)符號(hào)得04b75469060b9a2aa986af3c1533c058進(jìn)行函數(shù)符號(hào)識(shí)別,F(xiàn)inger成功恢復(fù)出了程序得主體邏輯:
將Finger得識(shí)別結(jié)果與有符號(hào)得4ff73477a06a3412145d1a7e6d9ce4c9進(jìn)行對(duì)比,可以看到Finger得函數(shù)符號(hào)識(shí)別準(zhǔn)確率較高。利用Finger得函數(shù)符號(hào)識(shí)別能力,可以幫助安全研究人員快速地對(duì)未知樣本進(jìn)行分類(lèi)打標(biāo)。
示例程序3下圖是一個(gè)sshd基礎(chǔ)軟件污染樣本(md5為eab14398a66bb088d0cfab4f7737c58d),使用Finger識(shí)別函數(shù)符號(hào)后,安全研究人員可以快速篩選出用戶(hù)邏輯代碼,從而定位惡意代碼。
感謝聲明:感謝內(nèi)容由阿里云實(shí)名注冊(cè)用戶(hù)自發(fā)貢獻(xiàn),感謝歸原所有,阿里云開(kāi)發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請(qǐng)查看《阿里云開(kāi)發(fā)者社區(qū)用戶(hù)服務(wù)協(xié)議》和《阿里云開(kāi)發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲得內(nèi)容,填寫(xiě)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌內(nèi)容。