如何防范Linux操作系统下缓冲区溢出攻击 黑客武林
虽然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。该软件可以从网上下载,但要记住,它不是免费的。大家可从http://www.onlinedown.net/sort/125_1.htm下载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里有哪些黑客工具?
LINUX就是一群黑客开发的,安装的时候建议安装全软件包,里面自带的工具足够你用了。里面的有那么多,列出一部分吧:netxray\pachetboy\met monitoe\iris\spynet sniffer\nc都是扫描漏洞和端口的
黑客用kali linux哪个版本好
您好,kali Linux也是Linux发型版本之一,但是kali集成了很多黑客常用的软件,所以是比较适合拿来学习黑客技术的。
黑客为什么喜欢Linux系统
黑客这个词从诞生到现在,从来就没有解释为“高级入侵者”、“病毒制造者”或者“QQ盗号者”过。我至今不清楚在中国是谁先把黑客和这些无聊的词汇联系在了一起,导致如此多的人被误导。但有一点是肯定的,不负责任的媒体一直侮辱这两个字。
那个写熊猫烧什么来着的叫什么来着的也叫黑客?太可笑了。他做鬼也当不了黑客。请分清这两个词,hacker cracker,别去研究他们的中文翻译。
不花力气多解释,不懂黑客是什么意思的人终究不懂,我的这篇文章也不是呼吁那些垃圾更正他们的思想(请不懂的人关闭网页窗口),而是写给那些真正怀揣着黑客梦想的人看的。
首先,有这样的梦想的人出于两种目的(不可能有第三种),真心喜欢计算机技术的,和为了炫耀的。(后者请关闭这个网页窗口)
就像我前面所说的,黑客不一定要写病毒,不一定要入侵,更不会无聊到盗号。可能你会笑了,黑客不入侵相当于陈水扁不搞台独。其实这是错误的(我不是
指阿扁会放弃搞台独),请各位去查看黑客这个词在20世纪60以及70年代的解释。“热爱探索问题,解决问题的一批人”,“热爱编出精妙程序的人”。黑客
根本不是一种技术境界,而是思想境界,它是一种文化,是一种精神(我把它理解为生活方式,就像hip-hop一样),是一门艺术。
我是因为喜欢黑客技术才接触Linux的,却发现更多的国人热衷于在盗版的Windows下用着别人写出来的软件扫什么端口,查什么漏洞,入侵什么
网,会按以上这些按钮后,大肆炫耀一番。这些人普遍智力水平低下(对不起,黑客技术到最后就是拼智力),只会用右手[注1]。Windows从来就是被攻
击的目标系统,而不是攻击者应该使用的系统,更不会是黑客的玩具。那么什么才是呢?
Unix
不知道中国那么多会写病毒,会入侵的人了解、知道甚至听说过这个东西。Unix一整套的设计理念以及哲学还有发展史就代表着黑客这两个词。
Unix诞生于1969年,1969年的东西,流传至今的有哪些?很遗憾,无论是软件还是硬件,除了Unix与创造它的C语言[注2],没有了。为什么Unix生命力会如此旺盛?答案只有一个,在于它的黑客文化与哲学。
哲学是门高深的学问,我们不需要去很彻底的研究它,Unix的哲学就是4个英文字母:K.I.S.S[注3],这也是最核心的设计理念,Unix有
许许多多优秀的哲学思想,其中这个是最重要的。用最简单的东西去完成最复杂的东西,这也就是为什么许多没有玩过Unix从而没有机会接触Perl语言的人
无法体会这个道理的原因[注4]。Unix的设计者们全是懒人,正是因为这种懒,系统变的简单易用,稳定无比[注5],正是因为这种懒,缔造了一个不朽的
传奇。
那么Unix是如何维持如此旺盛的生命力的呢?答案就是——open source
movement,开源运动,Unix最初把源码分发给了各大高等学府用于研究,这些学府各自作了修改,发展出了许多不同类型的Unix,但其本质都是差
不多的。随着Richard Stallman[注6]建立了FSF并且推出了GNU
Project[注7],开源社区兴起,互联网的飞速发展[注8],越来越多的来自全世界的黑客成为了Unix文化和技术的继承者。
Linus Torvalds就是其中一位
Linus做梦也不会想到,当初只是开放一个自己编写的Unix-like的系统源代码会让他有资格在世界的舞台上和Bill Gates同台竞技[注9]。Linux的诞生绝对不是偶然,而是一种必然。
有点偏题了,现在我想问一个问题就是,如果你使用的是Windows,你了解你的系统吗?敢说了解的只有两种人,有权力看代码的微软工作人员和狂妄
的人。你有没有为你不知道某个文件或者文件夹到底是干什么的而头疼不已?有没有为无法自己修改系统的某些臃肿的功能而烦恼?有没有为管理员的权限也无法删
除某些不必要的系统文件而恼火?如果有,你具有黑客精神,但你用玩错了玩具,如果没有,请关闭这个窗口。
Windows是Business-Desktop
Product,是用来卖钱的,可惜大多数国人素质低下,没有去维护他人权益的思想和意识[注10],买来的都是盗版,盗版又怎么样呢?Windows终
究是Windows,它不会因为盗版而让你把它的技术公布出来,微软放任着中国盗版很大的一个原因是,他知道中国人的德性,先让你用习惯了,当你习惯了以
后,它开始打击盗版[注11],你除了Windows什么都不会,甚至脑子里根本没有还有别的操作系统的概念,就必须花钱买正版,这时你就完了,因为你吸
上毒了。
所以,更不用谈你能够从这个系统中学到些什么真正的黑客技术尤其是精神还有文化,右手谁都有。
黑客是不是都用linux系统进行攻击的
那可不全是。作为一名真正的、高水平的 HACKER,只要他能够精通:各种计算机操作系统的体系结构、以及计算机系统的底层技术编程、计算机网络各种协议的低级编程,那么他就可以达到想用什么系统进行攻击,就可以随心所欲地对任何操作系统进行攻击,以及想窃取什么任何信息的话,那简直就是信手拈来。
linux黑客系统厉害吗?
没有所谓厉害的系统,只有厉害的黑客~
再牛逼的软件也是懂的人才能用好~
不是一天两天下载好软件然后跟着说明就能当黑客的~
目前最出名的就是kali
linux,
基于debian的linux发行版~
但是首先你要熟悉linux系统的操作,
其次才能学会使用kali里面的软件~
服务器,操作系统,网络,编程都要很精通才能运用自如~
不过你可以跟着说明用它破解比你还菜的邻居大妈的wifi~