BlueHat2022半决赛Writeup

BlueHat2022半决赛

注:虚线代表没做出来/错误/存在问题的部分

手机取证

iPhone手机的iBoot固件版本号:(答案参考格式:iBoot-1.1.1)

盘古石手机取证导入受害者检材:

image-20230911201128980

得到iBoot-7429.62.1

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

火眼证据导入苹果检材:

image-20230911201421464

2022-01-11 18:47:38

exe分析

文件services.exe创建可执行文件的路径是:(答案参考格式:C:\Windows .exe)

从苹果镜像查看微信聊天记录,提取附件:

image-20230911201529449

上传微步:

image-20230911201555339

查看该MD5下的分析报告:

image-20230911201652337

第一个可执行文件建立在temp目录下,可知为临时文件,第二个可执行文件路径即为答案:C:\Program Files\Common Files\Services\WmiApSvr.exe

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

同样找到该文件的MD5:

image-20230911201827464

查看导入表可知,调用了该链接库:

image-20230911202146102

文件aspnet_wp.v.exe执行后的启动的进程是什么:(答案参考格式:qax.exe)

找到该文件的md5:

image-20230911202317001

进入报告,看行为树:

image-20230911202333172

启动了svchost.exe

文件[4085034a23cccebefd374e4a77aea4f1]是什么类型的木马:(答案参考格式:勒索)

挖矿。微步或VT查询木马家族、威胁标签可以得到答案。

image-20230911202843736

文件[4085034a23cccebefd374e4a77aea4f1]网络连接的IP地址的归属地是哪个国家:(答案参考格式:美国)

法国

image-20230911202925807

APK分析

受害人手机中exec的序列号是:(答案参考格式:0xadc)

把受害者手机镜像放到闪电模拟器VMS目录打开,提取exec安装包。

image-20230911203019766

放到雷电APP智能分析:

image-20230911203249198

0x936eacbe07f201df

受害人手机中exec关联服务器地址是:(答案参考格式:asd.as.d)

启动动态监控功能,可以看到应用存在访问连接:

image-20230911203626222

打开后可以看到可疑服务器地址:

image-20230911203649112

ansjk.ecxeio.xyz

受害人手机中exec加载服务器的函数是:(答案参考格式:asda)

使用jadx-gui分析该APK,在minmtta.hemjcbm.ahibyws.MainActivity中发现疑似base64字符串aHR0cHM6Ly9hbnNqay5lY3hlaW8ueHl6

image-20230911203756381

解密后为https://ansjk.ecxeio.xyz,即上题抓取的可疑地址。

image-20230911203917079

故加载服务器的函数为t

受害人手机中exec的打包ID是:(答案参考格式:adb.adb.cn

exec.azj.kny.d.c

image-20230911204015741

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

d.a.a.h路径下,可以看到存在检测root的安全检测功能:

image-20230911204133270

受害人手机中exec的检测方法的完整路径和方法名是:(答案参考格式:a.a.a())

1
2
3
4
5
6
7
8
9
10
if (d.a.a.c.a.b() / 1048576 < 200) {
C.b("您的储存空间不足,可能会影响您正常使用", 1);
} else if (d.a.a.c.a.a()) {
C.b("您手机处于root环境,请注意资金安全", 1);
} else {
if (d.a.a.c.a.a(this)) {
C.b("当前设备不受信任,请注意资金安全", 1);
return;
}

根据代码判断,d.a.a.c.a.a为检测方法。

受害人手机中exec有几个界面:(答案参考格式:2)

打开AndroidManifest.xml文件,可以找到 标签,每个标签对应一个界面。通过统计这些标签,你可以获得应用程序包含的界面数量。即为3(最后两个是同一个)。

image-20230911204235035

受害人手机中红星IPA的包名是:(答案参考格式:a.s.d)

受害人手机,如下路径可以找到ipa:(其他人的wp可以从受害人的vmdk镜像里找到,但是我的镜像里找不到下图的路径,很疑惑)

image-20230911214222286

提取ipa,没合适分析工具,直接当zip包解压。

参考文章:https://blog.didctf.com/index.php/archives/378/
根据参考文章知道包名是CFBundleIdentifier,所以直接搜索得到答案:

image-20230911215745255

com.dd666.hongxin

受害人手机中红星IPA的APIKEY是:(答案参考格式:asd)

全局查找apikey

image-20230911215554263

d395159c291c627c9d4ff9139bf8f0a700b98732

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

查看该文件可以得到答案:麦克风、定位、地理位置、摄像头

嫌疑人手机中红星APK的服务器地址是:(答案参考格式:ass.a.d:11)

将应用安装到虚拟机,打开后发现连接的服务器与端口:

image-20230911205621715

www.nansjy.com.cn:8161

嫌疑人手机中红星APK的程序入口是:(答案参考格式:a.v.b.n)

从微信记录中导出红星apk:

image-20230911205021550

找到程序入口:com.example.weisitas526sad.activity.SplashActivity

嫌疑人手机中分析聊天工具,服务器的登录端口是:(答案参考格式:12)

6661

image-20230911210219640

嫌疑人手机中分析聊天工具,用户归属的机构是:(答案参考格式:太阳)

红星

结合手机流量分析聊天工具的登录账号和密码是:(答案参考格式:1212311/12312asd)

检材中的流量文件为saz格式,查询得到为fiddler的流量文件。使用该程序打开:

image-20230911204759759

抓取到POST /vsf2f/vsf2fv2/token请求中提交的用户名密码,其中md57f07965ec20841305f9e53a7a89584f4需要通过somd5解密:

image-20230911204900310

17317289056/b12345678b

服务器取证

服务器在启动时设置了运行时间同步脚本,请写出脚本内第二行内容。(答案参考格式:/abcd/tmp www.windows.com

centos服务器的/etc/rc.d/rc.local路径标记了启动时所运行的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@yisu-60a2196bb5a4f rc.d]# cat rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
/bin/sh /root/time.sh
touch /var/lock/subsys/local

可以看到时间同步脚本为/root/time.sh,故其第二行内容为:skip=44

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[root@yisu-60a2196bb5a4f rc.d]# cat /root/time.sh
#!/bin/sh
skip=44

tab=' '
nl='
'
IFS=" $tab$nl"

umask=`umask`
umask 77

gztmpdir=
trap 'res=$?
test -n "$gztmpdir" && rm -fr "$gztmpdir"
(exit $res); exit $res
' 0 1 2 3 5 10 13 15

if type mktemp >/dev/null 2>&1; then
gztmpdir=`mktemp -dt`
else
gztmpdir=/tmp/gztmp$$; mkdir $gztmpdir
fi || { (exit 127); exit 127; }

gztmp=$gztmpdir/$0
case $0 in
-* | */*'
') mkdir -p "$gztmp" && rm -r "$gztmp";;
*/*) gztmp=$gztmpdir/`basename "$0"`;;
esac || { (exit 127); exit 127; }

case `echo X | tail -n +1 2>/dev/null` in
X) tail_n=-n;;
*) tail_n=;;
esac
if tail $tail_n +$skip <"$0" | gzip -cd > "$gztmp"; then
umask $umask
chmod 700 "$gztmp"
(sleep 5; rm -fr "$gztmpdir") 2>/dev/null &
"$gztmp" ${1+"$@"}; res=$?
else
echo >&2 "Cannot decompress $0"
(exit 127); res=127
fi; exit $res
���1time.shSV�O���/���/-.�/q�J
RKRJ2sS��2�K���˸��Ӆ*

但是文件结尾存在乱码,查看其他人wp后发现是gzexe加密。使用gzexe加密的shell脚本代码特征为:前面一段代码是正常的命令字符,到了后面某一行开始就全部为乱码。

1
2
3
4
5
[root@yisu-60a2196bb5a4f ~]# ls
anaconda-ks.cfg backup.sh.x db-bak install.sh mysqldump.sql time.sh time.sh~
[root@yisu-60a2196bb5a4f ~]# cat time.sh
#!/bin/sh
/usr/sbin/ntpdate time.nist.gov

答案为:/usr/sbin/ntpdate time.nist.gov

服务器在计划任务添加了备份数据库脚本,请写出该脚本的第二行内容。(答案参考格式:2022年第六届蓝帽杯)

通过crontab -l可以查看到计划任务:

1
2
[root@yisu-60a2196bb5a4f rc.d]# crontab -l
00 03 * * * /root/backup.sh.x

打开文件发现是乱码,应该还是混淆,但是没搜到什么混淆……

查了资料发现是SHC混淆(shc/unshc工具用于加/解密shell脚本_草莓甜甜圈的博客-CSDN博客

Shc可以用来对shell脚本进行加密,可以将shell脚本转换为一个可执行的二进制文件。经过shc对shell脚本进行加密后,会同时生成两种个新的文件,一个是加密后的可执行的二进制文件(文件名以.x结束),另一个是C语言的原文件(文件名以.x.c结束)。

解密后得到答案:

image-20230912115118825

使用宝塔linux面板的密码加密方式对字符串lanmaobei进行加密,写出加密结果。(答案参考格式:e10adc3949ba59abbe56e057f20f883e)

加密文件路径:/www/server/panel/class/users.py

image-20230912154656770

加密过程就是初始密码进行md5加密运算后,结果尾部加上_bt.cn再进行一次md5运算,然后与盐加上再进行md5加密。但是官方wp里没有和盐加密运算。

image-20230912160118379

写出服务器中第一次登录宝塔面板的时间。(答案参考格式:2022-02-02 02:02:02)

服务器终端输入bt 14查看宝塔面板端口:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@yisu-60a2196bb5a4f config]# bt
===============宝塔面板命令行==================
(1) 重启面板服务 (8) 改面板端口
(2) 停止面板服务 (9) 清除面板缓存
(3) 启动面板服务 (10) 清除登录限制
(4) 重载面板服务 (11) 取消入口限制
(5) 修改面板密码 (12) 取消域名绑定限制
(6) 修改面板用户名 (13) 取消IP访问限制
(7) 强制修改MySQL密码 (14) 查看面板默认信息
(22) 显示面板错误日志 (15) 清理系统垃圾
(23) 关闭BasicAuth认证 (16) 修复面板(检查错误并更新面板文件到最新版)
(24) 关闭谷歌认证 (17) 设置日志切割是否压缩
(25) 设置是否保存文件历史副本 (18) 设置是否自动备份面板
(0) 取消
===============================================
请输入命令编号:14
===============================================
正在执行(14)...
===============================================
==================================================================
BT-Panel default info!
==================================================================
外网面板地址: http://www.nansjy.com.cn:8517/c0a27351
内网面板地址: http://192.168.78.132:8517/c0a27351
*以下仅为初始默认账户密码,若无法登录请执行bt命令重置账户/密码登录
username: d0qxqo4a
password: e65972dd
If you cannot access the panel,
release the following panel port [8517] in the security group
若无法访问面板,请检查防火墙/安全组是否有放行面板[8517]端口
==================================================================

登录面板提示没有访问权限,按照说明删除文件:

image-20230912102815288

再次打开该网页路径后发现存在basic认证,从/www/server/panel/config/basic_auth.json获取到账号密码,解密后为:root_bt.cn / root123456_bt.cn,但是还没办法登录(解密了个寂寞,回顾上题发现需要去掉后缀)。直接bt 23关闭基础认证,可以看到登录页面。

image-20230912103132551

通过默认账号密码可以直接登录进后台。在后台查看日志发现并没有登录记录,又折回去从服务器中寻找:/www/server/panel/logs/request

1
2
3
4
5
6
7
[root@yisu-60a2196bb5a4f class]# cd /www/server/panel/logs/
[root@yisu-60a2196bb5a4f logs]# ls
access.log certbot.log error.log panel.pid request task.log task.pid terminal.log
[root@yisu-60a2196bb5a4f logs]# cat access.log
[root@yisu-60a2196bb5a4f logs]# cat request/202
2021-05-17.json.gz 2021-05-26.json.gz 2021-06-05.json.gz 2021-06-19.json.gz 2023-09-12.json
2021-05-20.json.gz 2021-05-27.json.gz 2021-06-07.json.gz 2021-07-03.json.gz

发现备份的文件为gz,使用gzip进行解包:

1
2
3
4
5
[root@yisu-60a2196bb5a4f request]# gzip -dv 2021-05-17.json.gz
2021-05-17.json.gz: 93.4% -- replaced with 2021-05-17.json
[root@yisu-60a2196bb5a4f request]# ls
2021-05-17.json 2021-05-26.json.gz 2021-06-05.json.gz 2021-06-19.json.gz 2023-09-12.json
2021-05-20.json.gz 2021-05-27.json.gz 2021-06-07.json.gz 2021-07-03.json.gz

image-20230912161848398

2021-05-17 16:10:40

写出宝塔面板的软件商店中已安装软件的个数(答案参考格式:2)

image-20230912110601095

6

写出涉案网站(维斯塔斯)的运行目录路径。(答案参考格式:/root/etc/sssh/html)

/www/wwwroot/v9.licai.com/public

写出最早访问涉案网站后台的IP地址。(答案参考格式:111.111.111.111)

183.160.76.194

image-20230912110623536

写出涉案网站(维斯塔斯)的“系统版本”号。(答案参考格式:6.6.6666)

通过分析/www/wwwlogs/v9.licai.com.log,看到一个后台可疑的路径:/AdminV9YY/

image-20230912170542369

但是直接访问错误,怀疑后面有跟login或其他关键字:

1
192.168.78.1 - - [13/Sep/2023:00:12:39 +0800] "GET /AdminV9YY/Login HTTP/1.1" 200 1423 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.76"

用phpmyadmin里的账号密码无法登录,应该是有加密函数,这里直接搜索登录文件修改:

1
2
3
4
5
6
7
8
9
10
11
12
if (0) {

$msg = '密码不正确';
DB::table('loginlogs')->insert([
[
'adminid' => $Admin->id,
'logintime' => Carbon::now()->format("Y-m-d H:i:s"),
'ip' => $request->getClientIp(),
'status' => 0,
'info' => $msg,
]
]);

然后还是进不去,没办法只能现搜了:

1
2
3
4
5
6
7
8
9
10
11
[root@yisu-60a2196bb5a4f wwwroot]# find /www/wwwroot/v9.licai.com/ -name *.php* |xargs grep '系统版本'
/www/wwwroot/v9.licai.com/resources/views/hui/index/main.blade.php: <th>系统版本</th>
/www/wwwroot/v9.licai.com/storage/framework/views/1d1554f79bff353b2032169de5c8047eaded358d.php: <th>系统 版本</th>
/www/wwwroot/v9.licai.com/storage/framework/views/bfc448ab2762840f72e330e7b7eb820ad28e7b3b.php: <th>系统 版本</th>
/www/wwwroot/v9.licai.com/storage/framework/views/c3f4a3dc2c77768579626247d9e8c43360755ece.php: <th>系统 版本</th>
[root@yisu-60a2196bb5a4f wwwroot]# cat v9.licai.com/resources/views/hui/index/main.blade.php | grep 系统版本 -C 2
<tbody>
<tr>
<th>系统版本</th>
<td>1.0.190311</td></tr>
<tr>

分析涉案网站的会员层级深度,写出最底层会员是多少层。(答案参考格式:66)

请写出存放网站会员等级变化制度的网站代码文件的SHA256值。(答案参考格式: 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@yisu-60a2196bb5a4f wwwroot]# find /www/wwwroot/v9.licai.com/ -name *.php* |xargs grep '升级'
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: 充值达到金额升级会员等级
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: "title"=>"您升级为".$levels->name,
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: "content"=>"充值升级(".$levels->name.")",
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: "title"=>"您升级为".$levels->name,
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: "content"=>"充值升级(".$levels->name.")",
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: 充值达到金额升级会员等级
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: "title"=>"您升级为".$levels->name,
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: "content"=>"充值升级(".$levels->name.")",
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: "title"=>"您升级为".$levels->name,
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: "content"=>"充值升级(".$levels->name.")",
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: "title"=>"您升级为".$levels->name,
/www/wwwroot/v9.licai.com/app/Memberrecharge.php: "content"=>"充值升级(".$levels->name.")",
/www/wwwroot/v9.licai.com/config/web.php: "PromotionRules"=>"累计投资",//会员升级规则
/www/wwwroot/v9.licai.com/resources/views/film/zcxy.blade.php: <p>3. 由于黑客攻击、网络供应商技术调整或故障、网站升级、银行方面的问题等原因而造成的本网站服务中断或延迟;</p>
/www/wwwroot/v9.licai.com/resources/views/wap/zcxy.blade.php: <p>3. 由于黑客攻击、网络供应商技术调整或故障、 网站升级、银行方面的问题等原因而造成的本网站服务中断或延迟;</p>
/www/wwwroot/v9.licai.com/storage/framework/views/9a9305c5486d13bf975282a31e2c609813839171.php: <p>3. 由于黑 客攻击、网络供应商技术调整或故障、网站升级、银行方面的问题等原因而造成的本网站服务中断或延迟;</p>

[root@yisu-60a2196bb5a4f wwwroot]# md5sum /www/wwwroot/v9.licai.com/app/Memberrecharge.php
61afb85d7d147c2b02c5032777d055dd /www/wwwroot/v9.licai.com/app/Memberrecharge.php

计算向网站中累计充值最多的五名会员,获得的下线收益总和(不包含平台赠送)。(答案参考格式:666.66)

先查看下充值最多的五名会员:

1
SELECT userid, username, SUM(amount) AS total_amount FROM memberrecharge WHERE status = 1 GROUP BY userid, username ORDER BY total_amount DESC

image-20230912173401568

1
select sum(moneylog_money) from moneylog where moneylog_type like '%下线%' and moneylog_userid in (7,2,12,11,168)

image-20230912173630847

统计涉案网站中余额大于0且银行卡开户行归属于四川省的潜在受害人数量。(答案参考格式:6)

1
2
3
SELECT COUNT(*)
FROM member
WHERE amount > 0 AND bankaddress LIKE '%四川%';

image-20230912173820139

统计平台从成立之初至“2021-07-01 23:59:59”共收益多少金额(不包含平台赠送)。(答案参考格式:6666.66)

1
select b.a-d.c  from (SELECT sum(amount) a FROM `memberrecharge`where type = '用户充值' and`status`= 1 and updated_at < '2021-07-01 23:59:59' ) b,(SELECT sum(amount) c FROM memberwithdrawal where`status` = 1 and updated_at < '2021-07-01 23:59:59') d

image.png

统计涉案网站哪一天登录的会员人数最多。(答案参考格式:1999-09-09)

1
SELECT DATE(logintime) AS login_date, ip, COUNT(DISTINCT ip) AS login_count FROM loginlogs GROUP BY login_date ORDER BY login_count DESC

image-20230912112344994

2021-06-16这个答案应该是不对的,查了下Loginlogs这个表是后台访问的记录。

写出涉案网站中给客服发送“你好,怎么充值”的用户的fusername值。(答案参考格式:lanmaobei666)

/root路径下存在mysqldump.sql文件,里面直接搜索可以得到答案hm688

image-20230912153227059


BlueHat2022半决赛Writeup
https://k1nm0.com/2023/09/12/BlueHat2022半决赛/
作者
K1nm0
发布于
2023年9月12日
许可协议