精华内容
下载资源
问答
  • 针对嵌入式系统在缓冲区溢出攻击...通过对内存块的访问进行越界检查和访问控制,有效地防范了针对嵌入式系统的缓冲区溢出攻击。最后,对该方案进行了有效性分析并在NiosⅡ平台上进行了实验测试,结果表明所提方法可行。
  • 缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种...利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。

    一、缓冲区溢出攻击的基本概念

    缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。

    缓冲区溢出攻击有多种英文名称:buffer overflow,buffer overrun,smash the stack,trash the stack,scribble the stack, mangle the stack, memory leak,overrun screw;它们指的都是同一种攻击手段。第一个缓冲区溢出攻击--Morris蠕虫,发生在1988年,由罗伯特,莫里斯(R ob。rtMorris)制造,它曾造成全世界6000多台网络服务器瘫痪。

    计算机程序一般都会使用到一些内存,这些内存或是程序内部使用,或是存放用户的输入数据,这样的内存一般称作缓冲区。溢出是指盛放的东西超出容器容量而溢出来了,在计算机程序中,就是数据使用到了被分配内存空间之外的内存空间。而缓冲区溢出,简单的说就是计算机对接收的输入数据没有进行有效的检测(理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符),向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。

    通过往程序的缓冲区写超出其长度的内容,比如定义一个字符串变量,只允许他存储最多15个字符串(IP地址的最大字符数),但用户输入的时候误操作输入了15个以上的字符,加上程序本身没有去校验用户输入的字符数量,而直接存储到这个变量的内存地址空间,就造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。

     二、缓冲区溢出漏洞攻击方式

     缓冲区溢出漏洞可以使任何一个有黑客技术的人取得机器的控制权甚至是最高权限。一般利用缓冲区溢出漏洞攻击root程序,大都通过执行类似“exec(sh)”的执行代码来获得root 的shell。黑客要达到目的通常要完成两个任务,就是在程序的地址空间里安排适当的代码和通过适当的初始化寄存器和存储器,让程序跳转到安排好的地址空间执行。

    1)在程序的地址空间里安排适当的代码

    在程序的地址空间里安排适当的代码往往是相对简单的。如果要攻击的代码在所攻击程序中已经存在了,那么就简单地对代码传递一些参数,然后使程序跳转到目标中就可以完成了。攻击代码要求执行“exec(‘/bin/sh’)”,而在libc库中的代码执行“exec(arg)”,其中的“arg”是个指向字符串的指针参数,只要把传入的参数指针修改指向“/bin/sh”,然后再跳转到libc库中的响应指令序列就可以了。当然,很多时候这个可能性是很小的,那么就得用一种叫“植入法”的方式来完成了。

    当向要攻击的程序里输入一个字符串时,程序就会把这个字符串放到缓冲区里,这个字符串包含的数据是可以在这个所攻击的目标的硬件平台上运行的指令序列。缓冲区可以设在:堆栈(自动变量)、堆(动态分配的)和静态数据区(初始化或者未初始化的数据)等的任何地方。也可以不必为达到这个目的而溢出任何缓冲区,只要找到足够的空间来放置这些攻击代码就够了。

    2)控制程序转移到攻击代码的形式

    缓冲区溢出漏洞攻击都是在寻求改变程序的执行流程,使它跳转到攻击代码,最为基本的就是溢出一个没有检查或者其他漏洞的缓冲区,这样做就会扰乱程序的正常执行次序。通过溢出某缓冲区,可以改写相近程序的空间而直接跳转过系统对身份的验证。原则上来讲攻击时所针对的缓冲区溢出的程序空间可为任意空间。但因不同地方的定位相异,所以也就带出了多种转移方式。

    (1)Function Pointers(函数指针)

    在程序中,“void (* foo) ( )”声明了个返回值为“void” Function Pointers的变量“foo”。Function Pointers可以用来定位任意地址空间,攻击时只需要在任意空间里的Function Pointers邻近处找到一个能够溢出的缓冲区,然后用溢出来改变Function Pointers。当程序通过Function Pointers调用函数,程序的流程就会实现。

    (2)Activation Records(激活记录)

    当一个函数调用发生时,堆栈中会留驻一个Activation Records,它包含了函数结束时返回的地址。执行溢出这些自动变量,使这个返回的地址指向攻击代码,再通过改变程序的返回地址。当函数调用结束时,程序就会跳转到事先所设定的地址,而不是原来的地址。这样的溢出方式也是较常见的。

    (3)植入综合代码和流程控制

    常见的溢出缓冲区攻击类是在一个字符串里综合了代码植入和Activation Records。攻击时定位在一个可供溢出的自动变量,然后向程序传递一个很大的字符串,在引发缓冲区溢出改变Activation Records的同时植入代码(权因C在习惯上只为用户和参数开辟很小的缓冲区)。植入代码和缓冲区溢出不一定要一次性完成,可以在一个缓冲区内放置代码(这个时候并不能溢出缓冲区),然后通过溢出另一个缓冲区来转移程序的指针。这样的方法一般是用于可供溢出的缓冲区不能放入全部代码时的。如果想使用已经驻留的代码不需要再外部植入的时候,通常必须先把代码做为参数。在libc(熟悉C的朋友应该知道,现在几乎所有的C程序连接都是利用它来连接的)中的一部分代码段会执行“exec(something)”,当中的something就是参数,使用缓冲区溢出改变程序的参数,然后利用另一个缓冲区溢出使程序指针指向libc中的特定的代码段。

    程序编写的错误造成网络的不安全性也应当受到重视,因为它的不安全性已被缓冲区溢出表现得淋漓尽致了。

    三、缓冲区溢出攻击的防范策略

    缓冲区溢出攻击的防范是和整个系统的安全性分不开的。如果整个网络系统的安全设计很差,则遭受缓冲区溢出攻击的机会也大大增加。针对缓冲区溢出,可以采取多种防范策略。

    (1)系统管理上的防范策略

    一要关闭不需要的特权程序。

    二要及时给程序漏洞打补丁。

    (2)软件开发过程中的防范策略

    发生缓冲区溢出的主要及各要素是:数组没有边界检查而导致的缓冲区溢出;函数返回地址或函数指针被改变,使程序流程的改变成为可能;植入代码被成功的执行等等。所以针对这些要素,从技术上可以采取一定的措施。

     1)强制写正确的代码的方法。

    只要在所有拷贝数据的地方进行数据长度和有效性的检查,确保目标缓冲旦中数据不越界并有效,则就可以避免缓冲区溢出,更不可能使程序跳转到恶意代码上。

     2)通过操作系统使得缓冲区不可执行,从而阻止攻击者殖入攻击代码。

    通过使被攻击程序的数据段地址空间不可执行,从商使得攻击者不可能执行被植入被攻击程序输入缓冲区的代码,这种技术被称为缓冲区不可执行技术。

    3)改进C语言函数库。

    C语言中存在缓冲区溢出攻击隐患的系统匾数有很多。例如gets(),sprintf(),strcpy(),strcat(),fscanf(),scanf(),vsprintf()等。可以开发出更安全的封装了若干己知易受堆栈溢出攻击的岸函数。

    4)使堆栈向高地址方向增长。

    使用的机器堆栈压入数据时向高地址方向前进,那么无论缓冲区如何溢出,都不可能覆盖低地址处的函数返回地址指针,也就避免了缓冲区溢出攻击。但是这种方法仍然无法防范利用堆和静态数据段的缓冲区进行溢出的攻击。

    5)在程序指针失效前进行完整性检查。

    原理是在每次在程序指针被引用之前先检测该指针是否己被恶意改动过,如果发现被改动,程序就拒绝执行。

    6)利用编译器将静态数据段中的函数地址指针存放地址和其他数据的存放地址分离。


    如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!
    C语言C++学习企鹅圈子】,分享(源码、项目实战视频、项目笔记,基础入门教程)
    欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

    编程学习书籍:

    编程学习视频:

    展开全文
  • MS08-067( Windows Server服务RPC请求缓冲区溢出漏洞)远程缓冲区溢出攻击测试
  • 在分析缓冲区溢出攻击原理的基础上,说明了攻击的成因,然后描述了目前常见的攻击类型,最后给出了现有的防范措施,进而提出了一种新的通过对编译器及相关系统级函数进行修改来解决该问题的方案。
  • 总结 缓冲区溢出攻击之所以能成为一种常见的攻击手段,其原因在于缓冲区溢出漏洞太普遍,且易于实现攻击,因此缓冲区溢出问题一直是个难题。 所幸的是,OpenBSD开发组为解决这一安全难题采用了三种新的有效策略。...

    (2)改写“rc.local”文件。默认情况下,当登录Linux系统时系统运行rc.local文件,显示该Linux发行版本的名字、版本号、内核版本和服务器名称等信息,这使得大量系统信息被泄露。将“rc.local”文件中显示这些信息的代码注释掉,可以使系统不显示这些信息。

    一种方法是在显示这些信息的代码行前加“#”:

    ……# echo ““>/etc/issue# echo “$R”>>/etc/issue# echo “Kernel $ (uname -r)on $a $(uname -m)”>>/etc/issue## echo >>/etc/issue……

    另一种方法是将保存有系统信息的文件/etc/issue.net和issue删除。这两个文件分别用于在远程登录和本地登录时向用户提供相关信息。删除这两个文件的同时,仍需要完成方法一中的注释工作,否则,系统在启动时将会自动重新生成这两个文件。

    (3)禁止提供finger服务。在Linux系统中,使用finger命令可以显示本地或远程系统中目前已登录用户的详细信息。禁止提供finger服务的有效方法是,通过修改该文件属性、权限(改为600)使得只有root用户才可以执行该命令。

    (4)处理“inetd.conf”文件。Linux系统通过inetd(超级服务器)程序根据网络请求装入网络程序。该程序通过“/etc/inetd.conf”文件获得inetd在监听哪些网络端口,为每个端口启动哪些特定服务等信息。因此,该文件同样会泄露大量的敏感信息。解决问题的方法是,通过将其权限改为600只允许root用户访问,并通过改写“/etc/inetd.conf”文件将不需要的服务程序禁止掉,最后修改该文件的属性使其不能被修改。

    总结

    缓冲区溢出攻击之所以能成为一种常见的攻击手段,其原因在于缓冲区溢出漏洞太普遍,且易于实现攻击,因此缓冲区溢出问题一直是个难题。

    所幸的是,OpenBSD开发组为解决这一安全难题采用了三种新的有效策略。相信不久的将来,Linux用户可以不再为缓冲区溢出攻击而寝食难安了。

    RAR文件在Linux下用起来

    要在Linux下处理.rar文件,需要安装RAR for Linux。该软件可以从网上下载,但要记住,它不是免费的。大家可从http://www.onlinedown.net/sort/125_1.htm下载RAR for Linux 3.2.0,然后用下面的命令安装:

    # tar -xzpvf rarlinux-3.2.0.tar.gz

    # cd rar

    # make

    安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:

    # rar a all *.mp3

    这条命令是将所有.mp3的文件压缩成一个rar包,名为all.rar,该程序会将.rar 扩展名将自动附加到包名后。

    # unrar e all.rar

    这条命令是将all.rar中的所有文件解压出来。

    22/2<12

    展开全文
  • 缓冲区溢出攻击分析及防范策略研究_邓爽
  • 缓冲区溢出是最常见的一种安全漏洞类型。这种漏洞可使一个匿名的Internet用户有机会获得一台主机部分或全部的控制权...研究了各种类型的缓冲区溢出漏洞和攻击手段,以及有效防御黑客利用缓冲区溢出漏洞进行攻击的方法。
  • 基于解决缓冲区溢出这一普遍发生的网络安全漏洞的目的,通过软件、硬件技术层面的验证方法,结合人工检查、静态发现技术、动态防御技术等实验手段,得出了在向缓冲区中传输数据时可以通过数组边界检
  • Linux缓冲区溢出攻击原理分析及防范.pdf
  • 缓冲区溢出攻击实例

    2013-12-20 09:02:14
    缓冲区溢出攻击防范实例,网络攻击与防御课程使用
  • 发动缓冲区溢出攻击 C .获得 root 权限 D. 利用 MDAC 组件存在一个漏洞,可以导致攻击者远程执行目标系统的命令 24. 访问控制的粒度可能有一一一 A. 级 B. 表级 C. 记录级 ( 行级 )D. 属性级E. 字符级 25. 下面标准...

    A. 用户认证 B. 文件和 I/0 设备的访问控制 C. 内部进程间通信的同步 D. 作业管理 16. 根据 blued-H 、 SchroedeI · M.D 的要求,设计安全操作系统应遵循的原则有

    A. 最小特权 C. 开放设计、

    B. 操作系统中保护机制的经济性 D. 特权分离

    17.Windows 系统中的用户组包括

    A. 全局组 C. 特殊组

    B. 本地组 D. 标准组

    18.Windows 系统登录流程中使用的系统安全模块有

    A. 安全帐号管理 (Semrity Account Manager, 简称 SAM) 模块 B.Windows 系统的注册 (Winhgon) 模块

    C. 本地安全认证 (Local Security Authority, 简称 LSA) 模块 D. 安全引用模块

    19. 域内置全局组安全控制非常重要,这些组只出现在域控制器中,包括一一 -O

    A 电 Domain Admins 组 C.Domain Replicators 组

    B.Domain Users 组 D.Domain Guests 组

    20.Windows 系统中的审计日志包括

    A. 系统日志 (SystemLog)B.安全日志(SecurityLog) C. 应用程序日志 (App1icationshg)D.用户日志(UserLog)

    21. 组成 UNIX 系统结构的层次有

    A. 用户层 C. 硬件层

    B. 驱动层 D. 内核层

    22.UNIX/linux 系统中的密码控叫制信息保存在 /etc/passwd 或 /ect/st 时 ow 文件中,信息包含的内容有

    A. 最近使用过的密码

    B. 用户可以再次改变其密码必须经过的最小周期

    C.已密码最近的改变时间 D 哇密码有效的最大天数

    23.UNIX/Linux 系统中的 Apcache 服务器的主要安全缺陷表现在攻击者可以一一一。

    A. 利用 HTTP 协议进行的拒绝服务攻击 B. 发动缓冲区溢出攻击 C .获得 root 权限

    D. 利用 MDAC 组件存在一个漏洞,可以导致攻击者远程执行目标系统的命令

    24. 访问控制的粒度可能有一一一

    A. 级 B. 表级 C. 记录级 ( 行级 )D. 属性级E. 字符级

    25. 下面标准可用于评估的安全级别的有 A.TCSEC. · C.CC DBMS.PP E.TDI

    26.Oracle 的审计类型有

    A. 语句审计B.系统进程审计 C. 特权审计D.模式对象审计 E. 外部对象审计 27.SQL Se 凹 er 中的预定义服务器角色有一一一一。

    A.sysadmin B.serveradmm C.setupadmin D.securityadmin E.processadmin 28. 可以有效限制 SQL 注入攻击的措施有 A. 限制 DBWIS 中 sysadmiIL 用户的数量

    B. 在 Web 应用程序中,不以管理员帐号连接 C. 去掉不需要的函数、存储过程 D. 对于输入的字符串型参数,使用转义 E. 将服务器与互联网物理隔断 29. 事务的特性有

    A. 原子性 (Atomicity) B. 一致性 (ConsistemL) C. 隔离性 (Isolation) D. 可生存性 (Survivability) E 持续性 (Durability) 30. 故障可能有

    A. 磁盘故障 B. 事务内部的故障 C. 系统故障 D. 介质故障 E. 计算机病毒或恶意攻击 31. 防火墙通常阻止的数据包包括

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/jisuanjixue/article-34360-5.html

    展开全文
  • 浅析缓冲区溢出攻击技术以及防范策略
  • 缓冲区溢出攻击原理与防范的研究
  • 网络安全实验
  • 缓冲区溢出攻击

    2021-01-28 19:27:18
    我们所知道的第一个缓冲区溢出攻击是Morris蠕虫,它发生在十多年前,曾造成了全世界6000多台网络服务器瘫痪。  下面,我们从各个方面来认识一下缓冲区溢出攻击。  1.缓冲区溢出攻击的原理  缓冲区是计算机内存...
  • 3.2.1 缓冲区溢出 14 3.2.2 arp攻击和防范 14 3.2.3 基于认证的入侵 15 3.3 实验环境 16 第四章 实验内容 17 4.1 RFC溢出攻击 17 4.2 arp网络限制 21 4.3 MS SQL弱口令入侵 25 第五章 总 结 39 致 谢 40 参考文献 40
  • 计算机系统(2) 实验四 缓冲区溢出攻击实验一、 实验目标:二、实验环境:三、实验内容四、实验步骤和结果(一)返回到smoke(二)返回到fizz()并准备相应参数(三)返回到bang()且修改global_value五、实验总结与...
  • 网络攻防实验之缓冲区溢出攻击

    千次阅读 2019-07-09 22:10:07
    通过实验掌握缓冲区溢出的原理,通过使用缓冲区溢出攻击软件模拟入侵远程主机理解缓冲区溢出危害性,并理解防范和避免缓冲区溢出攻击的措施。 二、实验原理和实验环境 实验原理: 缓冲区溢出(Buffer Overflow...
  • 详解缓冲区溢出攻击以及防范方法

    千次阅读 2011-08-15 13:56:00
    缓冲区溢出是一种在各种操作系统、应用软件中广泛存在普遍且危险的漏洞,利用缓冲区溢出攻击可以导致程序运行失败、系统崩溃等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种...
  • 缓冲区溢出防范

    2021-06-29 08:55:40
    原理: 处理器中特殊的寄存器: EIP:扩展指令寄存器,存放下一条要执行的指令地址。 EBP:扩展地址寄存器,存栈底指针,通常称为栈指针。 ESP:扩展堆栈寄存器,存放栈顶...攻击防范: 系统上管理防范:关闭不要的特
  • 1.学习缓冲区溢出攻击需要有C语言和汇编的基础,以及一些操作系统知识 2.我是个菜鸡,文章是边查资料边写的,如发现文中有错误,很大可能就是写错了 3.本文无实例,只有很少的技巧,主要是小结一下相关知识 4.缓冲区...
  • 基于CPU硬件的缓冲区溢出攻击防范技术.pdf
  • 缓冲区溢出原理及其防范,孙魁,,缓冲区溢出攻击是网络攻击事件中最常用的一种攻击方式,成为系统和网络安全中亟待解决的重要问题。论文在分析缓冲区溢出攻击原理
  • [黑客防线2009缓冲区溢出攻击防范专辑,主讲缓冲区溢出与如何防范
  • Linux缓冲区溢出攻击检测与防范技术.pdf
  • 防范Linux下缓冲区溢出攻击.pdf
  • 编写没有漏洞的安全代码是防范缓冲区溢出攻击的最好方法(非常困难) 运行期间的保护: 研究的主要方面是数据边界检查和如何保证程序运行过程中返回指针的完整性 阻止攻击代码执行: 当程序的执行流程已经被重定向...
  • 详细分析缓冲区溢出,如何解决缓冲区溢出问题进行精辟的阐述

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,596
精华内容 1,838
关键字:

缓冲区溢出攻击防范