ペンギン技術 blog

CTFのWriteupなどを記載していこうと思います

ksnCTF Writeup No.18 USB flash drive

drive.imgが渡される

 

ファイル情報を見てみる
$ file drive.img
drive.img: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 8, hidden sectors 1, dos < 4.0 BootSector (0x80), FAT (1Y bit by descriptor); NTFS, sectors/track 63, sectors 32767, $MFT start cluster 1365, $MFTMirror start cluster 2, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number 0667e77597e77214b; contains bootstrap BOOTMGR

 

ディスクイメージ問題はFTK Imagerを使ったような気がするが、
現在の環境にはなく、ダウンロードには大量のフォームを埋める必要があり、ハードルが高い
(しかも、フリーメールアドレスはダメとの記載あり)

 

Forensics入門(CTF)
https://qiita.com/knqyf263/items/6ebf06e27be7c48aab2e
の「ディスクイメージが渡された場合」を参考に、foremostコマンドにてファイル抽出してみる
$ foremost drive.img
Processing: drive.img
|*|

 

outputディレクトリができた

$ cd output/

$ ls
audit.txt jpg

 

出力情報を見てみる

$ cat audit.txt
Foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File

Foremost started at Sat Jul 24 09:54:59 2021
Invocation: foremost drive.img
Output directory: /home/kali/Downloads/output
Configuration file: /etc/foremost.conf
------------------------------------------------------------------
File: drive.img
Start: Sat Jul 24 09:54:59 2021
Length: 16 MB (16777216 bytes)

Num Name (bs=512) Size File Offset Comment

0: 00001040.jpg 79 KB 532480
1: 00001200.jpg 169 KB 614400
2: 00001544.jpg 46 KB 790528
3: 00001640.jpg 132 KB 839680
Finish: Sat Jul 24 09:55:00 2021

4 FILES EXTRACTED

jpg:= 4
------------------------------------------------------------------

Foremost finished at Sat Jul 24 09:55:00 2021
画像ファイルが4つ抽出された

 

00001200.jpgの画像下部に以下のヒントあり
The flag is in this file, but not in this image.

f:id:sPENGIN:20210724111810j:plain

 

00001200.jpgはbinwalkでみてもJPEG以外があり、怪しい
$ binwalk -e *.jpg
Scan Time: 2021-07-24 09:59:35
Target File: /home/kali/Downloads/output/jpg/00001040.jpg
MD5 Checksum: 043c1391d18a09d4bf8769c811c8d67f
Signatures: 411

DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 JPEG image data, JFIF standard 1.00


Scan Time: 2021-07-24 09:59:35
Target File: /home/kali/Downloads/output/jpg/00001200.jpg
MD5 Checksum: 1b5feefc233ee889ff6e5979ac925514
Signatures: 411

DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 JPEG image data, EXIF standard
12 0xC TIFF image data, little-endian offset of first image directory: 8


ファイルを取り出してみる
$ binwalk -D='.*' 00001200.jpg

DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 JPEG image data, EXIF standard
12 0xC TIFF image data, little-endian offset of first image directory: 8


$ ls -ltr
drwxr-xr-x 2 kali kali 4096 7月 24 10:03 _00001200.jpg.extracted

$ ls _00001200.jpg.extracted
0 C
「0」がヒントが書いてある画像ファイル
「C」は画像としては開けず、stringsコマンドでもフラグは見つからず


flsコマンドを試してみる
ディスクイメージからファイル、ディレクトリ名を表示する

$ fls drive.img
d/d 11-144-4: $Extend
r/r 35-128-1: Carl Larsson Brita as Iduna.jpg
r/r 37-128-1: Mona Lisa.jpg
r/r 38-128-1: The Great Wave off Kanagawa.jpg
一部抜粋。
d/dがディレクト
r/rがファイル

 

-d で、削除済のエントリのみ表示する。大量にあり、怪しい
$ fls drive.img -d
-/r * 36-128-1: Liberty Leading the People.jpg
-/r * 36-128-4: Liberty Leading the People.jpg:00
-/r * 36-128-5: Liberty Leading the People.jpg:01
-/r * 36-128-6: Liberty Leading the People.jpg:02
-/r * 36-128-7: Liberty Leading the People.jpg:03
-/r * 36-128-8: Liberty Leading the People.jpg:04
-/r * 36-128-9: Liberty Leading the People.jpg:05
-/r * 36-128-10: Liberty Leading the People.jpg:06


icatコマンドを使うと、inode番号を指定して、ファイルを出力させることができる
$ icat drive.img 36-128-1 > 00.jpg
→ヒントが書いてある画像ファイル


$ icat drive.img 36-128-4 > 0.jpg
$ icat drive.img 36-128-5 > 1.jpg

結合するとFLAGの文字列が
$ cat 0.jpg 1.jpg
FLAG_q

 

$ icat drive.img 36-128-6 > 2.jpg
$ icat drive.img 36-128-7 > 3.jpg
$ icat drive.img 36-128-8 > 4.jpg
$ icat drive.img 36-128-9 > 5.jpg
$ icat drive.img 36-128-10 > 6.jpg

 

残りも出力し、結合するとフラグが得られる
$ cat ?.jpg