2025年第二届网络安全行业职业技能大赛初赛-11月28日

admin 2026-02-10 14:14:15 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文档为2025年第二届网络安全行业职业技能大赛初赛(11月28日)的取证分析题writeup,作者M4nd3l3y3v。内容涵盖三个检材:检材1为手机取证,涉及华为设备微信聊天记录分析、掌嗨APP数据提取、野生动物贩卖案件调查;检材2为恶意APP分析,通过雷电取证工具进行包名识别、敏感信息采集分析,并使用IDA进行逆向分析获取加密密码和上传URL;检材3为邮件取证,分析邮件头信息获取收件人和主题,通过密码爆破获取附件内容并提取URL。整体展示了移动取证、逆向分析和网络取证的综合技术能力。 综合评分: 78 文章分类: CTF,移动安全,逆向分析,取证分析,恶意软件


cover_image

2025年第二届网络安全行业职业技能大赛初赛-11月28日

原创

M4nd3l3y3v M4nd3l3y3v

金星路406取证人

2026年2月9日 19:59 广东

VC容器挂载密码:$$@QuZhengFenxiGuosai2025!

检材1

1.请分析检材1:交易者使用的手机的品牌是?【答案格式:英文,全大写】【分值:5】

HUAWEI

2.请分析检材1:交易者微信绑定的手机号是?【答案格式:无(直接输入号码)】【分值:5】

18190804503

3.请分析检材1:交易者与某微信好友曾经有过资金往来,该好友的微信ID是?【答案格式:aa_1ede48076c4f(类似格式)】【分值:5】

这题真给我卡住了,一翻一下网上的wp,发现是微信支付的内部ID???

4.请分析检材1:交易者添加野生动物卖方微信的时间是?【答案格式:2020-01-01 01:01:01(日期时间格式)】【分值:6】

2020-05-12 13:42:52

5.请分析检材1:除了微信,交易者还使用的与卖方联系的软件是?【答案格式:微信(直接输入软件名)】【分值:5】

聊天记录提到是掌嗨

6.请分析检材1:交易者使用的与卖方联系的软件的数据存放的文件是?【答案格式:abc.txt(文件格式)】【分值:5】

08fe8d5df5f62daab6556fb11fba8c5c_v4.msgstore

掌嗨的数据文件夹的file文件看后缀能看出来是这个,实际上就是一个sqlite数据库

7.请分析检材1:卖方发送的压缩文件的解压密码是?【答案格式:无(直接输入密码)】【分值:6】

dd123,聊天记录提到了

8.请分析检材1:被贩卖的动物共有几种?【答案格式:无(直接输入数字)】【分值:5】

7种

9.请分析检材1:贩卖的动物中,单价最贵的动物是?【答案格式:无(直接输入动物名称)】【分值:5】

熊掌卖两万块单价最贵,这七张图片都PNG,图片的文件头89 50 4e 47 0d 0a 1a 0a被挖掉了,自己手动补上就能看。

检材2

10.请分析检材2:该检材的包名是?【答案格式:无(直接输入包名)】【分值:5】

com.gass.collect

11.请分析检材2:检材采集了用户以下哪些信息?(按字母表顺序填写)

A. 通信录 B. 通话记录 C. 短消息 D. 应用信息【答案格式:按字母表顺序填写选项字母(如ABCD)】【分值:5】

ACD

10和11都是雷电一把梭的题,不赘述

12.请分析检材2:采集信息保存的xml文件名称是?【答案格式:xxx.xml(XML文件格式)】【分值:6】

直接在雷电的敏感信息栏搜索xml,可以找到readdata.xml,然后审计,打开JADX搜索readdata,看源代码验证。可以发现XmlWrite将应用列表,联系人列表和短信记录作为参数输入,再将其写入。刚好还可以验证上一题。

13.请分析检材2:上传文件的解密密码是?【答案格式:无(直接输入密码)】【分值:7】

)P>I]TVSR.

这题的源代码初始化的zip压缩的参数,将readdata.xml打包放到压缩包里,密码strPwd是由getPasswd这个函数生成的,参数已经硬编码,搞清楚getPasswd的算法就行,追下去发现是Native方法,那也就是Cpp写的东西。跳到getPasswd的声明附近发现是加载nativelib的so文件,那就看看吧。

打开IDA发现其核心就是对参数的字符进行逐个异或。具体来说:

回顾一下基础知识:

JNI是本地接口的缩写,是native方法需要遵循的技术规范。一般涉及到native方法,都需要用C/C++编写,编写遵守JNI的规范,要包含jni.h头文件。

标准 JNI 方法参数顺序

jstring Java_包名_类名_方法名(    JNIEnv* env,     // 第1个:JNI 环境指针    jobject thiz,    // 第2个:this 对象(或 jclass 类对象)    jstring input    // 第3个:你的实际输入参数)

从IDA中看可以知道a3应该是输入部分。在反编译的伪代码钟“JNIEnv”开头的均为JNI的函数,GetStringUTFchars用于将Java输入的字符串转化为UTF-8表示,也就是C风格的字符串。中间是检查缓存溢出的,返回字符串长度,跳过;然后是循环,主要是给每个字符和0xAB异或(*(str+i)≡str[i]),除以94求余数+32得到新的字符。

然后后面的ReleaseStringUTFChars释放前面Get函数的内存,最后NewString函数创造Java字符串,第一个参数是指针,第二个是实际参数。接下来写脚本就行非常easy

raw_pass="n%qNR9YDEa"real_pass=""for i in range(len(raw_pass)):    real_pass+=chr((ord(raw_pass[i])^0xAB)%94+32)print(real_pass)

14.请分析检材2:检材采集信息发送到远端的URL地址是?【答案格式:http://xxx(URL格式)】【分值:9】

看MainActivity的类名有一个CheckAndUpload

用getUrlStr对于一个硬编码(疑似base64)的结果将其作为url进行HTTP连接。

跳到声明,不出所料地getUrlStr仍然是native方法,于是我们再次请出IDA,先用_strlen_chk获取字符串长度,malloc函数分配一块内存,实际上也是一个数组(缓冲区就是数组)长度为字符串+1,接下来循环读取字符串内容,将索引奇数的字符串放在后半部分,索引偶数的放在前半部分,最后跳转到convertFormat发现是base64解码,然后剩下的和上面那题方法一样

所以脚本的思路是先字符互换再base64解码就是地址

import base64raw_addr="aYH2R90tcLD2oFvwLa3Sd931dcyG5xnvdY3WQQu="shuang_addr=""dan_addr=""for i in range(len(raw_addr)):    if i%2!=0:        dan_addr+=raw_addr[i]    else:        shuang_addr+=raw_addr[i]
base64_addr=shuang_addr+dan_addrreal_addr=base64.b64decode(base64_addr).decode()print(real_addr)

输出为:http://www.gwt.com/api/upload

检材3

15.请分析检材3:收件人邮箱是什么?【答案格式:无(直接输入邮箱地址)】【分值:4】

[email protected]

16.请分析检材3:邮件的主题是什么?【答案格式:无(直接输入主题内容)】【分值:4】

如上图,Subject字段即为邮件主题。

17.请分析检材3:已知邮箱附件采用7位数字加密,请问该7位数字密码是什么?【答案格式:无(直接输入7位数字)】【分值:4】

这个可以将压缩包的base64内容拷下来,然后填充到010Editor保存,再Archpr爆破压缩包密码。密码是7894123。

18.请分析检材3:已知邮箱附件中有一个lvm文件,请填写里面的URL信息。【答案格式:http://a.com/(URL格式)】【分值:5】

解压之后打开lvm文件就有http://lovema.world3.com/


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:金星路406取证人 M4nd3l3y3v M4nd3l3y3v《2025年第二届网络安全行业职业技能大赛初赛-11月28日》

评论:0   参与:  7