資料隱藏技術

wyzsk發表於2020-08-19
作者: Gump · 2016/01/29 16:30

0x00 前言


資料隱藏已經滲透到了生活中的方方面面,之前一直對資料隱藏很有興趣,但是烏雲上關於資料隱藏的文章偏少,看了隱寫術總結之後,我又去找了一些關於資料隱藏的資料,這裡來與大家分享和總結下其他一些比較常見的隱藏手段,如果有寫錯的地方請直接指出,謝謝。

0x01 vmdk隱寫


vmdk檔案大家應該都比較熟悉了,它本質上是物理硬碟的虛擬版,所以也會存在跟物理硬碟的分割槽和扇區中類似的填充區域,我們可以利用這些填充區域來把我們需要隱藏的資料隱藏到裡面去,這樣可以避免隱藏的檔案增加了vmdk檔案的大小(如直接附加到檔案後端),也可以避免由於vmdk檔案大小的改變所帶來的可能導致的虛擬機器錯誤。而且vmdk檔案一般比較大,適合用於隱藏大檔案。

這裡採用Dsfok-tools來對資料進行隱藏,通常這個工具是用來編輯vmdk檔案中的描述符。從這裡可以下載到該軟體。套件裡包含了dsfi工具可以對vmdk檔案進行嵌入。 我們首先來看下需要隱藏的檔案和它的大小

p1

p2

按照下載頁面的提示輸入命令

p3

嵌入完成後該vmdk檔案依然是可以繼續使用,而且虛擬機器並不會報錯。再來對嵌入的檔案進行提取。

p4

p5

這裡要提醒的是,如果長期執行該虛擬機器,隱藏在裡面的資料是很有可能被覆蓋掉,但是如果僅僅是作為資料隱藏的載體,除了需要提取的那個人外誰又在意這個問題呢,或許別人還巴不得這樣。

0x02 交換資料流


Windows NTFS檔案系統的交換資料流(ADS)也可以用於資料隱藏,對很多人來講或者已經很熟悉了,這裡也來做個小小的總結給不瞭解的同學開個頭吧。

交換資料流的誕生源於Windows系統與蘋果的HFS系統的互動需求,NTFS使用交換資料流來儲存檔案相關後設資料等等。

建立交換資料流是很簡單的

p6

並輸入This is hidden file

dir當前目錄是找不到剛才編輯的那個檔案的,只有一個0位元組的visiable.txt

p7

要用記事本開啟開啟剛才那個檔案直接輸入相同的命令就行了

在web安全中有時候還用得上ADS,如:

pkav之當php懈垢windows通用上傳缺陷

當時在網上看資料的時候發現其實有不少人理解錯了該漏洞的含義,原因就是不清楚ADS

對於 IIS6.0+PHP、IIS7.5+asp、IIS7.5+php 環境下,如果某目錄透過 HTTP Basic 來認證,假設其目錄下有 index.php 檔案,我們可以透過構造如下方式來繞過認證直接訪問其目錄下的檔案。

#!bash
/admin::$INDEX_ALLOCATION/index.php
/admin:$i30:$INDEX_ALLOCATION/index.asp

ADS結合保留裝置名來進行繫結,如:CON、NUL、COM1等等,這樣在一些情況下可以避開某些軟體對交換資料流的檢測。

使用這些保留裝置名作為目錄名或檔名的時候會被系統提示錯誤,但我們可以使用\\?\來取消字串的解析(通常這種方法用於Windows API程式設計),這樣就可以建立以保留裝置名為名的檔案或目錄

如:繫結cmd.exe到NUL檔案

p8

用wmic來執行即可

p9

p10

關於ADS在web安全中的利用的資料:
http://pan.baidu.com/s/1dDo9iQP 提取碼:1bft

xfocus上關於ADS的文摘:
http://www.xfocus.net/articles/200212/466.html

0x03 TCP中的資料隱藏


我們都知道TCP的典型3次握手

p11

我們可以利用該過程對資料進行隱藏傳送,如:

  1. 傳送方和接受方規定一個常數X
  2. 傳送方把要傳送的每個字元的ASCII值*X並放在SYN欄位中進行傳送
  3. 接受方把接受到的SYN值除以常數X獲得該字元的ASCII值

這種方法存在明顯的侷限性,就是每次只能傳送1到2個位元組,但是如果是用在隱藏傳送短金鑰或者短訊息之類的不妨也是個好的方法。

0x04 可執行檔案中隱藏


相比於jpeg檔案來說,可執行檔案能隱藏資料的空間非常小,jpge影像每17個位元組就可以隱藏1個位元組,而對於可執行檔案則是每150個位元組才可以隱藏1個位元組。對於可執行檔案的資料隱藏可以使用Hydan,不過不得不說這個軟體有點老,而且有時候還可能引入執行時錯誤。

0x05 在TTL欄位中隱藏


IP報文在路由間穿梭的時候每經過一個路由,TTL就會減1,當TTL為0的時候,該報文就會被丟棄。TTL所佔的位數是8位,也就是0-255的範圍,但是在大多數情況下通常只需要經過很小的跳數就能完成報文的轉發,遠遠比上限255小得多,所以我們可以用TTL值的前兩位來進行傳輸隱藏資料。

如:須傳送H字元,只需把H字元換成二進位制,每兩位為一組,每次填充到TTL欄位的開頭兩位並把剩下的6位設定為1(xx111111),這樣發4個IP報文即可傳送1個位元組。

0x06 後記


資料隱藏的範圍實在是太大,除了用來在傳輸中隱藏資料外,還可以用於作為一種防護手段,給文件等提供標識等。希望大家能在烏雲更多地交流關於資料隱藏方面的知識,相信你也會發現研究資料隱藏的樂趣的。

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章