原理类似机器狗,代码写的挺新鲜
loadder.exe
行为
NtSetSysteminformation加载驱动 c:\\cloud76.dll
驱动cloud76.dll
行为
摘掉IopFsNotifyChangeQueueHead队列
hook dmload.sys的IrpCreate与loadder.exe通信
loadder.exe在NtCreateFile的OBJECT_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