inline Hook IdePortStartIo+80 的奇怪驱动

原理类似机器狗,代码写的挺新鲜

loadder.exe

行为

         NtSetSysteminformation加载驱动 c:\\cloud76.dll 

         

驱动cloud76.dll        

行为

         摘掉IopFsNotifyChangeQueueHead队列

         

         hook dmload.sysIrpCreateloadder.exe通信

         loadder.exeNtCreateFileOBJECT_ATTRIBUTES参数尾部缀上附加参数,cloud76.dll 的hook函数栈回溯取得参数

                   

         map一份atapi.sys到内存中,自己调用map文件的IdePortDispatch读写扇区

         

         inlineHook IdePortStartIo+80 跳转到这里

         cmp     byte ptr [esi+37h],77h ;srb->cdb[7] = =0x77 (BlockCount)

         je      81d73f64 

         or      eax,2

         mov     dword ptr [esi+28h],eax

         jmp     atapi!IdePortStartIo+0x94 (f84ed8f8)

srb的扇区号高位进行判断, srb->Cdb[7] == 0x77的时候跳过atapi的一句操作,(0x77这个值是硬编码的)

         

 

     直接跳过atapi.sys的这句srb->SrbExtension = (PVOID)((unsigned int)v9 | 2); 用意不明,我把atapi中这句nop之后毫无影响,实在想不通啊~~

         

         直接从物理磁盘级别解析文件系统fat32 or ntfs,写入stobject.dll

 

修改后的stobject.dll

         循环下载http://2012baidu.3322.org:8087/88.exe

 

扔一个idb和完整样本上来,这家伙驱动写的还是不错的,连atapi都要自己map来绕过钩子,就是要和网吧还原对抗的

就是那句inline hook实在搞不懂= = 可能也是个某驱动对抗用的吧

 

扔个样本出来

115提取码 e7breces

cloud76.zip

阅读全文
类别:Rootkit 查看评论
posted on 2012-03-23 18:03  retme  阅读(313)  评论(0编辑  收藏  举报