4ensiX

4ensiX

Forensics専門でなければ、CTFはDFIRの勉強にほとんど役立たないことをを知ったこの頃

UTCTF 2020 Forensics writeup

土, 07 3月 2020, 09:00 JST — 月, 09 3月 2020, 09:00 JST 2020/03/07 9:00 JST - 03/09 9:00に「zer0opsCTF 2020」の裏では、「UTCTF 2020」が行われておりました。ここで出題されたForesics問の話をする。とても易しくて分かりやすいものばかりであった。 ctftime.org

1 Frame per Minute

I recently received this signal transmission known as SSTV in a mode called Martian? This technology is all very old so I'm not sure what to do with it. Could you help me out?

与えられたファイルは、

# file signals.wav 
signals.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 48000 Hz

問題文を素直に受け取って良いのなら、SSTVでしょう。
SSTV
自分の場合は、RX-SSTVに再生した音声を聞かせて解いた。音が再生されると自動で録音してくれるが、雑音の少ないところでやりましょう。

f:id:Zarat:20200406171249p:plain
RX-SSTVに聞かせた。
flag: utflag{6bdfeac1e2baa12d6ac5384cdfd166b0}

Spectre

I found this audio file, but I don't think it's any song I've ever heard... Maybe there's something else inside?

与えられたファイルはコレ。

# file song.wav 
song.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 44100 Hz

おそらく、Spectreというからにはスペクトログラムを見るのではということでaudacityで開く。 f:id:Zarat:20200406173114p:plain メニューを開いて、スペクトログラムに切り替えると。 f:id:Zarat:20200406173339p:plain flag: utflag{sp3tr0gr4m0ph0n3}
一体どうやって作ったのか......

Observe_Closely

A simple image with a couple of twists... 与えられたファイルを見る。

# file Griffith_Observatory.png 
Griffith_Observatory.png: PNG image data, 320 x 155, 8-bit/color RGBA, non-interlaced
root@kali:~/CTF/UTCTF2020/UTCTF2020/Forensic/Observe_Closely# binwalk Griffith_Observatory.png 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 320 x 155, 8-bit/color RGBA, non-interlaced
41            0x29            Zlib compressed data, default compression
127759        0x1F30F         Zip archive data, at least v2.0 to extract, compressed size: 2587, uncompressed size: 16664, name: hidden_binary
130500        0x1FDC4         End of Zip archive, footer length: 22

binwalkを使って見たのは、何となく問題文からそんな気がしたからである。ファイルカービングは何でも良いが、今回はbinwalk -eでいく。

# binwalk -e Griffith_Observatory.png 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 320 x 155, 8-bit/color RGBA, non-interlaced
41            0x29            Zlib compressed data, default compression
127759        0x1F30F         Zip archive data, at least v2.0 to extract, compressed size: 2587, uncompressed size: 16664, name: hidden_binary
130500        0x1FDC4         End of Zip archive, footer length: 22

# cd _Griffith_Observatory.png.extracted/
# ls
1F30F.zip  29  29.zlib  hidden_binary

zipが暗号化されていなかった所為か、zipの中身も一緒に出ている。

# strings hidden_binary 
/lib64/ld-linux-x86-64.so.2
(snip)
Ah, you H
found meH
utflag{2H
fbe9adc2H
ad89c71dH
a48cabe9H
0a121c0}H
(snip)

動かすのが怖かったので、stringsを走らせた。
flag: utflag{2fbe9adc2ad89c71da48cabe90a121c0}

[basics]_forensics

My friend said they hid a flag in this picture, but it's broken! Now that I think about it, I don't even know if it really is a picture...

彼らの考えるForensicsとは一体何なのか、今明らかになる!
そんなことどうでもいいので、とりあえず与えられたファイルを見ていく。

# file secret.jpeg 
secret.jpeg: UTF-8 Unicode text, with CRLF line terminators

それはjpegではなかった。

# cat secret.jpeg | head

The Project Gutenberg EBook of The History of Don Quixote by Miguel de Cervantes

This eBook is for the use of anyone anywhere at no cost and with
almost no restrictions whatsoever.  You may copy it, give it away or
re-use it under the terms of the Project Gutenberg License included
with this eBook or online at www.gutenberg.net


Title: The History of Don Quixote

テキストファイルのようである。

# strings secret.jpeg | grep "utflag"
utflag{fil3_ext3nsi0ns_4r3nt_r34l}

flag: utflag{fil3_ext3nsi0ns_4r3nt_r34l}
これが、彼らの考えるForensicsであった......

The Legend of Hackerman, Pt. 1

My friend Hackerman tried to send me a secret transmission, but I think some of it got messed up in transit. Can you fix it?

では、そのHackermanさんから与えられたファイルがこちら。

# file hackerman.png 
hackerman.png: data

たぶんpngヘッダー直す系問題。

# cp hackerman.png fix.png
# hexedit fix.png 

自分は「hexedit」派。

f:id:Zarat:20200406175824p:plain
hexeditで開いてみた様子
間違いない。PNGといえば、

89 50 4E 47 0D 0A 1A 0A

から始まるので、このように書き換える。

# file fix.png 
fix.png: PNG image data, 1192 x 670, 8-bit/color RGBA, non-interlaced

f:id:Zarat:20200406181527p:plain
なんじゃそりゃ
flag: utflag{3lit3_h4ck3r}

最近はこんなものもあるらしい

GitHub - sherlly/PCRT: PCRT (PNG Check & Repair Tool), a tool to help check and fix the error in a PNG image.

# python PCRT.py -v -i fix2.png 

     ____   ____ ____ _____ 
    |  _ \ / ___|  _ \_   _|
    | |_) | |   | |_) || |  
    |  __/| |___|  _ < | |  
    |_|    \____|_| \_\|_|  
    PNG Check & Repair Tool 
Project address: https://github.com/sherlly/PCRT
Author: sherlly
Version: 1.1
    
[Detected] Wrong PNG header!
File header: 000000000D0A1A0A
Correct header: 89504E470D0A1A0A
[Notice] Auto fixing? (y or n) [default:y] y
[Finished] Now header:89504E470D0A1A0A
[Finished] Correct IHDR CRC (offset: 0x1D): 812E23AF
[Finished] IHDR chunk check complete (offset: 0x8)
[Finished] Correct IDAT chunk data length (offset: 0x2A1D length: 2000)
[Finished] Correct IDAT CRC (offset: 0x4A25): CB097594
(snip)
[Finished] Correct IDAT chunk data length (offset: 0x15F245 length: 1E83)
[Finished] Correct IDAT CRC (offset: 0x1610D0): 69353954
[Finished] IDAT chunk check complete (offset: 0x2A1D)
[Finished] Correct IEND chunk
[Finished] IEND chunk check complete
[Finished] PNG check complete
[Notice] Show the repaired image? (y or n) [default:n] y

直ったwow......
ヘッダーだけで解決しないときに良いかもしれない。

The Legend of Hackerman, Pt. 2

Ok, I've received another file from Hackerman, but it's just a Word Document He said that he attached a picture of the flag, but I can't find it...

またまたハッカーマンから何か来たようである。与えられたファイルがこちら。

# file Hacker.docx 
Hacker.docx: Microsoft Word 2007+

このようなOffice系ファイルやオープンドキュメント系ファイルは、とりあえずunzipして色々見てみることが多い。

# cp Hacker.docx Hacker.zip
# unzip Hacker.zip 
Archive:  Hacker.zip
(snip)
  inflating: word/media/image97.png  
  inflating: word/media/image102.png  
  inflating: word/media/image96.png  
  inflating: word/media/image101.png  
  inflating: word/media/image95.png  
  inflating: word/media/image100.png  
  inflating: word/media/image88.png  
  inflating: word/media/image58.png  
(snip)
  inflating: word/media/image27.png  
  inflating: word/media/image26.png  
  inflating: word/media/image25.png  
  inflating: word/media/image24.png  
  inflating: word/media/image169.jpeg  
  inflating: word/media/image37.png  
(snip)

大量に出てきた画像ファイルが明らかに怪しい。

# cd word/media/
# ls
image1.png    image12.png   image140.png  image161.png   image182.png  image37.png  image58.png  image79.png
image10.png   image120.png  image141.png  image162.png   image183.png  image38.png  image59.png  image8.png
image100.png  image121.png  image142.png  image163.png   image184.png  image39.png  image6.png   image80.png
image101.png  image122.png  image143.png  image164.png   image19.png   image4.png   image60.png  image81.png
image102.png  image123.png  image144.png  image165.png   image2.png    image40.png  image61.png  image82.png
image103.png  image124.png  image145.png  image166.png   image20.png   image41.png  image62.png  image83.png
image104.png  image125.png  image146.png  image167.png   image21.png   image42.png  image63.png  image84.png
image105.png  image126.png  image147.png  image168.png   image22.png   image43.png  image64.png  image85.png
image106.png  image127.png  image148.png  image169.jpeg  image23.png   image44.png  image65.png  image86.png
image107.png  image128.png  image149.png  image17.png    image24.png   image45.png  image66.png  image87.png
image108.png  image129.png  image15.png   image170.png   image25.png   image46.png  image67.png  image88.png
image109.png  image13.png   image150.png  image171.png   image26.png   image47.png  image68.png  image89.png
image11.png   image130.png  image151.png  image172.jpeg  image27.png   image48.png  image69.png  image9.png
image110.png  image131.png  image152.png  image173.png   image28.png   image49.png  image7.png   image90.png
image111.png  image132.png  image153.png  image174.png   image29.png   image5.png   image70.png  image91.png
image112.png  image133.png  image154.png  image175.jpeg  image3.png    image50.png  image71.png  image92.png
image113.png  image134.png  image155.png  image176.png   image30.png   image51.png  image72.png  image93.png
image114.png  image135.png  image156.png  image177.png   image31.png   image52.png  image73.png  image94.png
image115.png  image136.png  image157.png  image178.png   image32.png   image53.png  image74.png  image95.png
image116.png  image137.png  image158.png  image179.png   image33.png   image54.png  image75.png  image96.png
image117.png  image138.png  image159.png  image18.png    image34.png   image55.png  image76.png  image97.png
image118.png  image139.png  image16.png   image180.png   image35.png   image56.png  image77.png  image98.png
image119.png  image14.png   image160.png  image181.png   image36.png   image57.png  image78.png  image99.png

仕方がないので、順番に見ていく。
すると、「image23.png」にてflag発見。 f:id:Zarat:20200406183651p:plain flag: utflag{unz1p_3v3ryth1ng}

Zero

This file seems to be too large given how much text it contains, but I can find zero evidence of the flag. Maybe you'll have better luck than me?

与えられたファイルがこちら。

# file zero.txt 
zero.txt: UTF-8 Unicode (with BOM) text, with very long lines, with no line terminators
# cat zero.txt 
Lorem ipsum​​​​​​​ dolor ‌‌‌‌‍‍‍sit​​​​​​​​ amet​​​​​​​​​‌, consectetur ​​​​​​​adipiscing​​​​​​​‌‌‌ elit​​​​​​​.‌‌‌‌‍‬‌​​ Phasellus quis​​​​​​​ tempus​​​​​​ ante, ​​​​​​​​nec vehicula​​​​​​​​​​ mi​​​​​​​​. ​​​​​​​‌‌‌Aliquam nec​​​​​​​​​‌ nisi ut neque​​​​​​​ interdum auctor​​​​​​​.‌‌‌‌‍‍ Aliquam felis ‌‌‌‌‍‬‬‌orci​​​​​​​, vestibulum ‌‌‌‌‍‬‍sit ​​​​​​​amet​​​​​​​​​ ante‌‌‌‌‍‌‬ at​​​​​​​, consectetur‌‌‌‌‍‌ lobortis eros​​​​​​​​​.‌‌‌‌‍‍‍‌ ‌‌‌‌‍‌‌‌​​Orci varius​​​​​​​ ​​​​​​​natoque ‌‌‌‌‍‌penatibus et ‌‌‌‌‍‬‌​​magnis‌‌‌‌‌‌‍‌‌ dis ​​​​​​​‌‌‌parturient montes, ​​​​​​​nascetur ridiculus ‌‌‌‌‌‍‌​​mus. In finibus‌‌‌‌‌‌‬ magna​​​​​​‌‌‌‌ mauris, quis‌‌‌‌‍‬‌‍ auctor ‌‌‌‌‍‬‌‍libero congue quis. ‌‌‌‌‍‬‬‬Duis‌‌‌‌‍‬‌‬ sagittis consequat urna non tristique. Pellentesque eu lorem ‌‌‌‌‍‌‍id‌‌‌‌‍‬‬ quam vestibulum ultricies vel ac purus‌‌‌‌‌‌‍.‌‌‌‌‌‍‌‌‌

一見普通のテキストファイルだが、「zero evidence」が含まれている?
全然ぜ全然分からず、色々ガンバって辿り着いたのがこれ。

www.330k.info

Unicode ゼロ幅スペースを利用して情報を隠して仕込む - A painter and a black cat

そんなんあるんか!早速試してみる。

Unicode Steganography with Zero-Width Characters
f:id:Zarat:20200406192138p:plain すげーです。なぜかLinux環境で表示させたやつのコピペは上手くいかなかった。
flag: utflag{whyNOT@sc11_4927aajbqk14}