如何防止Linux操作系统下的缓冲区溢出攻击

电脑杂谈  发布时间:2020-05-31 08:04:13  来源:网络整理

缓存区溢出攻击实验_图解 溢出攻击_一定程度上能防范缓冲区溢出攻击的措施有哪些

尽管Linux病毒很少,但基于缓冲区溢出漏洞的攻击使许多Linux用户感到惊讶.

所谓的“世界上第一个Linux病毒”? ?严格来说,再制造不是真正的病毒. 它本质上是一个古老的“缓冲区溢出”攻击程序,已经存在于Linux / Unix(包括Windows和其他系统)领域. Reman只是一个非常常见的自动缓冲区溢出程序,但是即使如此,它仍在Linux世界引起了很多恐慌.

缓冲区溢出漏洞是一个困扰安全专家30多年的问题. 简而言之,这是由于编程机制在软件中发生的内存错误. 这种内存错误使黑客可以运行一段恶意代码来破坏系统的正常运行,甚至获得对整个系统的控制.

Linux系统功能

使用缓冲区溢出来重写相关存储器的内容和函数的返回地址,从而更改代码的执行流程,仅在一定的权限范围内有效. 因为该过程的操作与当前用户的登录权限和身份有关,所以仅通过创建缓冲区溢出就不可能破坏当前用户的系统权限设置. 因此,尽管可以使用缓冲区溢出来使程序执行其他指定的代码,但是执行的代码仅具有特定的权限,并且无法完成超出该权限的任务.

但是,可以使用Linux(包括Unix)系统本身的某些功能来突破此权限的限制,从而可以使用缓冲区溢出来获得更高甚至完全的权限. 主要体现在以下两个方面:

1. Linux(包括Unix)系统允许其他用户通过将可执行文件的属性设置为SUID或SGID来使用可执行文件所有者的用户ID或用户组ID执行它. 如果可执行文件的属性为root且文件属性设置为SUID,则可执行文件具有缓冲区溢出漏洞,可用于以root身份执行特定的,否则为已安排的代码. 由于可以执行具有超级用户权限的代码,因此可以生成具有超级用户超级用户权限的shell,并存在掌握整个系统控制的危险.

2. Linux(包括Unix)中的许多守护程序都是以root用户权限运行的. 如果这些程序中有可用的缓冲区溢出,则可以直接使其以root用户身份执行其他排列的代码,而无需修改程序的SUID或SGID属性. 这样可以更轻松地控制系统.

图解 溢出攻击_一定程度上能防范缓冲区溢出攻击的措施有哪些_缓存区溢出攻击实验

随着现代网络技术的发展和网络应用的深入,计算机网络提供的远程登录机制,远程调用和执行机制是必要的. 这使匿名Internet用户有机会使用缓冲区溢出漏洞来获得系统的部分或全部控制权. 实际上,使用缓冲区溢出漏洞作为攻击手段的攻击是绝大多数远程网络攻击的原因一定程度上能防范缓冲区溢出攻击的措施有哪些,这对Linux系统构成了极为严重的安全威胁.

路径分析

在通常情况下,攻击者将首先攻击根程序,然后使用缓冲区溢出时发生的内存错误执行类似于“ exec(sh)”的代码以获得root的外壳. 攻击者需要完成以下任务:

1. 在程序的地址空间中安排适当的特定代码. 通常,使用以下两种方法在被攻击程序的地址空间中排列攻击代码.

2. 通过适当地初始化寄存器和内存,当缓冲区溢出发生时,程序无法返回到原始执行位置,而是跳转到计划的地址空间执行.

当攻击者找到改变原始程序的执行代码和流程的方法时,就会出现遭受攻击的危险.

注意事项

Linux下的缓冲区溢出攻击的威胁来自软件编写机制和Linux(及Unix)系统本身的特征. 实际上,缓冲区溢出攻击和猖ramp的计算机病毒的根本原因是现代计算机系统都使用了Feng吗? Neumann的“存储程序”的工作原理. 这个基本原理允许程序和数据在内存中传播一定程度上能防范缓冲区溢出攻击的措施有哪些,复制和执行. 因此,如果要有效防止缓冲区溢出攻击,则应控制这两个方面.

图解 溢出攻击_缓存区溢出攻击实验_一定程度上能防范缓冲区溢出攻击的措施有哪些

确保代码正确无误

缓冲区溢出攻击的根本原因在于编写程序的机制. 因此,为防止缓冲区溢出漏洞,应首先确保在Linux系统上运行的程序代码(包括系统软件和应用程序软件)的正确性,并避免程序中存在未经检查的变量,缓冲区大小和边界. . 例如,使用grep工具搜索容易在源代码中出现漏洞的库调用,检测变量的大小,数组的边界,保护指针变量,并使用具有边界和大小检测功能的C编译器.

根据特定的安全策略设置系统

攻击特定Linux系统的攻击者必须首先通过某些渠道(例如版本信息等)对要攻击的系统进行必要的了解,然后使用系统的某些设置直接或间接获得控制权. 因此,防止缓冲区溢出攻击的第二个方面是对系统设置实施有效的安全策略. 这些策略有很多类型. 由于篇幅所限,仅列出一些典型的措施:

(1)安装Telnet服务后,请手动在“ /etc/inetd.conf”文件中重写Telnet设置,以使远程登录的用户无法看到系统提示. 具体方法是将Telnet设置重写为:

telnet流tcp nowait根目录/usr/sbin/tcpd/in.telnetd -h

在末尾添加“ -h”参数,以使守护程序不显示任何系统信息,而仅显示登录提示.

(2)重写“ rc.local”文件. 默认情况下,登录Linux系统时,系统运行rc.local文件,该文件显示信息,例如Linux发行版的名称,版本号,内核版本和服务器名称. 这导致大量系统信息泄漏. 注释掉在“ rc.local”文件中显示此信息的代码可能会阻止系统显示此信息.

一定程度上能防范缓冲区溢出攻击的措施有哪些_图解 溢出攻击_缓存区溢出攻击实验

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

……#echo“”> / etc / issue#echo

“ $ R” >> / etc / issue#echo“在$ a $(uname -m)上的内核$(uname -r)” >> / etc / issue ## echo >> / etc / issue……

另一种方法是删除文件/etc/issue.net并发布包含系统信息的文件. 这两个文件用于在远程和本地登录时为用户提供相关信息. 在删除这两个文件时,您仍然需要完成方法一中的注释工作,否则,系统将在启动时自动重新生成这两个文件.

(3)禁止提供手指服务. 在Linux系统中,使用finger命令显示本地或远程系统中当前登录用户的详细信息. 禁止手指服务的有效方法是修改文件属性和权限(更改为600),以便只有root用户才能执行命令.

(4)处理“ inetd.conf”文件. Linux系统根据网络请求通过inetd(超级服务器)程序加载网络程序. 该程序使用“ /etc/inetd.conf”文件来获取有关inetd正在侦听哪些网络端口以及针对每个端口启动哪些特定服务的信息. 因此,此文件还将揭示很多敏感信息. 该问题的解决方案是仅允许root用户通过将其权限更改为600进行访问,并通过重写“ /etc/inetd.conf”文件来禁止不必要的服务程序,最后修改该文件的属性,使其无法进行修改.

摘要

缓冲区溢出攻击之所以能够成为常见的攻击方法,是因为缓冲区溢出漏洞太普遍且易于实现. 因此,缓冲区溢出问题一直是个问题.

一定程度上能防范缓冲区溢出攻击的措施有哪些_缓存区溢出攻击实验_图解 溢出攻击

幸运的是,OpenBSD开发团队采用了三种新的有效策略来解决此安全问题. 我相信,在不久的将来,Linux用户将无法再因睡眠和缓冲区溢出攻击而入睡.

RAR文件在使用时在Linux下进行处理. rar文件要求安装RAR for Linux. 可以从Internet下载该软件,但是请记住,它不是免费的. 您可以下载适用于Linux 3.2.0的RAR,然后使用以下命令进行安装:

#tar -xzpvf rarlinux-3.2.0.tar.gz

#cd rar

#make

安装后,有两个程序,rar和unrar,rar是压缩程序,unrar是解压缩程序. 它们的参数有很多选择,这里只是简单的介绍,仍然使用示例来说明其用法:

#rar a all * .mp3

仅此命令. mp3文件被压缩到一个名为all.rar的rar包中,程序将对其进行转换. rar扩展名将自动添加到程序包名称中.

#unrar e all.rar

此命令是提取all.rar中的所有文件

作者:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-228591-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...