pc取证-番外篇(4)

简介: pc取证-番外篇(4)

Android 取证


0x01 基础了解


Android 通常有以下分区:

System分区: 就是我们刷ROM的分区,系统分区

Data分区: 分区就是我们装APK的分区

Catch分区:是缓存分区

SDCard分区:就是挂载的SD卡

username:用户数据分区

recovery:恢复分区

hboot:SPL所在的分区,也是Fastboot所在的分区

splash1:开机第一屏,也是logo

radio:基带所在的分区


0x02 查看你分区


我们可以在adb中使用df 来查看分区情况。

1、跨分区不能用 MV命令来拷贝。但是可以用CP命令。如PWD,当前目录为:/data/local/tmp 。

此目录下有个busybox和1.txt文件。则利用CP命令拷贝如下:./busybox cp1.txt /system.

2、Android的用户组有 System, root, shell

3、怎么样才能操作分区。

分区操作是需要权限的。一般来说System分区的权限限制得比较严,Data分区限制比较严,用户可以操作的目录有local,app目录。比如/data/local/tmp.

data分区常用目录:app , system , data ,local,misc 其中system,local可以进入并使用ls等命令。data,app可以进入,但不能用ls命令。

data/data目录:存放的是所有APK程序数据的目录,每个APK对就一个自己的Data目录,就是在data/data/目录下,会产生一个跟 Package一样的目录。如有一个APK,它的包名叫com.test.hello则,在data/data/目录下会有一个 com.test.hello的目录,这个APK只能操作此目录,不能操作其它APK的目录.这个在LINUX下叫做用户进程只能操作自己的进程目录.

data/app目录:用户安装的APK放在这里。我们如果把APK放入这个文件夹下面的话,就算安装好了。这就叫静默安装。不用管APK文件里面的lib目录下的库文件,系统会自动帮我们放入调用库的。

data/system目录下面有packages.xml ,packages.list,appwidgets.xml, 等等一些记录手机安装的软件,Widget等信息。

data/misc目录:保存WIFI帐号,VPN设置信息等。如保存了一个WIFI连接帐号,则此目录下的WIFI目录下面可以查看到。

system分区常用目录:app , lib, xbin, bin , media,framework.

system/app目录:存放系统自带的APK。没有测试过是否将APK放入到System/app目录下,也是静默安装APK。?

system/lib目录:存放APK程序用到的库文件。

system/bin目录和system/xbin目录:存放的是shell命令。

system/framework目录:启用Android系统所用到框架,如一些jar文件。


0x03 内部分区及权限


Android 目录下都是需要权限的,如果没有,需要使用chomd777来修改;

如果分区目录,如:/data 分区、/system 分区 ,都没有权限,则需重新挂载,使用 mount -oremount XX

安卓手机和平板一般包括以下标准内部分区:

/boot

/system

/recovery

/data

/cache

/misc

另外还与SD卡分区:

/sdcard

/sd-ext

system 分区

这里是挂载到/system目录下的分区。这里有 /system/bin 和 /system/sbin 保存很多系统命令。它是由编译出来的system.img来烧入。

相当于你电脑的C盘,用来放系统。这个分区基本包含了整个安卓操作系统,除了内核(kerne)和ramdisk。包括安卓用户界面、和所有预装的系统应用程序。擦除这个分区,会删除整个安卓系统。你可以通过进入Recovery程序或者bootloader程序中,安装一个新ROM,也就是新安卓系统。

架构图:

从上到下依次为:

核心应用层:这一层就是大家平常所接触的各种各样的系统自带应用,比如联系人,电话,音乐等。应用层往下就是开发人员所接触的。

框架层:这一层是Android系统的核心,它提供了整个Android系统运作的机制,像窗口管理,程序安装包管理,开发人员所接触的Activity, Service, broadcast等等。

JNI层:JNI层是Java程序和底层操作系统通信的一个机制,它使得Java代码可以调用C/C++代码来访问底层操作系统的API。

Dalvik虚拟机:Android开发使用Java语言,应用程序的Java代码会被编译成dalvik虚拟机字节码,这些字节码由dalvik虚拟机解释执行。

本地库:本地库一般是由C/C++语言所开发,直接编译成相应CPU的机器码,这其中包含标准C库,用以绘制图形的skia库,浏览器核心引擎webkit等。

HAL:硬件抽象层,为了和各个厂家的不同硬件工作,Android定义了一套硬件接口,比如说为了使用相机,厂家的相机驱动必须提供的接口方法。这样使得上层的代码可以独立于不同的硬件运行。

厂家适配层:本来Android定义的HAL层是直接和厂家提供的设备驱动打交道的,但是目前厂家不想开源HAL部分的代码,因此很多厂家都提供了一个我称之为厂家适配层的代码,这样在HAL层接口的实现只是一个简单的对厂家适配层接口函数的调用。

内核:这一层就是大家熟悉的Linux内核,内核中包含有各种硬件驱动,这些驱动不同的手机厂商不同的手机是不一样的。Linux内核是支持驱动模块化机制的,简单的说就是允许用户动态的加载或者卸载某个硬件驱动,但是目前来看,手机厂商除了提供WIFI驱动单独加载外,其它驱动都是和内核绑定在一起的。

从这张软件结构图来看,除了内核是放在boot分区外,其它层的代码都是在system分区中。

下面结合这张图来介绍system分区的主要目录内容:system/app: app目录下存放的是核心应用,也就是大家熟知的系统APP,这些系统自带的程序是不能简单的卸载的,要通过一些特殊的方式才能删除(大家熟悉的一种方法是用RE文件管理器)。

system/lib: lib目录下存放的是组成JNI层,Dalvik虚拟机,本地库,HAL层和厂家适配层的所有动态链接库(.so文件)。

system/framework: 该目录下存放的是框架层的JAR包,其中对MIUI移植来说有3个最重要的JAR包(framework.jar, android.policy.jar, services.jar)。后续的文章会重点介绍这3个包。

system/fonts: 该目录下存放的是系统缺省的字体文件。

system/media:该目录下存放的是系统所使用的各种媒体文件,比如说开机音乐,动画,壁纸文件等。不同的手机该目录的组织方式可能不一样。如何修改这些文件请参考网上对应机型形形色色的教程,这里不再赘叙。

system/bin: 该目录下存放的是一些可执行文件,基本上是由C/C++编写的。其中有一个重要的命令叫app_process下一节单独介绍。

system/xbin: 该目录下存放的是一些扩展的可执行文件,既该目录可以为空。大家常用的busybox就放在该目录下。Busybox所建立的各种符号链接命令都是放在该目录。

system/build.prop: build.prop和上节说得根文件系统中的default.prop文件格式一样,都称为属性配置文件。它们都定义了一些属性值,代码可以读取或者修改这些属性值。属性值有一些命名规范:

ro开头的表示只读属性,即这些属性的值代码是无法修改的。

persist开头的表示这些属性值会保存在文件中,这样重新启动之后这些值还保留。

其它的属性一般以所属的类别开头,这些属性是可读可写的,但是对它们的修改重启之后不会保留。很多ROM制作者都会修改一下build.prop信息,里面的一些以ro.build开头的属性就是你在手机设置中的关于手机里看到的。可以通过修改build.prop文件来将这个ROM打上自己的印记(XXX所修改)。我见过一个只是删了system/app的一些程序,然后修改build.prop中的ro.build.display.id和ro.build.version.incremental中的两个属性值打上自己的大名的ROM。

system/etc: 该目录存放一些配置文件,和属性配置文件不一样,这下面的配置文件可能稍微没那么的有规律。一般来说,一些脚本程序,还有大家所熟悉GPS配置文件(gps.conf)和APN配置文件(apns-conf.xml)放在这个目录。像HTC将相机特效所使用的一些文件也放在这个目录下。

MISC分区

这个分区包括了一些杂项内容:比如一些系统设置和系统功能启用禁用设置。这些设置包括CID(运营商或区域识别码)、USB设置和一些硬件设置等等。这是一个很重要的分区,如果此分区损坏或者部分数据丢失,手机的一些特定功能可能不能正常工作。

recovery分区

recovery 分区即恢复分区,在正常分区被破坏后,仍可以进入这一分区进行备份和恢复.我的理解是这个分区保存一个简单的OS或底层软件,在Android的内核被破坏后可以用bootloader从这个分区引导进行操作。

这个分区可以认为是一个boot分区的替代品,可以是你的手机进入Recovery程序,进行高级恢复或安卓系统维护工作。

boot 分区

一般的嵌入式Linux的设备中.bootloader,内核,根文件系统被分为三个不同分区。在Android做得比较复杂,从这个手机分区和来看,这里boot分区是把内核和ramdisk file的根文件系统打包在一起了,是编译生成boot.img来烧录的。

如果没有这个分区,手机通常无法启动到安卓系统。只有必要的时候,才去通过Recovery软件擦除(format)这个分区,一旦擦除,设备只有再重新安装一个新的boot分区,可以通过安装一个包含boot分区的ROM来实现,否则无法启动安卓系统。

userdata 分区

它将挂载到 /data 目录下, 它是由编译出来的userdata.img来烧入。

这个分区也叫用户数据区,包含了用户的数据:联系人、短信、设置、用户安装的程序。擦除这个分区,本质上等同于手机恢复出厂设置,也就是手机系统第一次启动时的状态,或者是最后一次安装官方或第三方ROM后的状态。在Recovery程序中进行的“data/factory reset ”操作就是在擦除这个分区。

cache 分区

它将挂载到 /cache 目录下。这个分区是安卓系统缓存区,保存系统最常访问的数据和应用程序。擦除这个分区,不会影响个人数据,只是删除了这个分区中已经保存的缓存内容,缓存内容会在后续手机使用过程中重新自动生成。


0x04 其他隐藏分区


  HBOOT 

保存的bootloader HBOOT。手机的启动引导的一段程序。

类似电脑主板BIOS,这部分刷错了手机就会变成砖块。

Radio分区  

保存是基带芯片的固件代码,Linux不认识其格式,在手机启动时装入特定内存中用于驱动芯片。所有与电信网络交互就是靠它了,一般往往用专用开发环境来开发。手机无线信号、蓝牙、wifi等无线管理。  splash分区 这里是启动画面。 

SD卡分区  

一般默认的是挂载在/sdcard目录。  这个分区不是设备系统存储空间,是SD卡空间。从使用上讲,这个是你自己的存储空间,可以随便你任意存放相片、视频、文档、ROM安装包等。擦除这个分区是完全安全的,只要你把分区中你需要的数据都备份到了你的电脑中。虽然一些用户安装的程序会使用这个分区保存它的数据和设置信息,擦除了这个分区,这些程序的数据,比如有些游戏的存档,就会全部丢失。在既有内部SD卡和外部SD卡的设备中,比如三星Galaxy S和一些平板电脑,/sdcard分区通常指向内部SD卡。外部SD卡,如果存在的话,会对应一个新的分区,每个设备都不一样。在三星Galaxy S手机中, /sdcard/sd代表的是外部SD卡,而其它设备,有可能是/sdcard2。与/sdcard不同,没有系统或应用程序数据会自动存放在外部SD卡中。外部SD卡中的所有数据都是用户自己添加进去的。在你把分区中需要的数据都备份到了你的电脑中之后,你可以安全的擦除这个分区。

SD卡扩展分区

 它的目录名是 /sd-ext ,它不是一个标准的Android分区,是运行APP2D软件扩展出来分区。目的是为了多扩展一个安装程序空间,这个对于Flash空间(或者说ROM空间)不够,又喜欢安装软件的人是有用应用。

各分区详细分析  

各个分区的内容,可以用cat命令直接导出,用一般的二进制的软件来分析,导出分区内容,如果用adb 导出,必须有root权限。


Android系统取证技术


市面上智能取证的工具很多,但是都避免不了一个问题,大多数都是使用同一手段,对安卓手机


相关文章
|
2月前
|
虚拟化 Windows
搬运5款冷门但值得下载的PC软件
本文推荐了五款较为冷门但非常实用的Windows软件:Picasa帮助用户轻松管理和编辑照片;DisplayFusion优化多屏使用体验;燃精灵能检测微信空号;IDM提供高效的下载管理功能;Zogvm则助力磁盘虚拟化管理,这些工具虽小众,却能极大提升工作效率。
34 1
|
2月前
|
安全 JavaScript 前端开发
某论坛新游试玩区被植入利用ANI漏洞传播 Trojan.Mnless.kip 的代码
某论坛新游试玩区被植入利用ANI漏洞传播 Trojan.Mnless.kip 的代码
|
存储 算法 Linux
pc取证-番外篇(5)
pc取证-番外篇(5)
85 0
|
存储 安全 Python
pc取证-番外篇(2)
pc取证-番外篇(2)
148 0
|
存储 Unix 定位技术
pc取证-番外篇(3)
pc取证-番外篇(3)
155 0
|
安全 Linux 数据库
工具推荐:22款最流行的计算机取证工具【2017年更新版】
本文讲的是工具推荐:22款最流行的计算机取证工具【2017年更新版】,计算机取证(Computer Forensics,又名计算机取证技术、计算机鉴识、计算机法医学)是指运用计算机辨析技术,对计算机犯罪行为进行分析以确认罪犯及计算机证据,并据此提起诉讼。
4898 0
|
安全 开发工具 iOS开发
《iOS取证实战:调查、分析与移动安全》一第1章 概 述1.1 介绍
本节书摘来自华章出版社《iOS取证实战:调查、分析与移动安全》一书中的第1章,第1.1节,作者(美)Andrew Hoog Katie Strzempka,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1366 0