首页
社区
课程
招聘
[原创]分享比较完整的ROOTKIT DEMO! 原来Shadow Hook和SSDT Hook一样容易!
发表于: 2008-8-5 23:37 106615

[原创]分享比较完整的ROOTKIT DEMO! 原来Shadow Hook和SSDT Hook一样容易!

2008-8-5 23:37
106615
收藏
免费 7
支持
分享
最新回复 (116)
雪    币: 229
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
51
好家伙,,终于找到了,,,,,
2008-10-11 20:19
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
52
很黄很暴力
2008-10-16 11:14
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
53
在Win 2k SP1和SP4下GetCsrPid()函数中,找不到对象的类型为21的端口, 有谁解决这个问题了吗?分享下啊!
(在Win2k3、XP下没有问题)
//获取csrss.exe进程
ULONG GetCsrPid()
{
   NTSTATUS ntStatus;
   HANDLE   Process, hObject;
   NTSTATUS St;
   ULONG    CsrId = 0;
   OBJECT_ATTRIBUTES obj;
   CLIENT_ID      cid;
   POBJECT_NAME_INFORMATION ObjName;
   UNICODE_STRING ApiPortName;
   PSYSTEM_HANDLE_INFORMATION_EX Handles;
   int i;

   RtlInitUnicodeString(&ApiPortName, L"\\Windows\\ApiPort");
  
   Handles = GetInfoTable( SystemHandleInformation );
   if( Handles == NULL )
   {
      DbgPrint("GetCsrPid():GetInfoTable Error.\n");
      return 0;
   }
   ObjName = ExAllocatePool( PagedPool, 0x2000 );
   DbgPrint("Number of handles %d\n", Handles->NumberOfHandles);
   for( i = 0; i != Handles->NumberOfHandles; i++ )
   {  //打开的对象的类型是否为21
      if (Handles->Information[i].ObjectTypeNumber == 21) //Port object Win2kSP1下找不到21端口
      {
         InitializeObjectAttributes( &obj, NULL, OBJ_KERNEL_HANDLE, NULL, NULL );
         cid.UniqueProcess = (HANDLE)Handles->Information[i].ProcessId;
         cid.UniqueThread  = 0;

         ntStatus = ZwOpenProcess(&Process, PROCESS_DUP_HANDLE, &obj, &cid);
         if( NT_SUCCESS(ntStatus) )
         {
            ntStatus = ZwDuplicateObject( Process, (HANDLE)Handles->Information[i].Handle,
                           NtCurrentProcess(), &hObject, 0, 0, DUPLICATE_SAME_ACCESS);
            if( NT_SUCCESS(ntStatus) )
            {
               ntStatus = ZwQueryObject( hObject, ObjectNameInformation, ObjName, 0x2000, NULL);
               if( NT_SUCCESS(ntStatus) )            
               {
                  if (ObjName->Name.Buffer != NULL)
                  {
                     
                     if ( wcsncmp(ApiPortName.Buffer,  ObjName->Name.Buffer, 20) == 0 )
                     {
                        DbgPrint("****************************************************\n");
                        DbgPrint("Csrss PID:%d\n", Handles->Information[i].ProcessId);
                        DbgPrint("Csrss Port - %ws\n", ObjName->Name.Buffer);
                        DbgPrint("****************************************************\n");
                        CsrId = Handles->Information[i].ProcessId;
                        ZwClose( Process );
                        ZwClose( hObject );
                        CsrId = Handles->Information[i].ProcessId;
                        ExFreePool( Handles );
                        ExFreePool( ObjName );
                        return CsrId;
                     }
                  }
               } else
                         DbgPrint("Error in Query Object\n");
               ZwClose(hObject);
            } else
                     DbgPrint("Error on duplicating object\n");
            ZwClose(Process);
         } else
            DbgPrint("Could not open process\n");  
      }
   }
   
   ExFreePool( Handles );
   ExFreePool( ObjName );
  
   return 0;
}
2008-10-16 16:52
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
54
一运行...直接蓝屏了...
2008-10-18 11:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
55
我测试了一下,没有什么问题。我用的是XP2精简版。
2008-10-26 22:09
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
56
win2k是19
2008-10-27 01:32
0
雪    币: 223
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
57
膜拜一下楼主
2008-10-27 12:06
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
弱弱问一下lz在 SSDT HOOK里面经常出现下面的语句
         ntStatus = ObReferenceObjectByHandle(
             KeyHandle,
             FILE_ANY_ACCESS,
             NULL,
                   KernelMode,
                   &pObject,
                   NULL);
         if( !NT_SUCCESS(ntStatus) )
         {
            ExFreePool(pUnicodeKeyName);
                  return ntStatus;
         }

         ObDereferenceObject( pObject );

         //通过object得到name
         ntStatus = ObQueryNameString(
            pObject,
            (POBJECT_NAME_INFORMATION)pUnicodeKeyName,
                  pUnicodeKeyName->MaximumLength,
                  &size);
----------------------------------------------
ObReferenceObjectByHandle 完后立马 ObDereferenceObject,这样ObQueryNameString还能查出东西吗
2008-10-31 11:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
59
赞!下载学习!
2008-11-11 16:56
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
60
感谢共享,真不错。顶一个!!
2008-11-11 19:21
0
雪    币: 200
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
61
膜拜完了赶紧收藏
rootkit的一定收藏
谢谢lz
2008-11-11 19:24
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
62
不能吧,既然你都已经释放掉了,再引用,可能会引起蓝屏的。
2008-11-11 19:44
0
雪    币: 347
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
63
又被我的杀毒杀....继续路过
2008-11-11 20:12
0
雪    币: 347
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
64
附图(楼主这是为啥?):
上传的附件:
  • 1.JPG (52.99kb,268次下载)
  • 2.JPG (44.66kb,268次下载)
2008-11-11 20:21
0
雪    币: 347
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
65
。。。我的RPWT
2008-11-11 20:24
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
66
很菜的问一下,怎么卸载你的驱动啊!!
加载后卸不了了啊!!
2008-11-12 14:46
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
67
非常谢谢楼主~
2008-12-12 13:44
0
雪    币: 252
活跃值: (13)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
68
看了上传的附件,对我们这些菜鸟对整体的思路很有帮助。谢谢楼主的分享精神!
2008-12-14 00:48
0
雪    币: 324
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
69
小弟,就先学习了
2009-4-5 21:34
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
70
#define HOOK_SYSCALL(FuncName, pHookFunc, pOrigFunc ) \
          pOrigFunc = (PVOID)InterlockedExchange( \
          (PLONG)&MappedSystemCallTable[ SYSCALL_INDEX(FuncName) ], \
          (LONG)pHookFunc)

这样影响程序的易读性
2009-4-6 15:25
0
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
71
进了TX公司没有?tessafe.sys是你的杰作吧?
2009-4-16 02:14
0
雪    币: 24056
活跃值: (1023)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
72
不错,学习楼主!
2009-6-17 16:14
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
73
虽然看到的时间晚了一点,但是这对于我初学者来说,太有价值了,感谢LZ
2009-6-17 17:16
0
雪    币: 281
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
74
代码写的很工整, 看着舒服 ..  !

赞一个  ..
2009-6-18 19:19
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
75
学习一下
2009-8-20 23:58
0
游客
登录 | 注册 方可回帖
返回
//