第六届西湖论剑网络安全大赛2022-Misc 机你太美 Writeup

机你太美

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
题目名称:
机你太美

题目内容:
坤坤的手机里面,隐藏着什么秘密呢 链接:https://pan.baidu.com/s/1iWy1p9uDV4_15yCQ6jJMgw?pwd=7dfk 提取码:7dfk

题目难度:
困难

Hint:
hint1:adbshell
hint2:看看找到的图片?
hint3:在线exif

附件更新
https://dasctf-1251267611.file.myqcloud.com/gcsis2022/jntm-update.7z
9ecf123c75b34f5ab1055796ae521d84 dasctf.npbk(这个附件是可以解决的,上面题目内容的附件有误)

导入npbk:

下载发现是npbk文件

npbk文件可以通过夜神模拟器导入进行分析 https://whatext.com/npbk

下载夜神模拟器后可以修改一下npbk的打开方式这样直接点开后就可以在多开的部分看到导入,导入dasctf.npbk可以得到

需要先创建一个基于Android9(64位)的模拟器,然后再进行导入

即可发现其导入成功

运行之后发现其有一个pin的锁屏

绕过pin锁屏:

搜索可以得知可以删除一些验证的文件http://www.360doc.com/content/12/0121/07/37846289_1012985425.shtml以及通过第一个hint:adbshell得知可以使用adb shell来完成这项工作 参考–> http://www.360doc.com/content/12/0121/07/37846289_1012985425.shtml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
d2q:/ # cd data
d2q:/data # cd system
d2q:/data/system # rm /data/system/locksettings.db
ata/system/locksettings.db-shm
rm /data/system/locksettings.db-wal
rm /data/system/gatekeeper.password.key
rmd2q:/data/system # rm /data/system/locksettings.db-shm
/data/system/gatekeeper.pattern.keyrm: /data/system/locksettings.db-shm: No such file or directory
1|d2q:/data/system # rm /data/system/locksettings.db-wal
rm: /data/system/locksettings.db-wal: No such file or directory
1|d2q:/data/system # rm /data/system/gatekeeper.password.key
rm: /data/system/gatekeeper.password.key: No such file or directory
1|d2q:/data/system # rm /data/system/gatekeeper.pattern.key
rm: /data/system/gatekeeper.pattern.key: No such file or directory
1|d2q:/data/system #

删掉的是/data/system/locksettings.db

然后重启模拟器再进入

发现我们已经成功绕过了pin

Skred取证:

然后主要是两个app,一个是QQ,一个是Skred

QQ登录不上,Skred可以登录 并且存在对话信息

聊天信息 从聊天信息可以看到其bbb发给了bugs 差不多15个压缩包 两张图片

截取部分

之后我们需要将其先提取出来

通过搜索,可以发现这篇文章有部分我们可以用到的部分,比如第六问

https://www.cnblogs.com/WXjzc/p/16803771.html

根据上述文章的思路我们可以定位到本题中的附件路径/data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0

1
2
3
d2q:/data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0 # ls
19.zip 21.zip 23.zip 25.zip 27.zip 29.zip 31.zip 41.png 75.jpg
20.zip 22.zip 24.zip 26.zip 28.zip 30.zip 32.zip 50.zip

将其使用adb pull提取出来

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
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0\19.zip D:\data\jntm-update\extract
adb: error: remote object '/data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0\19.zip' does not exist
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/19.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/19.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/21.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/21.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/23.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/23.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/25.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/25.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/27.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/27.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/29.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/29.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/31.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/31.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/41.png D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/41.png
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/75.jpg D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/75.jpg
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/20.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/20.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/22.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/22.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/24.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/24.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/26.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/26.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/28.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/28.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/30.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/30.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/32.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/32.zip
PS D:\Program Files\Nox\bin> ./adb pull /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/50.zip D:\data\jntm-update\extract
[100%] /data/data/mobi.skred.app/files/conversations/9f817126-eabd-4c5c-9b47-bebe04545ba0/50.zip

同时根据聊天记录的顺序,可以将压缩包重命名为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
19.zip --> s3h0.zip
20.zip --> tfm1.zip
21.zip --> wbqk.zip
22.zip --> ge9r.zip
23.zip --> nkzh.zip
24.zip --> CuhB.zip
25.zip --> kzgm.zip
26.zip --> 7nif.zip
27.zip --> gzDa.zip
28.zip --> A73x.zip
29.zip --> qy39.zip
30.zip --> 74zF.zip
31.zip --> 5Fdi.zip
32.zip --> 72ob.zip
50.zip --> 72f3.zip

其中的那些压缩包里都有着密码所以需要密码才能解开

png Alpha隐写:

联想到hint2:看看找到的图片?

为了方便我们将两张图片png的重命名为pic1.png,jpg重名为pic2.jpg

以此进行区分

通过用stegosolve观察png文件可以发现其通道alpha 2存在数据

由于其图像是RGBA 可通过img.mode探测得到.可以通过选取其像素的第四,透明度来进行脚本的提取

统计了一下我们发现其存在大量的Alpha值为255比较符合上文中的白也就是透明

1
2
3
4
5
6
7
8
9
10
from PIL import Image

img=Image.open("pic1.png")
print(img.mode) #RGBA
print(img.width)
print(img.height)
for i in range(img.width):
for j in range(img.height):
pixl = img.getpixel((i,j))
print(pixl)

透明代表1,其他的即为不透明也就是上文的黑 代表0 写出脚本即可将上面图片的那些黑点以二进制形式提取出来

1
2
3
4
5
6
7
8
9
10
11
12
13
from PIL import Image

img=Image.open("pic1.png")
print(img.mode) #RGBA
print(img.width)
print(img.height)
for i in range(img.width):
for j in range(img.height):
pixl = img.getpixel((i,j))
if(pixl[3] == 255):
print(1,end='')
else:
print(0,end='')

1
0110010100110000001100010011010100110100001101000110000100111001001100110011001100110011011001010110011000110110001100100110000100110011011000010110000100110010001101110011001100110101001101110110010101100010001101010011001001100101011000010011100001100001

From Binary后可以得到e01544a9333ef62a3aa27357eb52ea8a

其可以解开72f3.zip也就是50.zip以获取到其中的flag文件

不过里面却是乱码

jpg exif隐写:

这时候想到了hint3:在线exif,还有pic2.jpg文件没有用,用exiftool去拿到其exif信息

当然这里面的一些细微提示可以从聊天记录得知

其发送的文件顺序是png 72f3.zip jpg

而png中可以拿到72f3.zip的密码,所以jpg中存在解密flag的信息

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
ExifTool Version Number         : 11.88
File Name : pic2.jpg
Directory : .
File Size : 2.4 MB
File Modification Date/Time : 2023:02:02 00:24:03-08:00
File Access Date/Time : 2023:02:02 02:54:43-08:00
File Inode Change Date/Time : 2023:02:02 02:54:43-08:00
File Permissions : rw-------
File Type : JPEG
File Type Extension : jpg
MIME Type : image/jpeg
Exif Byte Order : Little-endian (Intel, II)
Orientation : Horizontal (normal)
X Resolution : 72
Y Resolution : 72
Resolution Unit : inches
Y Cb Cr Positioning : Co-sited
Exposure Time : 1/250
F Number : 4.0
Exposure Program : Aperture-priority AE
ISO : 200
Exif Version : 0221
Components Configuration : Y, Cb, Cr, -
Shutter Speed Value : 1/250
Aperture Value : 4.0
Exposure Compensation : 0
Metering Mode : Multi-segment
Flash : Off, Did not fire
Focal Length : 50.0 mm
User Comment : XOR DASCTF2022
Sub Sec Time : 39
Sub Sec Time Original : 39
Sub Sec Time Digitized : 39
Flashpix Version : 0100
Color Space : sRGB
Exif Image Width : 3888
Exif Image Height : 2592
Interoperability Index : R98 - DCF basic file (sRGB)
Interoperability Version : 0100
Focal Plane X Resolution : 4438.356164
Focal Plane Y Resolution : 4445.969125
Focal Plane Resolution Unit : inches
Custom Rendered : Normal
Exposure Mode : Auto
White Balance : Auto
Scene Capture Type : Standard
Compression : JPEG (old-style)
Thumbnail Offset : 8412
Thumbnail Length : 19629
Image Width : 3888
Image Height : 2592
Encoding Process : Baseline DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:2:2 (2 1)
Aperture : 4.0
Image Size : 3888x2592
Megapixels : 10.1
Scale Factor To 35 mm Equivalent: 1.6
Shutter Speed : 1/250
Thumbnail Image : (Binary data 19629 bytes, use -b option to extract)
Circle Of Confusion : 0.019 mm
Field Of View : 25.1 deg
Focal Length : 50.0 mm (35 mm equivalent: 80.9 mm)
Hyperfocal Distance : 33.67 m
Light Value : 11.0

存在User comment –> XOR DASCTF2022

所以猜测可以将加密后的flag来异或DASCTF2022

拿到flag –> DASCTF{fe089fecf73daa9dcba9bc385df54605}

另一种文件提取的思路:

除了使用模拟器以及配合adb shell进行提取以外,还可以通过Diskgenius进行文件的提取.不过该思路会因为拿不到聊天的记录而造成局限.会相当迷惑.所以只做技术上的讨论

可以先简单的binwalk一下npbk

1
2
3
4
5
6
7
crazyman@ubuntu:~/Desktop$ binwalk dasctf.npbk 

DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 7-zip archive data, version 0.4
2774 0xAD6 VMware4 disk image
<....>

可以利用7zip解压后

Nox_3-disk2.vmdk利用Diskgenius挂载,也可以将那些文件提取出来

结语:

算是第二次做雷电模拟器相关的取证题目,第一次在这里–>(https://crazymanarmy.github.io/2021/08/30/Writeup-of-Flag-Thief-in-WMCTF-2021/ ),不过本题里还是一些设计得有些部分需要一定的猜测性,所以感觉连接起来有一些困难性.以及后续的隐写更多感觉是有些硬套的嫌疑.不过这部分如果能得到优化,这题做起来的体验可能会更好.