
10.2缓冲区溢出攻击技术原理分析: 10.2.1堆栈的结构和组成: 10.2.2缓冲区溢出的示例分析: 10.2.3缓冲区漏洞的利用10.2.1堆栈的结构和组成: 作用在堆栈上上述操作下有两个主要操作: 推将单元推到堆栈的顶部;弹出会减小堆栈的大小,并会在堆栈顶部弹出一个单元. the堆栈的特征是LIFO(后进先出),也就是说,最后被压入堆栈的对象是在堆上首先找到的. 10.2.1堆栈的结构和组成一个称为SP(堆栈指针)的寄存器指向堆栈的顶部(底部编号的地址). 堆栈的底层位于固定地址,内核在运行时动态调整堆栈的大小. CPU执行指令以压入堆栈并弹出. 堆栈由逻辑堆栈帧组成,在调用函数时将其推入堆栈,并在返回时将其弹出. 存储在堆栈中的函数调用的数据和返回地址称为堆栈帧(Stack Frame),其中包括函数的参数,返回地址,先前的堆栈帧指针和局部变量. 使用高级语言进行模块化编程的程序员将具有各种函数调用. 这些函数调用由编译器编译为Call语句. 当CPU执行Call语句时,首先将带有函数调用的entry参数压入堆栈;然后将IP更改为调用函数的入口点,并将调用后的返回地址压入堆栈;然后将先前的堆栈帧指针推入堆栈为了在函数调用退出时恢复先前的堆栈帧,程序将继续执行.
10.2.1堆栈的结构和堆栈中的堆栈框架的结构如下. 10.2.1堆栈的结构和组成下面是一个示例来说明什么是缓冲区溢出: void函数(char * str)(strcpy(buffer,str);} void main(){int i; for(i = 0; i <= 255; i ++){large_string [i] ='A';}函数(large_string);} char缓冲区[16]; char large_string [256]; 10.2.2缓冲区溢出示例分析传递给该函数的字符串的长度比缓冲区大得多缓冲区溢出攻击,并且该函数未通过任何长度验证,因此长字符串将使用strcpy直接复制到缓冲区中. 对于程序,系统将报告分段违反错误,首先查看未执行strcpy时堆栈中的情况: 10.2.2缓冲区溢出实例分析当执行strcpy时,程序将256字节复制到缓冲区中,但是缓冲区只能容纳16字节,因此会发生什么情况这时由于C语言不执行边界检查,结果是后面有240个字节d缓冲区也被覆盖,它自然包括ebp,ret地址和large_string地址.

10.2.2缓冲区溢出示例分析由于A的十六进制为0x41h,ret地址变为0x41414141h,因此当进程结束并返回时,它将返回地址0x41414141h以继续执行,但是由于该地址,它不在程序实际使用的虚拟内存空间中,因此系统将报告分段违规. 缓冲区返回可用于更改存储在堆栈上的进程的返回地址,从而更改整个程序流并将其转向任何攻击者想要的地方. 哪里去了. 这为攻击者提供了机会. 攻击者使用堆栈溢出攻击的最常见方法是将一段代码嵌入一个长字符串中,然后用此代码的起始地址覆盖该函数的返回地址. 攻击者创建的代码. 10.2.3利用缓冲区漏洞此代码通常称为Shell代码. 攻击者在缓冲区溢出之前添加多个NOP指令的目的是增加猜测Shell Code起始地址的机会. 几乎所有处理器都支持NOP指令来执行空操作(NOP指令是不执行任何操作的指令). 通常用于延迟操作. 攻击者使用NOP指令填充要溢出的缓冲区的前端. 如果返回地址可以指向这些NOP字符串中的任何一个,则最终将执行攻击者的shell代码.
10.2.3缓冲区漏洞的利用由于编写Shell Code时不知道Shell Code,因此它使用了额外的JMP和CALL指令. 因为这两个指令使用相对于IP的偏移地址而不是绝对地址,所以这意味着我们可以跳转到相对于当前IP的位置,而无需知道内存中该位置的绝对地址. 如果我们只是将CALL指令放在字符串“ / bin / sh”之前,然后跳转到带有JMP指令的CALL指令,那么当执行CALL指令时,将使用字符串“ / bin / sh”的地址. 将返回地址压入堆栈,然后将该地址复制到寄存器中. 10.2.3利用缓冲区漏洞只要计算出程序代码的字节长度,就可以将JMP指令跳转到CALL指令中执行(CALL指令指向JMP的下一条指令). 这可以在运行时获得. “ / bin / sh”的绝对地址. 通过此地址加偏移量间接寻址方法,您还可以轻松访问string_addr和null_addr. 10.2.3利用缓冲区漏洞现在假设堆栈的起始地址为OxFF,Shell代码为S,Shell代码为N,NOP指令为N,JMP指令为J,CALL指令为C,字符串为s. 该程序的执行流程如下: 10.2 .3缓冲区漏洞的利用10.3拒绝服务(DoS)攻击技术原理分析10.3.1 DoS的基本原理10.3.2攻击模式和类型10.3.3最新DDoS攻击的发展10.3.1 DoS的基本原理这种攻击称为拒绝服务攻击,也称为拒绝服务攻击.

从直觉上讲,这意味着攻击者占用了过多的系统资源,直到系统忙碌和超负荷以致无法正常工作,甚至导致被攻击的主机系统崩溃. 10.3.1 DoS的基本原理攻击者的目的非常明确,即系统无法继续通过攻击为合法用户提供服务. 这些意图可能包括: 1.尝试“淹没”网络并阻止合法的网络传输. 2.尝试断开两台或多台计算机之间的连接,从而断开它们之间的服务通道. 3)尝试阻止一个或多个用户访问服务. 4)尝试断开与特定系统或个人的服务. DoS攻击具有针对不同服务生成的各种攻击模式. 它对目标系统的攻击可以分为以下三类: 1消耗稀缺,有限和不可再生的系统资源. 2损坏或更改系统的配置信息. 3物理损坏以及对网络组件和设施的改造. 10.3.2攻击模式和类型旨在消耗各种系统资源的拒绝服务攻击是当前的主要攻击类型. 计算机和网络系统的操作中使用了许多相关资源,例如网络带宽,系统内存和硬盘空间,CPU时钟,数据结构以及连接到其他主机或Internet的网络通道. 为了应对这些有限的资源,攻击者将使用不同形式的拒绝服务攻击来实现其目标. 10.3.2攻击方式和类型拒绝服务攻击经常用于中断网络连接. 目的是防止网络上的主机或网络进行通信.
这种类型的典型示例是SYN Flood攻击. 在此攻击中,攻击者启动了与受害者主机建立连接的过程,但攻击方式无法完成连接. 同时,受害主机保留结束此连接所需的有限数量的数据结构. 结果是合法连接请求被拒绝. 应该注意的是,这种攻击并不依赖于攻击者消耗网络带宽,而是依赖于建立连接所需的内核数据结构. 1.针对网络连接的攻击者还可以使用目标主机系统自身的资源来发起攻击,从而使目标系统瘫痪. 通常有以下几种方法. 其中,UDP Flood攻击是这种攻击模型的典型代表. 2.使用目标自身的资源来攻击1次UDP FLOOD攻击. 攻击者与主机的Chargen服务建立了UDP连接. 回复地址指向具有Echo服务的主机. 伪造的UDP消息将在两个主机之间生成足够的无用数据流. 并消耗它们之间的所有可用网络带宽. 因此,受攻击网段中所有主机(包括两个使用过的主机)之间的网络连接将受到严重影响. 2.使用目标自身的资源来攻击2次LAND攻击. LAND攻击将源地址和目标地址伪造为一致,同时源端口和目标端口也为一致的“ TCP SYN”数据包,然后将其发送.

这样的TCP消息被目标系统接受后,它将导致系统的某些TCP实现陷入循环状态. 系统不断向自身发送TCP SYN消息(也同时回复这些消息),这消耗了大量CPU资源,最终导致系统崩溃. 2.利用目标自身的资源进行3手指攻击. 攻击者使用“手指”重定向功能来发起攻击. 一方面,攻击者可以很好地隐藏“手指”的原始源地址,从而使被攻击者无法找到攻击源. 另一方面,目标系统将花费所有时间来处理重定向到他自己的“ Finger”请求. 执行其他常规服务. 2.通过在短时间内消耗大量定向到目标系统的无用数据包,以消耗其所有可用带宽,来使用目标自身的资源来攻击攻击者. 通常情况下,大多数攻击者都会选择使用ICMP Echo. 淹没目标主机的无用数据包. 3.带宽消耗攻击1)Ping Flooding攻击. 发起Ping Flooding攻击时,攻击者首先向目标主机发送不间断的ICMP Echo请求(CICMP Echo请求). 目标主机将一一响应它们,并回复ICMP Echo Reply消息. 如果这样的请求和响应过程持续一段时间,这些无用的消息将大大降低网络的运行速度. 在极端情况下,被攻击主机系统的网络路径将被断开.
3. 消耗带宽的攻击2 Smurf和Fraggle攻击. Smurf攻击伪造了ICMP Echo请求消息的IP标头,将源地址伪造为目标主机的IP地址,并以广播的方式将其发送到具有大量主机的网段. 文本的放大响应导致目标主机在短时间内收到大量ICMP Echo响应消息,这些消息无法及时处理缓冲区溢出攻击,最终网络被阻塞. 3.占用带宽的攻击是针对系统和网络协议的一些内部问题,并且还存在相应的DoS攻击. 这种方法通常会在系统内引起问题,并且会因某种网络传输方法而瘫痪. 4.其他资源消耗攻击的方式1死亡之ping. 由于在早期阶段,路由器对数据包的最大大小有限制,因此许多操作系统在ICMP数据包上实现了64KB的TCP / IP堆栈,并且在读取了数据包的报头之后,根据此报头包含了生成信息的信息有效负载的缓冲区. 当攻击者在“ ICMP Echo Request”请求数据包(Ping)之后添加大量信息,使数据包大小超过ICMP上限,并且加载大小超过64KB时,收件人将处理格式错误的数据包. 发生内存分配错误,导致TCP / IP堆栈崩溃,并最终崩溃.

4. 资源消耗攻击的其他方式2泪滴碎片攻击. 泪滴攻击利用包含在TCP / IP堆栈实现中信任IP片段的数据包标题中包含的信息来实施自己的攻击. IP段包含指示该段包含原始段的哪个段的信息. 收到包含重叠偏移量的伪段时,某些TCP / IP(包括Service Pack 4之前的NT)将崩溃. 4.其他资源消耗攻击的方式: 1 DDoS概念分布式拒绝服务攻击(Distributed Denial of Service)是一种相对较新的黑客攻击方法,于1999年夏天首次出现. 自2000年2月以来,这种攻击方法变得非常流行. . 2000年2月7日,即雅虎的网站遭到外部攻击瘫痪的第二天,美国其他几个知名的互联网站点又一次遭到攻击,造成了短暂的瘫痪. 10.3.3 DDoS攻击的最新发展分布式拒绝服务攻击使用与普通拒绝服务攻击相同的方法,但是攻击的来源是多种多样的(通常,至少可以达到数百甚至数千台主机) . 1 DDoS的概念DDoS的理论和技术在网络社区中早已为人所知,并且一段时间以来,攻击者已采用分布式拒绝服务,并有传播的趋势. TCP / IP协议本身的漏洞和缺陷.
攻击者使用成百上千个“受控”节点对受害者节点发起协同攻击. 通过消耗带宽,CPU,内存等资源,被攻击者的性能下降甚至瘫痪甚至崩溃,从而导致其他合法用户无法正常访问. 2.与DoS相比,DDoS攻击的原理更具破坏性和危害性,涉及范围更广,更难发现攻击者. 传统的DoS攻击使用软件漏洞或过多的系统负载来使计算机系统无法访问(通常只有一台计算机攻击受害者. DDoS是在多台计算机上工作或与其他计算机合作的攻击者)对目标主机或网络发起攻击. 攻击者同时接收大量数据包,并且不是主机发送的. 这使防御变得困难. 2. DDoS攻击的原理为了隐藏自己,以免被跟踪和定位,并增加攻击的强度,通常使用三层结构(包括攻击者,中间层和受害者)用过的. 中间层包含受控者和受控攻击者. DDoS攻击过程如下: 2. DDoS攻击原理
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-194420-1.html
#fx_4walls#没有任何一个女团如你们这般独特