“目前流行的木馬,特別是盜取密碼的木馬,差不多都是這樣的。”我的好奇心又被勾起來了,“這個木馬有什麽特別之處嗎?”
“這是一個應用了遠程線程動態嵌入技術的dll木馬,它通過提升權限的方法把interinfo.exe這樣的係統進程當成自己的宿主進程。因此發現和查殺都十分的困難。”
“遠程?線程?動態?dll?”秦思偉一下子聽到這麽多術語,表情一片茫然。
“動態嵌入是dll木馬使用的一種技術,而遠程線程技術是實現動態嵌入的一種方式。”我隻好用比較通俗的語言解釋給他,“理論上來說,每個進程都有自己的私有內存空間,別的進程是不允許對這個私有空間進行操作的。但是實際上,黑客仍然可以利用諸如動態嵌入這些方法進入並操作進程的私有空間,也就擁有了與那個遠程進程相當的權限。這樣做的目的,是讓木馬的核心代碼運行於別的進程的內存空間,這樣不僅能很好地隱藏自己,也能更好地保護自己。”
“正確。”丁博士頷首微笑,“不過這個木馬最讓我吃驚的地方是,它還采用了類似三線程的機製實現自我保護。”
“不是遠程線程嗎?怎麽又三線程了?”秦思偉越聽越糊塗了。
“是這樣的。”我繼續給他掃盲,“最近一段時間,很多黑客采用了三線程這種技術保護自己的木馬。簡單地說,就是將想執行的代碼放在進程的主線程裏,然後再生成兩個輔助線程,一個駐留在主進程體內,另一個通過創建遠程線程駐留到其他正在運行的進程體內。駐留主進程體內的輔助線程同時觀察注冊表和遠程進程的情況。駐留在遠程進程體內的輔助進程則監視主進程的運行情況。如果主進程被kill了,它會確認程序的可執行文件是否也被刪除掉了。如果係統目錄下的可執行文件不存在了,則用備份的文件恢複可執行文件,然後再重新啟動。不過博士,dll木馬本身是非進程的木馬,怎麽會又用到三線程呢?”