作者:hacker 日期:2022-12-10 分类:网站入侵
虽然Linux病毒屈指可数,但是基于缓冲区溢出(BufferOverflow)漏洞的攻击还是让众多Linux用户大吃一惊。所谓“世界上第一个Linux病毒”??reman,严格地说并不是真正的病毒,它实质上是一个古老的、在Linux/Unix(也包括Windows等系统)世界中早已存在的“缓冲区溢出”攻击程序。reman只是一个非常普通的、自动化了的缓冲区溢出程序,但即便如此,也已经在Linux界引起很大的恐慌。
缓冲区溢出漏洞是一个困扰了安全专家30多年的难题。简单来说,它是由于编程机制而导致的、在软件中出现的内存错误。这样的内存错误使得黑客可以运行一段恶意代码来破坏系统正常地运行,甚至获得整个系统的控制权。
Linux系统特性
利用缓冲区溢出改写相关内存的内容及函数的返回地址,从而改变代码的执行流程,仅能在一定权限范围内有效。因为进程的运行与当前用户的登录权限和身份有关,仅仅能够制造缓冲区溢出是无法突破系统对当前用户的权限设置的。因此尽管可以利用缓冲区溢出使某一程序去执行其它被指定的代码,但被执行的代码只具有特定的权限,还是无法完成超越权限的任务。
但是,Linux(包括Unix)系统本身的一些特性却可以被利用来冲破这种权限的局限性,使得能够利用缓冲区溢出获得更高的、甚至是完全的权限。主要体现在如下两方面:
1.Linux(包括Unix)系统通过设置某可执行文件的属性为SUID或SGID,允许其它用户以该可执行文件拥有者的用户ID或用户组ID来执行它。如果该可执行文件的属性是root,同时文件属性被设置为SUID,则该可执行文件就存在可利用的缓冲区溢出漏洞,可以利用它以root的身份执行特定的、被另外安排的代码。既然能够使得一个具有root权限的代码得以执行,就能够产生一个具有超级用户root权限的Shell,那么掌握整个系统的控制权的危险就产生了。
2.Linux(包括Unix)中的许多守护进程都是以root权限运行。如果这些程序存在可利用的缓冲区溢出,即可直接使它以root身份去执行另外安排的代码,而无须修改该程序的SUID或SGID属性。这样获得系统的控制权将更加容易。
随着现代网络技术的发展和网络应用的深入,计算机网络所提供的远程登录机制、远程调用及执行机制是必须的。这使得一个匿名的Internet用户有机会利用缓冲区溢出漏洞来获得某个系统的部分或全部控制权。实际上,以缓冲区溢出漏洞为攻击手段的攻击占了远程网络攻击中的绝大多数,这给Linux系统带来了极其严重的安全威胁。
途径分析
通常情况下攻击者会先攻击root程序,然后利用缓冲区溢出时发生的内存错误来执行类似“exec(sh)”的代码,从而获得root的一个Shell。为了获得root权限的Shell,攻击者需要完成如下的工作:
1.在程序的地址空间内安排适当的特定代码。一般使用如下两种方法在被攻击的程序地址空间内安排攻击代码。
2.通过适当地初始化寄存器和存储器,使程序在发生缓冲区溢出时不能回到原来的执行处,而是跳转到被安排的地址空间执行。
当攻击者找到一种途径可以变原程序的执行代码和流程时,攻击的危险就产生了。
共2页: 1 [2]
内容导航
第 1 页:Linux系统特性
防范措施
Linux下的缓冲区溢出攻击威胁既来自于软件的编写机制,也来自于Linux(和Unix)系统本身的特性。实际上,缓冲区溢出攻击及各种计算机病毒猖獗的根本原因在于现代计算机系统都是采用冯?诺依曼“存储程序”的工作原理。这一基本原理使得程序和数据都可以在内存中被繁殖、拷贝和执行。因此,要想有效地防范缓冲区溢出攻击就应该从这两个方面双管其下。
确保代码正确安全
缓冲区溢出攻击的根源在于编写程序的机制。因此,防范缓冲区溢出漏洞首先应该确保在Linux系统上运行的程序(包括系统软件和应用软件)代码的正确性,避免程序中有不检查变量、缓冲区大小及边界等情况存在。比如,使用grep工具搜索源代码中容易产生漏洞的库调用,检测变量的大小、数组的边界、对指针变量进行保护,以及使用具有边界、大小检测功能的C编译器等。
基于一定的安全策略设置系统
攻击者攻击某一个Linux系统,必须事先通过某些途径对要攻击的系统做必要的了解,如版本信息等,然后再利用系统的某些设置直接或间接地获取控制权。因此,防范缓冲区溢出攻击的第二个方面就是对系统设置实施有效的安全策略。这些策略种类很多,由于篇幅有限只列举几个典型措施:
(1)在装有Telnet服务的情况下,通过手工改写“/etc/inetd.conf”文件中的Telnet设置,使得远程登录的用户无法看到系统的提示信息。具体方法是将Telnet设置改写为:
telnet stream tcp nowait root /usr/sbin/tcpd/in.telnetd -h
末尾加上“-h”参数可以让守护进程不显示任何系统信息,只显示登录提示。
(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文件,需要安装RARforLinux。该软件可以从网上下载,但要记住,它不是免费的。大家可从下载RARforLinux 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中的所有文件解压出来。
经常性提醒的话建议进行全盘杀毒,如果是打开某个软件时才提醒,一般多是兼容问题,不必担心。
缓冲区是内存中存放数据的地方。在程序试图将数据放到机器内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。
而人为的溢出则是有一定企图的,攻击者写一个超过缓冲区长度的字符串,植入到缓冲区,然后再向一个有限空间的缓冲区中植入超长的字符串,这时可能会出现两个结果:一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一个结果就是利用这种漏洞可以执行任意指令,甚至可以取得系统root特级权限。
McAfee缓冲区溢出保护"可以阻止利用缓冲区溢出在计算机上执行代码。此功能会检测到从堆栈中的数据开始运行的代码,并阻止该代码运行。但是,此功能不阻止数据写入堆栈。即使"缓冲区溢出保护"功能会阻止受到利用的代码运行,也不要指望受到利用的应用程序仍然会保持稳定。
McAfee 为大约 30 种最常用且最容易受利用的软件应用程序及微软 Windows 服务提供缓冲区溢出保护。这些受保护的应用程序在一个单独的缓冲区溢出保护特征码文件中定义。此 DAT 文件在常规更新期间随病毒特征码文件一起下载。到本产品发布之日为止,缓冲区溢出保护码文件中包括以下应用程序:
- dllhost.exe
- EventParser.exe
- excel.exe
-explorer.exe
- frameworkservice.exe
-
- iexplore.exe
- inetinfo.exe
- lsass.exe
- mapisp32.exe
- mplayer2.exe
- msaccess.exe
- msimn.exe
- mstask.exe
- msmsgs.exe
- NaimServ.exe
- Naprdmgr.exe
- Outlook.exe
- powerpnt.exe
- rpcss.exe
- services.exe
- sqlservr.exe
- SrvMon.exe
- svchost.exe
- visio32.exe
- VSEBOTest.exe
- w3wp.exe
- winword.exe
- wmplayer.exe
- wuauclt.exe
目前为止: 第一名:BitDefender Antivirus BitDefender是来自罗马尼亚和缓冲区溢出攻击有关的软件的老牌杀毒软件,150万超大病毒库它将为你的计算机提供最大的保护,具有功能强大的反病毒引擎以及互联网过滤技术,为你提供即时信息保护功能,并且支持在线升级! (Bitdefender连冠。) 官方最新版本是2009,可惜的是暂时没有简体中文版,但是有繁体中文版。总的来说,BitDefender的启发引擎强悍,占用资源中规中距,360OEM后又提供了一年的免费使用期限,并且在国内架设了高速升级服务器。喜欢BitDefender的朋友们也可以试试360杀毒,还是挺不错的。 第二名:Kaspersky Anti-Virus 卡巴斯基反病毒软件 2009是一套全新的安全解决方案,可以保护您的计算机免受病毒、蠕虫、木马和其它恶意程序的危害,它将实时监控文件,网页,邮件,ICQ/MSN协议中的恶意对象和缓冲区溢出攻击有关的软件;扫描操作系统和已安装程序的漏洞,阻止指向恶意网站的链接,强大的主动防御功能将阻止未知威胁。(卡巴继续充当千年老二的角色。!) 第三名:Webroot Antivirus 整合了自主研发业界出名的反间谍软件Webroot Spy Sweeper,病毒查杀引擎则是由英国安全软件公司Sophos提供!各个组件都是可选安装。 (这个杀软令我最震撼,去年在世界杀软前十名中没有看到它,没想到它竟能在一年之内成为世界杀软中的第三名!不错,有前途.) 第四名:ESET Nod32 国外很权威的防病毒软件评测给了NOD32很高的分数。在全球共获得超过40多个奖项,包括Virus Bulletin, PC Magazine, ICSA认证, Checkmark认证等, 更加是全球唯一通过51次VB100%测试的防毒软件,高据众产品之榜首!占用内存资源较少,清除病毒的速度效果都令人满意。(额```退了一名!不过这是本人用过的感觉不错的杀软)!) 第五名:AVG Anti-Virus 第六名:Vipre Antivirus + Antispyware 第七名:F-Secure Anti-Virus 第八名:Trend Micro 第九名:McAfee VirusScan 第十名:Norton AntiVirus 以下是2008年的排名
关于“溢出攻击”我想老一点的黑客都知道,对于菜鸟就不一定了。那么“溢出攻击”到底是什么意思呢?
在计算机中有个叫“缓冲区”的地方,他是用来存储用户输入的数据的,缓冲区的长度是被事先设定好的,如果用户输入的数据超过了缓冲区的长度,那么就会溢出,而这些溢出的数据就会覆盖在合法的数据上,这就像杯子装水的道理,水多了杯子装不下,当然就会溢出咯!缓冲区溢出漏洞主要是由于许多软件没有对缓冲区进行检查而造成。
如果溢出的数据是一条像“net user 5616 123/add”这样的指令,如果执行会怎样呢?(.....)所以利用缓冲区溢出进行攻击是一种很好的方法。常见的溢出攻击如:微软的MS-04011远程缓冲区溢出漏洞。利用该漏洞就可以获得对方的SHELL,而且这个漏洞也被许多人用来入侵,成功率很高,不过现在的人都有点安全意识,都补上了该漏洞,现在很少有这样漏洞的机子。
计算机中,溢出是什么意思?
1。数据过大。 数据超过了预定类型的界限,就会出现的数据溢出。
2。数据量过大。 如定义数组 Array[10], 而在调用时使用 Array[11]! 内存缓冲区就可能会溢出。
溢出原因分析
1。程序员经验不足。 导致内存溢出,程序错乱,甚至死机。
2。程序员水平太高。 超范围操作内存,以达到不可告人的目的。
Linux下的缓冲区溢出攻击威胁既来自于软件的编写机制,也来自于Linux(和Unix)系统本身的特性。实际上,缓冲区溢出攻击及各种计算机 病毒猖獗的根本原因在于现代计算机系统都是采用冯?诺依曼“存储程序”的工作原理。这一基本原理使得程序和数据都可以在内存中被繁殖、拷贝和执行。因此, 要想有效地防范缓冲区溢出攻击就应该从这两个方面双管其下。
确保代码正确安全
缓冲区溢出攻击的根源在于编写程序的机制。因此,防范缓冲区溢出漏洞首先应该确保在Linux系统上运行的程序(包括系统软件和应用软件)代码的正 确性,避免程序中有不检查变量、缓冲区大小及边界等情况存在。比如,使用grep工具搜索源代码中容易产生漏洞的库调用,检测变量的大小、数组的边界、对 指针变量进行保护,以及使用具有边界、大小检测功能的C编译器等。
基于一定的安全策略设置系统
攻击者攻击某一个Linux系统,必须事先通过某些途径对要攻击的系统做必要的了解,如版本信息等,然后再利用系统的某些设置直接或间接地获取控制 权。因此,防范缓冲区溢出攻击的第二个方面就是对系统设置实施有效的安全策略。这些策略种类很多,由于篇幅有限只列举几个典型措施:
(1)在装有Telnet服务的情况下,通过手工改写“/etc/inetd.conf”文件中的Telnet设置,使得远程登录的用户无法看到系统的提示信息。具体方法是将Telnet设置改写为:
telnet stream tcp nowait root /usr/sbin/tcpd/in.telnetd -h
末尾加上“-h”参数可以让守护进程不显示任何系统信息,只显示登录提示。
(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文件,需要安装RARforLinux。该软件可以从网上下载,但要记住,它不是免费的。大家可从 下载RARforLinux 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中的所有文件解压出来。
编辑推荐
Linux系统下配置Netware服务器方法
嵌入式设备上的 Linux 系统开发
深度介绍Linux内核是如何工作的(1)
已有2位网友发表了看法:
访客 评论于 [2022-12-11 02:47:49] 回复
mstask.exe- msmsgs.exe- NaimServ.exe- Naprdmgr.exe- Outlook.exe- powerpnt.exe- rpcss.exe- services.e
访客 评论于 [2022-12-11 02:40:12] 回复
xe- wmplayer.exe- wuauclt.exe世界十大杀毒软件是哪些?按排名来!目前为止: 第一名:BitDefender Antivirus BitDefender是来自罗马尼亚和缓冲区溢出攻击有关的软件的老牌杀毒软件,150万超大病毒库它将为你