做好防范 Linux系统下的攻击软件全接触 企业软件频道
Posted on 八月 16rd, 2007 由 admin
热门问答:
推荐阅读
| · 武汉市两大措施鼓励软件与信息服务外包 企业软件频道 |
| 摘要: 武汉市将出台两大措施,促进服务业外包发展。“十一五”,要建成全国重要的软件产业基地和研发中心,产业发展总体水平进入全国前列。软件外包形成规模优势,成为华中地区最大规模的软件外包服务基地城市。 武汉市将出台两大措施,促进服务业外包发展。“十一五”,要建成全国重要的软件产业基地和研发中心,产业发展总体水平进入全国前列。软件外包形成规模优势,成为华中地区最大规模的软件外包服务基地城市。 昨日,在湖北省政府主...... |
| · 魅族e3系列报道 专业级音效lifevibes详解 |
| 摘要: 魅族新品e3即将上市的消息已经引起了大家的广为关注,作为魅族经典机型me系列第三代产品,e3将会是国内首次采用目前顶级的mp3解码芯片——philips的pnx0102。为了提高整体的性能,魅族还独到的采用了8层高精度pcb板及超高速16mbisram。如此具有创意的设计和精湛的工艺在国内还是非常领先的。除了强劲的硬件支持外,e3还拥有国际专业级lifevibes™音效。很多朋友对lifevibes™还比较...... |
正文
现在,大量的网络服务器开始使用linux操作系统,linux服务器的安全性也开始受到关注。对linux服务器攻击的定义是:攻击是一种旨在妨碍、损害、削弱、破坏linux服务器安全的未授权行为,攻击的范围可以从服务拒绝直至完全危害和破坏linux服务器。对linux服务器攻击有许多种类,从攻击深度的角度说明
现在,大量的网络服务器开始使用linux操作系统,linux服务器的安全性也开始受到关注。对linux服务器攻击的定义是:攻击是一种旨在妨碍、损害、削弱、破坏linux服务器安全的未授权行为,攻击的范围可以从服务拒绝直至完全危害和破坏linux服务器。对linux服务器攻击有许多种类,从攻击深度的角度说明,我们可以把攻击分为四级:服务拒绝攻击(dos)、本地用户获取了非授权的文件的读写权限、远程用户获得特权文件的读写权限、远程用户获得根权限。下面,我们将选取一些有针对性的经典工具,一一加以说明。
1、溢出:从开源代码开始
linux系统中最常见的缺陷就是缓冲区溢出,缓冲区以前可能被定义为“包含相同数据类型的实例的一个连续计算机内存块”。极其常见的缓冲区种类是简单的字符数组,溢出就是数据被添加到分配给该缓冲区的内存块之外。由此,我们可以看到,作为开源系统,linux系统中的代码检查就显得十分重要。对于攻击者和管理员来说,谁首先重视它,就在一定程度上取得了主动权。
(1)spike
spike是immunitysec公司的daveaitel写的一个黑盒进行安全测试的工具。spike提供了各种各样的构造函数。例如s_binary可以构造二进制数据,s_string可以构造字符串,s_unistring可以构造unicode字符串等。spike的另一个优势是daveaitel的fuzz理论,它可以构造一些特殊的数字或者字符串作为程序的输入,检查程序是否能够处理这些异常数据。此外,spike里边提供了常见的协议支持,例如sunrpc和msrpc。
(2)lint
lint能够检查的部分错误列表:可能的空指针;在释放内存之后使用了该指针;赋值次序问题;拼写错误等。通常,一个c/c++的编译器假设程序是正确的,而lint恰恰相反,因此,它优于编译器执行的一般性检查。lint还可以贯穿多个文件来执行它的错误检查和代码分析,这是编译器做不到的。比较流行的lint程序有:pc-lint是一个由gimpelsoftware提供的支持c/c++的商用程序;splint(原来的lclint)是一个gnu免费授权的lint程序,但是只支持c不支持c++。
运行lint时,和正常的编译器一样,只要把直接加入的makefile中就可以了。通过配置选项、代码注释等方法可以控制和校准lint的输出。例如,这里有一个返回null指针的函数,splint可以通过下面的注释/*@null@*/来识别:
/*@null@*/void*test(void)
{
//afunctionthatreturnsnull!
returnnull;
}
这样做有两个目的:防止splint为这个返回null指针的函数告警;保证splint检查任何调用该函数的代码中使用该函数的返回指针是有效的。
(3)flawfinder
flawfinder是一款用python编写的c、c++程序安全审核工具,可以检查潜在的安全风险。它通过搜索检测文件源代码从而得到潜在的安全漏洞,支持检测数据库,以html格式生成报告。
2、嗅探器:linux上的“狗鼻子”
sniffer是一种常用的收集有用数据方法,它几乎能得到任何以太网上的传送的数据包。这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。这些嗅探器很容易被入侵者完成入侵以后种植在受害者服务器当中,有的只是简单的用来捕捉用户名和密码,有的则非常强大可记录所有的网络数据流。linux操作系统下有很多这样的优秀工具,下面,我们来具体看看。
(1)tcpdump
这是一个专业的网络管理工具,而且这个工具也留下了不少网络攻击故事。它能把匹配规则的数据包的包头显示出来,使用tcpdump去查找网络问题或者去监视网络上的状况.。tcpdump的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。以rpm包的形式安装是最简单的安装方法,通过rpm命令可以直接安装。以超级用户登录后,使用命令:#rpm-ivhtcpdump.rpm,就可以顺利安装了。
tcpdump采用命令行的方式使用,它的命令格式为:
tcpdump[-adeflnnopqstvx][-c数量][-f文件名]
[-i网络接口][-r文件名][-ssnaplen]
[-t类型][-w文件名][表达式]
其中,“-a”表示将网络地址和广播地址转变成名字;“-d”表示将匹配信息包的代码以人们能够理解的汇编格式给出;“-e”表示在输出行打印出数据链路层的头部信息;“-c”表示在收到指定的包的数目后,tcpdump就会停止;“-f”表示从指定的文件中读取表达式,忽略其它的表达式;“-i”表示指定监听的网络接口;“-r”表示从指定的文件中读取包(这些包一般通过-w选项产生);“-w”表示直接将包写入文件中,并不分析和打印出来;“-t”表示将监听到的包直接解释为指定的类型的报文,常见的类型有远程过程调用和snmp简单网络管理协议。
tcpdump的表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,网络上所有的信息包将会被截获。在表达式中一般如下几种类型的,一种是关于类型的,主要包括host、net、port等。第二种是确定传输方向的,主要包括src,dst,dstorsrc,dstandsrc等,这些指明了传输的方向。第三种是协议的,主要包括fddi,ip,arp,rarp,tcp,udp等类型。除了这三种类型的之外,其他重要的如下:gateway、broadcast、less、greater,还有三种逻辑运算“或、非、与”,这些可以形成强大的组合条件来满足人们的需要。例如,想要截获所有210.27.48.1的主机收到的和发出的所有的数据包:
#tcpdumphost210.27.48.1
想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpdumpiphost210.27.48.1and!210.27.48.2
如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
#tcpdumptcpport23host210.27.48.1
下面我们介绍几种典型的tcpdump命令的输出信息。比如,使用如下命令:
#tcpdump--ehostice
其中,ice是一台装有linux的主机,她的mac地址是2e:19:24:28:af:1a。h219是一台装有solaric的sun工作站,它的mac地址是8:0:20:79:5b:46;上一条命令的输出结果如下所示:
21:50:12.847509eth0ice.telnet0:0(0)ack22535win8760(df)
分析:21:50:12是显示的时间,847509是id号,eth0表示从网络接口设备发送数据包,8:0:20:79:5b:46是主机h219的mac地址,它表明是从源地址h219发来的数据包。2e:19:24:28:af:1a是主机ice的mac地址,表示该数据包的目的地址是ice.ip是表明该数据包是ip数据包,60是数据包的长度,h219.33357>ice.telnet表明该数据包是从主机h219的33357端口发往主机ice的telnet(23)端口.ack22535表明对序列号是222535的包进行响应.win8760表明发送窗口的大小是8760.
再比如,使用命令:
#tcpdumparp
到的输出结果是:
22:32:42.802509eth0>arpwho-hasroutetellice(2e:19:24:28:af:1a)
22:32:42.802902eth0表明从主机发出该数据包,arp表明是arp请求包,who-hasroutetellice表明是主机ice请求主机route的mac地址。2e:19:24:28:af:1a是主机ice的mac地址。此外,这个软件还可以分析udp等数据包等,结合linux环境熟练使用后,我们就可以充分发挥它的威力。
(2)hunt
hunt具有直观的命令追踪和会话录制功能,它以tar.gz的格式发布,文件下载后,首先需要解压缩。运行hunt后,将启动一个很直观的菜单,界面如下:
---mainmenu---rcvpkt0,free/alloc63/64------
l/w/r)list/watch/resetconnections
u)hostuptests
a)arp/simplehijack(avoidsackstormifarpused)
s)simplehijack
d)daemonsrst/arp/sniff/mac
o)options
x)exit
*>w
0)192.168.0.1[1049]-->192.168.0.2[23]
chooseconn>0
dump[s]rc/[d]st/[b]oth[b]>b
注:上面的输入(黑色字体部分)指示hunt来记录0号连接,并输出源和目的信息,则hunt将活动信息到终端屏幕上。可以看到,hunt的输出非常直观明了,易于阅读。hunt还提供有以下工具:允许指定任意一个感兴趣的连接,而不是记录所有的东西;允许指定任意一个连接,而不仅仅是以syn刚刚开始的连接;提供活动会话劫持。
(3)linsniffer
linsniffer是一个简单实用的嗅探器。它主要的功能是捕捉用户名和密码。
软件下载后,使用下面的命令来编译和运行linsniffer:
$cclinsniffer.c-olinsniffer
$linsniffer


讨论区