前言

虽说这次蓝帽杯2023是取证题型初体验,而且只解出来6道取证,但取证给我的印象还是挺有趣

颇有一种模拟侦探收集信息的感觉

希望通过复现wp以及查阅资料,能够形成初步的取证知识体系**,为以后的大赛做好准备

在复现过程中,我会尽量使用不需要授权的开源取证软件,一是因为过于依赖国产的傻瓜式取证软件不利于对取证原理的学习,同时也是防止在以后的比赛中万一没有及时获得像盘古、火眼的授权时,陷入无工具可用的尴尬场面

复现wp

蓝帽杯2023初赛

由于赛题的镜像经过了加密,首先使用VeraCrypt将其解密为磁盘分卷

image-20230901202222577

image-20230901202441360

此时取证检材容器被加载到对应盘符中

image-20230901202631237

apk分析

涉案apk的包名是?

将apk文件拖入APK Messenger中进行分析,得到包名:com.vestas.app

image-20230905103912013

涉案apk的签名序列号是?

使用工具MobSF分析apk数据包,签名序列号为报告中SIGNER CERTIFICATE模块的Serial Number0x563b45ca

image-20230905105427472

涉案apk中DCLOUD_AD_ID的值是?

使用工具jadx反编译apk安装包,在得到的资源文件全局查询dcloud_ad_id,整改的相应属性及对应的值2147483647

image-20230905220127485

涉案apk的服务器域名是?

将软件安装在雷电模拟器上,打开后使用bupsuite进行抓包

服务器域名为打开app时请求的目的地hostvip.licai.com

image-20230905224347406

涉案apk的主入口是?

使用工具MobSF分析apk数据包,签名序列号为报告中的Main Activityio.dcloud.PandoraEntry

image-20230905225011434

该镜像是用的什么模拟器?

在题目给出的配置文件中可以发现雷电模拟器的配置文件

image-20230906084732386

手机取证

该镜像中用的聊天软件名称是什么?

使用雷电模拟器进行仿真,发现聊天软件名称叫与你

image-20230906084914731

聊天软件的包名是?

使用软件Magnet AXIOM加载证据data.vmdk

选择使用痕迹中的移动设备

image-20230906092239093

可以看到相关软件的包名com.uneed.yuni

image-20230906092400947

投资理财产品中,受害人最后投资的产品最低要求投资多少钱?

使用雷电模拟器仿真,查看聊天软件与你中的聊天记录

image-20230906090822562

受害人是经过谁介绍认识王哥?

使用雷电模拟器仿真,查看聊天软件与你中的聊天记录

image-20230906090807208

计算机取证

请给出计算机镜像pc.e01的SHA-1值?

将镜像文件添加到工具X-Ways,右键选择属性

image-20230910144738100

得到SHA-1值

给出pc.e01在提取时候的检查员?

将镜像文件添加到工具X-Ways,右键选择属性

检察员为案件描述中Examiner字段的值pgs

image-20230910144836605

请给出嫌疑人计算机内IE浏览器首页地址?

对镜像进行系统仿真,选择清除密码,方便登录取证

image-20230910150550050

打开IE浏览器的Internet选项即可看到首页设置

image-20230910152718075

请给出嫌疑人杨某登录理财网站前台所用账号密码?

在仿真系统中发现只有IE和Chrome两个浏览器

打开Chrome的自动填充设置,查看账号和密码

image-20230910154436525

请给出嫌疑人电脑内pdf文件默认打开程序的当前版本号?

在系统仿真下新建一个文件,修改后缀为pdf,打开时发现默认打开程序为WPS

image-20230910154919266

在wps的设置中点击关于WPS

image-20230910155144625

点击查看更多信息

image-20230910155213917

得到版本号

image-20230910155237874

请给出嫌疑人计算机内文件名为“C盘清理.bat”的SHA-1?

在盘古石计算机取证分析系统中查找可执行文件C盘清理.bat,并未找到

image-20230910155540883

猜测是文件被加密了,在D盘发现一个disk.2023-9-1的镜像文件

image-20230910160041865

将其导出后重新在盘古石中对其进行分析,发现确实存在目标文件

image-20230910160834201

导出的同时勾选计算哈希值即可

image-20230910161031189

image-20230910161144214

请给出嫌疑人Vera Crypt加密容器的解密密码?

由于disk.2023-9-1中存在Vera Crypt软件,考虑密码也在该镜像中

分析加密容器文件,找到目标文件

image-20230910162702277

分析memdump.mem,得到Veracrypt密钥

image-20230910163007593

将其导出为内存密钥,并应用到刚刚发现的目标文件上

image-20230910163317952

重要资料.xlsx中找到密码

请给出嫌疑人电脑内iSCSI服务器对外端口号?

windows上的iSCSI服务器一般会搭在虚拟机上

在仿真系统上找到与虚拟机相关的软件

image-20230910163723642

运行软件后找到端口

image-20230910163820698

请给出嫌疑人电脑内iSCSI服务器CHAP认证的账号密码?

CHAP认证中的密码被隐去,但可以得知用户名为user

image-20230910164054907

导出软件的文件夹,用vscode暴力搜索user,成功在配置文件中搜索到密码

image-20230910165137622

分析嫌疑人电脑内提现记录表,用户“mi51888”提现总额为多少?

在刚刚解密的文件中找到提现记录的表格

image-20230910165536539

在excel表格中使用公式计算

image-20230910170058435

内存取证

请给出计算机内存创建北京时间?

使用工具volatility查看内存镜像信息

python2 vol.py -f memdump.mem imageinfo

下方时间为本地时间,即北京时间

image-20230910203828708

请给出计算机内用户yang88的开机密码?

使用volatility工具的插件mimikatz

此处系统格式尝试imageinfo中搜索到的第一种Win7SP1x64

命令为python2 vol.py -f memdump.mem --profile=Win7SP1x64 mimikatz

得到如下账号和密码

image-20230910210120621

提取内存镜像中的USB设备信息,给出该USB设备的最后连接北京时间?

使用volatility工具的插件usbstor

注意此处为格林威治时间,需要还原成北京时间

image-20230910211358767

请给出用户yang88的LMHASH值?

使用volatility工具的插件hashdump

LMHash为左边那一段

image-20230910212715121

请给出用户yang88访问过文件“提现记录.xlsx”的北京时间?

使用volatility工具的插件shellbag

命令为python2 vol.py -f memdump.mem --profile=Win7SP1x64 timeliner > ../timeliner.txt

输出结果在上一层目录的timeliner.txt中,再到其中查找记录

此处需要将文件名转为url编码再查询,匹配字符串为%E6%8F%90%E7%8E%B0%E8%AE%B0%E5%BD%95.xlsx

image-20230910220422026

请给出“VeraCrypt”最后一次执行的北京时间?

使用volatility工具的插件pslist

image-20230910221225937

时间需要换算

分析内存镜像,请给出用户在“2023-06-20 16:56:57 UTC+0”访问过“维斯塔斯”后台多少次?

由于维斯塔斯为网页端程序,可以从浏览器节录中查询访问记录

使用盘古石计算机取证分析系统分析Chrome

image-20230910221800612

检索关键字后台登录,得到结果

image-20230910221917275

请给出用户最后一次访问chrome浏览器的进程PID?

使用volatility工具的插件pslist

由于结果是按结束时间来排序,所以很好定位

image-20230910222158513

服务器取证

分析涉案服务器,请给出涉案服务器的内核版本?

由于已知该镜像涉及到服务器,所以丢入盘古石计算机取证分析系统时在应用分析处勾选服务器

image-20230911104657292

提前勾选linux,则软件可以分析到内核版本

image-20230911104806315

分析涉案服务器,请给出MySQL数据库的root账号密码?

使用盘古石计算机取证分析系统找到网站目录

image-20230911110704591

发现密码就在涉案网站的环境配置文件中,说明这题爆搜也可以搜出来

image-20230911110935367

分析涉案服务器,请给出涉案网站RDS数据库地址?

同样在环境配置文件中

image-20230911111223494

请给出涉网网站数据库版本号?

开始仿真,首先在centos中查看ip和端口

image-20230911133919792

用xshell连接系统,因为xshell的终端不会有中文乱码等问题

修改宝塔面板密码后启动宝塔面板服务

image-20230911144527084

使用mysql -Version即可查看数据库版本

image-20230911145106845

请给出嫌疑人累计推广人数?

将题目给的检材中的数据库备份文件恢复到服务器中,得到viplicai数据库

image-20230911161033185

前面分析计算机时得到后台地址为http://vip.licai.com:8083/AdminV9YY/Login

image-20230911204731064

此时将域名替换为服务器ip,即http://192.168.58.132:8083/AdminV9YY/Login,成功进入后台登录界面

image-20230911204905936

由于没有账号密码,我们尝试修改源文件改变登录规则,在宝塔面板中进行修改

查找登录文件

image-20230911205848607

账号不存在的结果改为登录成功,同时去除密码错误的判断

image-20230911210605613

发现页面报错连接不上数据库

image-20230911212510974

到环境配置文件中将数据库域名改为本地,密码也改为当前root密码

image-20230911212716694

搜索嫌疑人账号即可找到推广人数

image-20230911212914384

请给出涉案网站后台启用的超级管理员?

来到管理账号界面,可以查看当前启用的超级管理员

image-20230911213131176

投资项目“贵州六盘水市风力发电基建工程”的日化收益为?

项目管理这一部分查看

2023第七届蓝帽杯全国大学生网络安全技能大赛电子取证参考题解

最早访问涉案网站后台的IP地址为?

登录日志中查看

2023第七届蓝帽杯全国大学生网络安全技能大赛电子取证参考题解

分析涉案网站数据库或者后台VIP2的会员有多少个

在会员管理界面查找vip2会员数量

image-20230911222736838

分析涉案网站数据库的用户表中账户余额大于零且银行卡开户行归属于上海市的潜在受害人的数量为

使用sql语句SELECT * FROM member WHERE bankaddress LIKE '%上海%'查询

image-20230911223516705

分析涉案网站数据库或者后台,统计嫌疑人的下线成功提现多少钱?

image-20230911223748483

分析涉案网站数据库或者后台受害人上线在平台内共有下线多少人?

该嫌疑人ID为513935

使用sql语句SELECT COUNT(*) FROM member WHERE inviter = '513935'查询

image-20230911223339630

分析涉案网站数据库或者后台网站内下线大于2的代理有多少个?

使用sql语句SELECT COUNT(*) AS inviter_count, inviter FROM member GROUP BY inviter HAVING COUNT(*) > 2;

image-20230912125136474

共60人下线超过2个

分析涉案网站数据库或者后台网站内下线最多的代理真实名字为

给上题的语句加一个order by inviter_count进行排序

image-20230912125123598

最多的人的inviteid为618731,回到系统查询真实姓名即可

分析涉案网站数据库或者后台流水明细,本网站总共盈利多少钱

使用数据库的账号密码登录phpMyAdmin

发现资金明细表的名字为moneylog

image-20230911232156194

moneylog_status为’+’代表流入,为’-’代表流出,所以需要分开计算资金流入流出

使用sql语句SELECT SUM(moneylog_money) FROM moneylog WHERE moneylog_status='+'

SELECT SUM(moneylog_money) FROM moneylog WHERE moneylog_status='-'

蓝帽杯2022半决赛

手机取证

iPhone手机的iBoot固件版本号:

使用盘古石手机取证分析系统

image-20230912213655200

该手机制作完备份UTC+8的时间(非提取时间):

在数据文件下的数据库栏查看最后一个数据库备份生成的时间

image-20230912214112466

exe分析

文件services.exe创建可执行文件的路径是:

由于受害者检材除了手机镜像外没有其他文件

所以先从手机镜像恢复的聊天记录入手

image-20230912215349289

找到嫌疑软件,下载到本地

service.exe就在压缩包中

传到奇安信情报沙箱奇安信情报沙箱 (qianxin.com)

在行为异常报告中得到可执行文件的路径

image-20230912221000322

文件HackTool.FlyStudio.acz_unpack.exe是否调用了advapi32.dll动态函式链接库?

将文件拖入奇安信情报沙盒

image-20230912221329428

文件aspnet_wp.v.exe执行后的启动的进程是什么:

将文件拖入奇安信情报沙盒

image-20230912221602752

文件[4085034a23cccebefd374e4a77aea4f1]是什么类型的木马:

将文件拖入奇安信情报沙盒

image-20230912221943419

文件[4085034a23cccebefd374e4a77aea4f1]网络连接的IP地址的归属地是哪个国家:

将文件拖入微步云沙箱

综合分析多个虚拟机上的网络行为,判断为韩国

image-20230912222646165

image-20230912222707735

image-20230912222726172

apk分析

受害人手机中exec的序列号是:

发现题目中给的安卓手机使用的是雷电模拟器的镜像格式

image-20230912224610521

使用雷电模拟器进行仿真

发现EXEC文件在其中

image-20230912230214531

长按导出得到安装包

丢到雷电app智能分析

image-20230912231603645

受害人手机中exec关联服务器地址是:

打开APP,得到服务器地址

image-20230913002901924

受害人手机中exec加载服务器的函数是:

找到MainActivity类,发现启动时使用d.a.a.h

image-20230913092143906

找到调用t()的函数

image-20230913092420847

受害人手机中exec的打包ID是:

在配置文件中

打包ID的字段一般会跟在包名之后

image-20230913093635896

受害人手机中exec的是否有安全检测行为?

一般app如果有安全检测行为,那么会在不合规后进行提醒

在jadx中暴搜“安全”即可

image-20230913130323570

受害人手机中exec的检测方法的完整路径和方法名是:

查看刚刚暴搜到的文件,均通过d.a.a.c.a.a()方法来检测

image-20230913130421526

受害人手机中exec有几个界面:

数Activity标签个数

image-20230913143117223

受害人手机中红星IPA的包名是:

将3个模拟器镜像文件丢到盘古石手机取证分析系统

暴搜.ipa后缀的文件

image-20230914092159623

将其导出

image-20230914092223558

红星.ipa改后缀为zip,然后解压,里面就有info.pslist

ipa的包名一般是指BundleID

image-20230914092849826

受害人手机中红星IPA的APIKEY是:

image-20230914092805699

受害人手机中红星IPA的权限有哪些?

image-20230914100842347

image-20230914100859812

image-20230914100915677

image-20230914101028202

嫌疑人手机中红星APK的服务器地址是:

将红星安装到模拟器上,打开软件

image-20230914104718531

嫌疑人手机中红星APK的程序入口是:

丢到雷电APP智能分析

image-20230914104912163

嫌疑人手机中分析聊天工具,服务器的登录端口是:

打开聊天工具,点击右下角的聊天设置

image-20230914105027156

嫌疑人手机中分析聊天工具,用户归属的机构是:

image-20230914105114806ss

结合手机流量分析聊天工具的登录账号和密码是:

使用Fiddler分析流量

image-20230914000443957

找md5网站md5在线解密破解,md5解密加密 (cmd5.com)破解密码

得到用户名:17317289056 密码:b123456b

蓝帽杯2023半决赛

手机取证

检材数据开始提取是今年什么时候?

导入手机分析系统

image-20230916093804638

09-11 17:21

嫌疑人手机SD卡存储空间一共多少GB?

丢到盘古石手机分析

image-20230916135113497

24.32GB

嫌疑人手机设备名称是?

盘古石手机分析

image-20230916092906912

sailfish

嫌疑人手机IMEI是?

image-20230916093912060

352531082716257

嫌疑人手机通讯录数据存放在那个数据库文件中?

image-20230916095654847

contacts.db

嫌疑人手机一共使用过多少个应用?

这题没太搞懂出题人的意思

比赛的时候想的是计算有使用痕迹的应用

于是将应用日志导出,统计表格中使用时间不为空的格数,得到100

image-20230916100654390

但答案是206

我猜是把盘古石分析系统里分析出来的应用数量直接当作答案了

image-20230918220528455

apk分析

测试apk的包名是?

将目标apk导出,丢到雷电APP智能分析

image-20230918221932892

com.example.myapplication

测试apk的签名算法是?

使用jadx反编译apk

image-20230918222558524

SHA256withRSA

测试apk的主入口是?

image-20230918222621086

com.tencent.testvuln.MainActivity

测试apk一共申请了几个权限?

image-20230918222721043

3

测试apk对Calllog.txt文件内的数据进行了什么加密?

将callog.txt导出后尝试解密,发现是Base64编码

image-20230916103845439

base64

10086对嫌疑人拨打过几次电话?

分析解码后的callout文件,10086一共打进过2次

image-20230916104131281

2

测试apk对短信记录进行了几次加密?

找到短信记录SMS.txt

现在分析apk中的加密方式

用jadx反编译

分析主入口,找到短信加密的部分

image-20230918222911500

encryptData

使用了AES+Base64的加密方式

image-20230918223027781

所以是2层加密

测试apk对短信记录进行加密的秘钥是?

密钥是通过Getkey()函数得到

image-20230918223127609

发现使用的静态文件

image-20230918223255414

使用ida解析so文件

搜索到Getkey函数

image-20230918224254514

生成的key由first变量得到

且对其进行base64编码

image-20230918224545981

first值为lijubdyhfurindhcbxdw

image-20230918224636131

base编码后取前16位

key为bGlqdWJkeWhmdXJp

嫌疑人在2021年登录支付宝的验证码是?

使用得到的key对base64解码后的SMS.txt进行AES解密

得到原文

image-20230918225232527

验证码为9250

image-20230918225315750

电子取证解题经验

apk取证

apk文件结构

文件名 作用
Asset 文件夹 存放需要打包到APK中的静态文件
Lib文件夹 程序依赖的native库
META-INF文件夹 签名信息(安装验证)
Res文件夹 资源文件夹
AndroidManifest.xml 应用程序的配置文件
classes.dex 可执行文件(java代码编译后)可以使用jadx反编译为源码
Resources.arsc 资源列表

从手机模拟器中导出apk文件

这里以雷电模拟器为例

按住桌面上的应用,托向左边的导出即可

image-20230912231142077

包名

包名(Package Name)作为应用的唯一标识。即:包名必须唯一,一个包名代表一个应用,不允许两个应用使用同样的包名。

android系统使用包名(package name)来判定应用程序的同一性,但是由于包名可以由开发者自由设置,为了保护应用程序不被其他开发者开发的同包名应用覆盖,用于发布的Android应用程序需要加上开发者签名。

包(packages): 采用反写域名命名规则,即com.xx.xxx.xxxx形式

全部使用小写字母。一级包名为com,二级包名为xx(一般为公司或个人域名),三级包名根据应用进行命名,四级包名为功能模块名。如:com.tencent.qq.activitys,这样具备较高可读性,一看就知道是腾讯公司QQ软件中存放activity的包。

取证题目中问到apk的包名,即问应用的唯一标识,一般存放于AndroidManifest.xml

分析工具

  1. APK Messenger

    将apk文件拖入APK Messenger后会自动显示包名

    image-20230905103912013

  1. MobSF(启动时最好打开梯子,因为要检查更新)

    在apk检查报告中,同样会显示包名

    image-20230905105042200

  2. 雷电APP智能分析

    基本信息栏中

    image-20230912231755590

打包ID

在配置文件AndroidManifest.xml中,打包ID一般跟在apk的包名之后

使用jadx暴搜即可

打包时间

分析工具

APK Messenger

将apk文件拖入APK Messenger后,可以查看apk打包时间

image-20230905232026881

签名序列号

签名信息一般隐藏在META-INF目录下的RSA文件

image-20230905113728668

使用工具可以直观地查看签名序列号

分析工具

  1. MobSF(启动时最好打开梯子,因为要检查更新)

    使用工具MobSF分析apk数据包,签名序列号为报告中SIGNER CERTIFICATE模块的Serial Number

    image-20230905105427472

  2. jadx

    使用工具jadx反编译apk安装包,可以在APK signature报告中找到签名序列号

    image-20230905114444521

  3. 雷电APP智能分析

    详细信息栏中

    image-20230912232028022

主入口(Main Activity)

Activity是Android的核心类(android.app.Activity),在Activity类有onCreate事件方法,一般用于对Activity进行初始化,并且通过setContentView方法将View放到Activity上,绑定后,Activity会显示View上的控件。

每种语言都有一个程序入口(如:C#main函数),而Android程序的入口就是Main Activity函数。

分析工具

  1. APK Messenger

    将apk文件拖入APK Messenger,在更多信息中会显示主入口

    image-20230905231410219

  2. MobSF(启动时最好打开梯子,因为要检查更新)

    使用工具MobSF分析apk数据包,签名序列号为报告中的Main Activity

    image-20230905225011434

  3. 雷电APP智能分析

    详细信息栏中

    image-20230912232931505

DCLOUD_AD_ID

DCLOUD_AD_ID值是uni-AD联盟ID,用于配置离线广告。Android平台已经合并到DCLOUD_STREAMAPP_CHANNEL中,已不再使用

分析工具

  1. jadx

    使用工具jadx反编译apk安装包,在得到的资源文件全局查询dcloud_ad_id,整改的相应属性及对应的值2147483647

  2. 雷电APP智能分析

    第三方服务栏

    image-20230912232122054

服务器域名

apk的服务器域名即为app提供服务器服务的域名

分析工具

  1. burpsuite+雷电模拟器

    将软件安装在雷电模拟器上,打开后使用bupsuite进行抓包

    为Burp Suite配置手机端的抓包

    为burp配置本机的IP和端口

    image-20230905223249457

    在模拟器中点击连接上的wifi,将代理设置为手动

    image-20230905223429802

    image-20230905223622087

    配置本机ip和端口

    image-20230905223733330

    服务器域名为打开app时请求的目的地host

    image-20230905224347406

  2. 雷电APP智能分析

    雷电APP智能分析软件目前提

    供了4种抓包方式,分别是 HTTP、TCP、代理模式、TCPDump,Android 支持

    全部4种方式,iOS 目前只支持代理模式抓包,下面分别介绍四种方式的应用

    场景:

    1、HTTP 方式是基于手机 VPN 原理实现的抓包,一般情况下如果是要抓HTTP

    协议的网络数据包推荐这种方式,不过后台服务器已经不在运行的情况下使用该

    方式无法抓取到网络数据包。

    2、TCP 方式同样是基于手机 VPN 原理实现的抓包,如果网络数据包是原生

    TCP 协议的话推荐使用这种方式。

    3、代理模式是基于在手机或者模拟器上设置代理地址实现的抓包(和

    fiddler、charles 原理相同),软件会自动设置代理 IP 地址,无需手动填写代

    理地址,这种方式的优点是后台服务器不在运行的情况下也能抓到请求的网络数

    据包。

    4、TCPDump 模式是基于 libpcap 库的抓包,根据使用者的定义对网络上的

    数据包进行截获,可以将网络中传送的数据包完全截获下来提供分析,这种方式

    的优点是可以抓取到所有协议的网络数据包。

    使用网络数据包栏中的HTTP数据包抓取功能

    image-20230912233218880

  3. 模拟器仿真

    在模拟器中直接打开APP,有时会显示连接的网页,即服务器域名

    image-20230913002844293

危险权限

申请权限信息的记录,一般存放于AndroidManifest.xml

分析工具

  1. MobSF(启动时最好打开梯子,因为要检查更新)

    Permissions模块*

    image-20230905235754416

  2. APK Messenger

    将apk文件拖入APK Messenger后,可以查看权限信息

  3. 雷电APP智能分析

    静态权限栏中

    image-20230912233846479

窗口(界面)数量

在Android系统中窗口被成为Activity(活动)

每个活动都必须在AndroidManifest.xml清单中声明

所以数该文件中有几个activity标签即可

例如下面这个软件就有3个界面

image-20230913143039578

ipa取证

将ipa安装包文件的后缀改为.zip后解压,可以在目录下找到找到info.plist文件。

有关苹果app的大部分信息都能在中间找到

包名

在info.plist中暴搜CFBundleIdentifier

进程id

在info.plist中暴搜CFBundleExecutableCFBundleName

APIKEY

在info.plist中暴搜APIKey

权限

在info.plist中也可以找到

手机取证

安卓文件结构

  • /data 数据分区存放用户安装的软件以及各种数据(存放着比如微信聊天记录等应用数据)
  • /system 系统分区 /app 存放系统应用(天气、设置等)
  • /recovery 恢复分区
  • /cache 缓存临时文件
  • /boot 内核分区
  • /init 系统启动文件
  • /SDCard分区 挂载的SD卡 (可能存放一些图片音频)

移动终端取证分析

确定手机操作系统

苹果手机的备份一般包含AppleBackupFS文件

华为手机的备份则为HuaweiBackup

手机模拟器取证分析

有的手机取证题目会给出手机的内存镜像文件,后缀为vmdk,可供解题者进行仿真

使用手机模拟器能够还原系统文件以及数据,并在可视化界面中进行更符合直觉的操作

比如说如果你想查看图片,直接打开模拟器中的相册即可;

如果想要取证某个聊天软件,直接打开软件就能直观地看到聊天记录

确认模拟器

雷电模拟器的镜像文件特点为包含data.vmdksdcard.vmdksystem.vmdk三个文件

雷电模拟器的备份文件的后缀为.ldbk

逍遥模拟器的镜像文件格式如下图

image-20230910103811053

MuMu模拟器的镜像文件格式如下图

image-20230910103853719

还原镜像和备份

这里只演示雷电模拟器还原镜像和备份的操作,其他模拟器类似

  1. 处理镜像文件

    在雷电模拟器的vms目录下新建一个文件夹

    image-20230910102400599

    将题目检材拖拽到该文件夹下

    image-20230910102514537

    打开雷电多开器后即可看到刚刚创建的手机仿真image-20230910102550888

    点击启动即可

    image-20230910102714206

  2. 处理备份文件

    打开雷电多开器,新建一个模拟器

    image-20230910103258663

    选择备份与还原

    image-20230910103331124

    点击还原,并选中.ldbk的备份文件即可

    image-20230910103433596

软件包名

分析工具

  1. Magnet AXIOM

    证据来源选择移动>

    image-20230906091718529image-20230906091809692

    加载证据选择镜像data.vmdk

    选择使用痕迹中的移动设备

    image-20230906092239093

    可以看到相关软件的包名

    image-20230906092400947

本机与模拟器文件交互

这里用到adb工具

该工具一般会伴随模拟器一起下载,一般在模拟器的主目录下,双击即可运行

image-20230910110310592

雷电模拟器adb为默认端口

夜神模拟器adb调试端口为adb connect 127.0.0.1:62001,如果不正确可以参考逍遥的方法

逍遥模拟器adb调试端口可以在镜像的配置文件中查找

在逍遥模拟器的vms目录下找到对应模拟器文件夹,找到后缀为.memi-prev的文件,文件内搜索adb即可找到端口

adb常用命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看当前已连接的设备
adb devices
# 连接当前设备
adb shell
# 连接指定设备
adb -s 设备名 shell
# 安装app
adb install 要安装的apk路径
# 卸载app
adb uninstall apk的包名
# 将外部数据导入模拟器或手机
adb push 本地路径 设备路径
# 将模拟器或者手机数据导出到外部
adb pull 设备路径 本地路径

在模拟器中也可以通过拖拽实现本机和模拟器文件交互

exe分析

分析工具

分析exe类型的文件时通常会用到沙箱平台

比较好用的有以下这些:

微步在线云沙箱 (threatbook.com)

奇安信情报沙箱 (qianxin.com)

计算机取证

镜像哈希值

分析工具

  1. 盘古石计算机取证分析系统

    导入镜像文件,在检材文件阶段就能看到有关镜像的一些信息

    属性中有MD5、SHA256、SHA1三种哈希值

    image-20230910143358932

  2. X-Ways

    将镜像文件添加之后,右键选择属性

    image-20230910144615328

    可以得到镜像的SHA-1值和MD5值

    image-20230910144654733

取证员(exmainer)

分析工具

Xways

将镜像文件添加到工具X-Ways,右键选择属性

检察员为案件描述中Examiner字段的值pgs

image-20230910144836605

操作系统基本信息

比如安装时间、用户ID、上一次登录时间等等

分析工具

盘古石计算机取证分析系统

在导入镜像后选择分析基本信息

image-20230910172137871

可以得到与操作系统相关的信息

image-20230910172326744

安装过的软件

分析系统安装过的软件时,不仅要分析注册在系统内的安装信息,还要结合用户使用痕迹来看

分析工具

盘古石计算机取证分析系统

盘古石计算机取证分析系统中需要在导入镜像后选择分析基本信息

image-20230910173048893

浏览器保存的密码

Chrome的密钥填充具有保护机制,一旦清除windows开机密码后登录,Chrome保存的密钥就会被破坏

所以当有题目涉及到浏览器保存的密码时,使用仿真系统一定要保留开机密码

内存取证

内存镜像后缀

常见的内存镜像后缀有.raw.vmem.img.mem

常用工具

内存取证主要会用到工具volatility(推荐在kali下使用)

语法:python2 vol.py -f [对象] --profile=[操作系统] [插件参数]

使用时为了输入路径方便可以把内存文件丢到volatility目录下

内存镜像中的操作系统

内存取证的第一步是确定操作系统的类型

首先用python2 vol.py -f xxx.mem imageinfo命令判断是什么操作系统

image-20230910203408442

内存创建时间

内存创建时间同样是在imageinfo中查看

上方为格林尼治时间,下方为按本地时区换算后的时间

image-20230910203520398

内存中计算机开机密码

使用volatility工具的插件mimikatz

在使用还需安装依赖包pip2 install construct

命令为python2 vol.py -f xxx.mem --profile=xxx mimikatz

得到账号和密码

image-20230910210120621

USB设备信息

使用volatility工具的插件usbstor

命令为python2 vol.py -f xxx.mem --profile=xxx usbstor

image-20230910212431982

用户哈希值

使用volatility工具的插件hashdump

显示结果中左边为LMHash,右边是NTLM Hash

image-20230910213113328

用户密码

使用volatility工具的插件mimikatz

或者用hashdump获得密码的哈希值以后用hashcat爆破或者用解密网站解密

访问文件记录

使用volatility工具的插件timeliner(时间可能较慢)

timeliner会将所有操作系统事件以时间线的方式展开,包括各种痕迹信息

命令为python2 vol.py -f xxx.mem --profile=xxx timeliner > ../timeliner.txt

输出结果在上一层目录的timeliner.txt中,再到其中查找记录

其中文件名中的中文均用url编码表示

image-20230910220528039

系统进程信息

使用volatility工具的插件pslistpsscan可以查看存在的进程

pslist会按照EPROCESS列表打印所有正在运行的进程,包括其PID信息及最后一次执行的时间

image-20230910222745497

psscan会扫描进程对象池,显示非活跃或隐藏进程

image-20230910223141990

环境变量

使用插件envars可以查看进程环境变量

image-20230910230227607

IE浏览器历史记录

使用volatility工具的插件iehistory

image-20230910225703137

cmd命令记录

使用volatility工具的插件cmdscanconsoles

cmdscan检查从cmd.exe输入的命令记录

consoles收集键入cmd.exe的命令和返回内容

剪贴板信息

使用volatility工具的插件clipboard

系统IP

使用volatility工具的插件netscan

volatility插件速查表

参数 作用
apihooks 检测内核及进程的内存空间中的API hook
atoms 列出会话及窗口站atom表
atomscan Atom表的池扫描(Pool scanner)
auditpol 列出注册表HKLMSECURITYPolicyPolAdtEv的审计策略信息
bigpools 使用BigPagePoolScanner转储大分页池(big page pools)
bioskbd 从实时模式内存中读取键盘缓冲数据(早期电脑可以读取出BIOS开机密码)
cachedump 获取内存中缓存的域帐号的密码哈希
callbacks 打印全系统通知例程
crashinfo 提取崩溃转储信息
deskscan tagDESKTOP池扫描(Poolscaner)
devicetree 显示设备树信息
dlldump 从进程地址空间转储动态链接库
driverirp IRP hook驱动检测
drivermodule 关联驱动对象至内核模块
driverscan 驱动对象池扫描
dumpcerts 提取RAS私钥及SSL公钥
dumpregistry 转储内存中注册表信息至磁盘
eventhooks 打印Windows事件hook详细信息
evtlogs 提取Windows事件日志(仅支持XP/2003)
gahti 转储用户句柄(handle)类型信息
gditimers 打印已安装的GDI计时器(timers)及回调(callbacks)
gdt 显示全局描述符表(Global Deor Table)
getservicesids 获取注册表中的服务名称并返回SID信息
getsids 打印每个进程的SID信息
handles 打印每个进程打开的句柄的列表
hivescan 注册表配置单元池扫描
hpakextract 从HPAK文件(Fast Dump格式)提取物理内存数据
hpakinfo 查看HPAK文件属性及相关信息
idt 显示中断描述符表(Interrupt Deor Table)
hibinfo 转储休眠文件信息
imagecopy 将物理地址空间导出原生DD镜像文件
impscan 扫描对导入函数的调用
joblinks 打印进程任务链接信息
kdbgscan 搜索和转储潜在KDBG值
kpcrscan 搜索和转储潜在KPCR值
ldrmodules 检测未链接的动态链接DLL
lsadump 从注册表中提取LSA密钥信息(已解密)
machoinfo 转储Mach-O 文件格式信息
malfind 查找隐藏的和插入的代码
mbrparser 扫描并解析潜在的主引导记录(MBR)
memmap 打印内存映射
messagehooks 桌面和窗口消息钩子的线程列表
moddump 转储内核驱动程序到可执行文件的示例
modscan 内核模块池扫描
modules 打印加载模块的列表
multiscan 批量扫描各种对象
mutantscan 对互斥对象池扫描
objtypescan 扫描窗口对象类型对象
patcher 基于页面扫描的补丁程序内存
poolpeek 可配置的池扫描器插件
privs 显示进程权限
procdump 进程转储到一个可执行文件示例
psxview 查找带有隐藏进程的所有进程列表
qemuinfo 转储 Qemu 信息
raw2dmp 将物理内存原生数据转换为windbg崩溃转储格式
servicediff Windows服务列表(ala Plugx)
sessions _MM_SESSION_SPACE的详细信息列表(用户登录会话)
shellbags 打印Shellbags信息
shutdowntime 从内存中的注册表信息获取机器关机时间
sockets 打印已打开套接字列表
sockscan TCP套接字对象池扫描
ssdt 显示SSDT条目
strings 物理到虚拟地址的偏移匹配(需要一些时间,带详细信息)
timers 打印内核计时器及关联模块的DPC
truecryptmaster Recover 恢复TrueCrypt 7.1a主密钥
truecryptpassphrase 查找并提取TrueCrypt密码
truecryptsummary TrueCrypt摘要信息
unloadedmodules 打印卸载的模块信息列表
userhandles 转储用户句柄表
vaddump 转储VAD数据为文件
vadinfo 转储VAD信息
vadtree 以树形方式显示VAD树信息
vadwalk 显示遍历VAD树
vboxinfo 转储Virtualbox信息(虚拟机)
windows 打印桌面窗口(详细信息)
wintree 顺序打印桌面窗口树
wndscan 池扫描窗口站
yarascan 以Yara签名扫描进程或内核内存
vmwareinfo 转储VMware VMSS/VMSN 信息
symlinkscan 符号链接对象池扫描
thrdscan 线程对象池扫描

服务器取证

一般服务器都是搭载在linux系统之上,所以服务器取证更多的是对linux指令、运维知识以及数据库语句的考察

由于Linux系统是开源的,因此许多操作系统和安全工具都可以在Linux系统上运行,这为电子数据取证提供了更多的可能性和工具。

取证中常用linux指令

linux指令的基本格式为:command [-options] [parameter]

其中command为指令名

options为一些附加功能的选项

而parameter为参数,如文件名、目录名

在服务器取证中,linux常用的指令有ls、pwd、cat、chmod、find等等

下面我会一一说明使用方法

ls

功能

ls会默认列出当前目录中的子目录或文件。

ls 路径可以指定想要查看的目录。

选项

-l可以查看某一个目录中内容的相关信息,包括权限、所有者、大小、创建时间等。

-A会把某一个目录中的隐藏文件也显示出来,有.前缀的为隐藏文件

-t会按照修改时间排序显示当前目录中的文件和目录

搭配模式匹配

ls命令还可以使用通配符进行模式匹配,例如 * 表示匹配任意字符,? 表示匹配一个字符,[…] 表示匹配指定范围内的字符。例如:

1
2
3
ls *.txt         # 列出所有扩展名为.txt的文件
ls file?.txt # 列出文件名为file?.txt的文件,其中?表示任意一个字符
ls [abc]*.txt # 列出以a、b或c开头、扩展名为.txt的文件

以下指令列出目前工作目录下所有名称是 s 开头的文件,越新的排越后面:

1
ls -ltr s*
pwd

功能

pwd显示用户当前所在的目录

cat

功能

cat能查看目标文件的内容,多用于文本文件或查看日志。会将目标文件的全部内容打印到屏幕上,如果文件内容超出屏幕则会刷屏到最后。

选项

-s当遇到有连续两行以上的空白行,就代换为一行的空白行。

-T将 TAB 字符显示为 ^I。

chmod

功能

chmod可以控制用户对文件的权限

模式

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

而chmod指令模式的三个数字就对应三种用户类型的权限

# 权限 rwx 二进制
7 读 + 写 + 执行 rwx 111
6 读 + 写 rw- 110
5 读 + 执行 r-x 101
4 只读 r— 100
3 写 + 执行 -wx 011
2 只写 -w- 010
1 只执行 —x 001
0 —- 000

例如, 765 将这样解释:

  • 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
  • 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
  • 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。

选项

-R对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

find

功能

find命令用来在指定目录下查找文件。

语法为find 欲查找的目录 选项

任何位于选项之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何选项,则 find 命令将在当前目录下查找子目录与文件。

选项

-name pattern 按文件名查找,支持使用通配符 *?

-type type按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。

-pid nprocess id 是 n 的文件

服务器信息

服务器信息可以用分析软件,也可以通过仿真

分析工具

  1. 盘古石计算机取证分析系统

    使用盘古石计算机取证分析系统勾选系统类型为linux,则可以在应用分析报告查看系统信息

  2. 系统仿真

    登录到目标系统后,执行uname命令

    可以显示系统的全部信息,包括内核名称、主机名、操作系统版本、处理器类型和硬件架构等

    显示系统信息

    1
    2
    # uname -a
    Linux iZbp19byk2t6khuqj437q6Z 4.11.0-14-generic #20~16.04.1-Ubuntu SMP Wed Aug 9 09:06:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

    显示计算机类型

    1
    2
    # uname -m
    x86_64

    显示计算机名

    1
    2
    # uname -n
    runoob-linux

    显示操作系统发行编号

    1
    2
    # uname -r
    4.11.0-14-generic

    显示操作系统名称

    1
    2
    # uname -s
    Linux

    显示系统版本与时间

    1
    2
    # uname -v
    #20~16.04.1-Ubuntu SMP Wed Aug 9 09:06:22 UTC 2017

显示过去执行的命令

使用linux的指令history

history n显示最近n条命令历史

!N执行第N条命令

!-N执行倒数第N条命令

宝塔面板

如果发现镜像中存在面板,输入命令bt即可调出面板

修改密码

拿到宝塔后首先输入5修改密码,密码长度需要大于8位,这样方便启动面板服务后登录

一定要在获取记录完宝塔的账户和密码后再来修改密码,有时题目会直接问密码是多少

启动面板服务

输入14启动面板服务,此时会给出外网和内网面板地址

image-20230911143925804

使用本地浏览器访问内网地址

使用刚刚修改后的账号密码访问即可

phpAdmin

宝塔面板大概率安装了phpAdmin

可以使用数据库账号密码登录,在可视化界面方便地查看库名、表名、数据库结构

还原qp.xb数据库

当检材中存在分离的数据库备份,即后缀为qp.xb的文件时,可以尝试将其恢复到系统服务器中

安装qpress

1
2
3
4
wget "http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/183466/cn_zh/1608011575185/qpress-11-linux-x64.tar"
tar xvf qpress-11-linux-x64.tar
chmod 775 qpress
cp qpress /usr/bin

安装xtrabackup

1
2
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
yum install -y percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

将备份文件上传至服务器系统

可以使用工具xftp连接到服务器上

处理qp.xb文件

使用xbstream处理qp.xb文件

1
cat xxxqp.xb | xbstream -x -v -C /www/server/data

进入/www/server/data进行解压

1
2
3
4
cd /www/server/data
innobackupex --decompress --remove-original /www/server/data
innobackupex --defaults-file=/etc/my.cnf --apply-log /www/server/data
chown -R mysql:mysql /www/server/data

修改mysql配置文件

1
2
3
vim /etc/my.cnf
#在[mysqld]块下添加
lower_case_table_names=1

image-20230911154237605

数据库统计时常用聚合函数

COUNT

基础语法

COUNT() 函数返回匹配指定条件的行数。

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

语法:SELECT COUNT(column_name) FROM table_name;

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

语法:SELECT COUNT(DISTINCT column_name) FROM table_name;

COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。

SUM

SUM() 函数返回数值列的总数。

语法:SELECT SUM(column_name) FROM table_name;

MAX

MAX() 函数返回指定列的最大值。

语法:SELECT MAX(column_name) FROM table_name;

MIN

MIN() 函数返回指定列的最小值。

语法:SELECT MIN(column_name) FROM table_name;

AVG

AVG() 函数返回数值列的平均值。

语法:SELECT AVG(column_name) FROM table_name

数据库统计时常用语句

GROUP BY

GROUP BY 语句用于结合聚合函数(如 COUNT()、MAX() 等),根据一个或多个列对结果集进行分组。

一般情况下,GROUP BY 必须要配合聚合函数一起使用,通过使用聚合函数,在分组之后可以对组内结果进行计数(COUNT)、求和(SUM),求平均数(AVG)操作等。

GROUP BY会先按照指定字段的值是否相同来将数据分组

更加详细的介绍可以看下面这篇:

GROUP BY与COUNT用法详解group by count鲲鹏之上的博客-CSDN博客

HAVING

HAVING 子句可以筛选通过 GROUP BY 分组且聚合后的各组数据。

聚合函数(avg、sum、max、min、count),不能作为条件放在where之后,但可以放在having之后

GROUP BY、HAVING、WHERE之间的关系

在语句的位置上,where在group by前, having在group by 之后

在执行顺序上,以下面这个SQL语句为例

1
select city ,count(*) as num from staff  where age> 19 group by city having num >= 3;
  1. 执行where子句查找符合年龄大于19的员工数据
  2. group by子句对员工数据,根据城市分组。
  3. 对group by子句形成的城市组,运行聚集函数计算每一组的员工数量值;
  4. 最后用having子句选出员工数量大于等于3的城市组。

所以执行顺序为:WHEREGROUP BY聚合函数HAVING

数据库可视化工具

安装

参考文章:https://www.cnblogs.com/kkdaj/p/16260681.html

取证软件使用要点

盘古石计算机仿真取证系统

使用该软件会在本地创建镜像文件并使用VMware虚拟机进行仿真。但是对该镜像取证完毕前请勿关闭计算机仿真取证系统软件,否则可能会导致虚拟机中的镜像无法再打开,而此前所做的操作也无法被保存。

盘古石手机取证分析系统

导入模拟器的镜像格式文件时一定要一次性将镜像导入完再分析,而不是单个导入单个分析