您的位置:

GetPrincipal详解

一、介绍

GetPrincipal 是一种微软开发的 Windows 认证加密框架。它可以用于从 Kerberos 和 NTLM 相互关联的网络环境中提取凭据,用于 Kerberos 到 NTLM 的跃点攻击。

GetPrincipal常用于渗透测试人员使用,主要攻击大型组织内部网络环境的 Windows 认证加密系统。当然,GetPrincipal也可以用于加强系统防御。

二、用途

GetPrincipal 通常用于以下场景:

1.攻击者通过漏洞入侵了目标网络,利用 GetPrincipal 提取目标系统当前用户的 NTLM 和 Kerberos 凭据。这使得攻击者可以使用这些凭据来执行 Kerberos 到 NTLM 的跃点攻击。

2.安全团队可以使用 GetPrincipal 来测试他们的环境中是否存在跨网络的 NTLM 中继。

3.安全团队可以使用 GetPrincipal 来排查他们的环境中是否存在窃听行为。

三、原理

GetPrincipal 可以用于 Kerberos 到 NTLM 的跃点攻击。Windows 系统使用 Kerberos 认证机制来验证用户和计算机之间的身份,而 NTLM 制定了一种备用的认证机制。在联合身份验证(Kerberos 和 NTLM)的环境中,攻击者可以通过 Kerberos 到 NTLM 的跃点攻击来获取目标用户的 NTLM 凭据,然后继续使用这些凭据提升为更高的权限。

四、使用方法

1. 安装 GetPrincipal

git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket
pip install -r requirements.txt
pip install .

2. 抓取目标用户的凭据

使用“GetUserSPNs.py”脚本抓取目标用户的 Kerberos 凭据,并将凭据写入到“outputfile”文件中:

python GetUserSPNs.py /
   :
     -dc-ip 
      -request -outputfile 
      

      
     
    
   
  

3. 使用GetPrincipal 提取目标用户的NTLM凭据

使用“GetPrincipal.py”脚本提取目标用户的NTLM凭据:

python GetPrincipal.py /
   :
     -request -format hashcat -outputfile 
     

     
    
   
  

4. 利用NTLM凭据钓鱼(以Mimikatz为例)

将获取的NTLM凭据使用反弹攻击的方式,调用域控制器的lsass.exe进程,执行mimikatz获取明文密码,首先需要获取到存在漏洞的机器的管理员权限,Windows系统中的文件共享(SMB)协议会以明文输送密码:

mimikatz # sekurlsa::pth /user:[domain]\[username] /domain:[domain] /ntlm:[ntlm]

五、安全加固

对于 NTLM 中继攻击和 Kerberos 到 NTLM 的跃点攻击,建议采取以下防御措施:

1. 禁用 Kerberos 委派,或者只允许跳转到特定的服务器或服务。

2. 限制用户的管理权限,并寻找和修复可能导致密码泄露的漏洞。

3. 监控对 NTLM 计算机帐户的尝试访问。使用日志记录和分析工具,如 Windows 安全事件日志和 ELK Stack 。

六、总结

本文对 GetPrincipal 进行了详细的介绍,包括用途,原理以及使用方法等。同时,通过防御措施的介绍提醒大家加强系统安全防御。