Ⅰ 怎樣讓木馬隱藏的更好
一.躲過殺毒軟體,悄無聲息進入系統
木馬要進入用戶系統,首先要過殺毒軟體這一關。否則一旦殺毒軟體報警,木馬就無隱蔽性可言了,立馬被殺毒軟體趕出系統。因此,面對殺毒軟體,木馬使盡渾身解數,通過各種手段隱藏自己,比較常見的方法有:寄宿於正常文件,木馬加殼加密,修改木馬特徵碼。
寄宿於正常文件
這個方法就是將木馬程序與正常的文件捆綁在一起,捆綁後會生成一個可執行文件,當運行這個可執行文件時,正常文件和木馬程序都會同時運行,這樣木馬就可以隱藏自己,悄悄進入用戶的系統。要讓木馬實現這樣的效果比較簡單,只需要下載一個文件捆綁器即可,這里我們以木馬老大「灰鴿子」出口的文件捆綁器為例。單擊「文件捆綁器」上的「增加文件」按鈕,選擇一個正常的可執行文件,例如Flash小游戲等。再次單擊該按鈕將我們的木馬程序也添加進來。需要捆綁的文件添加完成後,我們可以在「捆綁器」下方為捆綁後生成的文件指定一個文件圖標。最後單擊「捆綁文件」,即可將兩個文件捆綁成一個可執行文件。
雖然這種方法比較簡單,但是效果不佳,碰上殺毒能力強勁的殺毒軟體,木馬還是會被逮個正著。
二.木馬加殼加密
「殼」是一種專門保護軟體的程序,當運行一款加過殼的軟體時,首先會運行這個軟體的殼,殼會將包含在其中的程序進行還原,給予使用。當使用完畢後,殼又會將程序進行加密,整個過程都是在殼的保護過程中進行的。
正因為殼的性質,木馬會進行加殼操作以使自身得到加密,這樣就給殺毒軟體的查殺帶來了難度。不過目前主流的殺毒軟體都改進了其殺毒引擎,增強了加殼程序的檢測,對於加過殼的程序,殺毒軟體會先將其脫殼,再進行查殺。因此如果木馬使用的是類似ASP、UPX這樣的熱門加殼軟體,那麼還是很難逃過殺毒軟體的查殺的,除非使用一些冷門的加殼軟體。
修改木馬特徵碼
這應該是最為有效的躲避殺毒軟體的方法。我們都知道,殺毒軟體判定這個程序是否是病毒是通過特徵碼來決定的,如果在這個程序中有一段代碼與殺毒軟體中的病毒特徵碼對上號,那麼就判定它是病毒。根據這個原理,我們是否只要讓木馬的代碼與殺毒軟體的特徵對不上號,就可以躲過殺毒軟體的查殺呢?答案是肯定的,修改木馬的特徵碼需要使用16進制編輯器,例如UltraEdit、Winhex等。修改特徵碼可以採用兩種方法:1、直接修改特徵碼:用16進制編輯器打開木馬後,將其中的特徵碼都替換為0;2、增加跳轉指令:在木馬特徵碼處增加一條跳轉指令,讓程序運行到該處時跳到下一段代碼,這樣做的目的是使殺毒軟體檢測時跳過這段代碼的檢測。
防範:在這一部分,木馬的隱藏手段對我們的威脅還是比較小的。只要有足夠的安全意識,就可以將木馬拒之門外。
首先我們來看看如何對付經過捆綁的木馬文件。由於捆綁文件是由兩個文件合並生成的,雖然我們只能看到一個文件,但是可以在這個文件的內部找到捆綁的蛛絲馬跡。這里我們使用「木馬捆綁剋星」這款軟體就可以讓木馬原形畢露。單擊程序界面上的「掃描」按鈕,瀏覽選擇可疑文件,如果程序下方的「包含多個可執行文件」選項被打上鉤,這就表示文件被捆綁了。
至於對木馬程序進行加殼,曾經是很流行的一種木馬隱藏手段,但是隨著殺毒軟體的升級,木馬已經很難再有效地利用這種手段。根據殼的原理我們可以得知,加殼木馬運行後,會將其中的木馬程序在內存中還原。還原後的木馬是不受殼的保護的,因此大部分的殺毒軟體都會抓住這個機會,將木馬鏟除。
如果唯一能對殺毒軟體造成一點危害的,就只剩下修改木馬特徵碼這種隱藏手段了。不過不同的殺毒軟體提取同一木馬程序的特徵碼是不同的。這就意味著我們改一處特徵碼只能躲避一款殺毒軟體的查殺,如果要躲避多款殺毒軟體,就需要修改多處特徵碼。這會對木馬隱藏自己造成一定的困難。因此如果有條件,安裝兩款殺毒也是一個不錯的辦法。
三.隱藏窗口、設置文件屬性、自我刪除
隱藏窗口
木馬的服務端程序是一個可執行程序,和我們在Windows上使用的絕大多數的軟體相同,都是標準的Win32程序。不同的是,我們運行普通的可執行程序時,會出現軟體窗口,我們可以在這個軟體窗口中進行操作。而木馬的服務端運行後,卻沒有出現窗口,這是因為木馬服務端程序在編寫的過程中將其窗口屬性設置為隱藏,也就是說,木馬服務端運行後的窗口是存在的,只是我們無法看到而已。
設置文件屬性
木馬為了隱藏在用戶系統中生成的文件,通常會設置文件的屬性為「隱藏」和「系統」,這樣我們就無法在普通模式下看到木馬的文件。
自我刪除
自我刪除是木馬最初就具有的一種功能,當運行木馬服務端程序後,服務端程序會將自身刪除。這樣做的目的是清除留下的痕跡,達到隱藏自身的效果。
防範:隱藏窗口和刪除自身是木馬服務端最常用的功能,雖然可以在一定程度上隱藏自己,但是也會因此而暴露自己。當我們雙擊一個可執行程序,結果沒有出現任何窗口,或者運行後這個可執行文件消失了。那麼我們很有可能中了木馬,因為這是運行木馬服務端最基本的兩個特徵。
設置文件屬性是木馬和病毒樂此不疲的隱藏手段,雖然手法簡單,但效果不錯。破解的方法也比較簡單,點擊資源管理器的「工具」菜單→「文件夾選項」,切換到「查看」標簽,將「隱藏受保護的操作系統文件」前面的鉤去掉,同時選擇「顯示所有文件和文件夾」選項,即可讓隱藏的木馬文件現形。
四.進程隱藏,遁地於無形
稍懂得安全保護知識的朋友都會通過任務管理器查看是否有可疑進程,以此確定木馬的存在。不過隨著木馬編寫技術的提高,在任務管理器中查找木馬的方法不再是100%的有效。通過Hook技術編寫的木馬可以實現進程的隱藏和進程的插入。即使木馬在系統中運行,我們在任務管理器中也只能看到正常的進程,而無法看到木馬的進程。在了解這種隱藏技術之前,我們有必要先了解一下什麼是Hook。
什麼是Hook
Hook是Windows中提供的一種用以替換DOS下「中斷」的一種系統機制,中文譯名為「掛鉤」或「鉤子」。在對特定的系統事件進行Hook後,一旦發生已Hook的事件,對該事件進行Hook的程序就會收到系統的通知,這時程序就能在第一時間對該事件做出響應,木馬程序便搶在函數返回前對結果進行了修改。
傳統的進程隱藏技術
在Windows98系統中有一種能將進程注冊為服務進程的技術。這種技術稱為RegisterServiceProcess。通過這種技術,任何程序的進程都能將自己注冊為服務進程,也就是說木馬可以將自己的進程注冊為服務進程。而服務進程在Windows98中的任務管理器中是不顯示的。這樣我們就無法通過任務管理器找到木馬的進程。
通過Hook的進程隱藏
傳統的進程隱藏技術到了Windows2000以後就毫無用武之地,因為在Windows2000以後的系統中,服務進程也是在任務管理器中顯示的,例如svchost.exe進程,該進程是一個服務進程,我們可以在Windows2000的任務管理器中看到,而在Windows98下則不可以。此路不通,另尋他路。傳統進程隱藏技術落後後,木馬又轉而使用Hook技術的進程隱藏。
新型的進程隱藏技術基本都是通過Hook來實現的。例如我們熟悉的灰鴿子木馬,其通過Hook技術對系統中所有程序的進程檢測相關API的調用進行了監控,「任務管理器」之所以能夠顯示出系統中所有的進程,也是因為其調用了EnumProcesses等進程相關的API函數。由於灰鴿子事先對該API函數進行了Hook,因此「任務管理器」返回給我們的信息是不真實的,是被Hook過的信息,而有關木馬的進程信息已經被悄悄的處理掉了。
防範:使用「Windows優化大師」集成的「進程管理」工具。運行「Windows優化大師」→「系統性能優化」→「系統安全優化」→「進程管理」。在其中選擇一個進程,然後將下方的進程狀態切換到「模塊列表」標簽,一般的隱藏進程都會在這里現形。
至於採用Hook技術的進程隱藏,我們無法使用一般的工具來檢查,不過有一款被喻為「反黑之刃」的軟體──Icesword,可以將通過Hook技術隱藏的木馬進程統統挖掘出來。Icesword我們曾經做過專門的介紹,在此不在闡述。用Icesword查看隱藏進程方法:運行Icesword,單擊「進程」按鈕即可。隱藏進程將會以紅色字體顯示。