zoukankan      html  css  js  c++  java
  • Fetion分析之二:服务器地址从何而来——变态的配置文件(转)

    Fetion分析之二:服务器地址从何而来——变态的配置文件2007年03月08日 22:30作者:nathan
    注册飞信帐号  http://www.fetion.com.cn/register.php
    到移动公司下载飞信客户端  http://www.fetion.com.cn/
    下载linux版本飞信客户端 http://www.libfetion.cn/demoapp_download.html
    以下分析均基于飞信的这一版本:Fetion 2006 beta 版本 2.1.0.0。
    作协议分析时,一抓包,就发现飞信工作时连的是221.130.45.203这个服务器。那这个IP地址从哪来的呢?会变吗?飞信的客户端程序中并没有配置服务器地址这一说。固定一个IP?不会吧,一面向全国的系统,不可能用一个IP地址。用一个固定域名解析出来的多IP地址中的一个吗?抓出它访问DNS 的包一看,它就只在开始时解析过一次域名:nav.fetion.com.cn,这个域名的IP是221.130.45.201——听说开发飞信的人就是微软开发MSN的人,所以啥都跟MSN一样,你看那飞信的主界面元素,你能找一个位置和功能跟MSN不一样的吗?连解析域名这点都跟MSN一样,没意思啊,印象中MSN也是一开始就解析一个地址,好象是Messenger.msn.com?如果想在局域网内封锁MSN,就把这个域名给指向 127.0.0.1,MSN就傻了。
    既然只解析过nav.fetion.com.cn,那么221.130.45.203这个工作服务器(SIP的Proxy Server)地址,就应该是nav.fetion.com.cn返回来的了。确实是,但只是第一次登录时返回,并保存在了本地。后面再登录时,如果版本不更新,是不会再返回这些系统配置信息的。所以,除第一次外,再抓包是看不到这些配置信息的。
    本地配置文件并没放在Fetion的程序目录中,而是放到了%USERPROFILE%\Application\Fetion目录下。这个目录下有 configuration.dat和飞信的用户目录,每个飞信用户目录下还有configuration.dat、contacts.dat、 userinfo.dat这三个配置文件,看名字就知道是与用户相关的系统配置文件、好友列表文件、用户的个人信息文件。
    这些文件全是XML格式的,所以可以用Notepad打开,不过,你打开后就会发现,这些文件的内容全被加密了,变态啊,这些文件有什么好加密的呢。
    我们如何获得这里头的信息呢?
    方法有两个:
    一、我们让Fetion不要加密这些文件的内容,方法是:修改FetionFx.EXE文件。用ildasm,将FeionFX.EXE反汇编出来,将其中的Imps.Client.Pc.PersistentManager.EncodeMode1和 Imps.Client.Pc.PersistentManager.DecodeMode1这两个函数改掉,将这两个函数体改成以下内容:
    .maxstack 1
    IL_0000: ldarg.0
    IL_0001: ret
    即,立即将参数返回。然后再用ilasm工具重新汇编生成FetionFX.EXE文件,覆盖掉以前那个,然后,再运行飞信,所有配置文件就不会再加密了。
    二、构造一个请求,给nav.fetion.com.cn,让它返回。请求的内容很简单,抓一下包就会知道,取系统配置的请求过程是:
    xxx.xxx.xxx.xxx:xxxx >>>>>>>> 221.130.45.201:80
    POST /nav/getsystemconfig.aspx HTTP/1.1
    User-Agent: IIC2.0/PC 2.1.0.0
    Host: nav.fetion.com.cn
    Content-Length: 233
    Connection: Keep-Alive
    --------------------------------------
    xxx.xxx.xxx.xxx:xxxx <<<<<<<< 221.130.45.201:80
    HTTP/1.1 100 Continue
    --------------------------------------
    xxx.xxx.xxx.xxx:xxxx >>>>>>>> 221.130.45.201:80
    <config><user mobile-no="139xxxxxxxx" /><client type="PC" version="2.1.0.0" platform="W5.1" /><servers version="12" /><service-no version="1" /><parameters version="4" /><hints version="4" /><http-applications version="5" /></config>
    将以上内容中的从servers version开始的version全置为"0",服务器就会返回配置信息。注意,配置信息全是UTF-8编码的。用nc就可构造一个http请求发过去,服务器立马就返回了。
    推荐用方法一,因为这样可以看和修改所有配置信息,而方法二仅有系统配置信息。
    与我们关注的服务器地址相关的信息在飞信用户目录下的configuration.dat中,一看就明白是啥:
    ....
    <sipc-proxy>221.130.45.203:8080</sipc-proxy>     这就是我们关心的TCP直接连接时的服务器地址
    <http-tunnel>HTTP://221.130.45.203/ht/sd.aspx</http-tunnel> HTTP直接连接时的入口地址
    <get-pic-code>HTTP://221.130.45.201/nav/GetPicCode.aspx</get-pic-code> 注册时,取验证代码图片的URL
    <get-system-status>HTTP://221.130.45.201/nav/GetSystemStatus.aspx</get-system-status> 取系统状态啦
    ....
    这个配置信息放到飞信用户目录下是有原因的,就象SIP协议支持的,登录的服务器是可以分用户群的,不同的用户可以登录不同的Proxy Server,每个飞信用户(手机)可以分别登录到本省的Proxy Server,就如同现在的手机和电话网络一样。
    其实这些配置内容没什么啊,为什么要加密呢?而且随便构造一个http请求,就可以获得这些内容的。 最变态的是通过飞信的交谈内容不加密不变换,却把无关紧要配置文件加密了。
    另外,用户的密码就保存在Application Data\Fetion目录下的Configuration.dat中,当然这个密码进行了变换,遗憾的是,在程序中是还原出了用户密码的,因此,用户密码别人是可以轻易获得的。幸好丢了可以手机找回。但这仍然是个非常不安全的因素。

  • 相关阅读:
    8.10
    今日头条笔试题 1~n的每个数,按字典序排完序后,第m个数是什么?
    Gym 100500B Conference Room(最小表示法,哈希)
    CodeForces 438D The Child and Sequence(线段树)
    UVALIVE 6905 Two Yachts(最小费用最大流)
    Gym Conference Room (最小表示法,哈希)
    hdu 2389 Rain on your Parade(二分图HK算法)
    Codeforces Fox And Dinner(最大流)
    zoj 3367 Counterfeit Money(dp)
    ZOJ3370. Radio Waves(2-sat)
  • 原文地址:https://www.cnblogs.com/guojin705/p/1439940.html
Copyright © 2011-2022 走看看