攻击机kali:192.168.11.106
靶机windows server 2008 R2:192.168.11.134(包含ms17_010漏洞)
一、令牌简介与原理
令牌(Token) 就是系统的临时密钥,相当于账户名和密码,用来决定是否允许这次请求和判断这次请求是属于哪一个用户的。它
允许你在不提供密码或其他凭证的前提下,访问网络和系统资源。这些令牌将持续存在于系统中,除非系统重新启动。
令牌最大的
特点就是
随机性,不可预测,一般黑客或软件无法猜测出来。
令牌有很多种,比如
访问令牌(Access Token)表示访问控制操作主题的系统对象;
密保令牌(Security token),又叫作认证令牌或者硬件令牌,是一种计算机身份校验的物理设备,例如U盾;
会话令牌(Session Token)是交互会话中唯一的身份标识符。
在假冒令牌攻击中需要使用Kerberost协议。所以在使用假冒令牌前,先来介绍Kerberost协议。Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。Kerberos的工作机制如下图所示:
客户端请求证书的过程如下:
-
客户端向认证服务器AS发请求,要求得到服务器的证书;
-
认证服务器AS收到请求后,将包含客户端密钥的加密证书响应发送给客户端。该证书包括 服务器ticket(包括服务器密钥加密的客户机身份和一份会话密钥)和一个临时加密密钥(又称为 会话密钥,session key) 。当然,认证服务器AS也会给服务器发送一份该证书,用来使服务器认证登录客户端的身份。
-
客户端将ticket传送到服务器上,服务器确认该客户端端的话,便允许它登录服务器。
-
客户端登陆成功后,攻击者就可以通过入侵服务器获取客户端的令牌。
二、Incongito令牌窃取
Incognito最初是一个独立的应用程序,允许你在成功危及系统时模拟用户令牌。
令牌就像cookie,是一个临时密钥,允许你访问系统、网络,而不必每次访问时提供凭据。
前提条件
都是首先要get shell,然后通过incognito模块,来获取系统中的凭证。拿到凭证就可以使用它的身份进行登陆了,万一有个管理员令牌,那就实现了
提权。所以先要基于windows的ms17-010漏洞(永恒之蓝),来拿到session。
进入session:
sessions -i 1
输入
use incognito
list_tokens -u 得到授权令牌与模拟令牌:
令牌的数量其实取决于Meterpreter Shell的访问级别。这里可以看到有两种类型的令牌:
-
Delegation Tokens:授权令牌,支持交互式登录(例如可以通过远程桌面登录访问)
-
Impersonation Tokens:模拟令牌,它是非交互的会话,。
伪造授权令牌,就可以拥有它的权限:whoami显示的就是zq
impersonate_token
WIN-1NS5F6C18FM\\zq
#
注意这里的双斜杠。
在incognito中调用impersonate_token命令假冒zq用户进行攻击
再来一个system权限,whoami显示的就是system:
impersonate_token
"NT AUTHORITY"\\SYSTEM
#
注意这里的双引号
三、针对令牌窃取的防御措施
及时安装微软推送的补丁
不要使用来路不明的软件
对令牌的时效性进行限制,越短越好
采用加密存储和多重验证保护
加密链路防止中间人窃听
四、参考
4-25 后渗透测试实验 - 令牌窃取模拟_哔哩哔哩_bilibili