7.4 没有硝烟的战争----我是怎抓到下木马者的
最近真倒霉,QQ被人盗了,想想最近只打开过一封邮件的附件,那个附件是可执行文件,除此之外再没有用过任何外来的软件,也没有随便浏览其他的网页,看来就是那个附件捣的鬼,那个可执行文件一定含有木马!可这封信是从一个朋友的信箱中发来的,我己经问过他。他发誓不是他干的,并说这个信箱被别人破解了。现在问题明白了,看来是别人冒充我的朋友给我发了一封含有木马的邮件,而我又出于对朋友的信任没有留意。点击了这个附件,于是就中了木马,QQ就是这样被木马给盗走的!
搞清楚了原因,利用QQ密码保护功能把密码给取了回来,但总是心有不甘,密码虽然被窃,但总算是找回来了,所以也就算了,但朋友的信箱被人横刀夺爱总不能袖手旁观吧?这可不是我做人的原则。于是打定注意找回朋友的信箱密码。
把那个附件中的可执行文件得到硬盘上,用16进制编辑器UltraEdit打开,仔细一看。发现该可执行文件有两个可执行文件头,看来是用捆绑机捆绑过的。我也正是因此而中了木马的埋伏。继续向下看,仔细观察数据段,发现数据段中有“pass6.5","winplo.exe"."msread.dt"这样的字样,这应该是捆绑前的木马的一些数据。正巧最近刚刚从某杂志的光盘中看到一个软件名字也带有pass字样,找出光盘一看,该软件叫 "QO杀手",是款QQ窃取木马。莫非就是这个"QQ杀手"干的好事?到各大黑客站点一看,果然高居下载排行榜的前列,看来很有可能是它!
从光盘中找到 榴Q杀手"进行安装,然后自己配置了一下木马文件,和那个捆绑过的文件进行比较,终干找到 "幕后宝谋了"原来我真的中了该木马!UltraEdit中显示的"passs6.5"是木马的版本号,winplo.exe"撬木马程序,"mnsread.dt是记录QQ资料和密码的文件,文件大小502字节。而且该木马还提供qqbin.exe捆绑器,看来我就是因它而中木马的!实在是教训啊。
再次仔细瓷着UJltraEdit中的那个可执行文件,看到了类似这样的一些记录 (以下内容是经过修改后的内容,并非暴原文,否则看到的将是一堆乱码):
不难看出这是木马配置记录,这些信息配然经过加密处理。再仔细看看,原来是Base64编码,这下有门了。赶紧动手,将上述所有的编码一一进行解码,于是终于知道了这个下木马的家伙用的邮箱的用户名、服务器,接收邮箱……惟一没有得到的就是其用户密码,看来用户密码的编码方式没那么简单。决不能这样就便宜了他,一定要找到这个信箱的密码。帮朋友夺回属于他的一切!
Rase64是MIME(Multipurpose Internet Mail Extensions,多用途Internet邮件扩充)的编码方案之一,MTMK邮件不仅能传送文本。还能传送声音,图像,程序等二进制信息,它是通过编码将二进制信息转换为字符信息进行传送,接收端再懈码恢复原始信息来实现的。为此,MTME邮件首部除了包含From;、TO:、Subject:等一般邮件首部信息以外。还应包括MIME头部信息.MIME的版本,发送的数据类型及MIME的编码格式。下面是一个MIME头部的示例:
MIME的编码方案有许多种,Base64只是其中最常用的一种。Base64。编码方案将要传送的信息转化为64个点ASCII字符('A'-'Z','a'-'z','0'-'9'+','/')组成的字符串。算法很简单,它将要编码的信息顺序以3字节为单位进行理。然后将这3字节划分为4个部分,高位在先,每个部分6位,每个部分只能为0~63中的某个数,按以下方法映射为64个ASCII字符'0~25→‘A“~’Z‘,52~61→'0'~'9',62→‘+’,63-'/'。如果输入只有一个或两个字节,那么输出将用等号 "="补足。如果输出超过76个字符,则另起一行。即编码过程中每输出76个字符后,应输出\r\n字符。Base64将3字节的信息转化为四字节的字符信息加上回车符,所以经过Base64编码,长度将增长为超过4/3倍。
举个例子,对字符串 "ABCD"进行Base64编码o"ABCD"即01000001 01000010 01000011 01000100,按上述转化方法即为'Q','U','J','D','R','A',补足空缺字节后,编码结果为"OUJDRA==",对于Base64的解码则是以上的逆过程,这里不再赘述。
继续我们的分析。在配置木马 "QQ杀手"时,为图省事我曾把用户密码设成 "1",在配置文件中显示的密码为 "==QM",看起来和Base64编码很像,只不过 ":"跑到了前面而不是补到后面。换个角度想,如果我是木马的作者,会怎么办呢?一个念头突然出现在我的脑海中:把看到的密码倒过来然后进行解码!即把 "==QM"倒过来得到 "MQ==",再用Base64编码进行逆运算。赶紧一试,"QM"倒过来是 "MQ==",进行解码运算,得到对应的密码为"1",而我在配置木马时设定的密码正是II哈,问题可以得到解决了!对方的邮箱密码为 "二=ARDJUQ",倒过来就是 "QUJDRA-=",根据Base64@码的算法进行逆运算,得到解码"ABCD",也就是说对方邮箱的密码为ABCDI到此就可以了,我的目的已经达到了。
注意:如果你不会根据Base64编码进行解码,这里简单的说一下,以Base64编码 "MQ=="为例。首先,取出其中的M,M在Base64编码中排在第13位,这是因为0-25为?A"~z?,所以M为十进制的12。将12转为二进制为1100,根据Base64编码的特点要补足6位,于是在前面置两个 "0",得到001100。同理得到 "MQ=="中Q的Base64解码为010000,将M和Q合并在一块就是001100010000,从左到右取8位得到00110001,换算为16进制为31,而31正是ASCII码 "1",就这样我们得到了Base64编码 "MQ=="的解码为1。我们就是利用这个方法得到了对方的邮箱密码!
最后,再次提醒大家不要随便运行别人发来的程序,就算是熟悉的朋友发来的东西也要先检查检查,因为他可能会在无意中害了你!本文没有多少技术可言,只希望大家在遇到问题时能换个角度去思考,有时会有意想不到的结果,就像笔者这样。