jerrybird
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

项目地址:https://github.com/chroblert/JCTokenUtil
version3版本
*本工具仅供技术分享、交流讨论,严禁用于非法用途。
0x01 前言
在上篇文章研究|Windows访问令牌原理与实践(一)中说到了一些原理方面的内容,也有使用incognito工具进行了一些验证但,也还是存在一些不足。
比如:通过运行win+R访问共享文件夹时,使用incognito工具是查不到所输入的用户的token的。
如下左图使用incognito工具没有看到test用户,右图我改写的工具成功的列出了所使用的test用户。
0x02 介绍
本工具参考incognito的代码进行编写,完成了获取token和以某token执行命令两个功能。
在获取系统上所有token的时候,incognito工具使用NtQuerySystemInformation微软未公开API获取系统上所有的进程,然后再获取该进程上句柄表中的每一个句柄,判断是不是token句柄,若是则保存。
JCTokenUtils工具同样使用NtQuerySystemInformation微软未公开API,不过是直接获取系统上所有的句柄,之后判断是不是token句柄,若是则保存。由于句柄表中没有保存进程自身的主令牌,因而会使用OpenProcessTokenAPI获取并保存进程的主令牌。
以某个令牌执行命令,本工具基本参照incognito工具编写,没有区别。
0x03 使用
0x0301 命令介绍
Usage: TokenUtil.exe <module> [OPTION]
[MODULE]
ListTokens
[OPTION]
-p <pid>: 列出某个进程中的令牌
-P <procName>: 列出某个进程的令牌
-u <username>: 列出某个用户的令牌
-v : 详细模式 // 不加-v,每个用户只输出一次
example:
TokenUtils.exe ListTokens -u "NT AUTHORITY\SYSTEM"
TokenUtils.exe ListTokens -P "cmd"
TokenUtils.exe ListTokens -P "cmd" -u "NT AUTHORITY\SYSTEM"
[MODULE]
Execute
[OPTION]
-p <pid>: 以指定pid的token执行命令
-u <username>: 以某个用户执行命令,与-e <command>结合使用
-e <command> : 执行命令
-c: 是否在当前终端下执行
-v : 详细模式
example:
TokenUtils.exe Execute -p <pid> -e whoami -c
TokenUtils.exe Execute -u "NT AUTHORITY\SYSTEM" -e whoami -c
TokenUtils.exe Execute -p <pid> -u "NT AUTHORITY\SYSTEM" -e whoami -c
0x0302 使用说明
· -P -u参数值大小写敏感
· 同时使用-P -u参数表示同时满足两个条件
· 获取token时同一个用户只输出一次,使用-v参数,则输出所有用户
0x0303 使用效果
TokenUtil.exe ListTokens -u jerrybird
TokenUtils.exe ListTokens -u jerrybird -v
TokenUtil.exe Execute -u"DESKTOP-UIK8D53\test" -e cmd -c
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)

