垃圾堆——windowssky
人生就象一场旅行 不必在乎目的地 在乎的是沿途的风景以及看风景的心情
<2009年1月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

留言簿(1)

随笔分类

随笔档案

文章档案

相册

NDIS IFS

内核研究

基础知识

安全技术

操作系统

病毒技术

网络技术

逆向工程

驱动开发

搜索

最新评论

阅读排行榜

评论排行榜

 
VC知识库BLOG   首页  新随笔  联系  聚合  登录 
  随笔-21 文章-0 评论-31 Trackbacks-0

  近1年来互连网上的木马越来越多,有的还删除不掉,要切换到dos才可行,如:CNNC,3721等,实现技术也五花八门,但就文件不可删除的实现技术可分三类:

  1 Attach file system; 这种技术和Filemon/sfilter查不多,就是挂一个filter驱动到fs上,其他函数都是passthru下去,只处理IRP_MJ_SET_INFORMATION,当发现有删除需保护文件的IRP,就 
Irp->IoStatus.Status = STATUS_SUCCESS;            
Irp->IoStatus.Information = 0;            
IoCompleteRequest(Irp, IO_NO_INCREMENT);
更本不让Fs去处理,从而达到文件不可删除的作用!

有什么方法可以删除呢?自己写个驱动自己填充irp包(见OSR文档Rolling Your Own),直接发送IRP到File System Device上去就ok啦!


  2 修改file system的dispatch函数表; 首先得到Fs的DriverObject(根据驱动名得到驱动设备对象(ObReferenceObjectByName(IoDriverObjectType))),pDriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = MySetInformation,然后再MySetInformation中再调用原来的调度函数,类似于HookApi;发现有删除
需保护文件的IRP,就直接IoCompleteRequest,更本不让原来的FsSetInformation处理!

有什么方法可以删除呢?自己写个驱动来修复Fs的dispatch函数表,读Fs的原始文件,根据PE文件得到Fs的Entrypoint,dispatch函数表的填充都在EntryPoint后面,我们可以根据Opcode查找,XX XX XX XX就是我们要找的dispatch的原始地址;找到后pDriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = XX XX XX XX,然后就能删除文件啦!

FunOpc=MajorFunction*4+0x38
C7 46 FunOpc[<80]  XX XX XX XX  mov     dword ptr [esi+50h], offset _NtfsFsdSetInformation
C7 86 FunOpc[>=80] XX XX XX XX
C7 43 FunOpc[<80]  XX XX XX XX  mov     dword ptr [ebx+50h], offset _NtfsFsdSetInformation
C7 83 FunOpc[>=80] XX XX XX XX


  3 通过ZwCreateFile把文件锁定;删除时报告“文件正在使用,禁止删除”,具体原理自己摸索吧,反正是通过ZwCreateFile实现的!

有什么方法可以删除呢?
  step1 :通过QuerySystemInformation(SystemHandleInformation)得到当前系统的所有句柄信息
  step2 :遍历当前所有进程,根据进程ID,得到此进程打开的所有句柄信息
  Step3 :把句柄发送给我们的驱动程序,驱动程序根据ObQueryNameString得到句柄的路径信息,然后再传给我们的应用程序
  Step4 :如果是我们要删除文件的路径,应用程序调用DuplicateHandle(DUPLICATE_CLOSE_SOURCE),句柄被关闭了,现在可以删除文件了! 
  注:QuerySystemInformation的使用说明见The Undocumented Functions,或者http://undocumented.ntinternals.net,第三种解除文件锁定的方法是我反汇编Unlock软件学习到的


  最后感谢7cat的帮助!

posted on 2007-04-18 14:59 垃圾一堆 阅读(3366) 评论(3)  编辑 收藏
Comments
  • # re: 小议木马的文件保护和锁定技术
    快乐小胖鸟
    Posted @ 2007-04-18 15:18
    已阅,说得容易,做起来有点难~~~~~~~~~~~~~~~
  • # re: 小议文件保护和锁定技术

    Posted @ 2007-09-14 11:28
    厉害啊,自己好久都没有想明白(不会用反编译),谢谢了。
  • # re: 小议文件保护和锁定技术
    配线架
    Posted @ 2008-05-27 12:02
    好东西,谢谢分享
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]