编程日记2013-11-26

Android取证实战—调查,分析与移动安全

 

3.4android安全模型(较多)

 

开发者的数字签名:当应用程序第一次安装时,android通过检查.apk文件确认此签名。

不同与SSL,不要求必须由一个证书权威机构进行签名(这就要求开发者必须保护好自己的秘钥);

在确认签名即同时可以验证了.apk文件后,android便可查验(了解)此应用程序对系统进行访问所需要权限的专用文件。

这一过程,可以归纳为由开发者声明了一份对于android系统所要求的访问权限的文件,该文件具有数字签名。在安装时,会有授权书出示给用户,由用户决定是否给予权限。

 

在实际中,相信大部分用户都快速地决定允许所有的访问权限以及应用请求。

 

(对于应用程序市场,android市场可以说是泛滥,加上版本的不同,很多市场平台对程序的安全审计要求不严,门槛很低,已至很多应用中都存在大量的恶意代码,例如恶意扣费等)

 

 

 

这里增加些书本外的内容:

相比较苹果唯一的官方应用软件程序 商店iTunes Store对于应用软件的严格审核,Android则是平台泛滥;

手机吸费软件主要以两种形式出现:第一种是手机厂商在定制手机时已将吸费软件提前植入并设置好吸费软件代码,甚至做好了上行代码和SP公司的计费单;另外一种是智能机软件以正常服务软件的形式安装在手机里,但里面其实包含了恶意扣费代码。

第一种形式中,手机厂商、SP和运营商有合作协议,“厂商每生产多少台手机,SP就会按照协议支付多少费用;而运营商和SP也有协议,通过上网产生的流量费用进行分成”。这类恶意扣费软件在联网时没有任何提示,只要一点开图标,SP的后台就开始扣费。

第二种形式的扣费同样非常隐秘,一旦智能手机中安装了恶意扣费软件,这些软件就会屏蔽掉运营商发送的收费提示短信,用户的话费就会在不知不觉中被扣掉了。

3,分析Android平台中安全问题严重原因

(1),由Android系统自身原因造成目前安全危机严重

Android的系统开放给开发者124项权限,但同时也带来很大的安全隐患。籍此,开发者可以自由的读取系统相关资源,并在用户不知情的情况下做恶意处理。

现有的Android系统的安全机制很简单,程序一旦安装后,无法改变程序的访问权限。唯一的方法是卸载,重新安装。

国内第三方应用市场审核机制不健全,在发展过程中过分关注数量而忽视了对应用质量和安全的把关。

 

手机ROM指的是存放手机固件代码的存储器(常说的刷机也就是指的是重新构建自己想要的ROM),比如手机的操作系统、一些应用程序如游戏等

 

回到本书:

 

例如,一个应用程序要访问用户人的联系列表,SMS短信以及网络,以便增加新的功能。这是授权范围内合理的请求。相反,如果只是一个改变你终端设备的背景图像,用户应该对该应用产生质疑,也许里面有恶意的程序。

 

 

综合来看,一个应用是否包含恶意代码,现阶段来说,对于用户是难以发现的(由于市场的不安全)。用户所能做的只是留个心眼,在对应用授权时。或者现知名的杀毒软件(如:腾讯手机管家,360安全卫士,LBE安全大师等)也是很好的工具,基本能查杀一半以上的病毒。

 

 

 

用户授权后,应用程序进行安装

 

Android安全模型的一个关键部分是每一个应用程序都被赋予一个唯一的LINUX用户ID和组ID,运行在自己的进程和Dalvik虚拟机里。(应用的独立性

 

在安装时,系统会创建一个专门的目录,用于存储此应用程序的数据(数据源),程序利用LINUX用户ID和组ID的相应访问权限对这些数据进行访问(访问方法

 

此外,此应用程序的Dalvik虚拟经使用应用程序的用户ID运行在自己的进程中。

 

这些关键的机制在操作系统层面上强制数据安全,因为应用程序之间不共享内存,访问权限及磁盘存储。即只能在自己的虚拟机范围内访问内存和数据。

 

 

当然,当一个企业中开发的多个应用之间可以共享数据,内存,进程,用户ID时,只要使用同一个数字证书进行多应用签名。例如(免费版升级为收费版)

 

 

Android安全模型,其结果是取证检查者没有简单的方法能够从终端设备上抽取核心的用户数据,可以说,,,,android的安全结构对于在应用程序之间分离和保护数据还是非常有效的。

 

 

 

 

 

JAVA类的心得:

多态内容:

关于类的向上转型()与向下转型(强制转换)

 

向上转型:Employee staff = newManager();  父类引用了一个子类对象(任何子类)

然后 不能讲一个父类引用赋予子类:如  Manager m = new Employee()原因很明显;

 

向下转型:Employee staff = newEmployee();;;;;;;Manager boss = (Manager)staff ;

目的使用Manager中特有的方法才需要强制转换;(还不如在父类中定义新方法。。。)

 

强制转换应注意2点:必须在继承层次内进行,再将父类转换成子类之前,应该使用instanceof进行检查。

If(staff instanceof Manager)

{

Boss =(Manager)staff;

}

 

抽象类

定义一个抽象类的对象变量时,只能引用非抽象子类的对象(这里类似向上转型);

Person p = new Student();

 

意,编译器只允许调用在类中声明的方法;

p.getDescription();     抽象类调用子类方法

getDescription该方法在P中为抽象方法,只声明未定义,所以P可以进行调用。同时注意,由于P是抽象类,所以变量p永远不会引用Person对象,故该方法也无法实化(根本就没有定义,但声明),所以会调用子类的getDescription().

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值