CTF
Forensic&Stego
CRYPTOLOGY
by watermelon
who am i?
西瓜
- 建電副社+學術
- 揪寒訓
- APCS忘記帶身分證的傻逼
- I人 不敢跟你打招呼一定是因為我社恐
- 什麼都學 啥都學不好
- 夜貓子
- :suicide:
- 貓戰/LOL 玩家

推個研究大攝影
Index
intro
Problems
Practice
這頁真是做的可有可無
這句也是
這句也是
這句也是
這句也是
這句也是
這句也是
這句也是
intro
{forensic&Stego}
{forensic&Stego}
{forensic&Stego}
-
經常用到的能力
- python
-
Hex
- 文件格式
- 檔案/封包資訊
-
工具使用
- binwalk
- stegsolve
- command line
- ...
{文件類}
{檔案格式}
-
是什麼決定了檔案格式?
-
副檔名(反轉字元檔案名稱植入攻擊) (RLO) - 檔案標頭
-
{文件標頭}
-
查看方法<linux>
- command line:
- file

{文件標頭}
-
查看方法<linux>
- command line:
- hexdump

{文件標頭}
-
查看方法<linux>
- command line:
- hexyl(需apt install hexyl)

{文件標頭}
-
查看方法<linux>
- command line:
- strings

{文件標頭}
-
查看方法
-
HexEd.it
- 免費線上工具
- 010editor WinHex
- 要錢 試用版
{文件標頭}
-
常見文件標頭(尾)(更多)
檔案類型 | 檔案開頭 | 檔案結尾 |
---|---|---|
.jpg(JPEG圖片) | FFD8FF | FFD9 |
.png(PNG圖片) | 89054E47 | AE426082 |
.zip(壓縮檔) | 504B0304 | 504B |
.gif(動圖) | 47494638或GIF89A | 003B |
.pdf(PDF) | 255044462D312E | 不一定 |
可以檢查有有沒有後面藏檔案或者套娃
{Metadata}
-
一群(能成為A資料的資訊)的資料
- 在這邊是指文件的資料
- 作者 建立年份 修改年份 等等
- tool
- windows:內容>詳細資料
- 在這邊是指文件的資料

{Metadata}
-
一群(能成為A資料的資訊)的資料
- 在這邊是指文件的資料
- 作者 建立年份 修改年份 等等
- tool
- linux:exiftool
- 用法:
exiftool file
- 在這邊是指文件的資料

{文件分離}
-
有些文件格式有結尾符號 讀完就不會繼續讀
- 在後面再塞一個文件
-
文件有內嵌格式
- 例:.zip(有"PK") .tar (壓縮檔) .iso (映像檔)
{文件分離}
-
分離工具:binwalk(完整進階用法)<linux>
- kali內建
- 分析:
binwalk file
- 分離:
binwalk -e file (-e 或者 --extract)
- 遞迴式分離:
binwalk -Me file
-
限制深度(預設為8):
binwalk -Me -d 5 file
(也可以用 --depth=5)

{文件分離}
-
分離工具:foremost
-
據說比較好用 我沒用過 有些kali版本沒有sudo apt install foremost
-
foremost file -o output_dir
-


{文件分離}
-
分離工具:dd (data duplicator)
-
低階(基礎、靠近硬碟)的資料處理工具 用爛容易整個硬碟爛掉 戲稱
data destroyer
-
參數
-
if=輸入檔案 of=輸出檔案
-
bs="塊"大小(每次讀入的size(例:1(1byte) 1M ...))
-
可選:count=讀幾次bs大小 skip=先跳過幾次bs大小
-
-
可以配合binwalk來找出skip是多少
-
{文件分離}
-
分離工具:dd (data duplicator)
-
dd if=input of=output bs=10 skip=100
-
input(不按比例)
跳過10bs*100個 = 1000 byte
output
{文件分離}
-
分離工具:dd (data duplicator)
-
dd if=input of=output bs=1M skip=100 count=60
-
input(不按比例)
跳過1M*100個 = 100Mb
output
讀入1M*60次=60Mb
{文件分離}
-
分離工具:winhex
-
windows下使用
-
{文件合併}
-
command<linux>
-
cat
貓 -
通常是用來讀取=>輸出(多個)檔案
-
cat file1 file2
-
-
指定輸出流到另一個檔案=合併檔案
-
cat file1 file2 > combined_file
-
-
{文件合併}
-
command<linux>
-
cat
貓 -
通常是用來讀取=>輸出(多個)檔案
-
cat file1 file2
-
-
指定輸出流到另一個檔案=合併檔案
-
cat file1 file2 > combined_file
-
-

{圖片類}
{stegsolve}
-
強大的圖片分析工具
- 基於java
- 有GUI(圖形使用者介面)
-
功能:
- 圖檔資訊
- 解析圖片疊合
- 圖檔處理
- 單幀播放
{stegsolve}
-
安裝
- 使用
cd ~/Desktop
wget http://www.caesum.com/handbook/Stegsolve.jar -O stegsolve.jar
chmod +x stegsolve.jar
mkdir stegsolve
mv stegsolve.jar stegsolve/
java -jar ~/Desktop/stegsolve/stegsolve.jar
{stegsolve}
-
這樣就成功了

{stegsolve}
-
左右方向鍵 不同顯示模式



原圖
反相(XOR)
紅色通道(紅的程度)
{stegsolve}
-
功能
-
File Format:
- 檔案資訊
-
顯示資料在不同格式下的內容
- ex: ascii hex...

{stegsolve}
-
功能
-
File Format :
- 檔案資訊
-
顯示資料在不同格式下的內容
- ex: ascii hex...


{stegsolve}
-
功能
-
File Format:
- 檔案資訊
-
顯示資料在不同格式下的內容
- ex: ascii hex...


{stegsolve}
-
功能
-
Data Extract:
- 分析最低有效位數(等等解釋)


{stegsolve}
-
功能
-
Stereogram Solver:
- 立體視覺圖(Stereogram)某種3d圖像
- 左右鍵調整offset


下載來自己試試看
{stegsolve}
-
功能
-
Stereogram Solver:
- 立體視覺圖(Stereogram)
- 左右鍵調整offset



{stegsolve}
-
功能
-
Frame Browser:
- 動圖逐幀解析(gif)

{stegsolve}
-
功能
-
Image Combiner
- 拿兩張圖片去做疊合
-
有不同演算法
- ex: XOR AND OR

{LSB}
-
老傻逼 -
最低有效位(Least Significant Bit) -
每一格像素 都有RGB
- 每一個RGB值都是兩個hex(0~16²-1)
- 轉成binary 最小的兩位(0~2²-1) if有變化肉眼難以察覺
- 可以用每一個像素的最低有效位來儲存訊息
- 有時候有"A" 表示"透明度"
-
工具:
- stegsolve>data extract
- zsteg file -a
- 一定適用於.png 但是.jpg可能有被壓縮的問題
{LSB}
-
老傻逼 -
最低有效位(Least Significant Bit)
#00ff37
- R:
- 0x00
- 0b00000000
- G:
- 0xff
- 0b11111111
- B:
- 0x37
- 0b00110111
#03fd35
- R:
- 0x03
- 0b00000011
- G:
- 0xfd
- 0b11111101
- B:
- 0x35
- 0b00110101
{LSB-stegslove}


不
同
顏
色
通
道
bit位數
行/列
從選取的最高最低開始
只有選一位=>沒差
通道與hex順序
預覽
{LSB-zsteg}
-
要自己下載
:gem install zsteg
- jpg不可用(會報錯)
- 使用方法: zsteg filename -a

{壓縮檔}
{偽加密}
-
zip檔案加密與否根據zip{hex目錄{檔案標頭}}
- 藉由修改檔header file(hex)假裝有加密/假裝沒有加密
- zip顯示沒有密碼卻沒有辦法加密 / 顯示有密碼but無從取得
- 用hex editor開啟zip檔案(推hexed.it)
{偽加密}
-
尋找504B0102(.zip的file header)(hex)
- hexEd.it的搜尋是從鼠標位置
一路搜尋到最後 所以如果鼠標
放在文件太後面找不到

0x不一定要加

找到惹
{偽加密}
-
找到從50算第一個往後數第9、10個
- 兩個hex算一組(原理是ascii)
- 要設定成沒有密碼就把他都改成 "00 00"
找到惹

{偽加密}
-
找到從50算第一個往後數第9、10個
- 兩個hex算一組(原理是ascii)
- 要設定成沒有密碼就把他都改成 "00 00"
找到惹


也可以從"0000" 改成"0900"假裝自己有密碼
{壓縮檔爆破}
-
ARCHPR(advance archive password recovery)
- 用於暴力破解
-
支援mask(遮罩/掩碼)
- 規定密碼格式
-
比如知道開頭是abc
然後後面是三個數字- mask:abc???
- 效率up
- 要錢 洗試用版

{壓縮檔爆破}

單純暴力破解需要14秒多
{壓縮檔爆破}
若知道部分資訊 加入Mask 速度快了要10倍

{題單}
https://play.picoctf.org/practice/challenge/186
https://play.picoctf.org/practice/challenge/19
https://play.picoctf.org/practice/challenge/74
https://play.picoctf.org/practice/challenge/305
https://play.picoctf.org/practice/challenge/129
https://play.picoctf.org/practice/challenge/205
https://play.picoctf.org/practice/challenge/423
(難):
https://play.picoctf.org/practice/challenge/112
CTF-Forensic&Stego
By idoit_melon
CTF-Forensic&Stego
- 186