本系列文章仅作为学习交流使用,不可用于商业用途。文章中凡涉及原书内容部分,版权均归原作者所有。
本章是第1章“基础知识”,隶属于第一篇“漏洞利用原理(初级)”。本章目的是让读者有对和漏洞有关的基本概念有一个简单的了解。
本章首先介绍了漏洞研究中的一些基本概念和原理,其次讲解了Windows平台下可执行文件的结构和内存方面的一些基础知识,最后列举了漏洞分析中常用的工具。
目前来说,我基本上是按照书上的结构写,且尽可能忠实于原文。以后写得熟练了,会更有一些个人的风格。
笔记主要由两部分组成:
- 一部分是书中的重点,这些知识有必要反复咀嚼;
- 另一部分是实践时碰到的问题的技术细节,将其记录下来有助于以后参考。
1. 漏洞概述
1.1 Bug与漏洞
软件行业现状:
- 随着现代软件工业的发展,软件规模越来越大,软件内部的逻辑也日益复杂;
- 测试环节(QA:Quality Assurance,质量保证)变得日渐重要;
- 即使在测试上投入了巨大精力,依旧没有人敢声称能够避免软件中的所有逻辑缺陷——bug。
在形形色色的bug中,有些会引起严重的后果。
我们将这类能引起软件做一些“超出设计范围的事情”的bug,称为“漏洞”(vulnerability):
- 功能性逻辑缺陷(bug):影响软件的正常功能。例如:执行结果错误、图标显示错误等。
- 安全性逻辑缺陷(漏洞):通常情况下不影响软件功能,但被攻击者利用后,有可能引起软件执行额外的恶意代码。例如:缓冲区溢出漏洞、跨站脚本漏洞(XSS),SQL注入漏洞。
注:个人感觉,书中这部分对于“漏洞”和“bug”的定义与区分有点粗糙,可能是作者为了方便读者理解,从而做了一定的简化。
因此,我在下面附了百度百科和Wikipedia的相关词条链接,以后类似。(百度百科的好处就是中文便于阅读,Wikipedia的优势在于相对严谨。)
- 百度百科:bug、漏洞
- Wikipedia:Software bug、vulnerability
1.2 几个令人困惑的安全问题
也许你具备一些基本的计算机知识,但是你仍然对下面一些问题有所困惑:
- 我从不允许任何来历不明的软件,为什么还会中病毒?
病毒可以利用重量级的系统漏洞传播。例如:冲击波蠕虫、Slammer蠕虫。
攻击者也可以利用漏洞发起主动攻击。
- 我只是点击了一个URL安全链接,并没有执行任何其他操作,为什么会中木马?
如果浏览器在解析HTML文件时存在缓冲区溢出漏洞,攻击者可以精心构造一个承载着恶意代码(Shellcode)的HTML文件,将连接发给用户。用户点击链接时,漏洞被触发,HTML文件中的恶意代码被触发。
- Word文档、Power Point文档、Excel表格文档并非可执行文件,它们会导致恶意代码的执行吗?<