FANDOM


Infected goat

被Diamond.1050感染過的Goat程式,原本只是10,000個位元組。

Goat是一種用以自我「犧牲」的程式,一般用作測試各種電腦病毒的檔案。Goat執行的內容通常都是一些對系統沒有實際作用的程式碼,例如以NULL(ASCII 0)、NOP指令(ASCII 90h),又或者一些可執行的亂碼來填充。它最大的作用是可以代替一般的程式來測試病毒,研究完畢後可以隨意刪除,幾乎不會造成任何損失。

Goat檔案可以說是一個電腦病毒的最佳載體(除非該病毒會自我加密),它一般都能載著完整的病毒碼,而且因為寄主的內容跟病毒碼內容構成極大對比,在研究的時候可以省掉很多找尋病毒程式碼的時間。

現在仍流傳不少可以產生Goat檔案的Goat產生器,例如RoseGoat,使用者亦可自定要產生的檔案大小以符合需求。

為了更容易觀察大小改變,部分Goat內有指令顯示原本的大小,在測試時只要比較目前的檔案大小,就知道這個檔案是否受到感染。然而有些技巧還是一定要知道,因為不是所有病毒都可以透過大小改變得知。

修改時間變更编辑

有些病毒在感染檔案後會將修改時間(Timestamp)改變,而一般情況下執行程式是不會變更這個時間的。所以如果留意到它不同了,但最近系統以及使用者都沒有對該檔案進行任何實際的修改的話,那麼就可以說這檔案已被感染。

自我隱藏编辑

部分病毒在RAM時,會將自己的感染大小從受感染的檔案中減去,使之在檔案清單中看不到大小改變。然而如果該病毒會變更修改時間,又或是可變的感染大小,那麼還是能觀察到。

令病毒無所遁形的最簡單的方法就是重新開機,如此做法會將病毒的TSR碼從RAM中移除。但如果開機執行的檔案受感染(例如DOS中的COMMAND.COM),你亦可以利用開機磁片,病毒就會因為這些受感染的檔案沒有執行而無法載入RAM。

但如果MBR受感染,就可能需要進階技巧。

檔案覆寫编辑

有些病毒會直接將檔案覆寫,而且分成兩類:

  • 檔頭覆寫
  • 取代覆寫

檔案覆寫在一定的大小以下時才會看到大小改變,而被取代覆寫的檔案的大小會變成病毒的大小。

如果原本的Goat會顯示文字,而之後沒有顯示又或者顯示別的文字的話,就可以判斷這個檔案的檔頭已被覆寫。

執行問題编辑

如果受感染的Goat沒有執行又或是一執行就當掉系統,那麼也可能是這個檔案已經受到感染。

感染大小限制编辑

有些病毒自定了感染對象的大小限制,例如不感染小於1,000位元組的檔案。如果這個Goat檔案不符合條件,那麼它就不會受到感染,所以要準備一系列不同大小的Goat。

Goat偵測编辑

有些病毒會偵測哪些是Goat,如是,它就不感染。在這種情況下可以利用帶有可執行的亂碼的Goat來測試來擾亂該病毒的判斷,但如果還是不感染的話就可能需要有實際作用的程式來測試,建議先將該程式複製一份副本然後測試。