LoginSignup
0
0

More than 1 year has passed since last update.

メモリフォレンジックCTF「MemLabs」Lab3のWriteUp(Volatility3)

Posted at

はじめに

前回に続きLab3を解いていく,また使用するツールなどの備忘録を残す.

MemLabs

P.Abhiram Kumar氏が公開しているCTFスタイルでメモリフォレンジックを学ぶことができる教材で,Githubにて公開されています。

Writeup

使用したツール

  • steghide
  • feh

問題

A malicious script encrypted a very secret piece of information I had on my system. Can you recover the information for me please?
Note: This challenge is composed of only 1 flag and split into 2 parts.
Hint: You’ll need the first half of the flag to get the second.
You will need this additional tool to solve the challenge,
$ sudo apt install steghide
The flag format for this lab is: inctf{s0me_l33t_Str1ng}

悪意のあるスクリプトによって、私のシステム上にある非常に秘密の情報が暗号化されました。
あなたは私のために情報を回復することができますか?
注1:この課題は、1つのフラグのみで構成されています。フラグは2つの部分に分かれています。
注2: あなたは2番目のフラグを取得するために、フラグの前半が必要になります。
この課題を解決するためには、この追加ツールが必要です。
$ sudo apt install steghide
このラボのフラグのフォーマットは次の通りです:inctf{s0me_l33t_Str1ng}。

初動調査

取り敢えず,メモリダンプ取得時に起動していたプロセス情報を確認.
画像_2023-01-03_155350136.png
気になる点としては,notepad.exe(PID:3432,3736)が2つ起動していますが,それ以外に特に目立つアノマリは見つけられず..
取り敢えず,起動時のコマンドライン引数を調査してみる.

$ vol3 -f MemoryDump_Lab3.raw windows.cmdline --pid 3432 3736
olatility 3 Framework 2.4.1
Progress:  100.00		PDB scanning finished                        
PID	Process	Args

3736	notepad.exe	"C:\Windows\system32\NOTEPAD.EXE" C:\Users\hello\Desktop\evilscript.py
3432	notepad.exe	"C:\Windows\system32\NOTEPAD.EXE" C:\Users\hello\Desktop\vip.txt

Flag前半

evilscript.pyvip.txtをnotepad.exeで開いていることが分かるので,まずはevilscript.pyをダンプしていきたいと思う.

$ vol3 -f MemoryDump_Lab3.raw windows.filescan | grep -i evilscript.py
0x3de1b5f0 100.0\Users\hello\Desktop\evilscript.py.py	128
$ vol3 -f MemoryDump_Lab3.raw windows.dumpfiles --physaddr 0x3de1b5f0

ダンプしたファイルを開くと,以下のようなコードが組まれていました.

evilscript.py
import sys
import string
def xor(s):
	a = ''.join(chr(ord(i)^3) for i in s)
	return a
def encoder(x):
	return x.encode("base64")
if __name__ == "__main__":
	f = open("C:\\Users\\hello\\Desktop\\vip.txt", "w")
	arr = sys.argv[1]
	arr = encoder(xor(arr))
	f.write(arr)
	f.close()

1. コマンドライン引数として文字列を受け取る
2. その文字列を個々の文字に分解し、各文字を3でXORする
3. XORされた文字列をBase64としてエンコードする。
4. Base64エンコードされた文字列をファイルvip.txtに書き込む
というわけでvip.txtをダンプしに行きます.

$ vol3 -f MemoryDump_Lab3.raw windows.filescan | grep -i vip.txt
0x3e727e50 100.0\Users\hello\Desktop\vip.txt	128
$ vol3 -f MemoryDump_Lab3.raw windows.dumpfiles --physaddr 0x3e727e50

vip.txtの中身は以下のようになっていました.

vip.txt
am1gd2V4M20wXGs3b2U=

evilscript.pyの逆の処理を組んでもいいですが,めんどくさいのでCyberChefという便利なツールを使いました.
非常に楽ですね,OutputにFlagの前半が出力されてました.
画像_2023-01-03_172322080.png

Flag前半
Flag前半
inctf{0n3_h4lf

Flag後半

問題文にもあるように今回の問題ではsteghideを使用することが言及されているので,調査してみる,
ちなみに,steghideはBMP,JPEG,AU,WAVファイルに対して使用できるため,まずはこれらのファイルを中心に調査する.

$ vol3 -f MemoryDump_Lab3.raw windows.filescan | grep -i ".bmp"
0x361519f0 100.0\ProgramData\Microsoft\User Account Pictures\user.bmp	128
0x3dea1978	\Python27\Lib\test\imghdrdata\python.bmp	128
$ vol3 -f MemoryDump_Lab3.raw windows.filescan | grep -i ".jpeg"
0x4f34148  100.0\Users\hello\Desktop\suspision1.jpeg	128

ここまでで,suspision1.jpegが気になるのでダンプしてツールにかけてみる.
ツールにかけてみると,パスワードがかかっておりファイルの抽出をできなかったが,当たりのようだ.
次にパスワードを探しに行きたいと思う.

$ vol3 -f MemoryDump_Lab3.raw windows.dumpfiles --physaddr 0x4f34148
$ file suspision1.jpeg 
suspision1.jpeg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 256x197, components 3
$ steghide info suspision1.jpeg 
"suspision1.jpeg":
  format: jpeg
  capacity: 581.0 Byte
Try to get information about embedded data ? (y/n) y
Enter passphrase: 
steghide: could not extract any data with that passphrase!

ちなみに,画像は次のようになっている.
画像_2023-01-03_180407824.png
ここで,問題の注釈を振り返ると次のような記載があるため,前半のFlagをパスワードとして入力してみるとファイルの抽出が行われFlagの後半が手に入った.

あなたは2番目のフラグを取得するために、フラグの前半が必要になります。

$ steghide extract -sf suspision1.jpeg -p inctf{0n3_h4lf
wrote extracted data to "secret text".
Flag後半
Flag後半
_1s_n0t_3n0ugh}
Flag
Flag
inctf{0n3_h4lf_1s_n0t_3n0ugh}

おまけ

Flag前半でevilscript.pyを調査するタイミングで,Recentにevilscript.py.lnkが作成されており,最近使用したファイルであることが分かる.

$ vol3 -f MemoryDump_Lab3.raw windows.filescan | grep -i evilscript.py
0x3de1b5f0 100.0\Users\hello\Desktop\evilscript.py.py	128
0x3e727490	\Users\hello\AppData\Roaming\Microsoft\Windows\Recent\evilscript.py.lnk	128
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0