-作者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