手机取证

1.工具

盘古石手机取证分析系统

可以导入的手机文件:

安卓tar、zip、文件夹、dd镜像

苹果tar、zip、文件夹、iTunes备份

(盘古石杯移动终端取证第20题需要导出mac中的ios备份,不知道怎么导入)

Android 导出bugreport_数据

Android 导出bugreport_安全_02

移动终端的设备信息有:

品牌、型号、Mtp序列号、运行商、补丁时间、设备名称、时区、总磁盘空间、空闲磁盘空间、蓝牙物理地址、日志文件系统、BoardID、IMEI、IMSI、安卓ID、ICCID(SIM卡)、设备OD、内核版本、WLANMac地址、sdk版本、序列号、硬件平台、是否root

Android 导出bugreport_安全_03

可以看出手机中各种应用的权限数和应用的版本

Android 导出bugreport_包名_04

相册里可以看到最近删除的照片(如果有的话)

Android 导出bugreport_包名_05

火眼证据分析

移动终端的设备信息有:

型号、设备名称、系统版本、编译版本、序列号、时区、UDID、IMEI、MEID、一些最后一次信息

Android 导出bugreport_搜索_06

对于手机的应用数据,可以在data/data目录中找到对应的包名(例如com.qim.imm),包名目录下的databases目录中存放着应用的数据,可以在火眼中直接查看db文件,也可以导出后用navicat打开,将表格等文件另存为其他格式,如txt、xlsx,便于写脚本

Android 导出bugreport_数据_07

火眼可以对搜索结果有更多的操作(主要是便于计算hash),而盘古石只能导出,但有时候盘古石的搜索更准确一些

Android 导出bugreport_包名_08

Android 导出bugreport_数据_09

2.Tips

①电脑检材里可能存在手机备份(2023盘古石杯第18题),火眼分析电脑检材可以看到一小部分手机的基本设备信息,进一步分析需要导出手机备份后,作为检材导入分析

②iphone的实况照片实际存储了两个文件,分别是.mov和.HEIC

③搜索提示:

黑名单——ZWABLACKLISTITEM、blacklist

热点——hotspot

蓝牙——bluetooth

修复密钥——recovery key

④涉及手机程序数据的题,都可以尝试去data/data/com.*里找数据库文件

⑤手机里面安装了两个相册,第一个是手机自带的,第二个是google相册,存放在com.google.android.apps.photos中;对于邮箱,也存在com.google.android.gm,是Gmail的Android应用程序。取证工具可能分析不出这两个目录,可以尝试去x-ways找找

⑥apk运行时会在手机里生成数据在内存中,使用雷电app智能分析的frida脚本(frida的作用是在apk运行后,dump出内存中的数据)

Android 导出bugreport_数据_10

二进制取证

纯纯逆向

1.利用工具exeinfope查壳和位数

2.利用IDA静态分析程序的逻辑,如果是恶意程序,我分为以下两种:

①普通恶意:比如给某个路径下的文件进行字节加密,导致文件不可正常显示,这也是最经典的,对于这类恶意程序,说到底就是二进制修改,写个解密脚本就能恢复,关键就是找加密逻辑,简单的byte[i]++也有,难的密上加密也有

②究极恶意:深入系统层面,对系统增、删、改,遇到这样的恶意程序一般就无法恢复了,能做的也只有看看逻辑

对于IDA:

(1)多多利用Strings字符集(shift+F12打开),巧用ctrl+F搜索一些关键词,比如题目问编写该程序电脑的用户名,就可以尝试在Strings里搜索"C:",查看文件的路径,诸如此类。

(2)imports中可以看到调用的动态链接库

(3)IDA中的十六进制和十进制数据可以通过“H”键相互切换,对于一个不起眼的16进制数,或许H一下就是端口号

(4)IDA中的这些粉色函数都是动态链接库的函数,如果不知道是什么意思都是可以百度到的,它们的任意一个参数都可能是一道题目

Android 导出bugreport_数据_11

(5)IDA解析后的数据在伪代码界面是小端序存储的,如果看到一长串16进制数据,那么很可能是多个16进制数据合在了一起,并且顺序是反的,比如v1 = 0xE45D8CAB,真实的数据应该是v1[0] = 0xAB,v1[1] = 0x8C,v1[2] = 0x5D,v1[3] = 0xE4。如果不确定就定位到Hex view-1界面看看,这个界面的顺序是正确的

(6)当你看到一个数组长这样子(数据不是很多,且每一个16进制数都是以字母开头的),那么这些数据很可能是一段中文

Android 导出bugreport_包名_12

需要设置一下gbk模式:Options->General->Strings->UTF-8->空白部分右键->Insert->输入gbk->确定

Android 导出bugreport_Android 导出bugreport_13

然后选中目标数组,点一下这个

Android 导出bugreport_包名_14

就变成中文了

Android 导出bugreport_搜索_15

或者直接去Hex view-1界面看

Android 导出bugreport_数据_16

APK取证

1.工具

查壳工具

PKID:APK的壳中,360加固、梆梆、腾讯加固、阿里加固、百度加固在市面上最为常见。某银行app的壳就是梆梆

Android 导出bugreport_安全_17

源码级分析工具

AndroidKiller:

工程信息:apk的入口、生成的包名都可以直接分析出来,下面是一些模块的分类,Uses-Permission也能直接看到

Android 导出bugreport_Android 导出bugreport_18

工程管理器:apk的目录和文件都在其中,是几个反编译器中较为清楚明白的,包括AndroidManifest

Android 导出bugreport_安全_19

在AndroidKiller导入了apk后会生成相应的文件夹,所以不需要单独导出文件

Android 导出bugreport_搜索_20

如果看不惯smali,还可以转换为java代码,需要用到工具jd-gui

Android 导出bugreport_数据_21

jeb:

工程浏览器中同样有包名、Manifest,还有签名证书、所有的Dalvik字节码以及一些文件目录

Android 导出bugreport_包名_22

其最大的特点就是能看到apk的Dalvik字节码,并能将Dalvik字节码反编译为Java源代码的能力(Tab键)

Android 导出bugreport_搜索_23

Android 导出bugreport_包名_24

jadx-gui:

该apk反编译器,源代码显示非常丝滑,文件目录也是一目了然,APK签名和AndroidManifest都能直接找到,是一个不错的审代码工具

也可以分析dump出来的dex文件

Android 导出bugreport_安全_25

搜索功能也十分不错

Android 导出bugreport_安全_26

还可以开启和关闭代码反混淆功能

Android 导出bugreport_Android 导出bugreport_27

缺点就是不能导出文件,如果需要导出文件,还得去其他反编译工具中导出

其他工具

夜神/雷神/雷电模拟器

本人常用的是夜神模拟器,分为32位和64位,打开模拟器后把apk拖进去就安装了。模拟器主打一个模拟,apk安装完后可以打开这个apk,看看长什么样子,说不定里面就有一个域名+端口(下图为2023蓝帽杯第4题)

Android 导出bugreport_数据_28

在模拟器里运行apk后,会在根目录下的/data/data里生成一个包,包的名称一般和这个apk有关,所以很好找

雷电app智能分析

重点!!这是一款非常强大的apk分析工具

基本信息里有apk的版本和包名等

Android 导出bugreport_安全_29

详细信息里有入口函数、签名信息(包括序列号)等

Android 导出bugreport_搜索_30

静态权限里有各种开启的权限和对应的级别(相当于Uses-permission)

Android 导出bugreport_Android 导出bugreport_31

第三方服务里有服务商的信息(调证值出过题目)

Android 导出bugreport_Android 导出bugreport_32

动态监控暂时没有发现其用处

网络数据包可以进行数据包抓取,需要在雷神或雷电模拟器上运行apk后才能用

Android 导出bugreport_Android 导出bugreport_33

源码分析提供了jadx的反编译、是否有壳以及一键脱壳功能(没用过),脱壳的结果是一堆dex文件,可以批量导入jadx分析

Android 导出bugreport_安全_34

Frida脚本可以选择左边的几种内置脚本运行(题目出过SQLite数据库脚本),找到运行时内存中的数据,也需要打开模拟器运行apk

Android 导出bugreport_Android 导出bugreport_35

2.Tips

①某apk是否存在什么行为:如果存在这个行为,肯定会在源码中体现,可以利用jadx搜索相关函数名,查看源码来判断

②apk的包名除了反编译工具,还可以在模拟器里看,就是/data/data目录下的包文件名

③入口函数除了反编译工具,还可以在AndroidManifest.xml中查看,查找android.intent.action.MAIN和android.intent.category.LAUNCHER对应的activity,该activity对应的android:name属性即为入口activity名称

Android 导出bugreport_Android 导出bugreport_36

④其他apk分析的知识点见之前的文章