基础知识
漏洞概述
通常把这类能够引起软件做一些“超出设计范围的事情”的bug称为漏洞(vulnerability)。
功能性逻辑缺陷(bug):影响软件的正常功能,例如,执行结果错误,图标显示错误
安全性逻辑缺陷(漏洞):通常情况下不影响软件的正常功能,但被攻击者成功利用后,有可能引起软件去执行额外的恶意代码,常见的漏洞包括软件中的缓冲区溢出漏洞、网络中的跨站脚本漏洞(XSS)、SQL注入漏洞等。
漏洞挖掘
技术角度讲,漏洞挖掘实际上是一种高级的测试(QA),学术界一直热衷于使用静态分析方法寻找源代码中的漏洞;而在工程界,普遍使用Fuzz,一种“灰”盒测试。
漏洞分析
分析漏洞时,如果能够搜索到POC(proof of concept)代码,使用POC重现漏洞被触发现场。使用调试器观察漏洞的细节,或者利用工具(如Paimei)更方便的找到漏洞触发点。当无法获得POC的时候,通过厂商对漏洞的描述,使用补丁分析的方法,首先比较patch前后可执行文件都有哪些地方被修改,利用反汇编工具(IDA OD)重点分析这些地方。
漏洞分析需要扎实的逆向基础和调试技术,除此之外,还要精通各种场景下的漏洞利用方法。这种技术更多依靠的是经验,很难总结出通用的条款。实战为王。
漏洞利用
漏洞利用技术可以追溯到20世纪80年代的缓冲区溢出漏洞利用,直到Aleph One于1996年在Phrack第49期上发表《Smashing The Stack For Fun And Profit》,这种技术才真正流行并日趋完善。包括内存漏洞(堆栈溢出)和Web应用漏洞(脚本注入)等
漏洞在安全中的应用
1·从不运行任何来历不明的软件,为什么还会中病毒?
系统漏洞利用引起计算机被远程控制(冲击波蠕虫、slammer蠕虫);服务器软件存在安全漏洞,或者系统中可以被RPC远程调用的函数中存在缓冲区溢出漏洞,攻击者可以发起“主动”进攻。
2·只是点击了URL连接,并没有执行任何其他操作,为什么会中木马?
浏览器在解析html文件时存在缓冲区溢出漏洞,可以通过承载恶意代码的HTML文件,当通过链接点击访问的时候漏洞被触发,导致HTML中所承载的shellcode被执行,这段代码通常是在没有任何提示的情况下去指定的地方下载木马客户端并运行。
3·本身是数据文件的非可执行文件,