干掉“W32.Sobig.F@mm”病毒

发表于:2007-06-08来源:作者:点击数: 标签:
干掉“W32.Sobig.F@mm”病毒 唉,等我把程序做好,结果发现诺顿的网站说,9月9病毒就不搞事了。 我测试的邮件系统是qmail+vpopmail 我测试的操作系统是freebsd4.8 要安装 http://www.inter7.com/eps/eps-1.2.tar.gz tarzxfeps-1.2.tar.gz cdeps-1.2 makemake

干掉“W32.Sobig.F@mm”病毒

唉,等我把程序做好,结果发现诺顿的网站说,9月9病毒就不搞事了。

我测试的邮件系统是qmail + vpopmail
我测试的操作系统是freebsd 4.8

要安装 http://www.inter7.com/eps/eps-1.2.tar.gz 
tar zxf eps-1.2.tar.gz
cd eps-1.2
make && make install

我的程序代码
,也是参照eps的howto改的,我对C不熟,搞了快5个小时了,就这一点程序

哪位对C熟悉,改吧,我无所谓,对大家有帮助就行了

哦,还参考过一位网友的程序,
感谢‘zenz.hu 真兄’不知道是否还在卖‘小龙虾’(MSN语)


假设你把源码保存为test.c,这样编译
gcc -g -I/usr/include/eps -L/usr/lib -o test test.c -leps

编译成功后,假设你把病毒邮件的内容保存为 mail.msg,测试方法
cat mail.msg | ./test
echo $?

如果返回值是99,代表找到过滤内容,邮件系统将会删除此邮件。


应用的邮件系统中去

假设你的邮件目录放在
/usr/local/vpopmail/domains/demo.com/ 目录下
修改目录下的 .qmail-default 文件
在第一行增加内容,修改后的模样
[code:1:347a89cbeb]
| /usr/local/vpopmail/bin/check_vir
| /usr/local/vpopmail/bin/vdelivermail '' bounce-no-mailbox
[/code:1:347a89cbeb]
再把test程序拷到/usr/local/vpopmail/bin目录下,并设置为可执行
cp test /usr/local/vpopmail/bin/check_vir
chmod 755 /usr/local/vpopmail/bin/check_vir

应用后,经常运行一下 dmesg 看看 check_vir 程序有没有dump掉的信息

如果有,就是程序可能有问题了,自己改改看先!不行告诉我一下。

(我还不知道,如何把检查的邮件另存一份作为出错后的调试,高手帮忙啊)

如果你有改进请联系我哟,
MSN:[email protected]



程序源码
[code:1:347a89cbeb]
#include <stdio.h>
#include <eps.h>
#include <string.h>


char *sub[]={ 
  "Re: Movie",
  "Re: Application", 
  "Your application", 
  "Your details", 
  "That movie", 
  "Thank you!",
  "Re: Approved",
  "Re: Wicked screensaver",
  NULL 
}; 

int main(int argc, char *argv[])
{
  int i, fd = 0, ret = 0;
  int counte = 0, max = 0;
  
  unsigned char *l = NULL;
  struct mime_t *m = NULL;
  struct eps_t *eps = NULL;
  struct header_t *h = NULL;

  char *type[20],*var[20];
  
  fd = 0;

  eps = eps_begin(INTERFACE_STREAM, (int *)&fd);
  if (!eps)
     return 1;

  for (h = eps_next_header(eps); h; h = eps_next_header(eps)) {
      
      if ((h->name) && (h->data))  
       {
       //printf("[%s] = [%s]\n", h->name, h->data);
       type[max] = h->name;
       var[max] = h->data;      
       }

//printf("head mess num :%d\t [%s]\t<%s>\n",counte,type[max],var[max]);
max++;


  }

while ( counte < max )
{
//printf("%d\t%s\t\n",counte,var[counte]);

//检查发件人的地址信息,如果此信息是空,删除此邮件
//大多数发件人是空的基本上都是垃圾邮件

if ( ! strcmp("From",type[counte]) )
{
if (strlen(var[counte]) == 0)
{
eps_header_free(eps);
eps_end(eps);
   return 99;
}
}

//检查邮件的主题,如果包含了上面定义的主题内容,
//一个字,删!

if ( ! strcmp("Subject",type[counte]) )
{
for (i=0;sub[i];i++)
{
if (  strstr(var[counte],sub[i]) )
{
//printf("%s\n",var[counte]);
eps_header_free(eps);
eps_end(eps);
   return 99;
}

}
}
counte++;
}
eps_header_free(eps);
eps_end(eps);
   return 0;
      
 /* printf("\n");



  for (l = eps_next_line(eps); l; l = eps_next_line(eps))
      //{
       printf("%s\n", l);
     //  printf("\t\tbody mess num :%d\n",counte);
     // counte++;
     // }

  printf("\n");

  while((!(eps->u->b->eof)) && (eps->content_type & CON_MULTI)) {
    ret = mime_init_stream(eps);
    if (!ret)
       break;    

    for (h = mime_next_header(eps); h; h = mime_next_header(eps)) {
        if ((h->name) && (h->data))
           printf("[%s]=[%s]\n", h->name, h->data);

        header_kill(h);
    }

    printf("\n");

    for (l = mime_next_line(eps); l; l = mime_next_line(eps))
        printf("%s\n", l);
  }


  eps_end(eps);
  return 0;
  */
}

[/code:1:347a89cbeb]




例子邮件源码
[code:1:347a89cbeb]
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: ( qmail 21033 invoked from network); 5 Sep 2003 12:43:29 +0800
Received: from unknown (HELO wienne) (172.16.12.100)
  by 172.16.1.10 with RC4-MD5 encrypted SMTP; 5 Sep 2003 12:43:29 +0800
From: sss
To: "wienne" <[email protected]>
Subject: Re: Re: Movie
Date: Fri, 5 Sep 2003 12:42:58 +0800
Message-ID: <000201c37368$2e71d170$640c10ac@wienne>
MIME-Version: 1.0
Content-Type: multipart/mixed;
        boundary="----=_NextPart_000_0003_01C373AB.3C951170"
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.4510
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165

This is a multi-part message in MIME format.

------=_NextPart_000_0003_01C373AB.3C951170

[/code:1:347a89cbeb]

 gadfly 回复于:2003-09-05 16:06:21
哦,不错的方法。

在投递端针对每个域做过滤。

 wienne 回复于:2003-09-05 16:05:40
就是检查邮件主题内容,没什么复杂的

哦,想起来了,我测试的系统是 4.6.2 不是4.8 ,估计也没问题

 wienne 回复于:2003-09-06 17:52:00
程序有问题,具体错误在哪还不清楚

系统信息里有大量的core dump信息,有些病毒邮件并未过滤掉

请慎用

下周一有时间再改

 redfox 回复于:2003-09-06 22:40:42
好啊,关注ing!

 proftpd 回复于:2003-09-06 23:55:10
[quote:d75e950860="wienne"]程序有问题,具体错误在哪还不清楚

系统信息里有大量的core dump信息,有些病毒邮件并未过滤掉

请慎用

下周一有时间再改[/quote:d75e950860]     
core dump 咳不简单啊!!要特小心。 

 unixkid 回复于:2003-09-08 20:22:13
还是你牛啊

 笨笨鸟 回复于:2003-09-10 08:52:24
有前途

 知知 回复于:2003-09-10 16:49:54
打搅一下去签个名吧     
http://210.51.11.205:1931/gaspay_sign.asp

原文转自:http://www.ltesting.net