转自http://dgdown.myetang.com/text/text24.htm,译者和原作者未知。
Sub7中的公用密码的发现
我们的目标是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留一个系统密码吗?呵呵,你可以在自己的电脑上再试几次。啊,是的,
那是系统密码。
好的就到这儿了,我只是想有人会对这感兴趣的。我对这遍文章不负任何责任!
祝好运!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)