Quantcast
Channel: 看雪安全论坛
Viewing all articles
Browse latest Browse all 9556

其他内容 【分享】CIH作者陈盈豪在HITCON2013上的演讲:兴趣执着和专注力让我与众不同

$
0
0
这次去hitcon有幸遇到CIH的作者陈盈豪,中国第一代黑客 coolfire.还是收获不少的.这是CIH在HITCON2013的演讲.花了两个晚上整理的,并由CIH亲自校对.现经CIH同意,放在看雪论坛上.CIH说这些东西对大家有帮助就好,另外专门准备了他和看雪的合照:)
陈盈豪

附件 81295

hitcon演讲稿
兴趣执着和专注力让我与众不同
By CIH

我在高中一年级,开始学习BASIC和C语言.那时候我一点都不懂,我的电脑启蒙是从电脑游戏开始的.那时候玩游戏时,过到下一关卡,就会提示插第二片,第二片插进去玩到结束,再把第二片拔出来,插入第三片.所以我的电脑兴趣是从游戏开始.那时候我告诉自己,这一辈子我要变成游戏的设计者.那时候,我只想成为这样的人.所以从高一开始写程式,到考大学的时候,我觉的我写的程式不完美.我就想学高职的资讯系.当时我妈很头大,然后他们和我说你到大学一样可以去考咨讯系.所以我才去考大学,因为当时电脑对于我来说就是一切.

现在讲一下CIH病毒.高一的时候第一次碰到电脑病毒,那时候资讯不像现在这么发达.那时候看到病毒感觉好恐-.当时我第一个反映就是“啊,会不会被传染.”.真是这样的.第一次碰电脑,是去同学他们家去换游戏,那是25年前第一次碰电脑.然后后来,大概是高二时开始写游戏.大一的时候开始碰Windows 3.1.然后Windows95才开始出现.当Win95出现时,兴趣开始有转移,当时最大的兴趣就是组合语言,每天都要写.因为他可以控制所有要控制的东西.在DOS时代,只能寻址1MB,而在WINDOWS世界他可以寻址4GB.所以那时候我写的组合语言不并是很简单,我用组合语言写了一个简单的作业系统,他不是真正的作业系统,他只是在处理作业系统中的虚拟机部分.

大二的时候开始研究Windows的Kernel,怎么去处理虚拟机,怎么处理Exception ,这些都是Win95机制.后来开始虚拟化的文章,特别是候捷,他的著作对系统理解非常深.
大二自己每天都在做一件事,挂上系统进行DEBUG,那时使用的调试器是SoftICE.每天都按下一步,下一步.有些人问我学DEBUG有什么技巧.其实就是遵循一个逻辑,按“下一步”,然后用眼睛看,没什么技巧.但是要一直这样按,要按24小时,因为一但你睡觉,隔天就会忘记昨天你追到哪里了.在大二我一直都在做这样事情.

最后,你会发现Win95跟本就是个大垃圾.对!微软是个垃圾!从头到尾Win95他根本就不是个作业系统,在我的定义里.
Win 95他是个有大BUG的系统.所以呢,他的BUG会很多.Windows 95 宣称是32bit作业系统,他底层很多事实上很多的Kernel会使用16bit作业系统.甚至有些东西会呼叫DOS的API.所以Win 95 有三个作业系统:32bit作业系统,16bit作业系统,再加上16bit DOS作业系统.有人说我怎么厉害入侵一个Win95的Kernel,让自己从User Mode 取得 Kernel Mode.CIH怎么那么厉害.错!因为从头到尾就一两个字节就做到了.因为大门就这么大,一进去就到了Kernel Mode.在Win95,你只要通过一行C的程式就可以让你的系统Crash掉.因为一行C的程式就可以毁掉中断向量表.他没有做检查.因为Win95要向兼容16 bit Windows和DOS.所以才有这个奇怪的现象.而当时真正稳定的系统就是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相处,看到的都是汇编指令
.

上传的图像
文件类型: jpg 20130731_001258.jpg (65.6 KB)

Viewing all articles
Browse latest Browse all 9556

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>