第四届长安杯电子取证大赛个人总结

第四届长安杯电子取证竞赛个人总结

P1ANT731

第四届长安杯竞赛检材VC容器SHA256计算

在这里插入图片描述

PS E:\2022Changancup> certutil -hashfile E:\2022Changancup\第四届长安杯竞赛检材VC容器 SHA256
SHA256 的 E:\2022Changancup\第四届长安杯竞赛检材VC容器 哈希:
37263f0aace3e33e7f303473e85e69ef804eb16a2500b68a6b90c895784666f5
CertUtil: -hashfile 命令成功完成。

赛题

案情简介

	某地警方接到受害人报案称其在某虚拟币交易网站遭遇诈骗,该网站号称使用“USTD 币”购买所谓的“HT 币”,受害人充值后不但“HT 币”无法提现、交易,而且手机还被恶意软件锁定勒索。警方根据受害人提供的虚拟币交易网站调取了对应的服务器镜像并对案件展开侦查。

VC容器密码

2022.4th.changancup!

检材1

根据报案人提供的网站域名和IP,警方调取了对应的服务器镜像“检材1”,分析掌握的检材回答下列问题
1. 检材1的SHA256值为

镜像文件 SHA256

certutil -hashfile <文件路径> SHA256

在这里插入图片描述

源磁盘 SHA256在这里插入图片描述

9E48BB2CAE5C1D93BAF572E3646D2ECD26080B70413DC7DC4131F88289F49E34
2. 分析检材1,搭建该服务器的技术员IP地址是多少?用该地址解压检材2

X-Ways过滤登录注销记录utmp、wtmp、btmp、lastlog、utmpx、wtmpx、btmpx、utx.active、utx.lastlogin、utx.log

在这里插入图片描述
在这里插入图片描述

172.16.80.100
3. 检材1中,操作系统发行版本号为

X-Ways文件名过滤*-release
在这里插入图片描述

CentOS 7.5.1804
4. 检材1系统中,网卡绑定的静态IP地址为

网卡只有ens33一张,X-Ways文件名过滤ifcfg-ens33

在这里插入图片描述

172.16.80.133
5. 检材1中,网站jar包所存放的目录是(答案为绝对路径,如“/home/honglian/”)

X-Ways文件名过滤*.jar

在这里插入图片描述

jar文件显示其路径全部包含/web/app/

/web/app/
6. 检材1中,监听7000端口的进程对应文件名为

仿真检材1,使用命令 netstat -anp | grep 7000查看,并未发现监听7000端口的进程

在这里插入图片描述

history查看历史命令,jar包运行后查看过端口,怀疑是jar包运行的服务监听7000端口,依次尝试运行jar包

在这里插入图片描述

  584  cd /web/app
  585  nohup  java  -jar  /web/app/cloud.jar  >/dev/null 2>&1 &
  586  cd /web/app
  587  nohup  java  -jar  /web/app/market.jar  >/dev/null 2>&1 &
  588  ps -aiux
  589  ps -aux
  590  cd /web/app
  591  nohup  java  -jar  /web/app/exchange.jar  >/dev/null 2>&1 &
  592  cd /web/app
  593  nohup  java  -jar  /web/app/admin-api.jar  >/dev/null 2>&1 &
  594  cd /web/app
  595  nohup  java  -jar  /web/app/ucenter-api.jar  >/dev/null 2>&1 &

nohup: 用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行

netstat -anp | grep 7000

在这里插入图片描述

出现LISTEN状态的7000端口,进程ID为4719,查询进程文件名ps -aux | grep 4719

在这里插入图片描述

cloud.jar
7. 检材1中,网站管理后台页面对应的网络端口为(答案填写阿拉伯数字,如“100”)

在这里可以选择重构网站;也可以先空着通过后续对检材2的分析得到答案。

由于只做到这里,线索不够多,是否存在数据库,网站链接的数据库是否位于本检材,在历史命令中可以看见存在网站启动的脚本start.sh start_web.sh是否位于本检材并不明显,网站端口、路径未知,自然暂时无法重构网站。可以优先做后面的题目,查看其它检材内是否有线索。

思路位于第15题中。

9090
8. 检材1中,网站前台页面里给出的APK的下载地址是(答案格式如下:“https://www.forensix.cn/abc/def”)

最好的方法是重构网站后再进入网站查看,同上题。

思路位于第20题中。

https://pan.forensix.cn/f/c45ca511c7f2469090ad/?dl=1
9. 检材1中,网站管理后台页面调用的用户表(admin)里的密码字段加密方式为?

重构网站对此题帮助不大,优先选择查看jar包是否包含所需内容,由于题目中已给出用户表表名为admin,可以选择优先查看admin-api.jar。使用jd-gui查看admin-api.jar
在这里插入图片描述

因为是选择题,所以

md5
10. 分析检材1,网站管理后台登录密码加密算法中所使用的盐值是

如上题目key=

XehGyeyrVgOV4P8Uf70REVpIw3iVNwNs

检材2

根据IP地址落地及后续侦查,抓获了搭建网站的技术员,扣押了其个人电脑并制作镜像“检材2”,分析所有掌握的检材回答下列问题
11. 检材2中,windows账户Web King的登录密码是

使用火眼证据分析加载检材2镜像

在这里插入图片描述

得到NT HASH为7ec356a830f3ff153346b018879cfbf1,cdm5(md5在线解密破解,md5解密加密 (cmd5.com))解密

在这里插入图片描述

135790
12. 检材2中,除检材1以外,还远程连接过哪个IP地址?并用该地址解压检材3

查看XShell应用解析

在这里插入图片描述

172.16.80.128
13. 检材2中,powershell中输入的最后一条命令是

由于power shell有类似CentOS终端记忆历史命令的功能,仿真检材2打开power shell按 ↑ 即可。

power shell历史命令文件名为ConsoleHost_history.txt。X-Ways文件名过滤。

在这里插入图片描述

ipconfig
14. 检材2中,下载的涉案网站源代码文件名为

位于Chrome下载记录中

在这里插入图片描述

ZTuoExchange_framework-master.zip
15. 检材2中,网站管理后台root账号的密码为

Chrome保存的密码
在这里插入图片描述

root
7. 解题

在这里链接的IP地址即检材1的静态地址,该端口即第7题中网站后台管理页面对应的网络端口。

16. 检材2中,技术员使用的WSL子系统发行版本是(答案格式如下:windows 10.1)

有两种方法可以查看

方法一 文件数量

复盘会议中20.04文件夹中存在的文件远多于22.04(但是我这边好像差不多,可能是打开方式不对 ?。? )

在这里插入图片描述

方法二 仿真查看

命令wsl -l -v

在这里插入图片描述

(题外话,为什么技术员的电脑里会弹出老板的微信登录页面 ?。? )

17. 检材2中,运行的数据库服务版本号是(答案格式如下:10.1)

仿真运行Ubuntuwsl,查看数据库版本mysql --version

在这里插入图片描述

8.0.30
18. 上述数据库debian-sys-maint用户的初始密码是

进入mysql目录cd /etc/mysql

查看配置文件more debian.cnf

这里我出现一个提示cat: debian.cnf: Permission denied

在这里插入图片描述

试了一下sudo cat debian.cnf,提示需要密码,尝试Windows密码135790错误,尝试空密码错误。

尝试123456,正确。。。。

在这里插入图片描述

ZdQfi7vaXjHZs75M
19. 检材3服务器root账号的密码是

查看Ubuntu的历史命令

在这里插入图片描述

h123456

检材3

根据网站前端和技术员个人电脑上的线索,发现了网站后端所在的服务器IP并再次调证取得“检材3”,分析所有掌握的检材回答下列问题
20. 检材3中,监听33050端口的程序名(program name)为

提示在检材一的jar包中,在jar包中可以看到

在这里插入图片描述

#datasource
spring.datasource.url=jdbc:mysql://172.16.80.128:33050/b1?characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=shhl7001
重构网站

根据后面的提示可知,在服务器内部还存有一个容器用于运行MySQL,查看历史命令是否存在线索

在这里插入图片描述

得知检材内存在docker容器
在这里插入图片描述

  751  systemctl start docker
  752  cd /data/
  753  cd mysql/
  754  ls
  755  docker-compose up -d
  756  cat docker-compose.yml

查看/data/mysql/目录下的docker-compose.yml

在这里插入图片描述

映射卷

    volumes:
      - /data/mysql/db:/var/lib/mysql
      - /data/mysql/conf/my.cnf:/etc/mysql/my.cnf

尝试开启docker容器

在这里插入图片描述

无法运行

[root@localhost mysql]# docker exec -it mysql57 /bin/bash
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

查看历史命令
在这里插入图片描述

发现进入/data/mysql/db目录后,将b1文件夹全部删除(常见的删库跑路操作),过滤文件夹名b1,在检材2中发现两个相同大小的文件夹

在这里插入图片描述

同一个目录下还存在运行网站的脚本start.shstart_web.sh、疑似加解密程序、建站笔记.txt

在这里插入图片描述

b1导入检材3/data/mysql/db,将脚本依次放入仿真检材中运行。

在这里插入图片描述

在这里插入图片描述

尝试修复docker
(参考博客https://blog.csdn.net/fengtao0821/article/details/110520318

[root@localhost mysql]# cd /etc/docker
[root@localhost docker]# vi daemon.json
# 写入
{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}
# 写入结束
[root@localhost docker]# systemctl restart docker.service

在这里插入图片描述

读取b1中的表

show tables;

在这里插入图片描述

根据建站笔记.txt中的描述,需要先启动后端组件

[root@localhost /]# chmod +x start.sh
[root@localhost /]# sh start.sh
Starting Zookeeper
nohup: appending output to ‘nohup.out’
Starting Kafka
nohup: appending output to ‘nohup.out’
Finishkil

在这里插入图片描述

后端脚本启动成功,启动前端脚本

[root@localhost app]# chmod +x start_web.sh
[root@localhost app]# sh start_web.sh
Starting App: Cloud
nohup: appending output to ‘nohup.out’
Starting App: market
nohup: appending output to ‘nohup.out’
Starting App:exchange
nohup: appending output to ‘nohup.out’
Starting App:admin
nohup: appending output to ‘nohup.out’
Starting App:ucenter
nohup: appending output to ‘nohup.out’
Starting WEB:WEB
Starting WEB:admin
Finishkil
[root@localhost app]# 

在这里插入图片描述

在这里插入图片描述

重构网站后再查看33050端口占用信息

[root@localhost /]# netstat -anp | grep 33050
tcp        0      0 0.0.0.0:33050           0.0.0.0:*               LISTEN      32117/docker-proxy
tcp6       0      0 :::33050                :::*                    LISTEN      32123/docker-proxy
docker-proxy
8.解题

进入172.16.80.133:3000/查看,首页有APP下载,扫描Android二维码

在这里插入图片描述

二维码在线解码

在这里插入图片描述

https://pan.forensix.cn/f/c45ca511c7f2469090ad/?dl=1
21. 除MySQL外,该网站还依赖以下哪种数据库

admin-api.jar中可以看到依赖数据库还有

在这里插入图片描述

mongodb、redis
22. 检材3中,MySQL数据库root账号的密码是

因为MySQL环境建立在docker环境中,查看docker-compose.yml文件

在这里插入图片描述

也可以在检材1的jar包中查看

在这里插入图片描述

shhl7001
23. 检材3中,MySQL数据库在容器内部的数据目录为

同上题,volumes记录了卷映射

/var/lib/mysql
24. 涉案网站调用的MySQL数据库名为

前面的题目中已经提到了数据库文件夹为b1,保险起见,使用navicat连接数据库查看

在这里插入图片描述

b1
25. 勒索者在数据库中修改了多少个用户的手机号?(答案填写阿拉伯数字,如“15”)

数据库恢复后,在映射卷路径上级目录出现8eda4cb0b452.log文件

在这里插入图片描述

查看8eda4cb0b452.log文件

在这里插入图片描述

3
26. 勒索者在数据库中删除的用户数量为(答案填写阿拉伯数字,如“15”)

过滤DELECT

在这里插入图片描述

28
27. 还原被破坏的数据库,分析除技术员以外,还有哪个IP地址登录过管理后台网站?用该地址解压检材4

查看网站系统日志,除去来自自己172.16.80.1的操作

在这里插入图片描述

172.16.80.197
28. 还原全部被删改数据,用户id为500的注册会员的HT币钱包地址为

会员管理搜索500

在这里插入图片描述

cee631121c2ec9232f3a2f028ad5c89b
29. 还原全部被删改数据,共有多少名用户的会员等级为’LV3’(答案填写阿拉伯数字,如“15”)

member表中存在字段名为member_grade_id

在这里插入图片描述

建立查询,查询未删除的member_grade_id=3的记录

SELECT * FROM `member` WHERE member_grade_id=3;

在这里插入图片描述

数据库中还存有158条数据

查询日志中被删除的member_grade_id=3的记录

随意查询一个INSERT记录查看数据格式

在这里插入图片描述

查看对应的格式,搜索0, 3, 0, 0, NULL

在这里插入图片描述

由26题可知,删除的用户id范围为973~1000
在这里插入图片描述

共有6条数据

164
30. 还原全部被删改数据,哪些用户ID没有充值记录(答案填写阿拉伯数字,多个ID以逗号分隔,如“15,16,17”)

首先使用sql语句选择出所有拥有充值记录的账户

SELECT member_id FROM member_transaction GROUP BY member_id;

在这里插入图片描述

缺少2个用户记录

查看balance=0的用户

SELECT * FROM member_wallet WHERE balance=0;

在这里插入图片描述

318;989
31. 还原全部被删改数据,2022年10月17日总计产生多少笔交易记录?(答案填写阿拉伯数字,如“15”)

SQL语句,网站中无法直接看见被删除用户的数据

SELECT * FROM member_transaction WHERE create_time BETWEEN '2022-10-17 00:00:00' AND '2022-10-17 23:59:59';

在这里插入图片描述

1000
32. 还原全部被删改数据,该网站中充值的USDT总额为(答案填写阿拉伯数字,如“15”)

SQL语句,同上

SELECT SUM(amount) FROM member_transaction;

在这里插入图片描述

408228

检材4

根据前期侦查分析,通过技术手段找到了幕后老板,并对其使用的安卓模拟器“检材4”进行了固定。分析该检材并回答下列问题
33. 嫌疑人使用的安卓模拟器软件名称是

在这里插入图片描述

夜神 ( Nox ) 
34. 检材4中,“老板”的阿里云账号是

查看微信聊天记录
在这里插入图片描述

forensixtech1
35. 检材4中安装的VPN工具的软件名称是

在这里插入图片描述

v2rayNG
36. 上述VPN工具中记录的节点IP是

在这里插入图片描述

38.68.135.18
37. 检材4中,录屏软件安装时间为

使用X-Ways打开检材4,导出vmdk文件使用火眼加载

在这里插入图片描述

在这里插入图片描述

2022-10-19 10:50:27
38. 上述录屏软件中名为“s_20221019105129”的录像,在模拟器存储中对应的原始文件名为

X-Ways中同步搜索文件名包含luping的文件中所有包含s_20221019105129的文件

在这里插入图片描述

0c2f5dd4a9bc6f34873fb3c0ee9b762b98e8c46626410be7191b11710117a12d
39. 上述录屏软件登录的手机号是

提交注销申请显示账号

在这里插入图片描述

18645091802
40. 检材4中,发送勒索邮件的邮箱地址为

在这里插入图片描述

skterran@163.com

exe分析

分析所有掌握的检材,找到勒索邮件中被加密的文档和对应的加/解密程序,并回答下列问题
41. 分析加密程序,编译该加密程序使用的语言是

在这里插入图片描述

python
42. 分析加密程序,它会加密哪些扩展名的文件?

pyinstaller逆向

暂时没整明白,整明白了再修改

43. 分析加密程序,是通过什么算法对文件进行加密的?

暂时没整明白,整明白了再修改

44. 分析加密程序,其使用的非对称加密方式公钥后5位为?

暂时没整明白,整明白了再修改

45. 被加密文档中,FLAG1的值是(FLAG为8位字符串,如“FLAG9:QWERT123”)

暂时没整明白,整明白了再修改

apk分析

分析所有掌握的检材,找到报案人描述的加密勒索apk程序,分析并回答下列问题
46.恶意APK程序的包名为

在这里插入图片描述

cn.forensix.changancup
47.APK调用的权限包括

在这里插入图片描述

READ_EXTERNAL_STORAGE;WRITE_EXTERNAL_STORAGE
48.解锁第一关所使用的FLAG2值为(FLAG为8位字符串,如需在apk中输入FLAG,请输入完整内容,如输入"FLAG9:QWERT123")

脱壳后反编译,搜索文本FLAG

在这里插入图片描述

MATSFRKG
49.解锁第二关所使用的FLAG3值为(FLAG为8位字符串,如需在apk中输入FLAG,请输入完整内容,如输入"FLAG9:QWERT123")

上面代码中对FLAG3的判断条件为i2 & 2

    private void OooO00o() {
        int i2 = App.OooO0OO.getInt("unlocked", 0);
        if ((i2 & 4) != 0) {
            this.OooO0OO.setText("哎呀,第三关都通过了,恭喜恭喜,现在你的手机已获得自由!");
            this.OooO0Oo.setVisibility(8);
            this.OooO0o0.setVisibility(8);
        } else if ((i2 & 2) != 0) {
            this.OooO0OO.setText("你是怎么通过第二关的???不过还有第三关,现在你手机里任何文档,压缩包,图片,视频都已被加密,请再次联系QQ:90001234进行解密");
            this.OooO0Oo.setOnClickListener(this);
            this.OooO0o0.setHint("输入解密文件的key");
            this.OooO0o0.setText("");
        } else if ((i2 & 1) != 0) {
            this.OooO0OO.setText("居然通过了第一关,不过还有第二关在等着你,现在你的手机在接下来的时间,会每隔一段时间关闭屏幕,请再次联系QQ:90001234进行解除,期间请勿尝试任何手段破解,否则将触发自毁程序");
            this.OooO0Oo.setOnClickListener(this);
            this.OooO0o0.setHint("FLAG3:XXXXXXXX");
            this.OooO0o0.setText("");
        } else {
            this.OooO0OO.setText("恭喜,你的手机已被锁,请联系QQ:90001234进行解决,期间请勿尝试任何手段破解,否则将触发自毁程序");
            this.OooO0Oo.setOnClickListener(this);
            this.OooO0o0.setHint("FLAG2:XXXXXXXX");
            this.OooO0o0.setText("");
        }
    }

查看else if

else if (App.OooO0O0.OooO0oo.equals(this.OooO0o0.getText().toString()) && App.OooO0OO.edit().putInt("unlocked", App.OooO0OO.getInt("unlocked", 0) | 2).commit()) {
                    StringBuilder OooO0OO2 = C0253o0000Oo.OooO0OO(App.OooO0OO.getString("flag16_tkey", ""));
                    OooO0OO2.append(App.OooO0O0.OooO0oo);

e q u a l s ( t h i s . O o o O 0 o 0. g e t T e x t ( ) . t o S t r i n g ( ) equals(this.OooO0o0.getText().toString() equals(this.OooO0o0.getText().toString()

将输入的值转换成字符串与前面的App.OooO0O0.OooO0oo进行比对,查找OooO0O0定义

在这里插入图片描述

        this.OooO0oo = new String(decrypt(OooO0O0.OooO0O0("ffd4d7459ad24cd035611b014a2cccac")));
        try {
            Cipher instance = Cipher.getInstance("AES/GCM/NoPadding");
            if (TextUtils.isEmpty(OooO0OO.getString("t_key", ""))) {
                instance.init(1, OooO0oO());
                byte[] bArr = new byte[16];
                new SecureRandom().nextBytes(bArr);
                init(bArr);
                if (OooO0OO.edit().putString("iv", OooO0O0.OooO00o(instance.getIV())).commit() && OooO0OO.edit().putString("t_key", OooO0O0.OooO00o(instance.doFinal(bArr))).commit()) {
                    System.out.println("init key ok");
                }
            } else if (Build.VERSION.SDK_INT >= 19) {
                instance.init(2, OooO0o(), new GCMParameterSpec(128, OooO0O0.OooO0O0(OooO0OO.getString("iv", ""))));
                init(instance.doFinal(OooO0O0.OooO0O0(OooO0OO.getString("t_key", ""))));
            } else {
                throw new RuntimeException("todo cipher");
            }
        } catch (Exception unused) {
        }

查找decrypt方法

在这里插入图片描述

 public native byte[] decrypt(byte[] bArr);

做到这里需要Android Studio,安装需要连接Google下载相关服务。
暂时没整明白Android Studio,整明白了再修改

50.解锁第三关所需的KEY值由ASCII可显示字符组成,请请分析获取该KEY值

暂时没整明白,整明白了再修改

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
电子数据取证大赛是一个为了推动电子数据取证技术发展而设立的比赛。在这个比赛中,参赛者需要运用各种技术和工具来收集、验证、保存和分析电子数据,以获取关键证据用于刑事调查、法律诉讼或其他相关领域。 Pandas是一个广泛应用于数据分析和处理的Python库。它提供了强大的数据结构和数据操作工具,使得处理和分析大规模数据集变得更加高效、简洁。在电子数据取证大赛中,参赛者可以使用Pandas来处理和分析收集到的电子数据,以便从中挖掘出关键信息和线索。 Pandas具备多种功能,如数据清洗、数据过滤、数据转换和数据聚合等。对于电子数据取证来说,这些功能非常有用。比如,参赛者可以使用Pandas来清洗收集到的电子数据,去除不必要的空值和重复数据;使用Pandas的过滤功能,筛选出具有特定特征或属性的数据;使用Pandas的转换功能,对数据进行格式化、排序或分类;使用Pandas的聚合功能,汇总和统计数据的特征和分布。 除了基本功能外,Pandas还提供了丰富的统计分析和数据可视化工具。这些工具可以帮助参赛者更好地理解和解释数据,并从中获得更深层次的洞察。比赛中,参赛者可以利用这些工具,对电子数据进行统计分析,如计算数据的平均值、方差和相关系数等;利用数据可视化功能,将数据以图表的形式展示,帮助发现数据的规律和趋势。 综上所述,Pandas在电子数据取证大赛中具有重要作用。参赛者可以利用Pandas强大的数据处理和分析功能,对收集到的电子数据进行处理和分析,以获得关键证据和有用信息。Pandas的灵活性和易用性使得参赛者能够更高效地完成任务,并在竞赛中取得优异的成绩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值