文件寄生——寄生虫自体繁衍的道路
Hi,又跟大家見面了,相信大家看了上一篇文章《文件寄生——尋找宿主的不歸路(NTFS文件流實際應用)》后,都有看到局限性的一面。
沒看過上一篇文章的建議先去看完,然后再來看這篇文章,這樣相對可以更加的理解。
傳送門:https://bbs.ichunqiu.com/thre...
本文作者:i春秋簽約作家—gh0stkey
首先來解答一下很多人問得問題:
這個NTFS數據流文件,也叫Alternate data streams,簡稱ADS,是NTFS文件系統的一個特性之一,允許單獨的數據流文件存在,同時也允許一個文件附著多個數據流,即除了主文件流之外還允許許多非主文件流寄生在主文件流之中,它使用資源派生的方式來維持與文件相關信息,并且這些寄生的數據流文件我們使用資源管理器是看不到的。
2、為什么NTFS有數據流這個特性?
原意是為了和Macintosh的HFS文件系統兼容而設計的,使用這種技術可以在一個文件資源里寫入相關數據(并不是寫入文件中),而且寫進去的數據可以使用很簡單的方法把它提取出來作為一個獨立文件讀取,甚至執行。
3、為什么資源管理器里面看不到文件所帶的數據流文件呢?
我們之所以無法在系統中看到NTFS數據流文件,是因為Windows中的很多工具對數據流文件的支持并不是很好,就像“資源管理器”,我們無法在“資源管理器”中看到有關數據流文件的變化。
不過這個原因很奇怪,同樣是MS自己做的東西,"資源管理器都支持不好,還有啥工具能支持好呢?" ,后來再想,也可能是這樣一個原因:在當時寫有關NTFS文件系統的數據流存儲的時候很多WINDOWS工具沒有相應的更新,同時呢NTFS流的顯示與普通的文件不一樣,需要使用其他的枚舉方式來完成,再有NTFS對廣大普通用戶桌面用戶來說沒有必要去看到,更多的是被專業軟件所使用,即使顯示出來也沒意義。
OK,進入正題,那么我們今天來分析下NTFS文件流這個寄生蟲的一些“缺點”:
1.宿主需求,寄生蟲需要宿主才可以繁衍:
2.共存狀態。宿主死亡,寄生蟲隨之死亡。
局限點突破:
1.宿主需求
2.共存狀態
咱們一次性把這兩個問題解決,首先我們來測試下:
測試1:
一開始我是這樣測試的,輸入命令:echo mstsec>>hiurlife.txt
因為個人感覺無后綴名的會被windows自動隱藏起來,所以就這樣了,而實際上是自己想的有點多了~
測試2:
后來想了下,Windows資源管理器是可以隱藏文件的,而默認的服務器隱藏文件是看不見的,也就是說,宿主是可以隱藏的:
命令:attrib +s +h hi
解釋:attrib命令的意思,+s是為文件添加系統文件屬性,+h是添加隱藏屬性的意思。
反之使用命令attrib -s -h hi 即可顯示文件:
這邊即使改變了也不會造成寄生蟲的死去:
此方法可行,在一定的程度上保護了咱們的寄生蟲。
但是我這個人吧,有一個毛病,強迫癥,就感覺不舒服,于是就開始了更隱蔽的測試。
測試3:
我重新理了一下思路,既然是無宿主,那么就順著這個路線開始慢慢的推進,那就試試無宿主自體繁衍:
正常宿主寄生命令:echo gh0stkey>>www:hiourlife.txt
www是宿主文件,無宿主就刪掉www唄~
修改后的命令:echo gh0stkey>>:hiourlife.txt
可以看見,無宿主寄生,完全是可以的。測試3成功。
但是卻無法應用到實際的操作中,所以這里轉換了下思路,讓寄生蟲寄生到文件夾上即可:
echo gh0stkey>>/:hiourlife.txt
實際測試:
可以應用于權限維持、BypassWAF等等(功能的靠你們自己的思維分散了)。除非是專殺方面的工具,不然沒辦法檢測的出來文件流。而且據我了解一般的WindowsServer的運維是不怎么了解這方面的,倒是取證那一塊有這一方面的介紹,所以相對是安全隱蔽的。
總結
以上是生活随笔為你收集整理的文件寄生——寄生虫自体繁衍的道路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TestNG方法測试及注意要点 代码及配
- 下一篇: docker运行mywebsql