Malware Wiki 中文
Advertisement
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来测试来扰乱该病毒的判断,但如果还是不感染的话就可能需要有实际作用的程式来测试,建议先将该程式复制一份副本然后测试。

Advertisement