木馬逆向分析

看雪資料發表於2015-11-15

-作者defiler
-夢醒時分譯


--------------------------------------------------------------------------------

我們的目標是Sub7你認為,你在Sub7的服務端設定了一個密碼,那麼其他人就無法連線它了嗎?
你犯了一個大錯誤!這兒我就向你展示,我是怎樣在這木馬服務端找到安全漏洞的。

你需要的工具:

(x) SoftICE (+ SymbolLoader.)可以從crack迷們要到,許多crack網站也可以找到!
(x) Hiew 6.16,一個編輯器。
(x) 目標, Sub7, 可在這裡找到: subseven.slak.org
(x) SoftICE's 命令和組合語言的基礎知識.


讓我們開始吧:

我對連線客戶端的時候,讓密碼進行比較的過程比較感興趣。所以,我使用SoftICE's的symbol
loader輸入一些winsock的埠 :)

執行loader,點選“FILE--LOAD EXPORTS”選單,指向你的windows系統目錄,選擇"wsock32.dll"
開啟。SymbolLoader應該顯示:

"Exports for Z:\WINDBLOWZ\SYSTEM\Wsock32.dll loaded sucessfully"

現在去使用 EditServer.exe檔案設定Sub7的服務端(請看其它文件,我在這兒不提了)我設定埠
為666,密碼為“abuse”.執行服務端的木馬,你不久就可以被安裝好服務端,但千萬別在網上。(
關於這個程式我不對你負任何責任,它不是我編的)執行SubSeven.exe連線到服務端(IP地址為127.0.0.1,
就是你本機了),密碼框會彈出來,任意輸入一個密碼。服務端是用WSOCK32!recv接收客戶端的資訊的。
Windows的Sockets recv 接收資料功能使用一個Socket.結構如下:

int recv (

    SOCKET s,    
    char FAR* buf,    
    int len,    
    int flags    
  );
第二行(char FAR* buf)非常重要。資訊就儲藏在那裡。現在,在softice中在recv上設定斷點
(輸入 "d esp->8")點選OK送出密碼。SoftICE回彈出,按F11(g @ss:esp)。跳到密碼部分時會在
SoftICE的資訊欄中顯示'PWD'。現在在密碼的地址中設定一個斷點。(如: bpr 405000 405010 RW)
Now set a bpr on the password's address (e.g.: bpr 405000 405010 RW) and on the copy
it will make at 004029c5.

下一次你將會停在004040dd:

0167:004040dd  8b0e                mov      ecx,[esi]
0167:004040df  8b1f                mov      ebx,[edi]
0167:004040e1  39d9                cmp      ecx,ebx
0167:004040e3  7558                jnz      0040413d
0167:004040e5  4a                  dec      edx
0167:004040e6  7415                jz        004040fd
0167:004040e8  8b4e04              mov      ecx,[esi+04]
0167:004040eb  8b5f04              mov      ebx,[edi+04]
0167:004040ee  39d9                cmp      ecx,ebx

它停在了4040dd這一行,我們在我們的密碼上設定了一個斷點。那麼它在本地將儲存在esi中。前四個字母
移到ecx中。另外四個字母存在ebx中後進行比較...你現在認為,你發現了密碼比較的地方了嗎?不,不,
沒門!其實Sub7的作者更愚蠢!!!在softice中輸入“d edi”看看:

016F:012A3DD4 31 34 34 33 38 31 33 36-37 38 32 37 31 35 31 30  1443813678271510
016F:012A3DE4 31 39 38 30 00 69 6F 00-28 00 00 00 22 00 00 00  1980.io.(..."...
016F:012A3DF4 01 00 00 00 13 00 00 00-53 75 62 73 65 76 65 6E  ........Subseven
016F:012A3E04 5F 5F 5F 3C 20 70 69 63-6B 20 3E 00 10 3E 2A 01  ___< pick >..>*.
016F:012A3E14 10 3E 2A 01 38 00 00 00-53 75 62 73 65 76 65 6E  .>*.8...Subseven

奇怪,那不是我設定的“abuse”密碼。那麼讓我們在連線一次試試...SubSeven顯示:connected.
啊,那怎麼可能?SubSeven留一個系統密碼嗎?呵呵,你可以在自己的電腦上再試幾次。啊,是的,
那是系統密碼。

好的就到這兒了,我只是想有人會對這感興趣的。我對這遍文章不負任何責任!

祝好運,



可以向作者回信,不過要是英文! defiler@elitereversers.de

相關文章