利用windows的一個*.dll御截漏洞,可以實現在win9x,nt,w2k下進程的深度隱藏,按CTRL+ALT+DEL看不到,用終極防線也看不到,這是我的最新發現,想和大家一起討論,
我已實現了這一功能,源程在http://njhhack.freehomepages.com/source/hideproc.zip
我的oicq:10772919
e-mail:[email protected]
homepage:hotsky.363.net
-----------------
呵呵,各位兄弟,配合我的Delphi源碼,講一下它的工作原理吧,不過大家不要用來做壞事喲,我可是從不黑人的,誰讓我是人民教師喲,原理如下:
我編了個啟動程序winexec.exe用它來啟動install.dll這個安裝庫,install.dll中有個安裝函數用來啟動getkey.dll這個執行庫,getkey.dll裡面有我的木馬程序,這個getkey.dll庫被掛到explorer.exe的進空間中,然後winexec.exe和install.dll在內存中自動御載,但是getkey.dll仍在內存中運行(這就是*.dll的御載漏洞),因為這時系統中已沒有我的winexec.exe存在,所以按CTRL+ALT+DEL查不到有我的進程在運行,這就是進程三級跳.
呵呵,可是,大家知道getkey.dll是如何被掛到explorer.exe這個系統shell進程的地址空間中嗎,請聽我慢慢道來:
在windows系統中,要進入另一個進程的空間有很多方法,最標准的方法是微軟提供的系統級hook功能,大家知道當一個hook放入*.dll中時會成會系統級hook,這是它能收到所以系統中傳輸的消息,而且若消息是其它進程的線程發出或接收的,那麼該*.dll(就是我程序中的install.dll啦)會被強行映射到該進程的地址空間(比如說我的install.dll被映射到explorer.exe的進程空間中),這時install.dll就成了explorer.exe進程的一個調用模塊,這時在install.dll用createthread函數創建的線程會成為explorer.exe進程主線程的子線程,這樣我們就在explorer.exe的家中暫時有了一塊合法的土地,但這只是開始,因為我們的目標是隱藏自已的進程,所以要把winexec.exe在內存中去掉,但這不是我們想要的結果,大家想想,install.dll是由winexec.exe調用的,所以,當winexec.exe死掉後,install.dll也活不成,我們在explorer.exe中占下的一席之地就又沒了,那如何辦呢,呵呵,聽我慢慢講來:
上面我們說了,當install.dll在explorer.exe中安家後,我們創建的線程就是explorer.exe的子線程,那麼由install.dll中調用的*.dll(就是我們程序中的getkey.dll)也會成為explorer.exe的子模塊,根據*.dll的特殊性(就是我認為的*.dll的御載漏洞),在install.dll從內存中御掉後,被它調用的getkey.dll還在內存中好好的活著呢,呵呵,微軟真是個好寶寶,為我們提供了這麼好的駐留內存的機會,我想之所以這樣,是因為*.dll不可以成為另一個*.dll的擁有者,只有*.exe才能成為*.dll的擁有者吧,所以explorer.exe就成了getkey.dll的合法擁有者,呵呵,因為explorer.exe是微軟的好東東,所以永遠在內存中活著,那我們的好戰士getkey.dll當然靠著這棵大樹也在內存中活的好好的喲,這樣我們可愛的getkey.dll就永遠安全地在explorer.exe中安了家,呵呵,我們終於可以過河拆橋了,不要說我壞呀,我不要這麼做,可不這樣的話我的winexec.exe這會被人發現了呀,好可憐喲,這是你在getkey.dll中發出postmessage(findwindow(winexec,nil),wm_destroy,0,0)指令,就會讓討厭的winexec.exe(不對,是可愛的,只不過你的任務完成了,沒有了喲,呵呵)從內存中死掉,當然它的好兒子install.dll也會隨父而去,但我們可愛的getkey.dll確好好的活在內存中(啊啊,這是為什麼呀,gekey.dll的爺爺winexec.exe都死了,它的孫子getkey.dll為何不死呀,呵呵,別忘了喲,getkey.dll的繼父explorer.exe很有本事喲,它把它保護的好好的喲,所以死不了的啦),呵呵,明白了嗎,這時的內存中已經沒有了winexec.exe和install.dll的身影,只有getkey.dll存在,而且是explorer.exe的一個調用模塊,當然用CTRL+ALT+DEL只能看到好人explorer.exe,而winexec.exe送給它的壞兒子是看不到了啦,呵呵,如果你用prcview或用spy++,winsight包括各種深度查木馬程序(如終極防線)查的話,你只能看到getkey.dll在內存中,但調用者是explorer.exe(這是比爾的好孩子喲,沒人懷疑它做壞事吧,呵呵),所以就沒人理這個getkey.dll這個壞孩子啦,呵呵,若實在有高手認為它可疑,那好吧,我們加工加工,把getkey.dll的名字改成winsock.dll,然後放在和windows中自帶的winsock不同的目錄中,呵呵沒人懷疑這個文件吧,當然把getkey.dll的版權信息改成是微軟的更好啦,呀呀,比爾你不要生氣呀,誰叫你這麼壞哪,呵呵,我走了..............