您现在的位置是:首页 > IT基础架构 > 网络与安全 >

刘志乐:移动手机的应用软件安全测试结果出炉

2012-07-05 16:45:19作者:来源:

摘要7月4日消息,2012年中国计算机网络安全年会在西安举行,安恒公司网络安全服务总监刘志乐发表了题为“移动手机的应用软件安全测试”的演讲。...

7月4日消息,2012年中国计算机网络安全年会在西安举行,安恒公司网络安全服务总监刘志乐发表了题为“移动手机的应用软件安全测试”的演讲。    
 

    以下为演讲实录:

  各位嘉宾大家中午好。今天我给大家带来的是移动手机的应用软件安全测试,首先介绍一下我自己,我叫刘志乐,目前是OWASP中国区的委员,OWASP中国杭分会区域的负责人、安恒安全服务部总总监。

  首先我们看一下苹果和谷歌应用程序的基础,最后我们讲一下这个移动手机面对一些主要的威胁。大家知道iphone话,现在已经成了阶梯,并不是我们国人喜用iphone,在国外也可以看到,它从2007年开始,到现在今天的2012年,它的销量已经远远不是这个,机遇浏览器的应用,主要是在HIML+CSS+javaScript,ios应用程序,OBJECTIVEC和Cocoa Touch API。为什么构建iphone的应用程序,主要之我们一些新的业务,推出一些新的服务,应对用户的迫切需要,还有有的时候用户也希望他有这功能,因为毕竟手机比电脑方便,大家不要总使用愤怒的小鸟和水果忍者。iphone的应用程序,它包括IPA,在测试的时候,会有一个模拟器,在模拟器上会进行一个测试,如果开发ID的话,也可以在真机上进行测试,最后会发布。谷歌也是非常成功的程序系统,主要是安卓的系统架构,它包括应用程序、应用程序的架框架,应用程序库,运行库和内核。介下来我们谈iphone应用程序安全测试,我们测试这个苹果上面的应用程序的话,重点包括哪些部分,首先是网络通讯这一块的测试,应用程序都是有交互的,我们要怎么样通过MITM中间人把它截下来,然后来测试它的安全性。

  第二是隐私问题,也解决我们存放在苹果手机上的客户隐私的问题,还有就是数据存储的问题实际上谈到这个问题的话,苹果现在用的存储,数据是存储在苹果的客户观,目前是不能加密的,我们也研究了很多,包括有些银行应用的数据也是存在客户端的,都是很危险的。iphone首先肯定要越狱,我们越狱以后就可以安全访问设备,允许安装未授权的一些软件,就是XP的一些运用工具。然后越狱使我们的工作更加有意义,如果越狱的话,我们要装一个Cydia,因为苹果INS,经常用的实际上不是,所以说我们要装一些软件,通过电脑客户端连接苹果这个手机,然后装Adv+cmds,Sqlite3主要是数据的管理等等,这一块我也就不去说它了。SSH连接到iphone的话,我们要安装SSH,安装一个客户断,苹果方面有两个用户,一个是ROOT和MOBILE,如果你的手机越狱以后,确保把这个密码改掉,有些人没有改掉,同样有WIFI以后,别人就可以登陆你的手机,植入木马,是很危险的,你的隐私会被泄露。通过ROOT连接之后,可通过输入地址进去。它涉及到很多的通讯,通信的机制目前有明文的传输,有HTTP,有协议,然后加密的传输主要是HTTPS,那么这个时候,这个怎么测,这个是加密的,那么我们有办法进行加密的测试,那你要对这个网络通信进行测试的话,你首先要通过MITM中间人攻击的手段,你有一个WIFI,通过WIFI上去,然后进行连接,连接完以后,这个的话是我们自己写的一个中间人代理的工具,通过这个工具就可以把明文发送的数据报截取下来,通过修改数据包,进行安全性的测试。那么密文传输,HTTPS用来传输敏感的数据,这个证书是不允许的,为了劫持这个数据,需要把证书导入到苹果书记里面去,然后利用我们自开发的这个小工具,就可把它劫持下来,针对这一块,我给大家做了一个,通过现场的演示可以给大家直观上的一个认识。我们看一下这个。

  (演示过程)

  首先要把这个手机里面,连接到同样一个WIFI的环境下,比如说我们现在想测试的是一个建行的手机客户端,它用的是HTTPS,然后我点击我手机上面的应用,这个时候他就把和这个银行数据连接起来,然后我会输入密码。然后这个时候,大家看这个是一个吨路(音),我们可以做一些测试,或者一些其他信息,然后把它发送,发送完了以后,我们进入主菜单,比如说余额查询,如果说它的程序有一些WIFI的一些漏洞的话,这个时候我们就可以把它测试出来。

  对于自有协议这一块,你肯定要把这个包倒出来,倒出来以后,在SSH终端,用wireshark加载分析,隐私的话,这个应用程序它就会搜集你的设备的UDID,然后你的UDID可以用于到你的一些定位,地理位置等等,有的时候某些恶意的会坚持你的这些UDID。76%的应用程序,它的的数据,都是存在手机上面,而且10的程序,都是以明文存储,存储在手机上它的一些原因,主要是获得更好的性能,可以方便一些离线访问,经常访问的一些位置,比如说Plist文件,Logh等。这是它的应用程序的目录结构,对应都有自己的一个私有空间,这个里面也共享数据,还有一些其他的目录。对于程序的话,我们可以通过立项工程来测试。静态调试我们可以通过Otool、Class-dump,动态调试是gbd、IDA+GDBServer,IDA+GDBServer怎么通过这个实现程序远程调试,你首先要安装,苹果开发工具里边有一个,首先要让它可以监听,然后就可以进行调试。首先我看一下我苹果的地址,要登进行才行。

  (演示过程二)

  我的地址是这个,首先要先登陆我的这个,然后进入我的苹果,然后启动这个,这个是把它端口放在2341,我现在测试的是一个应用程序,这是一个中国天气的一个应用程序然后我把它回车,回车以后会建立这个端口,然后你的手机上的程序就会启动,然后我们怎么样用这个IDA来使它,我们激动IDA,然后把我的地址写上去,42072,然后2341端口,然后把11这个不让它关掉,要不然调试会有问题,然后把它关掉,然后OK。大家看现在我们就是一个动态的,通过IDA远程动态调试我手机上面苹果的应用程序,比如说我点击,这一块数据就会有,然后你就可以进行调试,今天时间有限,我肯定不会在这个地方做一个很深的调试,我只是带给大家一个方法,大家如果有兴趣的话下去可以测试。

  这一块是我在上面截了一点图放在上面。刚才谈的是苹果的这一块应用程序测试,那么对于安卓来讲,用的人很多,它的一些安全测试,实际上跟苹果IOS是类似的,安卓主要是linux而为基础,它的进程本身是分离的,数据目录权限也是分离的,每个程序的数据目录只有拥有者,恶意程序无法直接修改的,应用程序在修过过程中运行,所以说很难对这个应用程序进行攻击,安卓下的程序,和IOS程序不同,IOS你看到的全是汇编代码,但安卓不一样,安卓是一定程度上是原代码,在默认情况下,无法修改相关系统的位置。对于安卓应用系统测试的重要,主要包括应用程序的一个攻击测试,系统的攻击测试,还传输链路的攻击测试。对于安卓引入的权限,其实就相当于苹果的越狱,也是引入以后,你会对安装这个,获得权限。基于内核的测试的话,我们会针对内核测试的方法,在开发环境下,去安装你的这个模块。基于内核攻击设计,还有内核的溢出攻击,因为安卓也是基于C语言开发。应用程序的攻击测试的话,本身它是加码的,没办法去溢出攻击,但是这个程序为了提高效益,为了增加性能的话,它也有一些动态的模块,这些动态模块就会被我们用来应对一些溢出的攻击。还有安卓在通常情况下是不加密的,这一块可以通过一些管理工具把信息读取出来。对于传输链路的工具,我们通过中间人的测试工具去抓取包,然后去修改,然后去有测试向量,测试应用程序的安全性。对WAP站点攻击测试,有些部分手机还不支持cookie功能,将SESSIEN信息放置在URL中。最后讲一下我们目前移动手机面临的一些安全威胁,首先我们有的时候,比如说我们的手机丢了,丢了以后我们的信息会被别人获取,你的设备的一敏感文件掉了,有的时候我们需要对我们的设备有一个开机密码,即使你的手机丢了,别人也没有办法对你的信息所获取。还有就是开机以后,在移动的数据的加密,这一块的话,有些是引导漏洞,还有就是密码的一个穷举,比如4位的数的密码,可以在20分钟被破解。还有一些移动应用程序的风险,可以参考veracode Top10,这一块目前是第一个版本,这一块里边的话,会给大家详细的veracode Top安全问题。今天我就介绍到这里,谢谢大家。


(本文不涉密)
责任编辑:

站点信息

  • 运营主体:中国信息化周报
  • 商务合作:赵瑞华 010-88559646
  • 微信公众号:扫描二维码,关注我们