下面是dropbox(左)和同步盘(右)的安装目录对比
Dropbox的安装目录相对来说比较干净,东西很少!简单分析一下dropbox的安装目录构成:
l locales,icudt.dll libcef.dll这三个是跟CEF(ChromiumEmbedded Framework)框架的包
l Microsoft.VS90.CRT
l Dropbox.exe 主程序
l DropboxExt.22.dll这个是dropbox嵌入explore进程的一个程序
l Wxmsw28uh_vc.dll这个看起来是跟wxWidgets相关的一个跨平台图形库
使用eXeScope软件打开分别打开Dropbox.exe(左)和tongbupan.exe(右)可以看到如下信息:
可以看到虽然dropbox.exe看起来是exe文件,但实际上依赖的外部库仅仅只有USER32.dll,MSVCR90.dll,KERNEL32.dll三个!!!绝对不正常,对比右边同样是网盘的同步盘来说太少了。
同时还有一个奇怪的现象就是dropbox.exe中多出了python27.dll pythonscript这样的Resource。查阅资料后发现,dropbox客户端的大部分代码其实是python。他们采用了自己修改过的一个python解析器,同时对python代码进行了加密处理,但即使这样也避免不了被破解的命运,可见想要保护python客户端代码是非常困难的事情。
在去年的7th USENIXWorkshop on Offensive Technologies交流会上,Dhiru Kholia和Przemys?awW?grzyn分享了他们自己的破解dropbox源码的过程。这里有他们在交流会上的分享视频https://www.usenix.org/conference/woot13/workshop-program/presentation/kholia。
总结来说,通过对dropbox的破解工作,能够做到以下几点。
在破解工作的基础上,DhiruKholia最终写了一个开源程序挂在github上:https://github.com/kholia/dedrop。可以去下来来利用这个工具开始进行dropbox源码破解工作。
下面来说一下破解的具体步骤:
l 准备工作
由于破解中采用的是linux客户端进行破解,所以需要一台能够运行dropbox的linux机器,本例中采用的是centos系统(linux 2.6.18)。
l 开始进行
1. 下载dedrop工程到机器上,进入到src/dedrop目录进行make编译,可能会碰到一些错误,可以自行通过稍微修改一下Makefile文件,同时检查python-dev是否安装了这样的操作来修正,总的来说工程是确定可用的。编译成功后得到libdedrop.so。
2. 下载linux版本的dropbox客户端,
wget https://dl-web.dropbox.com/u/17/dropbox-lnx.x86_64-2.7.30.tar.gz
解压后找到.dropbox-dist/dropbox文件运行一下,检查dropbox客户端是否可以运行
3. 按照下面的步骤将libdedrop.so嵌入到dropbox中进行启动:
到这里我们就可以得到一个pyc_decrypted文件夹,里面就是dropbox工程的pyc文件:
4. 到这里就差从pyc文件得到py文件了,这里需要利用另外一个开源工具:
Uncompyle2(https://github.com/wibiti/uncompyle2)具体安装流程工程说明里讲的很清楚,这里就不再赘述了
用uncompyle2pyc_decrypted/client_api/hashing.pyc这样就可以得到破解后的源代码了,可以用uncompyle2–h查看命令的用法,可以一次性将工程的所有pyc文件进行破解。
下面是破解后的最终工程文件,直接记事本打开就OK:
l 关于破解行为的说明:
下面是Dhiru and Przemyslaw对破解行为的意见:
在得知dropbox客户端被破解之后,dropbox团队联系上了作者然后做出了以下回应:
针对dropbox的回应,下面是Dhiru and Przemyslaw的回答:
参考资料:
https://www.usenix.org/conference/woot13/workshop-program/presentation/kholia
http://www.openwall.com/presentations/WOOT13-Security-Analysis-of-Dropbox/
https://github.com/kholia/dedrop
https://github.com/wibiti/uncompyle2
http://www.techrepublic.com/blog/it-security/researchers-reverse-engineer-the-dropbox-client-what-it-means/