前段时间,恶意程序HBKrnl.sys的站炕文件导致粉碎机删不掉它,虽然是很古老的科普技术,但是一般的文件粉碎,诸如发IRP,清SectionObject等方法是删不掉的(直接磁盘填0的例外).
有感于MJ0011写的对付此程序的猥琐暴删文件方法.很想知道他是如何一步步跟踪出来那堆强大的偏移量的, 于是调试啊调试,最终淹没在系统浩瀚的汇编指令中... 难怪MJ在群上信誓旦旦的说 "跟一个版本的那几个偏移量就花了一晚上",哎呀,我花了2天多时间都没跟出来,不过从实践中也学到了许多调试经验,也罢,跟了一部分,找到一个很像的offset: 0x48,也只能到这步了.不搞咯.顺便贴点资料上来,供有兴趣的同学参考,总之, Xcb填充是很强大滴.
其实,恶意程序把自己文件站炕防删后,可以在内存中保存一份,开DPC/线程循环监视,被删了就重新生成,再注册个关机Notify(当然可以被别人摘除).关机回写.... 这样保护自己文件差不多了吧~~~
-------------------------------------------------------------------------------------------------------------------------------
Driver object (81797808) is for:
/FileSystem/Ntfs
DriverEntry: f97a8184 Ntfs!GsDriverEntry
DriverStartIo: 00000000
DriverUnload: 00000000
AddDevice: 00000000
Dispatch routines:
[00] IRP_MJ_CREATE f9748c01 Ntfs!NtfsFsdCreate
[01] IRP_MJ_CREATE_NAMED_PIPE 804f43f8 nt!IopInvalidDeviceRequest
[02] IRP_MJ_CLOSE f97480ea Ntfs!NtfsFsdClose
[03] IRP_MJ_READ f9725f3b Ntfs!NtfsFsdRead
[04] IRP_MJ_WRITE f9724b57 Ntfs!NtfsFsdWrite
[05] IRP_MJ_QUERY_INFORMATION f97492b9 Ntfs!NtfsFsdDispatchWait
[06] IRP_MJ_SET_INFORMATION f9726618 Ntfs!NtfsFsdSetInformation
[07] IRP_MJ_QUERY_EA f97492b9 Ntfs!NtfsFsdDispatchWait
[08] IRP_MJ_SET_EA f97492b9 Ntfs!NtfsFsdDispatchWait
[09] IRP_MJ_FLUSH_BUFFERS f9762ec8 Ntfs!NtfsFsdFlushBuffers
[0a] IRP_MJ_QUERY_VOLUME_INFORMATION f9749404 Ntfs!NtfsFsdDispatch
[0b] IRP_MJ_SET_VOLUME_INFORMATION f9749404 Ntfs!NtfsFsdDispatch
[0c] IRP_MJ_DIRECTORY_CONTROL f974afbd Ntfs!NtfsFsdDirectoryControl
[0d] IRP_MJ_FILE_SYSTEM_CONTROL f974d758 Ntfs!NtfsFsdFileSystemControl
[0e] IRP_MJ_DEVICE_CONTROL f9749404 Ntfs!NtfsFsdDispatch
[0f] IRP_MJ_INTERNAL_DEVICE_CONTROL 804f43f8 nt!IopInvalidDeviceRequest
[10] IRP_MJ_SHUTDOWN f97375af Ntfs!NtfsFsdShutdown
[11] IRP_MJ_LOCK_CONTROL f979caa3 Ntfs!NtfsFsdLockControl
[12] IRP_MJ_CLEANUP f9748ab8 Ntfs!NtfsFsdCleanup
[13] IRP_MJ_CREATE_MAILSLOT 804f43f8 nt!IopInvalidDeviceRequest
[14] IRP_MJ_QUERY_SECURITY f9749404 Ntfs!NtfsFsdDispatch
[15] IRP_MJ_SET_SECURITY f9749404 Ntfs!NtfsFsdDispatch
[16] IRP_MJ_POWER 804f43f8 nt!IopInvalidDeviceRequest
[17] IRP_MJ_SYSTEM_CONTROL 804f43f8 nt!IopInvalidDeviceRequest
[18] IRP_MJ_DEVICE_CHANGE 804f43f8 nt!IopInvalidDeviceRequest
[19] IRP_MJ_QUERY_QUOTA f97492b9 Ntfs!NtfsFsdDispatchWait
[1a] IRP_MJ_SET_QUOTA f97492b9 Ntfs!NtfsFsdDispatchWait
[1b] IRP_MJ_PNP f97657f0 Ntfs!NtfsFsdPnp
哈哈,然后下断点~~~
哎,刚好手头有本wy同学的<文件系统内幕.NTFSI>,里面关于VPB、VCB、FCB、CCB、SCB等讲解的还是很清楚的,得抓紧时间补补啦.
强
大的MJ,不是一般的强大,这样跟系统的东西,能这么高效跟出来的没多少人了...
附件是调试笔记,有兴趣的可参考下,估计你看了会吐血,做好心理准备.
NtfsFsdCleanup.rar (5.04 KB)
NtfsFsdCleanup.txt (17.69 KB)