青春时代是一个短暂的美梦,当你醒来时,它早已消失得无影无踪了。
 
夜月琉璃Lv32   
他以一己之力救活了反病毒行业     
文章摘自:看雪学院


1998年2月,陈盈豪编写出了破坏性极大的Windows恶性病毒CIH-1.2版,并定于每年的4月26日发作破坏,然后,悄悄地潜伏在网上的一些供人下载的软件中。


1998年8月26日,CIH-1.4病毒首先发作,中国内地部分地区遭到袭击,但损害面积不大。事后,为了必免更大灾害,中国公安部发出了通缉三种CIH病毒的通告。可是,使用正版杀毒软件的意识不被一些用户重视,又不经常保持升级杀毒软件,CIH-1.2病毒又经过一年的传播,已传遍全世界,世界性的巨大杀机潜伏下来,1999年4月26日,信息大劫难终于暴发。


反病毒厂商一时打破以久沉寂,大大红火了一把。

  

刹那间,全世界防、查、杀CIH病毒的呼声昏天黑地......


CIH(英语又称为Chernobyl或Spacefiller)其名称源自它的作者,当时仍然是台湾大同工学院学生陈盈豪的名字拼音(Chen Ing-hau)缩写。它被认为是最有害的广泛传播的病毒之一,会破坏用户系统上的全部信息,在某些情况下,会重写系统的BIOS。因为CIH病毒的1.2和1.3版发作日期为4月26日(第一版病毒创造出来的时间),正好是前苏联(位于今日乌克兰)核电厂灾害“切尔诺贝利核事故”的纪念日,故曾被认为病毒作者撰写动机和切尔诺贝利事件有关,因此CIH病毒也被称作切尔诺贝利(Chernobyl)病毒。


看雪论坛的版主zmworm 在2013年的时候有幸采访到CIH,这里在这个特殊的日子,让我们一起再与新的小伙伴分享一下CIH当年的风采!


PS:大家不要担心,只要正确地使用杀毒软件、及时升级病毒库、全面彻底地对电脑杀毒,就可轻松度过4.26这一天。


这次去HITCON有幸遇到CIH的作者陈盈豪,中国第一代黑客 coolfire。还是收获不少的。


这是CIH在HITCON2013的演讲,花了两个晚上整理的,并由CIH亲自校对。现经CIH同意,放在看雪论坛上。CIH说这些东西对大家有帮助就好,另外专门准备了他和看雪的合照:)


Image

=======================================================================

HITCON  演讲稿


兴趣执着和专注力让我与众不同

By CIH


我在高中一年级,开始学习BASICC语言。那时候我一点都不懂,我的电脑启蒙是从电脑游戏开始的。那时候玩游戏时,过到下一关卡,就会提示插第二片,第二片插进去玩到结束,再把第二片拔出来,插入第三片。所以我的电脑兴趣是从游戏开始。那时候我告诉自己,这一辈子我要变成游戏的设计者。

 

那时候,我只想成为这样的人。所以从高一开始写程式,到考大学的时候,我觉的我写的程式不完美。我就想学高职的资讯系。当时我妈很头大,然后他们和我说你到大学一样可以去考咨讯系。所以我才去考大学,因为当时电脑对于我来说就是一切。

 

现在讲一下CIH病毒。高一的时候第一次碰到电脑病毒,那时候资讯不像现在这么发达。那时候看到病毒感觉好恐怖。当时我第一个反映就是“啊,会不会被传染。真是这样的。

 

第一次碰电脑,是去同学他们家去换游戏,那是25年前第一次碰电脑。然后后来,大概是高二时开始写游戏。大一的时候开始碰Windows 3.1然后Windows 95才开始出现。当Win 95出现时,兴趣开始有转移,当时最大的兴趣就是组合语言,每天都要写。因为他可以控制所有要控制的东西。

DOS时代,只能寻址1MB,而在Window世界他可以寻址4GB所以那时候我写的组合语言不并是很简单,我用组合语言写了一个简单的作业系统,他不是真正的作业系统,他只是在处理作业系统中的虚拟机部分。

 

大二的时候开始研究WindowsKernel,怎么去处理虚拟机,怎么处理Exception,这些都是Win95机制。后来开始虚拟化的文章,特别是候捷,他的著作对系统理解非常深。

 

大二自己每天都在做一件事,挂上系统进行DEBUG,那时使用的调试器是SoftICE每天都按下一步,下一步。有些人问我学DEBUG有什么技巧。其实就是遵循一个逻辑,按“下一步,然后用眼睛看,没什么技巧。但是要一直这样按,要按24小时,因为一但你睡觉,隔天就会忘记昨天你追到哪里了。在大二我一直都在做这样事情。

 

最后,你会发现Win95跟本就是个大垃圾。对!微软是个垃圾!从头到尾Win95他根本就不是个作业系统,在我的定义里。

 

Win 95他是个有大BUG的系统。所以呢,他的BUG会很多。Windows 95 宣称是32 bit作业系统,他底层很多事实上很多的Kernel会使用16 bit作业系统。甚至有些东西会呼叫DOSAPI所以Win 95 有三个作业系统:32bit作业系统、16bit作业系统,再加上16bit DOS作业系统。

 

有人说我怎么厉害入侵一个Win95Kernel,让自己从User Mode 取得 Kernel ModeCIH怎么那么厉害。

 

错!因为从头到尾就一两个字节就做到了。因为大门就这么大,一进去就到了Kernel Mode在Win95,你只要通过一行C的程式就可以让你的系统Crash掉。因为一行C的程式就可以毁掉中断向量表。他没有做检查。因为Win95要向兼容16 bit WindowsDOS所以才有这个奇怪的现象。而当时真正稳定的系统就是NT--另外系列的作业系统,真正的32bit OS

 

后来我在大四,我看到一些病毒,还听说病毒绝对是不可以毁掉BIOS我在想真的不可以毁掉吗?那时很多人很难想象BIOS会被毁掉,而事实上是可以毁掉的。

 

为什么?

 

因为那时候有可以用工具去升级BIOS,既然工具可以把BIOS升级,那么病毒也可以把BIOS升级。升级完之后,屏幕打开黑黑的看不到。软体可以做到的,病毒都可以做到。那当然了,你会发现这些病毒在爆掉世界之前,我的电脑先暴了。所以我会买两颗BIOS,这颗坏掉后,再烧另外一颗。当时我对烧BIOS不熟,BIOS虽然只有几百K,但把他变成组合指令还是很难追的。最后我以一种极土的方式。就是每天一直按下一步,然后找到可疑的地方停下,看他在什么地方更新BIOS

 

如果没有更新,下一次就再多按几下,最终会有一次,一旦执行这个Function就会擦除BIOS为空。然后跟进这个function继续追,没日没夜的测,靠的就是坚强的毅力。

 

当时从User mode 取得Kernel mode时,我就想就可以为所欲为了。不过我喜欢做一个技术高超的程式员。所以那个时候,我的病毒感染之后,执行文件一个Byte都不会变大,因为我去找执行档里面破碎的空间。所以感染之后的病毒体被切成几块,分开到不同的破碎的地方,然后病毒在执行的时候,再像变形金刚组合起来,就是从执行档里找这几个不同的破碎地方组合起来变为一个病毒。就是因为这样的技术,执行档感染起来后,完全不会增加一个Byte而同时用一些技巧,去减小function的大小。

当时我在测试的时候,每找一个地方我就改一个。优化这个东西,是因为我从高中的时候,我就喜欢玩酷的东西。后来就越玩越火,居然我花6成到7成的时间,每天在做什么事情呢?一个Byte一个Byte的减,能少一个Byte就少一个Byte,检查每一个组合指令能否用更短的方式去替代。对我来说这也是个成就感。这样我的病毒不到1024Byte,就可以做到所有功能。

 

接下来,因为全班的同学都知道我在写这个病毒。那时候又要毕业了,就开始有人找我要这东西了。

 

主持人:我问一句,因为我很好奇,你的同学你怎么找到你写病毒?

 

很我兴奋呀,我就告诉全班,这东西写出来可以做的到现有的技术,包括防火墙,杀毒软件完全都看不到他。

 

主持人:“如果当时有HITCON大会你会否发表?

 

如果当时会。

 

回到之前那里,因为有些老师太压榨学长,所以等学长们毕业后,CIH就会爆了。当时没想那么多。我在写的时候,所有的同学都知道我在写。因为实验室是跟宿舍相连的。所以后来的结果是超出我想像,传播到了全世界,因为那是一年以后。当时看到相关资讯后,我在想。“哇,我捅了大事情了!一个月之后各大杀毒软件发布的清除程式,然后我想应该没有问题了。想不到一年后又爆炸了。这个事情是无意中发生的事情。

 

主持人:我问一下,如果有学生正想写virus你有什么建议?

 

如果有人对这块极度感兴趣,我的建议就是除了一直debug外,你还是要把底子打好呀。如果你确定要写BIOS,在Kernel Mode做事情,那就乖乖的花很多时间去写程式,我写了很多年,每天一直在写,研究Windows Kernel 的东西。只有对他很了解,才会知道哪些地方有问题,这些都是基本功。

如果你确定真的要写这方面的东西,你要想一想,你可能去创造一个之前没有的东西,但是东西写完之后,同时必须提供相对应的方式去把问题Fix掉。然后写文章纯粹发表技术,这样对资讯安全有更大的贡献。

 

后来因为CIH,我一直和国安局,资讯局都还有交流。一说交流,就是被叫过去喝茶。那时候真的以为自己这辈子完蛋了。后来呢,如果某些小朋友在这方面出了的问题,他们会问一下我的想法。不过有一次,他们打电话给我:“CIH恭喜你呀,因为你的关系,立法院通过资讯相关犯罪条例!我当时想,小弟终于有贡献了。所以呢,站在我的立场,我们可以研究一些攻击方法,但是必须把这些技术或是咨讯安全的问题转换成对科技的贡献。

 

主持人:因为我发现你从高中开始,从完全不会电脑,只花了五六年时间,就做出了CIH病毒。这一点让我蛮佩服的。我认识的许多高手,绝大部分是从小学开始。我想问的是说,你究竟花了多少时间,你有在睡觉吗?”

 

有睡觉。这里问到一点,为什么同样的时间,结果却不同。因为我只做一件事情,就是focus,专注于一件事情。事实上我只会按“下一步因为我只专注研究Kernel,其他的我完全不会,写网站不会, Java不会。如果你确定有兴趣,就把所有的时间就投入到这块。所以我和别人不一样,别人总是东碰西碰,而我没有。我每天总是在写组合指令,而且没觉的很烦。有时写累了,就换点做其他的,休息完再继续写。你看到台上的人技术力很强,其实背后花的时间,是你想象不到的。所以兴趣,执着和专注力才能把事情做好。

 

其中有一点,造就我在Kernel这块与众不同。因为我高中和大学英文成绩不好。怎么样不好?那时候英文全班倒数第一。强迫去参加一个特殊的英文发音课程,而我大二大三就强迫就被抓去过上这个班。因为这样,你会说有这么多技术,是不是从社区或者网上的技术文献看到的。因为我英文不好,所以不可能从这方面获得。我是接触到SoftICE这个32bit Debuger,我每天一直按,才知道作业系统是怎么做的,虚拟机是怎么做的。我知道大部分黑客是混社群的,而我是比较特别,就是关起门来,自己学,每天和SoftICE相处,看到的都是汇编指令。



 1  已被阅读了261次  楼主 2019-08-01 11:13:02
回复列表

回复:他以一己之力救活了反病毒行业

桂公网安备 45010302000666号 桂ICP备14001770-3号
感谢景安网络提供数据空间
本站CDN由七牛云知道创宇提供支持
免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。
Your IP: 3.85.245.126 , 2019-10-24 00:06:29 , Processed in 2.15625 second(s).
Powered by HadSky 7.3.4