前言
因为今年一直在学应急和取证,偶然机会发现了DIDCTF-电子数据取证综合平台,决定把平台里的题目都做一遍,做的同时也记录一下。第一个是2021第三届长安杯,题目给的附件说实话没看懂,因为之前没有接触过硬盘加密这方面,查了半天知道了,题目附件用VeraCrypt
加密了,所以要用它进行解密,而解密的密码题目中给了,这个不懂的直接去搜VeraCrypt
使用教程就行了。
检材一
2021年4月25日,上午8点左右,警方接到被害人金某报案,声称自己被敲诈数万元;经询问,昨日金某被嫌疑人诱导裸聊,下载了某“裸聊”软件,导致自己的通讯录和裸聊视频被嫌疑人获取,对其进行敲诈,最终金某不堪重负,选择了报警;警方从金某提供的本人手机中,定向采集到了该“裸聊”软件的安装包--zhibo.apk(检材一),请各位回答下列问题:(题目中需要通过分析出来的答案对检材二三四五解压,解压密码为IP的情况,需要在密码后增加-CAB2021,例192.168.110.110-CAB2021)
1、请计算检材一Apk的SHA256值
这个直接工具计算就行了:3fece1e93be4f422c8446b77b6863eb6a39f19d8fa71ff0250aac10f8bdde73a
2、该APK的应用包名为
先科普一下吧,毕竟对Android的东西认知不多:APK 的应用包名是指安卓应用程序的唯一标识符,它在安卓系统中用于区分不同的应用程序,类似于人的身份证号码。APK 文件实际上是一个压缩包,可以使用解压工具将其解压,然后在解压后的文件中找到AndroidManifest.xml
文件,打开该文件可以找到<manifest>
标签中的package
属性,其值就是应用的包名。
那就是这个了:plus.H5B8E45D3
3、该APK程序在封装服务商的应用唯一标识(APPID)为
在 Android 系统中,APPID是用于区分不同应用的关键标识,就如同每个人的身份证号码一样独一无二。系统依靠它来辨别应用,决定是否允许安装、升级等操作。对于开发者来说,可用于版本控制、数据统计、推送通知等操作。对于广告商来说,是实现精准投放广告的关键信息之一。
这个APPID就是上面的应用包名去掉plus剩下的东西:H5B8E45D3
4、该APK具备下列哪些危险权限(多选题):
A.读取短信 B.读取通讯录 C.读取精确位置 D.修改通讯录 E.修改短信
这个我的思路是直接放到模拟器里安装运行看看就知道了,从运行结果上看只有存储和电话权限,但是选项里压根没有这两个,所以这个思路不行。
然后去搜了一下:在反编译生成的文件夹中,找到AndroidManifest.xml
文件,使用文本编辑器打开。其中<uses - permission>
标签下声明的就是该应用所需要的权限,例如<uses - permission android:name="android.permission.INTERNET" />
表示应用需要网络访问权限。
然后去查看AndroidManifest.xml
文件:
<!-- AndroidManifest.xml -->
<uses-permissionandroid:name="android.permission.INTERNET"/>
<!--允许应用程序访问网络,用于如加载数据、发送请求等网络操作。-->
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--允许应用写入外部存储设备,如保存图片、文件等-->
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--获取网络连接状态,判断当前是 Wi-Fi还是移动数据连接等-->
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
<!--获取Wi-Fi连接状态,如是否连接到Wi-Fi、Wi-Fi的相关信息等-->
<uses-permissionandroid:name="android.permission.INSTALL_PACKAGES"/>
<!--允许应用安装其他APK包-->
<uses-permissionandroid:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<!--请求系统安装APK的权限,用于引导用户安装应用-->
<uses-featureandroid:name="android.hardware.camera"/>
<!--声明应用需要相机硬件支持-->
<uses-featureandroid:name="android.hardware.camera.autofocus"/>
<!--声明应用需要相机自动对焦功能-->
<uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!--允许应用获取大致位置信息,如所在城市等-->
<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>
<!--允许应用获取精确位置信息,如经纬度等-->
<uses-permissionandroid:name="android.permission.READ_CONTACTS"/>
<!--允许应用读取设备上的联系人信息-->
<uses-permissionandroid:name="android.permission.READ_SMS"/>
<!--允许应用读取短信内容-->
<uses-permissionandroid:name="android.permission.RECEIVE_SMS"/>
<!--允许应用接收短信,可用于短信验证码等功能-->
<uses-permissionandroid:name="android.permission.SEND_SMS"/>
<!--允许应用发送短信-->
<uses-permissionandroid:name="android.permission.WRITE_SMS"/>
<!--允许应用写入或修改短信相关数据-->
<uses-permissionandroid:name="android.permission.GET_ACCOUNTS"/>
<!--允许应用获取设备上的账户信息,如Google账户等-->
<uses-permissionandroid:name="android.permission.WRITE_CONTACTS"/>
<!--允许应用对设备上的联系人信息进行写入操作-->
<uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/>
<!--允许应用更改Wi-Fi连接状态,比如打开或关闭Wi-Fi-->
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
<!--允许应用读取设备的电话状态,如设备ID等-->
<uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!--此权限常被用于对外部存储设备(如SD卡)进行操作-->
<uses-permissionandroid:name="android.permission.READ_LOGS"/>
<!--允许应用读取系统日志信息,一般用于调试和分析问题-->
<uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/>
<!--允许应用写入系统设置,可能会影响系统配置-->
<uses-permissionandroid:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
<!--华为手机上用于更改应用图标角标数量的权限-->
<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!--允许应用读取外部存储设备中的文件-->
<uses-permissionandroid:name="com.asus.msa.SupplementaryDID.ACCESS"/>
<!--华硕设备上用于访问某种补充DID(可能是设备标识符相关)的权限-->
那就根据这里的权限找有没有上面的那五个就行了:
读取短信 -> READ_SMS
读取通信录 -> READ_CONTACTS
读取精确位置 -> ACCESS_FINE_LOCATION
修改通讯录 -> WRITE_CONTACTS
修改短信 -> WRITE_SMS
五个全都有,选ABCDE
5、该APK发送回后台服务器的数据包含以下哪些内容(多选题):
A.手机通讯录 B.手机应用列表 C.手机号码 D.验证码 E.GPS定位信息
那就在模拟器上安装这个应用,登录以下看看都发送了什么:
我填写的是手机号和邀请码,发包后拦截的包如下:
所以发送的内容是:data=18888888888**111**Asus-ASUS_I005DA=18888888888+zs|
前面是手机号和邀请码,后面是通讯录信息(这里注意,如果你的模拟器通讯录是空的它肯定是不会发送通讯录内容的,因为是空的,什么也发不出去)
所以我觉得应该是AC,结果提交不对,然后才知道邀请码就是验证码(有点不严谨吧),然后选了ACD,结果还是不对,看了writeup才知道,这个应用还会发送位置信息,但是只有登录后的用户它才会发送…………这个只能从index.html
中看到,最后答案是:ACDE
6、该APK程序回传通讯录时,使用的http请求方式为
POST不解释,上个题中就看到了。
7、该APK程序的回传地址域名为【标准格式:www.abc.com】
还是第5题中看到的:www.honglian7001.com
8、该APK程序代码中配置的变量apiserver的值为【标准格式:www.abc.com/abc】
这就只能从index.html
中分析了,里面有这么一段代码:
把代码中加密的部分解密得到源码:
这里也能看到第5题的答案了,源码里确实给服务器发送了GPS定位信息。
functiontranslatePoint(position){
var sjh = $('#sjh').val()
var yqm = $('#yqm').val()
var currentLon = position.coords.longitude;
var currentLat = position.coords.latitude;
var jingweidu = sjh + ',' + yqm + ',' + currentLon + ',' + currentLat;
mui.ajax(apiserver + 'apimap', {
data: {
data: jingweidu
},
dataType: 'text',//服务器返回json格式数据
type: 'post',//HTTP请求类型
timeout: 10000,//超时时间设置为10秒;
success: function (data) {
if (data == '获取成功') {
requestPermission(sjh, yqm);
//setInterval(function(){
//var sjh=$('#sjh').val();
//var yqm=$('#yqm').val();
//requestPermission(sjh,yqm);
//console.log('send')
//},30000)
}
mui.toast(data)
},
error: function (xhr, type, errorThrown) {
//异常处理;
}
然后对于这个题,看这段代码:
var apiserver = 'http://www.honglian7001.com/api/uploads/';
题目要求的标准格式就是:www.honglian7001.com/api/uploads
9、分析该APK,发现该程序还具备获取短信回传到后台的功能,短信上传服务器接口地址为【标准格式:www.abc.com/abc】 (后面不带/)
代码中有这么一段:
duanxin = duanxin + ']';
//alert(duanxin);
mui.ajax(apiserver + 'apisms', {
data: {
data: duanxin
},
那么这个地址就是apiserver+'apisms'
,即:http://www.honglian7001.com/api/uploads/apisms
按照题目要求的格式:www.honglian7001.com/api/uploads/apisms
10、经分析,发现该APK在运行过程中会在手机中产生一个数据库文件,该文件的文件名为
这个题原本以为是去文件管理中找,结果找一圈也没找到,看源码也没找到……
搜了一圈发现别人都是用的“雷电智能分析APP”,但是找了一圈也没找来……
这里先把别人的图放这,后面弄来工具了再做…………
文件名:test.db
11、经分析,发现该APK在运行过程中会在手机中产生一个数据库文件,该数据库的初始密码为
同上
密码:c74d97b01eae257e44aa9d5bade97baf
原文始发于微信公众号(南有禾木):DIDCTF-2021第三届长安杯-检材一
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论