• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      ARM二進制敏感性數據檢測方法研究

      2015-08-14 20:59:49余凱梁光明楊世德
      現代電子技術 2015年15期

      余凱+梁光明+楊世德

      摘 要: 相對于PC成熟的安全防護而言,嵌入式安全依舊處于薄弱狀態(tài)。以ARM為研究對象,結合ARM指令體系的結構和特點,為實現對二進制可執(zhí)行文件BIN中是否存在對硬件模塊的操控,展開敏感性信息的匹配,預警惡意操作,并提出半定型建模匹配方式,加快了代碼定位分析效率。

      關鍵詞: 二進制可執(zhí)行文件; ARM指令; 敏感信息; 半定型建模

      中圖分類號: TN702?34 文獻標識碼: A 文章編號: 1004?373X(2015)15?0050?03

      Research on detection method for ARM sensitive binary data

      YU Kai, LIANG Guangming, YANG Shide

      (School of Electronic Science and Engineering, National University of Defense Technology, Changsha 410073, China)

      Abstract: Compared with PC mature security protection, the embedded security remains in weaker state. To achieve whether the control to hardware module exists in BIN of binary executable file, ARM is taken as research object, and sensitive information matching is conducted, and malicious actions are forewarned in combination with the structure and characteristics of ARM instruction system. The matching way of semidefinite form modeling is presented, which speeds up the code positioning analysis efficiency.

      Keywords: binary executable file; ARM instruction; sensitive information; semidefinite form modeling

      0 引 言

      隨著現代電子技術的不斷發(fā)展,信息系統(tǒng)規(guī)模和復雜度逐步增加,隨之而來的信息安全問題的嚴重性也在不斷提高,軟件安全問題顯得尤為突出[1]。出于對自身商業(yè)利益和知識產權的保護,大部分軟件廠商并不會提供源代碼,因此對二進制程序進行安全檢測是當前研究的一大主流方向[2]。

      當前隨著惡意代碼數量的增多,病毒庫越來越龐大,利用傳統(tǒng)的模式匹配算法導致耗費的時間不斷增大,已經不能滿足實際應用。另外,隨著惡意代碼編寫技術的發(fā)展,當前的惡意代碼大多采用加密等技術對自身進行保護,這樣就更進一步降低了傳統(tǒng)檢測方法的準確性[3]。為了解決這一問題,最有效的方法是歸納總結出一類惡意代碼的行為特征,將傳統(tǒng)的二進制特征匹配提升到行為特征匹配,才能利用盡可能少的特征檢測出盡可能多的惡意代碼[4]。常見嵌入式設備控制模塊有處理器模式設置、看門狗開關、中斷開關、MMU控制、時鐘控制等,這些模塊的控制入口都是敏感信息,通過對BIN文件這些敏感信息的匹配可以有效地對代碼可能存在的惡意操作進行預警。

      傳統(tǒng)的單模式匹配算法主要有BF,KMP,BM算法及Sunday算法。BF算法實現簡單,但匹配效率很低;KMP算法比BF算法有所改進;BM算法則比KMP算法的檢測速度快3~5倍[5];在短模式匹配中,Sunday是目前速度最快的算法[6]。這些傳統(tǒng)方法不適合于二進制文件的信息匹配[7],也沒有重定位功能。因此,本文結合ARM指令架構特點,提出半定型匹配算法,通過實驗證明了該算法的可靠性和高效性。

      1 半定型建模

      源代碼可能千差萬別,但經過工具編譯成匯編語言時,具有極大的相似性。一是主要體現在高級語言指令多樣,而且還在不斷擴展,但匯編指令有限,單一的高級語言程序經常由多條匯編語言組合而成,這些匯編指令很相似。二是體現在機器編譯的過程中會將代碼進行優(yōu)化,使其符合標準編程格式,這樣使得編譯生成的匯編語言結構相似。ARM數據類指令格式解析,如圖1所示。其中,cond表示執(zhí)行條件;I表示shifter_operand是立即數還是寄存器;Opcode是指令標記碼;S表示執(zhí)行結果是否影響CPRS;Rn表示源寄存器;Rd表示目標寄存器;shifter_operand表示源操作數。

      圖1 ARM機器碼指令格式

      由圖1明顯可以看出,同一型的指令如MOV和MVN的機器碼結構幾乎一樣,不同型的指令如CMP和ADD的指令結構差異較大,所以對于不同指令的匹配應當具有針對性。結合ARM 32/16位指令結構,本文提出半定型建模匹配方式。針對不同的指令進行預匹配,即第一步僅匹配特征區(qū)域,對于不關心的區(qū)域進行選擇性忽視,只有當預匹配成功后對該指令進行深層匹配。以32位指令為例,將單一32位二進制碼拆分成若干位段,特征區(qū)域所在位段將其稱作子串,進行信息匹配時,僅需對子串進行對比。其中數據類處理指令的半建模匹配位段如圖2所示。

      圖2 半定型匹配子串

      進行二進制信息匹配的過程中,對于這些機器碼可以采用半定型建模方式進行匹配定位,即針對需要匹配的指令,只匹配有意義的位段,如第一步只匹配執(zhí)行條件、指令標記碼等,而立即數或寄存器等信息根據需要進行匹配,這樣可以極大地提高匹配效率。

      2 半定型匹配算法

      傳統(tǒng)的代碼檢測,使用各種模式匹配方法,實現方法歸結為字符串匹配問題。由BF算法從左向右的逐字節(jié)比較,到Sunday算法從右向左比較的演變,解決了盡可能跳過更多的字符,加速匹配的問題。但這種方式,對于嵌入式的二進制代碼檢測而言并不高效。以ARM為例,其支持ARM和THUMB兩種指令模式,分別為32位和16位代碼格式。若干字節(jié)的跳轉,在很多時候沒有意義。針對ARM的代碼檢測,其步長就應當固定為32或16,所以本文針對ARM二進制文件的特殊性,提出半定型匹配算法HSM,如圖3所示。

      半定型算法分為兩種工作模式。第一種是全匹配模式,即匹配32位字符數據;第二種是半定型匹配模式,即先匹配Char[0]和Char[1],判斷指令格式,稱之為預匹配,當指令類型匹配成功后,對Char[2]和Char[3]進行計算,得出偏移量,稱之為二次匹配。

      圖3 半定型匹配結構

      (1) 全匹配模式

      HSM算法的匹配執(zhí)行方式采用自左向右的方式,每32位對齊,假設在發(fā)生不匹配時[S[i]≠T[j],][1≤i≤N,][1≤j≤M,]如圖4所示。

      圖4 算法不匹配

      ① 當[S[i+4]=T[j],]移動距離為4,即將[T]與下一組32位指令進行比對。

      ② 當[S[i+4]≠T[j]]時,比對[S[i+8]]是否與[T[j]]相等,相等則移動距離為8,不相等則繼續(xù)取下一組32位指令的前8位進行對比。

      從Char[0]到Char[3]依次匹配,當出現不匹配則繼續(xù)匹配下一組主串的Char[0],直至匹配文件結束。

      (2) 半定型匹配模式

      對于硬件地址的賦值有兩種指令,一種使用MOV指令,另一種使用LDR偽指令。MOV要求立即數必須可由8位立即數偏移得到,可使用全匹配方式搜尋定位;LDR指令采用地址調用方式,對于所需賦值的立即數只要滿足32位就可以。假設在文件某處發(fā)生匹配時[S[i~i+3]=T[j~j+3],][1≤i≤N,][1≤j≤M。]如圖5所示。

      圖5 在文件xxxH處匹配地址成功

      硬件地址存儲形式為dword,當匹配了硬件地址后,需要進行二次匹配,定位出調用代碼,流程如下所示:

      Step1:計算匹配文件總長度,記為file_len,匹配處地址P小于file_len一半,進入step2,否則進入step3。

      Step2:向上匹配E5 9F ** **,匹配成功時,取當前地址為PU。取出Char[2]第4位記為ror_num,將Char[3]轉換成32位無符號整形,并向右循環(huán)移位ror_num*2位,得到32位偏移值,記為offset。若offset大于file_len,則offset需改為Char[2]低4位與Char[3]拼接而成。計算PU+8+offset是否等于P,相等則返回PU并進入step4,錯誤則繼續(xù)向上匹配,直至文件首。向上匹配失敗,則進入step3。

      Step3:向下匹配E5 1F ** **,匹配成功時,取當前地址為PD。使用step2中方法得出offset。計算PD+8?offset是否等于P,相等則返回PD并進入step4,錯誤則繼續(xù)向下匹配,直至文件結束。

      Step4:對兩處匹配結果進行顯示,標記匹配處在文件中的地址。

      3 敏感信息檢測模型

      裸機下的開發(fā)過程中,開發(fā)者可以采取匯編代碼與高級代碼混合編程,基于匯編的代碼在編譯后會進行優(yōu)化,存在代碼結構的微小改變;對于高級語言,開發(fā)人員只負責調用函數完成程序編寫,編譯器會自動生成優(yōu)化后的匯編代碼?;诟呒壵Z言的源代碼經過工具編譯后首先生成了ELF文件,由于ELF文件中包含了調試信息,所以可以反匯編成ASM文件。在有OS的嵌入式ARM中,可以直接運行ELF文件。但是在無OS的嵌入式ARM中,當處理器取出ELF中包含的調試信息時,將無法響應。所以為了能在無OS條件下執(zhí)行,將ELF中的調試信息去除,生成BIN文件。這時的BIN文件無法反匯編,從而不能使用傳統(tǒng)方法進行代碼分析。本文提出對BIN中的敏感信息進行匹配定位,主要是針對硬件底層模塊的定位,其模型如圖6所示。

      圖6 敏感信息檢測模型

      4 實驗與分析

      4.1 算法性能

      測試環(huán)境為VMware10下的Red Hat Enterprise Linux 6,內核版本為2.6.39,內存1.3 GB,宿主機為i5?4200M 2.5 GHz,測試樣本為U?boot 234 KB Bin文件,實驗平臺為TQ2440。選取BM、Sunday算法以及每次移動32 b的BF算法,與半定型算法HSM進行匹配效率對比,對敏感信息,即關鍵寄存器地址進行匹配定位,實驗結果如表1所示。

      表1 匹配算法性能對比

      [算法對比\&BM\&Sunday\&32 b BF\&HSM\&8位:

      4c\&時間 /ns\&10 629 665\&6 377 799\&1 878 992\&1 253 660\&命中次數\&10 393\&10 393\&10 323\&10 323\&16位:

      4c 00\&時間 /ns\&5 866 039\&4 512 338\&1 270 442\&908 382\&命中次數\&70\&70\&11\&11\&24位:

      4c 00 00\&時間 /ns\&4 362 159\&3 231 229\&1 360 407\&786 552\&命中次數\&60\&60\&9\&9\&32位:

      4c 00 00 14\&時間 /ns\&3 276 683\&2 839 347\&1 955 354\&566 721\&命中次數\&3\&3\&3\&3\&32位:

      4c 00 00 00\&時間 /ns\&3 789 963\&3 216 407\&1 170 464\&486 563\&命中次數\&47\&47\&0\&0\&]

      由表1可以得出,傳統(tǒng)字符串匹配算法在ARM二進制文件中的匹配效率明顯低于后兩種方法,主要原因在于匹配了大量不符合匯編規(guī)范的字符串以及移動距離設置不適合32 b環(huán)境。同時使用傳統(tǒng)字符串匹配方法,也存在誤判的情況。實驗證明HSM算法可靠,效率表現良好。

      4.2 外設模塊控制定位

      對U?boot代碼解析,僅發(fā)現一處使用MOV指令,為0x56000010 LED控制地址,剩余模塊一律采用LDR格式。MOV格式的外設模塊具體控制指令基本位于硬件地址之后,定位簡單;LDR格式涉及偏移,偏移范圍為+/-32 MB,當定位到硬件地址或驅動聲明時,只能說明有對此模塊的控制,具體控制指令需要進行二次搜索。

      以U?boot中時鐘頻率設置為例,第一次定位了4c 00 00 04MPLLCON地址,此處相對地址為814H,文件總長度為3AD3CH,優(yōu)先選擇向上定位。匹配指令為E5 9F ** **(LDR指令半定型),匹配方式為HSM匹配,具體流程如圖7所示。

      圖7 時鐘配置定位實例

      5 結 語

      本文對ARM的BIN文件是否存在對某硬件模塊的操控進行信息匹配定位,從基礎信息的定位,到模塊地址入口兩個層次,實現對這些關鍵信息的定位。在第一時間就提示了是否存在惡意操作的可能。其次,在完成信息快速定位的基礎上,展開代碼局部分析,而不用對所有代碼全部解析,極大地縮減了代碼分析所耗時間。將HSM算法與BM、Sunday算法進行對比,針對ARM的特殊結構,通過實驗證明了該算法的高效可靠,從而驗證了敏感信息匹配模型的實用性。

      參考文獻

      [1] 藺毅翀.軟件安全漏洞的自動化探測方法研究[D].合肥:中國科學技術大學,2005.

      [2] 康凱,郭穎,崔寶江.基于XML的面向二進制漏洞模式形式化描述研究[J].信息網絡安全,2012(12):21?24.

      [3] 張顯明.基于網絡的惡意代碼檢測技術探析[J].電腦開發(fā)與應用,2013(7):27?29.

      [4] 雷遲駿.基于啟發(fā)式算法的惡意代碼檢測系統(tǒng)研究與實現[D].南京:南京郵電大學,2012.

      [5] BOYER R S,MOORE J S.A fast string searching algorithm [J]. Communications of the ACM, 1977, 20(10): 762?772.

      [6] DANIEL M. A very fast substring search algorithm [J]. Communications of the ACM, 1990, 33(8): 132?142.

      [7] MU Yongmin, Ll Meigui, LIANG Qi.The survey of the pattern matching algorithm in intrusion detection system [J]. Aeta Electronica Sinica, 2006,34(12A): 2488?2490.

      富宁县| 北流市| 南投市| 历史| 岳阳市| 九龙城区| 衡水市| 浦北县| 丰宁| 大厂| 扬州市| 灌南县| 南丰县| 郎溪县| 普陀区| 淳安县| 二连浩特市| 江华| 远安县| 新丰县| 诸暨市| 伊通| 奉贤区| 保定市| 巫溪县| 武城县| 左贡县| 集安市| 伊川县| 恩施市| 山西省| 固阳县| 吉林市| 沧州市| 图们市| 郧西县| 余姚市| 民乐县| 汉川市| 台东县| 昌平区|