ctf與隱寫


本文是對簡單隱寫和ctf中隱寫思路的一個小總結
推薦我的另兩篇博客
常見文件格式特征
ctf常用隱寫工具介紹

隱寫的載體

文本、圖像、音頻、視頻

文本隱寫

1、利用文檔格式:行移、子移、字符顏色、字符字體等,如行移,調整文本數據的垂直行距,比如上移為1下移為0。字移,每一行的字符,左右移動。將字符顏色調整為和背景相同的顏色白色。
2、利用空格回車標點:添加空格,回車,或者使用逗號句號,或者英文版和中文版的標點等
3、利用字符特征:將兩個字符縮小間距,使其看起來為一個字符
4、利用自然語言:同義詞替換,或者句法變換,如把字句和被字句
5、利用office中自帶的隱藏功能:
在word中選中要隱藏的文字,右鍵,選擇字體,選擇隱藏,確定后發現這幾個字不見了,而word中字數統計也相應減少。
通過文件->選項->顯示->勾選隱藏文字,即可顯示出隱藏的文字
6、另:
可以對文檔設置編輯保護,文檔可以打開,無法編輯
設置方法:導航欄上的審閱->限制編輯->勾選編輯限制->啟動強制保護->設置密碼
在不知密碼的情況下,解除編輯保護的方法:
https://jingyan.baidu.com/article/624e74597d9abd34e8ba5a84.html


可以對文檔設置保護密碼,輸入密碼才可以查看

有個工具叫AOPR,可以暴力破解

圖片隱寫

雙圖隱寫

兩種情形

  • 只有一張圖片一張圖片藏在另一張圖片中
  • 有兩張或者多張圖片,需要這幾張圖片經過運算

兩種隱寫方式

1、圖像直接拼接

將一張圖像的數據附在一張圖像數據的后面。因為讀到文件結尾處就結束了,所以只會顯示一張圖片
在windows中可以通過命令實現這一隱藏
copy /b 載體文件 + 隱藏的文件 新文件

用winhex打開生成的3.jpg,發現在jpg的文件結束符FF D9后又附有數據且為89 50 41 47這是png文件的特征。

可以在winhex中,復制后段數據到一個新的文件,即可提取隱藏圖片

2、圖像運算

涉及對兩張或更多圖片的像素進行與,或,異或,移位等操作

ctf中題目類型

類型 特征 方法
直接拼接 只有一張圖,無任何提示,或直接提示圖片中隱藏有一張圖 直接將插入的數據提取
間接拼接 圖像結尾有大量冗余信息 需要先將信息提取出來,再經過解碼等操作
修改文件格式 文件無法正常打開或顯示不全 需要對文件格式有了解,修改或補全相應特征數據
雙圖疊加 縮略圖與放大圖不一致,或在winhex中出現ps的軟件的標記 采用stegsolve進行運算
雙圖運算 給出的兩張圖片看起來完全相同或屬於同一風格 采用stegsolve進行運算
一圖分多圖 分離出多張圖片 如果每張圖片都能分析出信息,則信息拼接,不能,則多圖運算

bugku平台的這道題http://123.206.87.240:8002/misc/1.jpg用winhex打開圖片發現結尾有冗余信息key{you are right}明顯是html編碼,解碼后得flag

bugku平台的這道題https://ctf.bugku.com/challenges#隱寫3修改文件的寬度和高度使其顯示圖片的全部即可

算法隱寫

根據提示或工具確定隱寫算法,根據算法進行檢測,提取隱藏信息

涉及的概念

時域:自變量是時間,即橫軸是時間,縱軸是信號的變化
頻域:自變量是頻率,即橫軸是頻率,縱軸是該頻率信號的幅度
空域:圖片上的空域是像素域
空域和時域可以通過傅里葉變換到頻域

光學三原色紅綠藍
顏料三原色紅黃藍

LSB算法

最低有效位替換算法
圖像中的每一個點都是由rgb(紅綠藍)三原色組成,三種顏色又組合成其它顏色,每種顏色占八位,修改每種顏色值的最低位
一個像素點包含三種顏色,每個顏色修改最后三位,一個像素可以攜帶三位信息
載體不能經過有損的壓縮,一般是png和bmp這種位圖的格式


以下基本為針對jpg格式圖像的隱寫算法

jsteg算法

針對jpg圖像,對量化后的DCT系數(不包括系數0和1)進行最低有效位替換
嵌入時可以采用隨機嵌入或者順序嵌入。順序嵌入容易通過卡方分析監測出來。
卡方分析:因為如2如果嵌入0會變成2,嵌入1會變成3,3嵌入0會變成2,嵌入1會變成3,這樣會在量化的DCT直方圖中出現對效應,即2和3出現頻率相同,4和5出現頻率相同。而正常圖像卻不是這樣的
對效應如下圖

f3算法

  • 如果DCT系數的最低位與要嵌入的信息相同,則不變
  • 不同則絕對值減1
  • 0系數不嵌
  • 如果是絕對值為1的系數嵌入比特0時,嵌入無效,要在下一個系數中重新嵌入

這樣導致DCT系數的0增多,且直方圖向中央靠攏,也容易被分析

f4算法

  • 規定DCT系數中,正奇數和負偶數代表1,正偶數和負奇數代表0
  • 如果系數代表的比特位與要嵌入的信息相同,則不改,否則,絕對值減1
  • 產生新的0的系數時,視為無效嵌入,在下一個系數中重新嵌入

f5算法

進一步升級,引入了矩陣編碼技術。將1比特的信息隱藏在\(n=2^{k}-1\)個符合要求的DCT系數中,其中n為需要使用的比特數,k為嵌入信息的比特數

jphide算法

  • 解壓jpg圖像得到DCT系數
  • 根據用戶提供的key值進行blowfish生成偽隨機序列來尋找DCT系數
  • 將對應DCT系數進行最低有效位替換
  • 重新壓縮

outguess算法

同樣對DCT系數進行修改,同樣不修改為0和絕對值為1 的系數,只是隨機決定嵌入位置,並且進行糾正,即修改未嵌入信息的DCT系數,以消除統計特征的變化

ctf中題目類型

類型 特征 思路
LSB隱寫 給出的是bmp或png格式的圖像,或者有最低位的提示 編程或用工具stegsolve獲取各個通道的最低位,得到的信息可能要變為二維碼或者是文本字符信息
jpg圖像隱寫 可能會有key值的提示 通過stegdetect檢測隱寫方式,如果需要key值則要找到
自定義算法隱寫 包含算法的暗示或工具 根據提示找到對應算法

音頻隱寫

兩種情況:
1、音頻的波形或頻譜為某種編碼或密碼,找到后進行解碼解密即得到隱藏信息
2、音頻文件中嵌入了數據,需要提取出來,得到隱藏信息

基於波形的隱寫

波形圖中橫坐標是時間,縱坐標是幅值。通過對圖像的控制可以模擬為一種編碼或密碼
可以在波形圖中隱藏莫斯電碼,隱藏二進制數據

基於頻譜圖的隱寫

頻譜是波形經過傅里葉變換得到的,橫坐標是頻率,縱坐標是幅值,表示各某時間點上各頻率正弦波的幅值大小,越亮的地方表示這個頻率越響
若波形圖無法看出隱藏信息,可以轉換成頻譜圖

使用mp3stego的隱寫

在音頻文件中嵌入比特流,需要使用密碼
寫入:encode -E 隱藏的文件 -P 口令密碼 載體音頻文件 生成的文件
讀取:decode -X -P 口令密碼 文件名


另:還用有雙音多頻,雙聲道等多個ctf隱寫問題

壓縮包

涉及方面:

爆破、碰撞、偽加密、已知明文分析

文件頭特征

壓縮包有三種壓縮格式rar、7z、zip

zip加密

zip有無加密,真加密,偽加密,三種狀態
zip有數據區和目錄區,只有兩個區的全局方式標志位都為加密位時才是真加密
數據區:50 4B 03 04 數據區標志開頭 后2個字節為解壓文件所需要的版本 后2個字節數據區加密標記位
目錄區:50 4B 01 02 目錄去標志開頭 后2個字節為壓縮文件所使用的版本 后2個字節解壓文件所需要的版本 后2個字節目錄區加密標志位
加密標志位只要是奇數位就表示加密位 偶數不加密

ctf中題目類型

類型 特征 思路
壓縮包+圖片 壓縮包附在圖片后,或者圖片隱藏壓縮包
壓縮包加密 密碼以注釋等其它提示形式給出
壓縮包偽加密 密碼沒有給出,加密標志位異常 修改對應的標志位
壓縮包爆破 密碼沒有給出,加密標志位正常 archpr進行爆破
crc32碰撞 當壓縮包被加密,但文件為純文本文檔,且大小很小時 涉及程序編寫,一般用Binascii 和string庫string.ascii_letters
壓縮包已知明文攻擊 壓縮包為zip格式,給出了其中的一個明文,明文的crc32與壓縮包中的密文crc32一致 archpr進行爆破

視頻隱寫

與其他結合,最多的是信息隱藏在視頻的幾個幀中
以嘶吼2019ctf的一道題為例
首先得到的是一個mp4文件,叫做黃金6年,觀看沒有發現異常
之后用winhex,在結尾處發現可能為base64編碼

對其解碼,發現無法正常顯示解碼,可能為2進制數據
用Python編寫程序解碼發現rar標記

所以將其解碼並保存為rar壓縮包

import base64

str = 'UmFyIRoHAQAzkrXlCgEFBgAFAQGAgADh7ek5VQIDPLAABKEAIEvsUpGAAwAIZmxhZy50eHQwAQADDx43HyOdLMGWfCE9WEsBZprAJQoBSVlWkJNS9TP5du2kyJ275JzsNo29BnSZCgMC3h+UFV9p1QEfJkBPPR6MrYwXmsMCMz67DN/k5u1NYw9ga53a83/B/t2G9FkG/IITuR+9gIvr/LEdd1ZRAwUEAA=='

result = base64.b64decode(str)
print(result)
f = open(r'C:\Users\Guoyang\Desktop\my.rar', 'wb')
f.write(result)

發現有密碼

確認不是偽加密后,試圖先從視頻中尋找密碼
用工具potplayer打開,一幀一幀播放,發現
四張二維碼,掃描,將得到的信息拼接為iwantplayctf,解開數據包得flag




  • 圖片中的exif信息也可能隱藏信息,並且圖片中的這個信息也可能泄露個人隱私。通過查看圖片屬性中的詳細信息可以簡單查看,也有專門的工具輔助查看。
  • 在pdf文件中隱寫。使用webstego4open工具,這個程序利用pdf文件頭添加信息。
  • 可以在可執行文件中隱寫
  • 在html中隱寫,通過注釋等
  • 隱寫分析
    • 隱寫工具一般會在隱寫的文件加入特定的標識,可以通過標識判斷
    • 也可以通過相應統計分析識別
    • 現在還有一些設計深度學習的方法
  • 一些其它的隱藏技術
    • 卡爾達諾柵格碼。通信雙方會事先有一塊柵格,即一塊板中按一定規律挖出小窗格。秘密信息藏在一段信息中。用柵格板蓋住消息,小窗格中漏出來的信息就組成了隱藏的消息。
    • 隱形墨水
    • 縮影術
    • 打印機跟蹤點
  • 信息隱藏入門讀物《數據隱藏技術揭秘:破解多媒體、操作系統、移動設備和網絡協議中的隱秘數據》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM