一.躲過防毒軟體,悄無聲息進入系統
木馬要進入使用者系統,首先要過防毒軟體這一關。否則一旦防毒軟體報警,木馬就無隱蔽性可言了,立馬被防毒軟體趕出系統。因此,面對防毒軟體,木馬使盡渾身解數,透過各種手段隱藏自己,比較常見的方法有:寄宿於正常檔案,木馬加殼加密,修改木馬特徵碼。
寄宿於正常檔案
這個方法就是將木馬程式與正常的檔案捆綁在一起,捆綁後會生成一個可執行檔案,當執行這個可執行檔案時,正常檔案和木馬程式都會同時執行,這樣木馬就可以隱藏自己,悄悄進入使用者的系統。要讓木馬實現這樣的效果比較簡單,只需要下載一個檔案捆綁器即可,這裡我們以木馬老大“灰鴿子”出口的檔案捆綁器為例。單擊“檔案捆綁器”上的“增加檔案”按鈕,選擇一個正常的可執行檔案,例如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,單擊“程序”按鈕即可。隱藏程序將會以紅色字型顯示。
一.躲過防毒軟體,悄無聲息進入系統
木馬要進入使用者系統,首先要過防毒軟體這一關。否則一旦防毒軟體報警,木馬就無隱蔽性可言了,立馬被防毒軟體趕出系統。因此,面對防毒軟體,木馬使盡渾身解數,透過各種手段隱藏自己,比較常見的方法有:寄宿於正常檔案,木馬加殼加密,修改木馬特徵碼。
寄宿於正常檔案
這個方法就是將木馬程式與正常的檔案捆綁在一起,捆綁後會生成一個可執行檔案,當執行這個可執行檔案時,正常檔案和木馬程式都會同時執行,這樣木馬就可以隱藏自己,悄悄進入使用者的系統。要讓木馬實現這樣的效果比較簡單,只需要下載一個檔案捆綁器即可,這裡我們以木馬老大“灰鴿子”出口的檔案捆綁器為例。單擊“檔案捆綁器”上的“增加檔案”按鈕,選擇一個正常的可執行檔案,例如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,單擊“程序”按鈕即可。隱藏程序將會以紅色字型顯示。