惡意代碼原理、技術(shù)與防范 課件 9-加密技術(shù)與加殼技術(shù)_第1頁(yè)
惡意代碼原理、技術(shù)與防范 課件 9-加密技術(shù)與加殼技術(shù)_第2頁(yè)
惡意代碼原理、技術(shù)與防范 課件 9-加密技術(shù)與加殼技術(shù)_第3頁(yè)
惡意代碼原理、技術(shù)與防范 課件 9-加密技術(shù)與加殼技術(shù)_第4頁(yè)
惡意代碼原理、技術(shù)與防范 課件 9-加密技術(shù)與加殼技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第九章加密技術(shù)與加殼技術(shù)引言加密和加殼是惡意代碼用來(lái)保護(hù)自己的常用技術(shù)。加密可以使得惡意代碼更好的隱藏敏感的字符串,修改特征碼和對(duì)抗反匯編,加殼保護(hù)惡意代碼不被輕易的逆向和分析。本章聚焦加密和加殼技術(shù)在惡意代碼中的應(yīng)用,介紹了軟件加密和加殼的基本概念,分別闡述了針對(duì)二進(jìn)制和腳本類(lèi)型代碼的加密方法,以及軟件殼的保護(hù)原理等。加密技術(shù)加殼技術(shù)虛擬機(jī)保護(hù)技術(shù)1.1加密基礎(chǔ)知識(shí)4加密技術(shù)是惡意代碼阻礙敏感數(shù)據(jù)被解讀和代碼逆向分析的常見(jiàn)方法。1.1加密基礎(chǔ)知識(shí)從惡意代碼誕生之日起,其開(kāi)發(fā)者們就開(kāi)始嘗試用加密的方式掩蓋關(guān)鍵功能與特征:算法實(shí)現(xiàn)簡(jiǎn)單,代碼量小,如Shellcode、殼等;算法開(kāi)銷(xiāo)??;算法足夠應(yīng)付一般用戶(hù)的分析。1.1加密基礎(chǔ)知識(shí)6加密算法簡(jiǎn)單算法XOR異或加密算法Base64編碼其它…現(xiàn)代加密算法MD5、SHA1哈希算法對(duì)稱(chēng)密鑰算法:DES、AES非對(duì)稱(chēng)密鑰算法:自定義算法對(duì)已有算法的整合;以已有算法為基礎(chǔ)的改造;自定義其它算法1.1加密基礎(chǔ)知識(shí)異或加密算法:使得一個(gè)靜態(tài)字節(jié)值作為“密鑰”,通過(guò)與該值執(zhí)行邏輯異或運(yùn)算來(lái)修改明文中的每個(gè)字節(jié),解密過(guò)程與加密過(guò)程一致。7明文ASCIIHackeriscomingHex4861636B657220697320636F6D696E67密文ASCIIUS64<2%w>$w48:>90Hex1F36343C3225773E247734383A3E3930以”0x57”作為密鑰與明文異或1.1加密基礎(chǔ)知識(shí)Base64加密算法:是一種常用的將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為可打印ASCII字符串的編碼算法。來(lái)源:MIME,用于加密郵件的附件;惡意代碼:加密通信中的URL、Cookies等;8GET/d3d3LmhhY2thdHRhY2suY29t/index.htmUser-Agent:Mozilla/4.0(compatible;MSIE7.0WindowsNT5.1)Host:Connection:Keep-AliveCookie:a2Vpa2V5NDM=惡意代碼數(shù)據(jù)包解析1.1加密基礎(chǔ)知識(shí)標(biāo)準(zhǔn)Base64字符集:a-z、A-Z、0-9、“+”、“/”;9IndexCharindexCharindexCharindexCharindexCharindexChar0A11L22W33h44s5531B12M23X34i45t5642C13N24Y35j46u5753D14O25Z36k47v5864E15P26a37l48w5975F16Q27b38m49x6086G17R28c39n50y6197H18S29d40o51z62+8I19T30e41p52063/9J20U31f42q53110K21V32g43r542表Base64字符集1.1加密基礎(chǔ)知識(shí)轉(zhuǎn)換步驟:將原始數(shù)據(jù)以3字節(jié)(24bit)為單位分組(不夠補(bǔ)0),對(duì)各組分別加密;將3字節(jié)的二進(jìn)制數(shù)分成四組,每組6bit;將每組6bit的數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù):0-63。根據(jù)得到的數(shù)字對(duì)應(yīng)字符集表的索引即得到對(duì)應(yīng)的字符;將所有字符連接構(gòu)成最終的密文,并在最后加入兩個(gè)“#”即可。

101.1加密基礎(chǔ)知識(shí)例:對(duì)“Hac”進(jìn)行Base64的轉(zhuǎn)換11Hac0x40x80x60x10x60x3010010000110000101100011186535SGFj1加密基礎(chǔ)知識(shí)Base64加密算法的優(yōu)勢(shì):編碼簡(jiǎn)單,易于實(shí)現(xiàn);原理清楚,易于修改;缺點(diǎn):算法簡(jiǎn)單,易于破解;惡意代碼很少采用標(biāo)準(zhǔn)的Base64,而是通過(guò)改變符號(hào)集的索引,更換填充字符等。121.1加密基礎(chǔ)知識(shí)現(xiàn)代加密算法對(duì)稱(chēng)密鑰算法:DES、AES、RC2等;非對(duì)稱(chēng)密鑰算法:RSA、DSA、ECC等;

雖然現(xiàn)代加密算法安全性更高,常用于勒索軟件、木馬加密通信等,傳統(tǒng)病毒等很少使用:標(biāo)準(zhǔn)的加密算法通常封裝在動(dòng)態(tài)鏈接庫(kù)中,體積太大;不利用代碼的移植;標(biāo)準(zhǔn)加密庫(kù)攜帶的指紋比較容易被探測(cè);對(duì)稱(chēng)加密算法需要考慮如何隱藏密鑰。131.1加密基礎(chǔ)知識(shí)自定義加密技術(shù)

鑒于簡(jiǎn)單加密算法和復(fù)雜算法的公開(kāi)性,惡意代碼常也會(huì)使用自定義的加密方案。優(yōu)點(diǎn):體積小,易移植;沒(méi)有明顯指紋;141.2加密技術(shù)的應(yīng)用(1)數(shù)據(jù)加密加密目的:讓代碼內(nèi)的敏感字符串無(wú)法直接解讀。1.2加密技術(shù)的應(yīng)用解密思路:所有字符串在程序調(diào)用時(shí)需要率先解密。因此需要關(guān)注所有加密字符串調(diào)用的上下文,觀(guān)察調(diào)用前以加密字符串作為參數(shù)的函數(shù),并判斷是否為解密函數(shù)。1.2加密技術(shù)的應(yīng)用17(1)二進(jìn)制代碼加密=SMC(SelfModifyingCode)加密目的:無(wú)法正確反匯編代碼。1.2加密技術(shù)的應(yīng)用加密步驟:確定待加密的程序段;確定加密算法并編寫(xiě)加密程序;在被加密程序中嵌入解密算法,并指定解密算法的運(yùn)行時(shí)機(jī);修改被加密程序段的屬性為讀、寫(xiě)和執(zhí)行。1.2加密技術(shù)的應(yīng)用選取原則:對(duì)可能被殺毒軟件查殺的部分或包含關(guān)鍵部件(如某個(gè)關(guān)鍵算法、特征值所在區(qū)域等)的代碼進(jìn)行加密。策略:選擇一段邊界清晰的程序塊(段、函數(shù)、基本塊等)。19(a)如何選擇被加密的程序段?1.2加密技術(shù)的應(yīng)用選擇算法的考慮:加密算法復(fù)雜度和算法體積成正比;算法無(wú)法抵御被動(dòng)態(tài)分析,目標(biāo)只是為了反匯編器無(wú)法正確反匯編;(b)選擇什么樣的加密算法?1.2加密技術(shù)的應(yīng)用幾種不同的方式(SMC自解碼總結(jié)):解密代碼指定加密代碼的地址范圍;加密代碼(函數(shù))的字節(jié)碼放置于待解密的數(shù)組中,解密后再調(diào)用;解密代碼以新增代碼節(jié)的方式,可對(duì)加密代碼段進(jìn)行加解密;在加密代碼前后加入“標(biāo)志”,通過(guò)搜索標(biāo)志確定解密范圍。(c)解密算法放置代碼何處?1.2加密技術(shù)的應(yīng)用混淆填充與壓縮標(biāo)志符替代編碼混淆字符串混淆如何才能讓腳本程序無(wú)法讀懂?加密現(xiàn)實(shí)中的惡意代碼常常會(huì)同時(shí)采用混淆與加密兩種方式。1.2加密技術(shù)的應(yīng)用(a)混淆填充與壓縮23填充壓縮在代碼中加入大量無(wú)用字符串、數(shù)字、變量、代碼、注釋等,讓真實(shí)有用的代碼埋沒(méi)在其中去除代碼中的不必要的空格、換行等內(nèi)容或者把一些可能公用的代碼進(jìn)行處理實(shí)現(xiàn)共享,將代碼壓縮為幾行?;煜?.2加密技術(shù)的應(yīng)用"yterhgds";4524325234523;625623216;var$=0;alert(//@$%%&*()(&//(^%^

cctvfunction//(//hhsaasajxxc/*

asjgdsgu*/

"This//ashjgfgf

/*

@#%$^&%$96667r45fggbhytjty

*/

code

"

)//window

Alert(“This

code”)混淆1.2加密技術(shù)的應(yīng)用標(biāo)志符替代

將代碼中的變量、函數(shù)或方法名等標(biāo)志符以另一個(gè)不同名稱(chēng)的形式替代。functionhi(){console.log("HelloWorld!");}hi();_0x1783="Hel";_0x2939="lo";_0x4927="Worl";_0x3847="d!";_0x4958=console;function_0x3444(){_0x4958.log(_0x1783+_0x2939+_0x4927+_0x3847);}_0x3444();混淆1.2加密技術(shù)的應(yīng)用編碼混淆用

ASCII、UNICODE、BASE64等編碼代替Javascript代碼中字符或數(shù)字等,使得函數(shù)名或字符串不再易讀。

26console.log(“Hello”)console[‘log’](“Hello”)

console['\x6c\x6f\x67']("\u0048\u0065\u006c\u006c\u006f");混淆1.2加密技術(shù)的應(yīng)用字符串混淆將字符串用數(shù)組集中放置,代碼中不出現(xiàn)明文,使用時(shí)利用字符串操作函數(shù)交其還原。eval(Document.Write(“Helloworld!”))

vart="";vararray=

"646f63756d656e742e7772697465282248656c6c6f20776f726c64212229";for(i=0;i<array.length;i+=2)t+=String.fromCharCode(parseInt(array[i]+array[i+1],16));eval(t);混淆1.2加密技術(shù)的應(yīng)用(b)加密

攻擊者定義加密函數(shù)并對(duì)指定代碼進(jìn)行加密,并將解密函數(shù)放入腳本中。為了解密函數(shù)更加難以解析,可以進(jìn)一步對(duì)解密函數(shù)混淆。28加密加密的腳本如何解析?1.2加密技術(shù)的應(yīng)用實(shí)際使用中,可以對(duì)加解密策略進(jìn)行調(diào)整。改變解密循環(huán)方向使用多層加密動(dòng)態(tài)改變循環(huán)方向;使用非線(xiàn)性解密引擎。……多態(tài)技術(shù):改進(jìn)了的加密技術(shù),由變化的解密體和不同密鑰組成。加密技術(shù)加殼技術(shù)虛擬機(jī)保護(hù)技術(shù)2加殼技術(shù)(1)常見(jiàn)的加殼工具ASPacK:壓縮殼,文件壓縮比高達(dá)40%~70%;其它壓縮殼:UPX、PECompact2加殼技術(shù)加殼前加殼后2加殼技術(shù)ASProtect:加密殼,具有壓縮、加密、反跟蹤代碼、反-反匯編代碼、CRC校驗(yàn)和花指令等保護(hù)措施,集成了多態(tài)變形引擎。其它加密殼:Armadillo、EXECryptor、Themida等。2加殼技術(shù)(2)殼的加載過(guò)程34獲取殼所需的API地址解密/壓縮原程序的各區(qū)塊數(shù)據(jù)重定位(非必需)跳轉(zhuǎn)到程序原入口LoadLibrary+GetProcAddress2

加殼技術(shù)殼將控制權(quán)交還給原程序,一般的殼在這里會(huì)有明顯的一個(gè)“分界線(xiàn)”。因此,檢測(cè)軟件用仿真器運(yùn)行代碼,監(jiān)控先寫(xiě)后執(zhí)行的代碼并以此為界,利用內(nèi)存dumping重構(gòu)PE文件。35怎么解決?2加殼技術(shù)追求“殼里有肉,肉里有殼”的境界細(xì)粒度:代碼結(jié)構(gòu)、函數(shù)、文件都為粒度,粒度越細(xì)越好;充分混合:殼代碼與程序粒度相互調(diào)用,充分混合。36ABCDE程序結(jié)構(gòu)E1E2E3殼加密技術(shù)加殼技術(shù)虛擬機(jī)保護(hù)技術(shù)3虛擬機(jī)保護(hù)技術(shù)概述所謂虛擬機(jī)保護(hù)技術(shù),是指將代碼翻譯為機(jī)器和人都無(wú)法識(shí)別的一串偽代碼字節(jié)流,在具體執(zhí)行時(shí)再對(duì)這些偽代碼進(jìn)行一一翻譯解釋?zhuān)鸩竭€原為機(jī)器碼并執(zhí)行。3虛擬機(jī)保護(hù)技術(shù)的實(shí)現(xiàn)虛擬機(jī)保護(hù)的工作原理虛擬機(jī)指令集設(shè)計(jì)虛擬機(jī)指令解釋器虛擬機(jī)的調(diào)度器思考題

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論