📄 248.htm
字号:
char Tag1; // 0x02 // 显然是 Oicq 的协议编号 or 版本,固定 <br>
char Tag2; // 0x01 // 显然是 Oicq 的协议编号 or 版本,固定 <br>
char Tag3; // 0x00 <br>
char Tag4; // 0x00 <br>
char Tag5; // 0x81 <br>
char Tag6; // 这两个字节相当于 unix 上的进程 ID, <br>
char Tag7; // 随便赋值就可。 <br>
char cOicqNub[]; // 通知上线的Oicq 号码。 exp:123456 <br>
char cFF; // 0x1f 在所有的Oicq 信息结构中,分割符都是 0x1f <br>
char cIP; // 该号码所在的 IP 地址 // 随便填 <br>
char cFF; // <br>
char cE[]; // "8685" ,这一位相对固定,随便添一个四位数字 <br>
char cFF; <br>
char cDD[]; // exp: "20",0x1f,"107" 基本固定 <br>
char cEnd; // 0x03 ,所有的 oicq 信息都已 0x03 为标记结束。 <br>
}; <br>
向目标发送一个上述的UDp packet ,可让任意的在其列表上的好友上线或下线。在 <br>
上线时,IP 可填任意的你所希望的。然后Oicq 就会更据该 IP 来发送消息。 <br>
这样,上面的例子就改为: <br>
首先, A 发送一个带有 B 上线信号的消息给 C, 但其 IP 添写 A 自己的IP,不管 <br>
此时 B 在线上没有, C 的 oicq 中就会显示 B 正在线上,此时 C 给 B 发消息,更据 <br>
的地址(IP) 就是 A 的地址,其所有的消息都会发往 A 处。 <br>
但此时有个问题: <br>
如果 C 反复发送多次都没有收到来自 ‘B' 的回复时,就会通过Oicq 服务器转发 <br>
。这样 真正的 B 也会收到。解决方案是 C 在收到消息的同时也给 A 发送一个 回复。 <br>
结构是: <br>
struct TOicqReply <br>
{ <br>
char Tag1; // 0x02 // 显然是 Oicq 的协议编号 or 版本,固定 <br>
char Tag2; // 0x01 // 显然是 Oicq 的协议编号 or 版本,固定 <br>
char Tag3; // 0x07 <br>
char Tag4; // 0x00 <br>
char Tag5; // 0x79 <br>
char Tag6; // 值得注意的是,此时Tag6,Tag7 不能随便了,应该添写发过来的消息中 <br>
的 <br>
char Tag7; // Tag6,Tag7. <br>
char cOicqNub[]; // Oicq 号码。 exp:123456 <br>
char cEnd; // 0x03 ,所有的 oicq 信息都已 0x03 为标记结束。 <br>
}; <br>
//-------------------------------------------------------- <br>
值得注意的是,如果此时 A 所指定 C 回复的 IP 处正好有一个 Oicq ,C 发给 B <br>
的信息就会直接显示在其上面,不用伪造回复包。 <br>
至此,完整的一次Oicq 欺骗就完成了。 <br>
再来一次: <br>
A 发送一个带有 B 上线信号的消息给 C, 但其 IP 添写 A 自己的IP(或所希望的) <br>
,这样 C 的 oicq 中就显示了 B 正在线上,当 C 给 B 发消息时,更据的地址却是 A <br>
的地址,其所有的消息都会发往 A 处。A 及时的返回一个表示已收到的消息给 C ,C <br>
处不会感到任何地异常,就仿佛是在和真正的 B 通讯一样, <br>
如果当 A 发送消息时 B 已经在 C 的 Oicq 线上,此时 C 的 IP 表中关于 B 的i <br>
p是其真实的 地址,此时我们有两种方法: <br>
1. 向 c 发送一个 B 已下线的信号,让真正的 B 下线,然后再发送一个假的上线信号 <br>
<br>
2. 直接发送一个假的 B 上线信号,同样的, C 的IP 表中关于 B 的地址也会更新。 <br>
在 Oicq 的所有消息传送过程中,除了上线和下线时向oicq server 效对了口令之 <br>
外,其余的所有过程中,都没有进行任何的口令效验. 显然这是腾讯公司程序员的疏忽 <br>
。 <br>
- <br>
- II - <br>
- <br>
在我们告知腾讯公司关于 Oicq 的问题之后,腾讯很快的就推出了一个新版。以修 <br>
正其安全问题。在此之前,我就得知,Oicq 最近会有大的改动,可能是我们的原因,迫 <br>
使得他们提前将不成熟版推出。在新版中, 腾讯使用了某种新的算法将所有的明文进行 <br>
加密。算法的强度我们不得而知。但应该会在很大的程度上增强其安全性。 <br>
如果其早一周公布,这篇文章也就不会公布了。 <br>
在新版中,以前能随意使用户上下线的方法不行了,但其他的问题依然存在。首先 <br>
是缓冲区溢出,问题依然,任何熟悉安全的人士都知道这是个严重问题,远不止当掉 O <br>
icq 那么简单。希望腾讯能马上解决。 <br>
其次是类似于 build: 220 中那种假冒任意用户的 bug 依然如故。方法一样。这也 <br>
是个严重的问题,我们应该相信谁? <br>
最后是象 Build 220 中那种完全欺骗 C 的技巧依然存在,即可以在某些情况下截 <br>
获任何人的对话,然后冒充之。 <br>
这个问题严重吗?赫赫 <br>
老话,希望腾讯马上修正。 <br>
- <br>
总结: <br>
有 ICQ 的前车之鉴, Oicq 本应做得更好。作为一个传递着纵多用户隐私的重要通 <br>
讯工具,Oicq 应该说在安全方面做得很糟。发展到现在,为了保持向下兼容,Oicq 也 <br>
很难立即作出大的改动。希望腾讯公司能尽可能修复这些问题,保护好广大用户的利益 <br>
。 <br>
zer9 (zer9@21cn.com) <br>
2000-4-12 15:47 于 I S B A S E 网络安全实验室 <br>
- <br>
附录 & FAQ: <br>
001.exe 和 002.exe 只是作为测试使用,请不要使用在违背国家法律的地带。 <br>
001.exe 和 002.exe *只能* 使用在 Microsoft Windows2000 平台上,测试是在 <br>
Windows2000 Server & Windows2000 Adv Server 上进行的。 <br>
001.exe 的作用是向目标发送完全匿名的消息,以及测试 Oicq 的远程溢出。 <br>
同时,对于 Build: 410 的 Oicq ,你向目标发送的匿名消息,目标回复时,消息会 <br>
回到指定地点。(UPD 源地址) 如果你正好在 该地址上装有 Oicq, 就会直接显示。 <br>
exp: 已知 A: Oicq: 10000 IP: 10.0.0.1 <br>
B: Oicq: 20000 IP: 10.0.0.2 <br>
C: Oicq: 30000 IP: 10.0.0.3 <br>
A 希望冒充 B 给 C 发送消息,同时希望接受到 C 给 B 的回复。则在 UPD 源地址 <br>
中添 A 自己的 IP,目标地址添 C 的 IP,目标号码添 B 的号码,端口不变。就可以了。 <br>
<br>
002.exe 则只能用在 Build: 220 一下版本中,主要是使对方上下线。 <br>
最后,如果测试的任何一方处于网管或 Firewall 后,都可能不会成功。 <br>
声明:我们对该程序不提供技术支持,也不提供任何的保证) <br>
FAQ: <br>
1. 我如何得到对方的 的 IP地址? <br>
如果你知道了他的 oicq 号码,搜索加为好友,然后可以得到。最快的方法是向他 <br>
发送一条消息,然后 Sniff 一下发出的 Udp 包。 <br>
如果你安装了天网防火墙,也可以通过它,查到对方的IP,方法是向对方发送“二人世界” <br>
对话请求,防火墙就能显来源的IP. <br>
<br>
<br>
-- <br>
Target Locked:Guru In Darkness. <br>
我只是一只静静卧着的狮子。。。 <br>
※ 修改:·guru 於 09月22日19:20:44 修改本文·[FROM: 202.114.36.179] <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 202.114.36.179] <br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="245.htm">上一层</a>][<a href="249.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -