作者:2013-03-28阅读次数:13620评论:7
公布时间:自打手机让firewings给我人肉root之后就觉得很happy,各种测试。某日无聊,决定装个tcpdump抓包。
用google提供那个ADB工具包连上手机,把Android下的tcpdump传到SD卡,然后就可以执行抓包了(当然可能遇到不能执行的情况,自己百度解决吧):
抓包之后把pcap文件拉回来查看内容,不由得大骇,看图:
手机会定时向某域名发送一个请求,特别是带有一个加密的tk字符串,颇为可疑,而且目标域名也非常可疑(xxsvr.com。WHOIS一下域名,是个没听过的移动软件公司),加之其域名根目录、根域名什么也没有。我倒吸一口冷气,心里想到一个“物种”:灰鸽子!
基本确定是手机的问题,那就要排查间谍位置了,先看看是Rootkit还是应用级木马。把应用程序逐个结束,依次抓包,发现结束掉某APP后就不再有“心跳包”了。看来是应用级(那就是小事啦,出了点小意外情况还在我控制中),而且是捆绑在某APP里面的。
把该APP的安装文件扔到Android沙盒里面跑一下(地址 http://sanddroid.xjtu.edu.cn ),可以看到它确实访问了xxsvr.com域名以及一些莫名其妙的域名。
同时APP也有一些读写收发短信(READ_SMS、RECEIVE_SMS、WRITE_SMS、SEND_SMS)、读写联系人(READ_CONTACTS、WRITE_CONTACTS)、读写浏览器历史/书签(READ_HISTORY_BOOKMARKS、WRITE_HISTORY_BOOKMARKS)、获得位置(ACCESS_FINE_LOCATION)等跟其应用功能无关的权限,非常可疑。
好吧,既然事情到了这个地步,只好看看它的代码了。
Android上的应用程序是JAVA写的,反编译也很容易。Apk文件其实就是个ZIP压缩包,先改下后缀,用WinRAR之类的工具解压,其中关键文件是AndroidManifest.xml和classes.dex。
AndroidManifest.xml是Android应用声明权限、组件的文件,这个是二进制的,需要用一个叫AXMLPrinter2的工具反编译出来。我简单写了个脚本,只把权限提出来:
Classes.dex就是JAVA代码编译后的二进制,直接用dex2jar转换为jar格式,再用JAVA反编译器如JD-GUI查看即可。
仔细查找出现那可疑域名的代码,发现那段可疑的字符串是加密后的手机MAC、IMSI等信息,看源代码:
其他代码还有一大堆,看得头疼,就不继续分析了。这个APP既然这么可疑,那就不管是不是流氓软件了,直接卸载。
最后我还要啰嗦几句,现在移动APP比较火,业界非常担心隐私泄漏问题。但是有些APP开发者还没有这个意识,在APP中申请一些没有必要的权限,读取和传输一些容易引起争议的数据。这就给用户带来了恐惧。当然了,用户害怕隐私泄漏,信不过你,“疑人不用”,最终结果就是卸载你的APP咯。
所以,有手机APP产品的企业尤其是大型互联网企业应该重视这个问题,要建立自己的移动APP安全规范、标准、流程和系统,在APP发布前解决这类问题,避免因为隐私问题给用户、给自己带来困扰。
捐款成功,感谢您的无私奉献
评论留言