通过DOKM操作实现程序切换用户

本文以cmd为例,将它改为System账号

原理

每个程序都有一个EPROCESS结构体,每个程序的EPROCESS都有一个 Token,它定义了该进程的安全上下文(用户身份、权限等),我们可以通过WinDbg来对它进行修改

安装和配置WinDbg

从Windows应用商店或官网下载WinDbg并安装

安装完后以管理员身份运行cmd,运行命令

bcdedit -debug on

至此WinDbg安装完毕,并且本地内核调试功能开启

获取System用户令牌

打开WinDbg,点击左上角文件,在Start debugging栏处有Attach to kernel 选项,点击它,在最右侧栏处有一个Local选项点击它,再点击OK,就是点击文件后再“Start debugging” → “Attach to kernel” → “Local” → “OK”

此时会显示命令行,我们可以通过任务管理器得知System进程的PID是4,而它的HEX也是4

我们可以用以下命令输出System进程的详细信息(4指进程pid的16进制,1表示输出信息的详细程度,而1输出的信息正好包含用户Token)

 !process 4 1

输出的Token部分就是这个进程的用户令牌,我们把它记录下来,例如我的是86e03b80

获得cmd的EPROCESS地址和token偏移量

我以cmd为例,运行cmd,运行命令

 whoami

可以查看运行cmd的用户,为非System用户。

打开任务管理器,查看cmd进程的pid,并转化为16进制,例如我的转换后是1BF2

切回WinDbg,输入命令(把1BF2换成你所获得的用户令牌)

 !process 1BF2 0

从PROCESS栏处获得cmd的EPROCESS地址,例如我的是9b06b900

 dt _eprocess -ny token

获得token偏移量,例如我的是+0x0fc

写入内存

最后输入命令(把9b06b900改成你获得的程序EPROCESS地址,把+0x0fc改成你获得的token偏移量,把86e03b80改成你获得的用户token

 eq 9b06b900+0x0fc 86e03b80

直接写入内存

再次切换回cmd输入命令whoami可以看到cmd的用户已经被改为system

以此类推其他用户和进程也可以用此方法

 

 

 

 

文章标题:通过DOKM操作实现程序切换用户 文章作者:emnasop

文章未特殊说明情况下,默认使用CC-BY-NC 4.0协议,转载需注明出处,不可用于商业用途
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇