软件漏洞分析入门 [ 引子 ]

1  引子
 
To be the apostrophe which changed “Impossible” into “I’m possible”
 
—— failwest
 
 
凉风有讯,秋月无边。
 
您是否梦想过能够像电影上演的那样黑进任意一台机器远程操控?您的梦想是否曾经被书店里边满架子的反黑,防毒,擒木马的扫盲书强暴的体无完肤?
 
从今天开始,准备陆续发一系列关于软件漏洞方面基础知识的帖子,包括软件漏洞的研究价值,研究方法,堆栈利用的基础知识,shellcode的调试方法,漏洞调试方法,漏洞分析,漏洞挖掘,软件安全性测试等等,此外还将介绍一些metasploit架构和fuzz测试方面的入门知识。
 
软件漏洞分析,利用,发掘是当今安全技术界中流砥柱级别话题,如果您关注过black hat或者defcon之类的顶级安全技术峰会的话,就知道我不是在吹牛了。可惜的是这方面的中文资料很少,偶尔有一篇比较优秀的文章但又不够系统,目前为止也没有形成像破解技术这样的讨论风气,菜鸟们在黑灯瞎火的夜晚瞎折腾,没有交流和指导,兴趣就像被拔了气弥儿芯的车胎,很快就泄气了。
 
虽然漏洞分析与利用与破解在技术上各有侧重点,但逆向基础是共同的。以我个人的经验,能做crack的朋友只要稍加进修就能入门。就算没有任何汇编基础和逆向经验的朋友也不用担心,因为这个系列的文章将完全面向菜鸟,只要会C语言,跟着文章用ollydbg调试几次连猜带蒙的也应该能够上手。
 
今天我们暂时不谈堆栈这些技术细节,先让我们从比较宏观的地方着手。
 
如果您经历过冲击波蠕虫病毒的攻击话,应该明白操作系统出现漏洞时的后果。
 
漏洞往往是病毒木马入侵计算机的突破口。如果掌握了漏洞的技术细节,能够写出漏洞利用(exploit),往往可以让目标主机执行任意代码。
 
软件漏洞的技术细节是非常宝贵的资料,尤其是当软件漏洞对应的官方补丁尚未发布时,只有少数攻击者秘密的掌握漏洞及其利用方法,这时往往可以通过漏洞hack任意一台internet上的主机!
 
这种未被公开的漏洞被称作zero day  ( 0  day ) 。可以把 0day 理解成未公开的系统后门。由于 0day 的特殊性质和价值,使得很多研究者和攻击者投身于漏洞挖掘的行列。一个 0day 漏洞的资料根据其影响程度的不同,在黑市上可以卖到从几千元到几十万元不等的价钱。因此 0day 一旦被发现往往会被当作商业机密,甚至军事机密~~~~如果把冲击波蠕虫的shellcode从原先的一分钟倒计时关机改为穷凶极恶的格式化硬盘之类~~~~~那么花一百万买这样一个电子炸弹可比花一百万买一枚导弹来得划算~~~~~~试想一下某天早上起来发现全国的windows系统都被格式化,计算机系统完全瘫痪造成的影响和一颗导弹在城市里炸个坑造成的影响哪个更严重?
 
在今天这一讲的最后,让我们回顾一下几个可能曾经困惑过您的问题:
 
我从不运行任何来历不明的软件,为什么还会中病毒? 
 
如果病毒利用重量级的系统漏洞进行传播,您将在劫难逃。因为系统漏洞可以引起计算机被远程控制,更何况传播病毒。横扫世界的冲击波蠕虫,slamer蠕虫等就是这种类型的病毒。 
如果服务器软件存在安全漏洞,或者系统中可以被RPC远程调用的函数中存在缓冲区溢出漏洞,攻击者也可以发起“主动”进攻。在这种情况下,您的计算机会轻易沦为所谓的“肉鸡”。
 
我只是点击了一个URL链接,并没有执行任何其他操作,为什么会中木马? 
 
如果您的浏览器在解析HTML文件时存在缓冲区溢出漏洞,那么攻击者就可以精心构造一个承载着恶意代码的HTML文件,并把其链接发给您。当您点击这种链接时,漏洞被触发从而导致HTML中所承载的恶意代码(shellcod)被执行。这段代码通常是在没有任何提示的情况下去指定的地方下载木马客户端并运行。
 
此外,第三方软件所加载的ActiveX控件中的漏洞也是被“网马”所经常利用的对象。所以千万不要忽视URL链接。
 
Word文档、Power Point文档、Excel表格文档并非可执行文件,他们会导致恶意代码的执行吗?
 
和html文件一样,这类文档本身虽然是数据文件,但是如果Office软件在解析这些数据文件的特定数据结构时存在缓冲区溢出漏洞的话,攻击者就可以通过一个精心构造的word文档来触发并利用漏洞。当您在用office软件打开这个word文档的时候,一段恶意代码可能已经悄无声息的被执行过了。
 
好,第一讲暂时结束,如果您有兴趣,不妨关注一下这个系列,说不定听完几讲之后会深深的爱上这个门技术。
 
顺便预告一下本系列讲座的内容:
2_ 漏洞利用,分析,挖掘概述
3_ 初级栈溢出A
4_ 初级栈溢出B
5_ 自制简单的shellcode
6_ 初级栈溢出C
7_windows 下shellcode的开发
在后面嘛,还没确定下来,大概会给几个真实的windows漏洞调试案例,给大家一起交流
 
欢迎大家踊跃讨论,积极讨论,大肆讨论,猛烈讨论