首页
论坛
专栏
课程

[原创]对象名字劫持,如何隐藏IRP DISPATCH HOOK

2012-2-11 22:37 9378
Sysnap
14

[原创]对象名字劫持,如何隐藏IRP DISPATCH HOOK

2012-2-11 22:37
9378
翻看大学写的代码,发现一段XXX代码,遂写成篇简单文章。
驱动程序中通过一个驱动对象名来获取对应的驱动对象通常是调用ObReferenceObjectByName,ObReferenceObjectByName的声明如下
NTSTATUS
ObReferenceObjectByName (
    __in PUNICODE_STRING ObjectName,
    __in ULONG Attributes,
    __in_opt PACCESS_STATE AccessState,
    __in_opt ACCESS_MASK DesiredAccess,
    __in POBJECT_TYPE ObjectType,
    __in KPROCESSOR_MODE AccessMode,
    __inout_opt PVOID ParseContext,
    __out PVOID *Object
    )
对象管理器就会根据ObjectName去遍历对应对象目录下的所有对象,看哪些对象的名字跟ObjectName匹配。那驱动对象的名字是存储在哪里呢?答案就是在
OBJECT_HEADER_NAME_INFO里面。
typedef struct _OBJECT_HEADER_NAME_INFO {
    POBJECT_DIRECTORY Directory;   //对象所属的路径
    UNICODE_STRING Name;//对象名
    ULONG QueryReferences;
} OBJECT_HEADER_NAME_INFO, *POBJECT_HEADER_NAME_INFO;

那这样修改对象名,那通过ObReferenceObjectByName就无法获取到正确的驱动对象了。下面介绍如何隐藏IRP DISPATCH HOOK。

1) 调用ObReferenceObjectByName获取\FileSystem\ntfs对应的驱动对象的指针pDrvObj
2)替换掉你想要替换的DISPACTH指针
3)修改\FileSystem\ntfs这个名字
        OBJECT_HEADER* lpObjectHeader = NULL;
        POBJECT_HEADER_NAME_INFO lpObjectNameInfo = NULL;
        UNICODE_STRING uniXX;
        RtlInitUnicodeString (&uniXX, L"Hello 123");       
        RtlCopyUnicodeString(&pDrvObj->DriverName,&uniXX);
        lpObjectHeader = OBJECT_TO_OBJECT_HEADER(pDrvObj);
        lpObjectNameInfo = (POBJECT_HEADER_NAME_INFO)((DWORD)lpObjectHeader - (DWORD)lpObjectHeader->NameInfoOffset);
        RtlCopyUnicodeString(&lpObjectNameInfo->Name,&uniXX);
4) 保存好原来的驱动对象信息
        RtlCopyMemory(&pDrvObject,pDrvObj,sizeof(DRIVER_OBJECT));
5)用IoCreateDriverc创建一个同名的驱动对象,初始化DISPACTH指针为原始指针
NTKERNELAPI
NTSTATUS
IoCreateDriver(
    __in_opt PUNICODE_STRING DriverName,
    __in PDRIVER_INITIALIZE  DriverEntry
    );

任务完成。其他用途自由发挥。

[推荐]看雪企服平台,提供安全分析、定制项目开发、APP等级保护、渗透测试等安全服务!

上一主题 下一主题
最新回复 (9)
cvcvxk 10 2012-2-11 23:11
2
0
部分ARK的作者没这么好骗。
Winker 8 2012-2-13 13:15
3
0
有bin来测试下么。
邓韬 9 2012-2-13 13:30
4
0
liner没那么好骗的,都曝光了
ImHolly 1 2012-2-13 16:22
5
0
发出来就不好骗了.
通过符号链接什么的也能间接找到.
ytyay 2012-2-15 23:37
6
0
学习    谢谢分享
Fido 2012-2-16 06:41
7
0
膜拜啊。。。首页留名呢....谢谢楼主分享.....
pandaforum 2012-2-16 09:25
8
0
这个方法很邪恶。
wybx 2012-2-16 09:35
9
0
哈哈 明白楼主最后一句话的真谛了
BoyXiao 2012-2-27 12:05
10
0
谢谢楼主,暂且留名标记
游客
登录 | 注册 方可回帖
返回