http://www.51testing.com/?uid-84226-action-viewspace-itemid-8485

接着上一篇,分析了MSN认证过程的加密后再来看看MSN会话传输过程,其实MSN的会话传输一直都是明文的,只不过是用UTF-8编码过的,当然E文的消息是直接可以看到的。这次分析采用的工具是Omnipeek,觉得比snifferpro要人性化一些,可以很清楚的看到MSN协议的包。

v4N2E7@!vAsn2`e$\0

开始分析之前先要知道MSN进行任务传输的几个连接过程:

Afs5P){~u7m0

1.conten-type:text/x-msmsgscontrol           

)W�wyO6?a-M0

2.conten-type:symmetric-nat                 

9r�U#I*B.E-@^`!GK0

3.conent-type:text/x-msmsgsinvite           51Testing软件测试网5p UMHDy

4.conten-type:text/x-msnmsgrp2p               51Testing软件测试网r+Gj1e2K*n

5.Content-Type: text/plain    51Testing软件测试网R1|{Ke�s,I

解释一下,1是消息传输控制,2是视频连接,3是音频连接,4是视频,游戏,5是文本传输。本文分析的就是文本的传输过程,总是听人说前段时间某某员工MSN聊天记录被监听到,我孤陋寡闻没听说过,不过MSN一直是明文传输被监听是很正常的事情。其实查看MSN聊天原文是很简单的事情,不至于用工具那么复杂。 51Testing软件测试网C]9Bz`-s~^

为了方便分析,我只抓取了发送文本的数据包,如下图:

,Mvx9V(d+x$pkfc0

 

P@N%Y/U)~0

可以看到协议的类型很清楚的显示出来了,因为MSN协议是建立在TCP协议之上的,所以我们嗅的时候只需要把Filters定义为TCP协议就可以了。下面我们就来分析这些数据包。在MSN上向一个朋友发送一段消息:“这是我的方案11111111111111111111111”加上一段“1”是为了在编码中更好的看出我们的原始消息。 看一下抓到的包如下:51Testing软件测试网c0KN!}R3o)]Y

MSG 27 N 16851Testing软件测试网w$eA)`(V

MIME-Version: 1.0

1{X!EO8Zz/T0

Content-Type: text/plain; charset=UTF-851Testing软件测试网-t r&DLA9d5zc#l

X-MMS-IM-Format: FN=MS%20Shell%20Dlg%202;EF=; CO=0; CS=1; PF=0

/~,K%J7`%B\,^H4E0

杩欐槸鎴戠殑鏂规11111111111111111111111  51Testing软件测试网ck3U]Q$B

从上面的数据我们可以看出MSN消息的组成,MSN消息符合标准的MIME1。0协议,可以很清楚的看到消息头和消息体,看到这个大家想到了什么?这个一会再说,开始的MSG是消息的命令,后面是MIME的版本号,接着是连接类型Content-Type: text/plain,这里看到了charset=UTF-8,说明消息体是经过UTF-8编码过的,FN=MS%20Shell%20Dlg%202消息头也需要经过URL编码。然后到了消息体:杩欐槸鎴戠殑鏂规11111111111111111111111。这段信息就是我刚才发送的MSN消息,看到那一串“1”了吧,前面的那些字符是不是“这是我的方案”呢?看一下数据包16进制的编码内容:

D*i;s'I5x~3mK]x? bcn0

58 2D 4D 4D 53 2D 49 4D 2D 46 6F 72 6D 61 74 3A 20 46 4E 3D 4D 53 25 32 30 53 68 65 6C 6C25 32 30 44 6C 67 25 3230 32 3B 20 45 46 3D 3B 20 43 4F3D 30 3B 20 43 53 3D 31 3B 20 50 46 3D 30 0D 0A 0D 0AE8 BF 99 E6 98 AF E6 88 91 E7 9A84 E6 96 B9 E6 A1 88 31 3131 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31

o Wm1Y q]gFt0

最后的一串“31”就是“1”的16进制了再往前看“E8 BF99 E6 98 AF E6 88 91 E7 9A84 E6 96 B9 E6 A1 88”就是“杩欐槸鎴戠殑鏂规”的16进制编码,为什么这么说呢?往前看4个字节“0D 0A 0D 0A”,在MSN中每行命令都需要以“0D 0A”作为结束符,转换过来就是“\r\n”在数据包没有decode格式中的表现形式就是“..”。MIME-Version: 1.0 \r\n的16进制格式就是4D 49 4D 45 2D 56 65 72 73 69 6F 6E 3A20 31 2E 30 0D 0A ,感兴趣的朋友可以相应的对照下 。下面就来看下如何解码MSN的中文消息,大家也可以自己编程实现,无非是一个UTF-8的字符转换游戏而已了。

Tq8u6\u,cg5^[1W0

这里有一个小工具实现了这个功能,打开那个包,选中消息部分的16进制编码,如图:

9ds2`i)q,gH6PC0

   51Testing软件测试网)m(EU)i VH%X4T

后面的一串“1”就不用解码了,然后打开这个小工具,把16进制代码复制进去,如图:

l7wI"a|8l0

 

T}V YuVE#mfH0

从下面的回显中我们已经看到了被UTF-8编码后的中文消息,这个Raw功能就实现了16进制消息还原的功能,接下来要做的就是UTF-8解码,点下旁边的UTF8Decode按扭,可以看到原始消息已经被还原了,如图:51Testing软件测试网x0p^+x6v9Q7k

 

&p:l3D)i)T0

可以看到MSN协议的消息传输其实就是一个字符编码游戏而已,根本没有经过加密。这里再提供一个方法,看下MSN的消息体:

FWb3iD*k0

MSG 27 N 16851Testing软件测试网 O2{C#Z] bVJy

MIME-Version: 1.051Testing软件测试网6lcc$U!W6N [{:@

Content-Type: text/plain; charset=UTF-8

g?+QZ8Ml0

X-MMS-IM-Format: FN=MS%20Shell%20Dlg%202;EF=; CO=0; CS=1; PF=0

.Fq;IUQH!U}I\$^0

杩欐槸鎴戠殑鏂规11111111111111111111111

,X1W%C.H!r*\o3vM0

符合MIME标准,我们知道所有的邮件都是符合MIME标准的,也就是说一条MSN消息可以被当作一封邮件来处理,我们来实验下,把以上内容保存为.eml格式,用outlook打开会是什么样呢?结果如图所示:51Testing软件测试网 k-Q"L{c#p

51Testing软件测试网7E;Agg(WHq o

消息被还原成功了。其实还原MSN消息的方法还是有很多的,记住这只是一个编码游戏,那么用一些字符处理工具试试?比如winhex之类的,这里我就不演示了,感兴趣的可以自己去实验下。51Testing软件测试网4b\6gA b \6Im

在livemessageer中,MS为了保持MSN协议的开放性和扩展性,而又想增加一些隐私性给用户,所以消息还是明文传输的,只不过增加了一个“悄悄话”功能,在这里对用户的消息传输进行加密,有时间我会分析一下这个功能的加密形式,这篇文章就到这里结束了,有问题或者对协议分析感兴趣的朋友可以来BCT或手册和我讨论,互相学习。

posted on 2010-12-28 18:58  hotty  阅读(515)  评论(0)    收藏  举报