句柄降权保护自己

简介: 简述了句柄降权的原理和作用

句柄降权保护自己

概述:

通过句柄降权保护自己的内存

实验环境:

Windows7 x86 ,Windbg

前置条件:

必须要先看这篇文章https://www.52pojie.cn/thread-1770541-1-1.html,不看的话以下内容基本上是看不懂的

原理讲解:

私有句柄表中的值总共64bit位,高32bit位代表句柄拥有者对句柄对象的操作权限,低32bit位与运算上0xF是句柄对应的对象在内核中的地址,之所以与运算0xF是因为低32bit位中的最后3bit位为对象的三个属性。

速战速决:

根据上面所说的原理我们通过举例一个句柄值来操作便知道具体操作了,加入现在有个私有句柄表中的句柄值为000000039f026cc1`,那么此时00000003便是句柄拥有者的权限,权限有以下几种:

#define PROCESS_TERMINATE                  (0x0001)  
#define PROCESS_CREATE_THREAD              (0x0002)  
#define PROCESS_SET_SESSIONID              (0x0004)  
#define PROCESS_VM_OPERATION               (0x0008)  
#define PROCESS_VM_READ                    (0x0010)  
#define PROCESS_VM_WRITE                   (0x0020)  
#define PROCESS_DUP_HANDLE                 (0x0040)  
#define PROCESS_CREATE_PROCESS             (0x0080)  
#define PROCESS_SET_QUOTA                  (0x0100)  
#define PROCESS_SET_INFORMATION            (0x0200)  
#define PROCESS_QUERY_INFORMATION          (0x0400)  
#define PROCESS_SUSPEND_RESUME             (0x0800)  
#define PROCESS_QUERY_LIMITED_INFORMATION  (0x1000)  
#define PROCESS_SET_LIMITED_INFORMATION    (0x2000)  
#if (NTDDI_VERSION >= NTDDI_VISTA)
#define PROCESS_ALL_ACCESS        (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \0xFFFF)

当我们通过OpenProcess以多种权限申请打开进程时便将多种权限或运算就得到了我们想要的权限值,我们的目的是为了降低句柄拥有者对我们要保护的进程的操作权限,那最简单暴力的方法便是把高32bit位置0,直接让句柄拥有者对我们的进程失去所有权限。依然按照昨天必读那篇文章的保护进程123.exe来说,我们只需要在原判断成功123.exe进程对象句柄在其他进程里的时候把对应的句柄值的高32bit位置0就实现了,更改后的代码如下:

        count_2 = count_2 - 1;
        ULONG64 pTmpTableValue = 0;
        ULONG uHight32 = 0;
        ULONG uLow32 = 0;
        UCHAR uType = 0;
        PUCHAR pProcessName = NULL;
        ULONG uFindNum = 0;
        PULONG pTableAddr = 0;
        int iClearNum = 0;
        for (int i = 0; i < count_2-1; i++)
        {
   
   
                for (int j = 0; j < 512; j++)
                {
   
   
                        if (pOneTableCode[i] == 0)
                        {
   
   
                                break;
                        }
                        pTableAddr = ((PUCHAR)pOneTableCode[i] + j * 8);
                        pTmpTableValue = *((PULONG64)(pTableAddr));
                        uHight32 = pTmpTableValue >> 32;
                        uLow32 = pTmpTableValue & 0x00000000ffffffff;
                        uLow32 = uLow32 & 0xFFFFFFF8;
                        if (uLow32 != 0 && uLow32>0x80000000)
                        {
   
   

                                uType = *(PUCHAR)((PUCHAR)uLow32 + 0xc);
                                if (uType == 0x7)
                                {
   
   
                                        pProcessName = (PUCHAR)((PUCHAR)uLow32 + 0x18 + 0x16c);
                                        if (strcmp(pProcessName, "123.exe") == 0)
                                        {
   
   
                                                //高32bit位写为0
                                                RtlCopyMemory(pTableAddr, &iClearNum, 4);
                                                openflag++;
                                        }
                                        DbgPrintEx(77, 0, "[db][exeinfor]:Processname:%s\n", pProcessName);
                                }

                        }
                        uFindNum++;
                }
        }

结果:

因为123.exe的句柄拥有者有CE调试器,所以如果我们保护成功了的话,CE是无法正常访问123.exe的进程数据的,所以看图

11.png
22.png

结论:

句柄降权暴力有效,但是任然能被化解,攻防就像矛盾!

相关文章
|
PHP 数据库
织梦DEDECMS自动内链一个关键字对应多个链接随机调用的设置方法
利用dedecsm织梦自动内链的时候,可能会有一个关键字对应多个网站,随机调用网址的需求,比如(织梦自动内链)这个关键词一些文章内链链接到网站的首页,一些链接到文章页,但是织梦中原带的功能,一个关键词只能加一个网址,网上找了很多办法也没有找到可用的,还好米米素材网懂一点点php,哪就自己动手吧。下面是织梦自动内链一个关键字对应多个链接,随机调用这些链接的解决办法。
|
安全 Java API
PublicCMS 网站漏洞 任意文件写入并可提权服务器权限
PublicCMS是目前网站系统中第一个采用JAVA架构 TOMCAT+Apcche+Mysql数据库架构的CMS网站,开源,数据承载量大,可以承载到上千万的数据量,以及用户的网站并发可达到上千万的PV,PublicCMS静态全站html,访问速度极快,模板样式多,可自己设计,第三方的API接口也很多,深受网站运营者的喜欢。最重要的是开源,免费升级,支持动静分离,数据库及时备份等功能。
521 0
PublicCMS 网站漏洞 任意文件写入并可提权服务器权限
Win7系统中解除VS2008过期限制程序,附源码
Win7系统中解除VS2008过期限制程序,附源码 下载地址: http://files.cnblogs.com/waw/Win7_VS2008_Cracker.rar
679 0
|
安全 搜索推荐 JavaScript
打开网站被挂马跳转到博彩页面 解决办法
从百度这里点击进去,我的网站会直接跳转到赌博网站上去,我一开始以为   是百度有问题了,我再从其他搜索引擎试了一下,360搜索,搜狗搜索点击进去,   都会自动跳转到赌博网站上去,难不成是我网站出问题了?        我...
7763 0
|
C++ Windows
windbg调试实例(4)--句柄泄露[转]
同事介绍了一篇调试句柄泄露的blog文章,今天有空看了一下,这家伙用视频的方式录下整个调试的过程,学习一目了然,真是有心。鉴于学习的过程总结一下能加深记忆,所以我这里做个记录,感兴趣的朋友可以看这里:http://blogs.msdn.com/ntdebugging/archive/2007/09/14/talkbackvideo-understanding-handle-leaks-and-how-to-use-htrace-to-find-them.aspx     如果你不喜欢英文,那就可以看下面我蹩脚的解释了。
1294 0
|
C++ Windows
windbg调试实例(4)--句柄泄露
同事介绍了一篇调试句柄泄露的blog文章,今天有空看了一下,这家伙用视频的方式录下整个调试的过程,学习一目了然,真是有心。鉴于学习的过程总结一下能加深记忆,所以我这里做个记录,感兴趣的朋友可以看这里:http://blogs.msdn.com/ntdebugging/archive/2007/09/14/talkbackvideo-understanding-handle-leaks-and-how-to-use-htrace-to-find-them.aspx     如果你不喜欢英文,那就可以看下面我蹩脚的解释了。
869 0