手机取证
1.工具
盘古石手机取证分析系统
可以导入的手机文件:
安卓tar、zip、文件夹、dd镜像
苹果tar、zip、文件夹、iTunes备份
(盘古石杯移动终端取证第20题需要导出mac中的ios备份,不知道怎么导入)
移动终端的设备信息有:
品牌、型号、Mtp序列号、运行商、补丁时间、设备名称、时区、总磁盘空间、空闲磁盘空间、蓝牙物理地址、日志文件系统、BoardID、IMEI、IMSI、安卓ID、ICCID(SIM卡)、设备OD、内核版本、WLANMac地址、sdk版本、序列号、硬件平台、是否root
可以看出手机中各种应用的权限数和应用的版本
相册里可以看到最近删除的照片(如果有的话)
火眼证据分析
移动终端的设备信息有:
型号、设备名称、系统版本、编译版本、序列号、时区、UDID、IMEI、MEID、一些最后一次信息
对于手机的应用数据,可以在data/data目录中找到对应的包名(例如com.qim.imm),包名目录下的databases目录中存放着应用的数据,可以在火眼中直接查看db文件,也可以导出后用navicat打开,将表格等文件另存为其他格式,如txt、xlsx,便于写脚本
火眼可以对搜索结果有更多的操作(主要是便于计算hash),而盘古石只能导出,但有时候盘古石的搜索更准确一些
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出内存中的数据)
二进制取证
纯纯逆向
1.利用工具exeinfope查壳和位数
2.利用IDA静态分析程序的逻辑,如果是恶意程序,我分为以下两种:
①普通恶意:比如给某个路径下的文件进行字节加密,导致文件不可正常显示,这也是最经典的,对于这类恶意程序,说到底就是二进制修改,写个解密脚本就能恢复,关键就是找加密逻辑,简单的byte[i]++也有,难的密上加密也有
②究极恶意:深入系统层面,对系统增、删、改,遇到这样的恶意程序一般就无法恢复了,能做的也只有看看逻辑
对于IDA:
(1)多多利用Strings字符集(shift+F12打开),巧用ctrl+F搜索一些关键词,比如题目问编写该程序电脑的用户名,就可以尝试在Strings里搜索"C:",查看文件的路径,诸如此类。
(2)imports中可以看到调用的动态链接库
(3)IDA中的十六进制和十进制数据可以通过“H”键相互切换,对于一个不起眼的16进制数,或许H一下就是端口号
(4)IDA中的这些粉色函数都是动态链接库的函数,如果不知道是什么意思都是可以百度到的,它们的任意一个参数都可能是一道题目
(5)IDA解析后的数据在伪代码界面是小端序存储的,如果看到一长串16进制数据,那么很可能是多个16进制数据合在了一起,并且顺序是反的,比如v1 = 0xE45D8CAB,真实的数据应该是v1[0] = 0xAB,v1[1] = 0x8C,v1[2] = 0x5D,v1[3] = 0xE4。如果不确定就定位到Hex view-1界面看看,这个界面的顺序是正确的
(6)当你看到一个数组长这样子(数据不是很多,且每一个16进制数都是以字母开头的),那么这些数据很可能是一段中文
需要设置一下gbk模式:Options->General->Strings->UTF-8->空白部分右键->Insert->输入gbk->确定
然后选中目标数组,点一下这个
就变成中文了
或者直接去Hex view-1界面看
APK取证
1.工具
查壳工具
PKID:APK的壳中,360加固、梆梆、腾讯加固、阿里加固、百度加固在市面上最为常见。某银行app的壳就是梆梆
源码级分析工具
AndroidKiller:
工程信息:apk的入口、生成的包名都可以直接分析出来,下面是一些模块的分类,Uses-Permission也能直接看到
工程管理器:apk的目录和文件都在其中,是几个反编译器中较为清楚明白的,包括AndroidManifest
在AndroidKiller导入了apk后会生成相应的文件夹,所以不需要单独导出文件
如果看不惯smali,还可以转换为java代码,需要用到工具jd-gui
jeb:
工程浏览器中同样有包名、Manifest,还有签名证书、所有的Dalvik字节码以及一些文件目录
其最大的特点就是能看到apk的Dalvik字节码,并能将Dalvik字节码反编译为Java源代码的能力(Tab键)
jadx-gui:
该apk反编译器,源代码显示非常丝滑,文件目录也是一目了然,APK签名和AndroidManifest都能直接找到,是一个不错的审代码工具
也可以分析dump出来的dex文件
搜索功能也十分不错
还可以开启和关闭代码反混淆功能
缺点就是不能导出文件,如果需要导出文件,还得去其他反编译工具中导出
其他工具
夜神/雷神/雷电模拟器
本人常用的是夜神模拟器,分为32位和64位,打开模拟器后把apk拖进去就安装了。模拟器主打一个模拟,apk安装完后可以打开这个apk,看看长什么样子,说不定里面就有一个域名+端口(下图为2023蓝帽杯第4题)
在模拟器里运行apk后,会在根目录下的/data/data里生成一个包,包的名称一般和这个apk有关,所以很好找
雷电app智能分析
重点!!这是一款非常强大的apk分析工具
基本信息里有apk的版本和包名等
详细信息里有入口函数、签名信息(包括序列号)等
静态权限里有各种开启的权限和对应的级别(相当于Uses-permission)
第三方服务里有服务商的信息(调证值出过题目)
动态监控暂时没有发现其用处
网络数据包可以进行数据包抓取,需要在雷神或雷电模拟器上运行apk后才能用
源码分析提供了jadx的反编译、是否有壳以及一键脱壳功能(没用过),脱壳的结果是一堆dex文件,可以批量导入jadx分析
Frida脚本可以选择左边的几种内置脚本运行(题目出过SQLite数据库脚本),找到运行时内存中的数据,也需要打开模拟器运行apk
2.Tips
①某apk是否存在什么行为:如果存在这个行为,肯定会在源码中体现,可以利用jadx搜索相关函数名,查看源码来判断
②apk的包名除了反编译工具,还可以在模拟器里看,就是/data/data目录下的包文件名
③入口函数除了反编译工具,还可以在AndroidManifest.xml中查看,查找android.intent.action.MAIN和android.intent.category.LAUNCHER对应的activity,该activity对应的android:name属性即为入口activity名称
④其他apk分析的知识点见之前的文章