0 引言
同類對比
- Discoverer
采用遞歸聚類技術(shù)將具有相似格式的消息組合在一起, 分析速度快龙致, 自動化程度高蛀缝。但其缺乏對協(xié)議中語義信息的解析,存在準確性不高目代、不 能 處 理 加 密 通 信 等 局 限屈梁。- Polyglot
采 用 了 一 種shadowing方法來監(jiān)視應(yīng)用程序?qū)f(xié)議數(shù)據(jù)的處理過程,并通過分析應(yīng)用程序?qū)f(xié)議數(shù)據(jù)進行處理時的二進制信息來提取協(xié)議格式榛了,準確性更高在讶,也能解析出更多的協(xié)議信息。
但 Polyglot也無法解析加密通信協(xié)議霜大。- AutoFormat的關(guān)鍵思想是同一條協(xié)議消息中不同協(xié)議字段被處理時的執(zhí)行上下文一般不同构哺。因此通過對每個消息字節(jié)的執(zhí)行上下文信息進行聚類即可推斷出協(xié)議字段組成。
但 AutoFormat 不能處理經(jīng)過混淆的惡意代碼僧诚,對加密通信數(shù)據(jù)也無法處理遮婶。- Reformat通過統(tǒng)計函數(shù)片段中算術(shù)和邏輯指令所占的比例來定位協(xié)議解密過程,進而定位協(xié)議明文數(shù)據(jù)湖笨。
但 Reformat 只考慮了簡單軟件的通信實現(xiàn)
情況旗扑,對于協(xié)議數(shù)據(jù)經(jīng)過分段加密、多重加密等情況未予考慮
1 本文思想簡介
基于動態(tài)污點分析的加密通信協(xié)議逆向分析方法慈省,利用動態(tài)二進制插樁平臺 Pin[6] 將目標程序通信過程中的程序軌跡記錄成二進制文件臀防,并以這些文件作為分析基礎(chǔ),采用數(shù)據(jù)流分析構(gòu)建指令級和函數(shù)級的污點傳播圖边败, 還原程序的函數(shù)調(diào)用和函數(shù)的參數(shù)信息袱衷,再利用提取的解密過程的特征定位協(xié)議數(shù)據(jù)的解密函數(shù), 進而定位解密的明文笑窜, 最后對協(xié)議明文的格式進行解析
插樁:探針致燥,進行信息采集的代碼段
軌跡文件:程序運行時的指令序列
污點分析:通過對帶污點標記的數(shù)據(jù)的傳播實施分析來達到保護數(shù)據(jù)完整性和保密性的目的
2 思路
2.1 動態(tài)執(zhí)行軌跡記錄
定義一 . 協(xié)議逆向分析
對于一條協(xié)議消息 M, 對它進行逆向分析是指將 M 還原成符合協(xié)議規(guī)范的 n 個字段
Fieldi = { rangei排截,valuei嫌蚤,typei}={偏移范圍,取值断傲,類型}
定義二 . 加密協(xié)議逆向分析
對于一條加密協(xié)議消息M* 脱吱,對 它 進 行 逆 向 分 析 是 指 找 到 消 息 明 文 M
M =D( M* )
定義三。執(zhí)行軌跡
執(zhí)行軌跡是指程序運行時的指令序列认罩,記做 Trace〈I箱蝠, N〉
定義四。污點源
指污點分析需要關(guān)注的關(guān)鍵數(shù)據(jù),在協(xié)議分析中污點源指程序收到的數(shù)據(jù)包宦搬, 記為
TS〈Addr牙瓢,Length〉
方法
編寫了基于動態(tài)分析平臺 Pin 的指令軌跡記錄插件,記錄目標程序在網(wǎng)絡(luò)通信過程中的運行軌跡信息床三,每條指令信息包括指令地址一罩、字節(jié)碼杨幼、線程號以及訪問的寄存器和內(nèi)存...
2.2 污點分析
1 中間語言
將復(fù)雜指令簡單統(tǒng)一化
2 污點傳播規(guī)則
當污點內(nèi)容從一個位置傳遞到另一個位置時撇簿,則認為發(fā)生了污點傳播
3 污點傳播結(jié)果表示a) 標記接收到的數(shù)據(jù)包的所有字節(jié)為初始污點,分析差购,構(gòu)建函數(shù)級污點傳播流圖
b) 函數(shù)級污點傳播流圖用于按時間順序存儲污點數(shù)據(jù)處理相關(guān)的所有函數(shù) TaintedFunc〈Addr四瘫,MemSet〉, 是對程序源碼的一個近似化還原欲逃,從函數(shù)角度反映程序的執(zhí)行軌跡找蜜, 對程序的
抽象理解很有幫助
c)統(tǒng)計每個函數(shù)的訪問內(nèi)存情況,把每個函數(shù)讀取的內(nèi)存地址和第一次讀取的值作為函數(shù)的輸入稳析,把函數(shù)寫入的內(nèi)存地址和最后一次寫入的值作為函數(shù)的輸出洗做,將相鄰的內(nèi)存地址當做一個整體, 作為函數(shù)最終的輸入和輸出參數(shù)彰居。同時記錄各個參數(shù)的污點狀態(tài)诚纸,最終構(gòu)成函數(shù)級的污點傳播流圖
2.3 解密過程識別
軟件的加密通信過程如圖 3 所示, 可以看出陈惰, 以接收到的數(shù)據(jù)包為起點畦徘,沿著程序執(zhí)行軌跡向前跟蹤, 理論上就可以找到數(shù)據(jù)包的解密過程抬闯,進而得到數(shù)據(jù)包在軟件內(nèi)的明文數(shù)據(jù)
根據(jù)污點傳播圖井辆,逆向退出協(xié)議數(shù)據(jù)在程序中的傳播軌跡,還原出函數(shù)之間的調(diào)用關(guān)系以及函數(shù)參數(shù)信息