wangchao.org
添加收藏 | 博客
 
购物视频论坛IT业界自然风光美女图片王朝网络小游戏BT下载生活百科编程设计手机图铃小说
 
笑话 | 水库 | 娱乐 | 体育 | 英语 | 宠物 | 美食 | 旅游 | 养生 | 手机 | 数码 | 汽车 | 珠宝 | 美容 | 装修 | 厨房 | 科普 | 动物 | 植物 | 影音 | 百科 | 知道 | 词典
  
 
 您好! 您现在位于: 王朝网络 → 编程设计 → 《3721驻留机制简单研究返回上一页 
 
1楼 

3721驻留机制简单研究

  网上购物、在线购物、购物搜索 欢迎光临本站购买图书、影视、音乐、数码、百货,手机等商品。

  作者:Quaful@水木清华
  简单研究了一下3721的机制,写在这里,作为心得笔记吧。大部分收获都来自
  Softice + 反汇编,不一定适用于某些版本。
  1、CnsMin.dll的驻留方式
  3721的核心文件:CnsMin.dll
  通常存在于\Downloaded Program Files下。
  通过注册表Run键值加载:Rundll32 \CnsMin.dll, Rundll32
  CnsMin.dll提供了一个函数Rundll32供Rundll32.exe调用
  但这个函数只是调用一个真正的驻留函数Rundll32Main()。
  Rundll32Main()伪代码:
  void Rundll32Main()
  {
  hMutex = CreateMutex("CNSMINMUTEX");
  if(ERROR_ALREADY_EXISTS)
  {
  CloseHandle(hMutex);
  exit;
  }
  if(IsWindowsNT()) {
  SetProcessSecurityInfo();
  }
  else {
  RegisterProcessAsService();
  }
  CheckVersion();
  // CnsMinKP.sys/vxd 内核驱动程序,保护3721关键文件和注册表项不被删除
  ContactWithCnsMinKPDriver();
  // 关键的hook,负责将CnsMin.dll注入其他进程空间
  InstallCBTHook();
  // 关键的hook,负责将CnsMin.dll注入其他进程空间
  InstallCallWndProcHook();
  // CnsMinIO.dll 负责IE地址栏下方的提示
  InitCnsMinIO();
  // 一些注册表信息
  InitRegistry();
  // 保护CnsMin.dll的钩子不被卸载或抢先
  InstallGuardTimer();
  CreateMsgWindow();
  // Message loop
  while (true)
  {
  GetMessage(&msg);
  TranslateMessage(&msg);
  DispatchMessage(&msg);
  }
  }
  CnsMin主要是通过WH_CBT和WH_CALLWNDPROC两个全局钩子注入IE进程空间的。注入IE后,又安装了WH_KEYBOARD,WH_DEBUG等钩子。其中对3721实现其“实名转换”有用的是WH_KEYBOARD。这是一个本地钩子。
  CnsMin为了保证自己的优先级最高,用了一个定时器函数反复安装钩子,无疑会造成系统性能的下降。
  我曾经尝试过自己安装一个WH_DEBUG钩子阻止3721钩子的调用,确实起到了效果,立即可以使3721失效。但这种方法3721仍然驻留IE进程内,属于指标不治本的方法。
  强制结束Rundll32进程,可以暂时卸载3721的驻留代码。但CnsMin.dll通过COM注册已经嵌入IE组件中,重新启动IE后,该进程又会重新启动。
  2、3721的防删除手段
  文件系统驱动:CnsMinKP*.sys 针对NT/2000/XP有不同版本(98下面是CnsMinKP.vxd)通常存在于\drivers\目录。
  驱动程序,由Windows启动时加载。
  该驱动程序过滤了对文件和注册表的删除操作。试图删除3721的关键文件和注册表项时,直接返回一个TRUE,使Windows认为删除已经成功,但文件和注册表实际上还是在那里。该驱动程序还有一个黑名单(保存在某个外部文件中),阻止Windows读取其他3721的竞争对手的插件文件。
  目前还没有找到停止该驱动的方法。
  删除方法:在Windows启动前(例如,98下面退出到DOS)删除CnsMinKP*.sys文件。注意:3721具有自恢复能力。某些关键文件被删除后,其它模块会试图从3721网站重新下载。所以彻底删除前需要断开网络连接。
  3、针对目前版本的删除步骤:
  a) 运行3721自己提供的删除程序。可以删掉大部分的文件。
  b) 从DOS启动,删除残存文件,如CnsMin.dll,CnsMinKP*.*等
  可能的目录:Downloaded Program Files目录,Program Files\3721目录,drivers目录c) 启动Windows,进入桌面时Windows会报告一些模块找不到的错误,不用理会,删除注册表中3721的值。
  可能的位置:HKEY_CURRENT_USER: Software\3721
  HKEY_LOCAL_MACHINE: Windows\CurrentVersion\RunSYSTEM\CurrentControlSet
  另外还零散的藏了一些,用关键字查找。
  

  作者:Quaful@水木清华   简单研究了一下3721的机制,写在这里,作为心得笔记吧。大部分收获都来自   Softice + 反汇编,不一定适用于某些版本。   1、CnsMin.dll的驻留方式   3721的核心文件:CnsMin.dll   通常存在于\Downloaded Program Files下。   通过注册表Run键值加载:Rundll32 \CnsMin.dll, Rundll32   CnsMin.dll提供了一个函数Rundll32供Rundll32.exe调用   但这个函数只是调用一个真正的驻留函数Rundll32Main()。   Rundll32Main()伪代码:   void Rundll32Main()   {   hMutex = CreateMutex("CNSMINMUTEX");   if(ERROR_ALREADY_EXISTS)   {   CloseHandle(hMutex);   exit;   }   if(IsWindowsNT()) {   SetProcessSecurityInfo();   }   else {   RegisterProcessAsService();   }   CheckVersion();   // CnsMinKP.sys/vxd 内核驱动程序,保护3721关键文件和注册表项不被删除   ContactWithCnsMinKPDriver();   // 关键的hook,负责将CnsMin.dll注入其他进程空间   InstallCBTHook();   // 关键的hook,负责将CnsMin.dll注入其他进程空间   InstallCallWndProcHook();   // CnsMinIO.dll 负责IE地址栏下方的提示   InitCnsMinIO();   // 一些注册表信息   InitRegistry();   // 保护CnsMin.dll的钩子不被卸载或抢先   InstallGuardTimer();   CreateMsgWindow();   // Message loop   while (true)   {   GetMessage(&msg);   TranslateMessage(&msg);   DispatchMessage(&msg);   }   }   CnsMin主要是通过WH_CBT和WH_CALLWNDPROC两个全局钩子注入IE进程空间的。注入IE后,又安装了WH_KEYBOARD,WH_DEBUG等钩子。其中对3721实现其“实名转换”有用的是WH_KEYBOARD。这是一个本地钩子。   CnsMin为了保证自己的优先级最高,用了一个定时器函数反复安装钩子,无疑会造成系统性能的下降。   我曾经尝试过自己安装一个WH_DEBUG钩子阻止3721钩子的调用,确实起到了效果,立即可以使3721失效。但这种方法3721仍然驻留IE进程内,属于指标不治本的方法。   强制结束Rundll32进程,可以暂时卸载3721的驻留代码。但CnsMin.dll通过COM注册已经嵌入IE组件中,重新启动IE后,该进程又会重新启动。   2、3721的防删除手段   文件系统驱动:CnsMinKP*.sys 针对NT/2000/XP有不同版本(98下面是CnsMinKP.vxd)通常存在于\drivers\目录。   驱动程序,由Windows启动时加载。   该驱动程序过滤了对文件和注册表的删除操作。试图删除3721的关键文件和注册表项时,直接返回一个TRUE,使Windows认为删除已经成功,但文件和注册表实际上还是在那里。该驱动程序还有一个黑名单(保存在某个外部文件中),阻止Windows读取其他3721的竞争对手的插件文件。   目前还没有找到停止该驱动的方法。   删除方法:在Windows启动前(例如,98下面退出到DOS)删除CnsMinKP*.sys文件。注意:3721具有自恢复能力。某些关键文件被删除后,其它模块会试图从3721网站重新下载。所以彻底删除前需要断开网络连接。   3、针对目前版本的删除步骤:   a) 运行3721自己提供的删除程序。可以删掉大部分的文件。   b) 从DOS启动,删除残存文件,如CnsMin.dll,CnsMinKP*.*等   可能的目录:Downloaded Program Files目录,Program Files\3721目录,drivers目录c) 启动Windows,进入桌面时Windows会报告一些模块找不到的错误,不用理会,删除注册表中3721的值。   可能的位置:HKEY_CURRENT_USER: Software\3721   HKEY_LOCAL_MACHINE: Windows\CurrentVersion\RunSYSTEM\CurrentControlSet   另外还零散的藏了一些,用关键字查找。   

 
标签: 3721  机制  研究  简单  驻留  
 
您可以将本页贴到其他网站
UBB代码HTML代码
 
 
 
 
 
 
 更多内容
 ·IIS.ASP文件缓冲区溢出漏洞 ·如何把ASP编写成DLL ·绕过内核调度链表进程检测 ·测试并优化基于软件的网络分析工
 ·FormatString漏洞介绍/总结(一) ·避免十大常见网络应用程序安全错 ·测试并优化基于软件的网络分析工 ·FormatString漏洞介绍/总结(二)
 ·FormatString漏洞介绍/总结(三) ·FormatString漏洞介绍/总结(四) ·FormatString漏洞介绍/总结(五) ·贪婪—Sobig和Mydoom成功原因
 ·病毒杀不掉的原因以及处理方法 ·查杀耗CPU资源的Explored病毒 ·教你病毒发作后的急救措施 ·关于PE可执行文件的修改
 ·PGP密匙的生成以及PGP的基本命令 ·“木马”万能查杀法和清除法 ·专家谈病毒:“震荡波”新D型变种 ·恶性蠕虫“震荡波”D变种全面技术
 ·清除及其预防震荡波病毒的三种方 ·黑客软件编写基础知识集合(1) ·黑客软件编写基础知识集合(2) ·黑客软件编写基础知识集合(3)
 
 
最新评论  点此查看所有评论
 
 
 
 
发表评论(支持UBB码)


验证码:  
 
 
 
© 2005- 王朝网络 版权所有