《网络攻防》教材学习
第9章 恶意代码安全攻防
9.1恶意代码基础知识
9.1.1恶意代码定义与分类
恶意代码指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。
典型的攻击目标包括但不限于:
- 单纯的技术炫耀,或恶作剧
- 远程控制被攻击主机,使之能为攻击者的傀儡主机,满足其实施跳板攻击或进一步传播恶意代码的需要
- 窃取私人信息或机密信息
- 窃取计算、存储、带宽资源
- 拒绝服务、进行破坏活动(如破坏文件/硬盘/BIOS等)
恶意代码类型
9.1.2恶意代码发展史
恶意代码的发展过程
恶意代码的发展趋势
- 恶意代码的复杂度和破坏力不断增强
- 恶意代码技术的创新越来越频繁
- 关注重点从计算机病毒转移到蠕虫和内核级的攻击工具
9.1.3计算机病毒
计算机病毒基本特性
- 感染性
- 潜伏性
- 可触发性
- 破坏性
- 衍生性
计算机病毒的感染及引导机制
计算机病毒需要将自身嵌入到一个宿主程序上才能运行,而感染的方式也决定了计算机病毒如何从宿主程序上被引导运行的方式,因此计算机病毒的感染和引导机制是紧密相关的。计算机病毒潜在的感染目标可分为可执行文件、引导扇区和支持宏指令的数据文件三大类。
- 可执行文件
可执行文件是计算机病毒最普遍的感染目标,因为以可执行文件作为宿主程序,当其被用户运行时,依附在上面的病毒就可以被激活取得控制权。最普遍的三种对可执行文件的感染方式包括前缀感染机制、后缀感染机制、和插入感染机制,除此之外,还有重复感染、交叉感染等更复杂的感染方式。如下图所示:
引导扇区
下图给出了计算机启动过程中的操作,首先是通过BIOS定位到磁盘的主引导区,运行存储在哪的主引导记录,主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录,而分区引导记录负责装载操作系统。引导型病毒的感染目标为主引导区和分区引导区,通过感染引导区上的引导记录,病毒就可以在系统启动时先于操作系统便截取系统控制权。支持宏指令的数据文件
传统意义上的数据文件只存储数据,因此不会被执行,从而不会成为计算机病毒的感染目标。但目前许多流行的数据文件格式支持在数据文件中包含一些执行代码,使得应用软件在打开这些数据文件时自动执行所包含一些执行代码,从而完成一些自动化数据处理的功能。
9.1.4网络蠕虫
网络蠕虫是一种通过网络自主传播的恶意代码,它的出现相对于传统计算机病毒和木马、后门来说比较晚,但无论从传播速度、传播范围还是破坏程度上来讲,都是以往的恶意代码所无法比拟的。
从定义本质分析,网络蠕虫是一种可以自我复制的代码,并且通过网络传播,通常无须人为干预就能传播。当蠕虫袭击一台计算机,并在完全控制之后,就会将这台计算机作为传播源,进而扫描并感染其他的脆弱系统,这样贪婪的行为会一直延续下去。
网络蠕虫的基本特性
网络蠕虫的组成结构
9.2恶意代码分析方法
9.2.1恶意代码分析技术概述
代码分析,是按需求使用一定的规则、方法和工具对计算机程序进行分析,以推导出其程序结构、数据流程和程序行为的处理过程。程序分析技术在程序理解、程序测试、程序优化和程序重构等方面都有着重要的应用。
与分析良性代码相比,分析恶意代码的主要差别在于:
(1)你通常不能提前知道恶意代码的目的是什么,你需要想侦探一样找出恶意代码里隐藏的真相。
(2)恶意代码具有恶意的攻击目的,会对所运行的环境进行恶意的破坏,因此在恶意代码分析时需要一个受控、可恢复的环境。
(3)恶意代码分析在绝大多数情况下不会拥有待分析程序的源代码,因而需涉及二进制代码分析,其难度要比源码分析高得多。
(4)恶意代码目前都会引入大量各种各样的对抗分析技术,对恶意代码分析带来了很多困难和挑战。
9.2.2恶意代码分析环境
- 恶意代码发烧友分析环境
- 基于虚拟化构建恶意代码分析环境
- 用于研究的恶意代码自动分析环境
第10章 软件安全攻防——缓冲区溢出与Shellcode
1.软件安全漏洞类型
- 内存安全违规类
- 输入验证类
- 竞争条件类
- 权限混淆与提升类
2.缓冲区溢出基础概念
缓存区溢出是计算机程序中存在的一类内存安全违规类漏洞,在计算机程序向特定缓冲区内填充数据时,超出了缓冲区本身的容量,导致外溢数据覆盖了相邻内存空间的合法数据,从而改变程序执行流程破坏系统运行完整性。
缓冲区溢出攻击原理
缓冲区溢出漏洞根据缓冲区在进程内存空间中的位置不同,又分为栈溢出、堆溢出和内核溢出这三种具体技术形态。
栈溢出是指存储在栈上的一些缓冲区变量由于存在缺乏边界保护问题,能够被溢出并修改栈上的敏感信息(通常是返回地址),从而导致程序流程的改变。
堆溢出则是存储在堆上的缓冲区变量缺乏边界保护锁遭受溢出攻击的安全问题。
内核溢出漏洞存在于一些内核模块或程序中,是由于进程内存空间内核态中存储的缓冲区变量被溢出造成的。
3.Linux平台上的栈溢出与Shellcode
Linux平台中的栈溢出攻击按照攻击数据的构造方式不同,主要有NSR,RNS和RS三种模式。
- NSR模式
NSR模式主要适用于被溢出的缓冲区变量比较大,足以容纳Shellcode的情况,其攻击数据从低地址到高地址的构造方式是一堆Nop指令(即空操作指令)之后填充Shellcode,再加上一些覆盖RET返回地址的跳转地址,从而构成了NSR攻击数据缓冲区,如下图所示。
- RNS模式
第二种栈溢出的模式为RNS模式,一般用于被溢出的变量比较小,不足以容纳Shellcode的情况,如下图所示。攻击数据从低地址到高地址的构造方式是首先填充一些期望覆盖RET返回地址的跳转地址,然后是一堆Nop指令填充出“着陆区”,最后再是Shellcode。
- RS模式
在这种模式下能够精确地定位出Shellcode在目标漏洞程序进程空间中的起始地址,因此也就无须引入Nop空指令构建“着陆区”。这种模式是将Shellcode放置在目标漏洞程序执行时的环境变量中,由于环境变量是位于Linux进程空间中的栈底位置,因而不会受到各种变量内存分配与对齐因素的影响,其位置是固定的。
4.Windows平台上的栈溢出与Shellcode
Windows操作系统平台在很多方面与Linux操作系统具有显著不同的实现机制,而在这些差异中,与成功攻击应用程序中栈溢出漏洞密切相关的主要有如下三点。
- (1)对程序运行过程中废弃栈的处理方式差异
- (2)进程内存空间的布局差异
- (3)系统功能调用的实现方式差异
Windows平台Shellcode实现技术
- Windows本地Shellcode
- Windows远程Shellcode
5.缓冲区溢出攻击的防御技术
- 尝试杜绝溢出的防御技术
解决缓冲区溢出攻击的最根本的办法是编写正确地、不存在缓冲区溢出安全漏洞的软件代码。但由于C/C++语言作为效率优先的语言,很容易就会出现缓冲区溢出。因此研究人员开发了一些工具和技术来帮助那些经验不足的程序员编写安全正确的程序,包括一些高级的查错程序,如fault injection等。 - 允许溢出但不让程序改变执行流程的防御技术
第二种防御技术允许溢出发生,但对可能影响到程序流程的关键数据结构实施严密的安全保护,不让程序改变其执行流程,从而阻断溢出攻击。 - 无法让攻击代码执行的防御技术
第三种防御技术尝试解决冯▪诺依曼体系的本质缺陷,通过堆栈不可执行限制来防御缓冲区溢出攻击。
LA64、AMD64、Alpha等新的CPU硬件体系框架都引入对基于硬件NX保护机制,从硬件上支持对特定内存页设置成不可执行,如Windows XP SP2、Linux内核2.6及以后版本都支持硬件NX保护机制,与操作系统配合来提升系统的安全性。
Kali视频学习
压力测试工具
压力测试通过确认一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。
1.VoIP压力测试工具
2.THC-SSL-DOS
借助THS-SSL-DOS攻击工具,任何人都可以把提供SSL安全连接的网站攻击下线,这种攻击方法被称为SSL拒绝服务攻击(SSL DOS)。
3.dhcpig
耗尽DHCP资源池的压力测试
4.Siege
Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力;可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
5.T50压力测试
T50是一个压力测试工具。它功能强大且具有独特的数据包注入工具。T50支持unix/linux系统,进行多种协议的数据包注入,实际上支持15种协议。
6.无线压力测试
数字取证工具
数字取证技术将计算机调查和分析技术应用于对潜在的、有法律效力的电子证据的确定与获取,同样他们都是针对黑客和入侵的,目的都是保障网络的安全。
1.Peepdf
Peepdf是一个使用python编写的PDF文件分析工具,它可以检测恶意的PDF文件。其设计目标是为安全研究人员提供PDF分析中可能用到的所有组件,无需使用3或4种工具来完成同一件任务。
2.反数字取证 chkrootkit
chkrootkit是一个Linux系统下的查找检测rootkit后门的工具。
3.内存取证工具volafox
4.取证分割工具binwalk
binwalk是一个固件的分析工具,旨在协助研究人员对固件分析,提取及逆向工程用处。简单易用,完全自动化脚本,并通过自定义签名,提取规则和插件模块,更重要一点的是可以轻松地扩展。
5.取证哈希验证工具集
6.取证镜像工具集
报告工具与系统服务
1.Dradis
Dradis是一个用于提高安全检测效率的信息共享框架。Dradis提供了一个集中的信息仓库,用于标记我们目前已经做得工作和下一步计划。
2.cutycapt
能把网页的内容截成图片保存
3.recordmydesktop
屏幕录像工具,用来录制桌面