从这个软件的网上帮助页面上的信息中得知,这个程序有一个快捷键能把隐藏着的管理员控制界面或系统托盘图标调出来。缺省的快捷键是组合的 CTRL+ALT+L,但我试了一下,不好使。于是我使用暴力方式尝试各种键组合,终于让我找到了正确的按键。但令人沮丧的是,出现的是下面的窗口: 在打算反编译这款软件、破解它的密码前,我在网上搜索了一下,发现了一些提示。我找到了Chris Pogue的个人博客, 他很巧是在Trustwave SpiderLabs的一位同事,之前也碰到过这种软件。在他的博客里,他指出密码和一些其它配置属性都存放在一个叫做PK.BIN的加密文件里,监视数 据存放在一个叫BPK.DAT的加密文件里。他还说,这些文件可以通过简单的对字节进行和0xAA的XOR运算破解。 我猜测Chris分析的是一个老版本的,因为对0xAA进行XOR并不能解码配置文件。然而,从转换的BPK.DAT文件里可以看出,这种XOR操作还是部分的有效的,为了让转码的效果更好看,我使用了双字节0xAA, 0×00进行XOR操作: 我更感兴趣的是PK.BIN这个文件,因为里面存放着这款软件的详细配置信息,其中可能包含这个软件入侵者的信息。可这需要更多的工作,因为很显然,简单的与0xAA进行XOR操作是不能解码的。所有我猜测很可能需要另外一个不一样的XOR值。 以文本模式查看这个文件是下面这个样子,注意看那些很多重复的片段! 在十六进制模式中,我取出这些重复出现的字符,把它们进行XOR运算: 通过一些python脚本,使我破译了这个文件: if len(sys.argv) > 1: pkhandle = open(sys.argv[1],'rb') pkbuffer = pkhandle.read() pkhandle.close() key=[0x0D,0x0A,0x08,0x05,0x01,0x02,0x06,0x03,0x03,0x0E,0x01,0x08,0x03,0x0C,0x09,0x07,0x05,0x0D,0x0C,0x0B,0x03] dec = '' ctr = 0 for i in range(11,len(pkbuffer)): a= ord(pkbuffer[i]) b =key[ctr%len(key)] x = a^b dec = dec+(chr(x)) ctr+=1 dechandle = open('pk.dec','wb') dechandle.write(dec) dechandle.close() 瞧!(提示:我涂掉了一些细节,以保护FTP服务器上的受害人的信息不外泄) 解码后的PK.BIN文件向我展示了足够的信息让我能进入管理员控制面板,包括这款软件的管理员密码,FTP服务器密码,软件的购买许可证注册姓名和注册号。我输入管理员密码,很好用,里面我看到了入侵者要窃取哪些信息,以及更多的关于软件的配置信息。 在配置文件里,软件许可证的注册姓名是Charles Onuigbo。 现在,我不确定Charles Onuigbo就是这个入侵者,或真有其人。唯一值得一提的是,这是个在尼日利亚——垃圾邮件制造之国——一个非常常见的名称! 我用邮件向ISP举报了这个FTP站点,希望这个站点能够尽快的被关闭。 更新:我收到了管理这台服务器的公司的一份邮件,里面写到: "你好- 不知道我的同事是否就此事给你回复过。 我们已经禁止了你所说的这个帐号对这个服务器 的访问权限... " 我再次尝试登录这个FTP服务器,确认这个恶意的FTP帐号已经被封掉了。感谢Liquid Web公司的Alex Kwiecinski和你们团队行动的这么迅速。 [本文英文原文链接:Pwning a Spammer's Keylogger ] |