内网渗透学习-windows认证


内网渗透学习-windows认证

  • windows本地认证
  • windows网络认证
  • kerberos域认证

前言:

进入公司实习期间,参与了护网红队的工作,见识了师傅们逆天强悍的操作,深刻认识到了要学的还有很多很多很多,所以假期着手用空闲时间整理一个内网学习系列,针对内网渗透做一个总结。

本章内容是Windows认证,在内网横向渗透中还是非常重要的。

windows本地认证

 过程图:

内网渗透学习-windows认证

(lsass用于微软Windows系统的安全机制,它用于本地安全和登录策略。) 

其中牵涉到了两个非常重要的加密算法,即windows存储密码的方式,一般是使用的lmhash和ntlmhash,尤其ntlmhash,在本文中牵涉的三种认证,都离不开这个算法。

LM HASH消息验证

LM HASH采用的方式是DES加密

参考链接,原文附python实现的加密脚本(https://xz.aliyun.com/t/2445)

 加密过程如下:

  1. 用户的密码长度被限制载14个字节以内
  2. 将输入的所有密码转换为大写
  3. 将内容转换为16进制,不足14字节用0补齐
  4. 6进制字符串分成两个7byte部分。每部分转换成比特流,并且长度位56bit,长度不足使用0在左边补齐长度,再分7bit为一组末尾加0,组成新的编码
  5. 上步骤得到的8byte二组,分别作为DES key为”KGS!@#$%”进行加密。
  6. 将二组DES加密后的编码拼接,得到最终LM HASH值。

这种加密算法下,如果密码不超过8位安全就很低(转16进制后面都是用0补齐,破解难度大大降低。密码长度最大14位,且14位密码也很好破),而且用的是DES加密算法,学过密码学就知道,这种算法放现在暴力破解难度很低。

从Windows Vista和Windows Server 2008开始,微软默认禁用LM hash。在Windows Server 2012 R2及之后版本的操作系统中,默认不会在内存中保存明文密码,Mimikatz 就读不到密码明文,只能读取哈希值。

NTLM HASH消息验证

NTML HASH采用的方式是先16进制编码,再转unicode,最后利用MD4加密的方式,安全性相对更高。

采用的消息验证机制(详情:https://xz.aliyun.com/t/2445)

内网渗透学习-windows认证

 

windows网络认证

网络认证的过程图:

内网渗透学习-windows认证

 

 

 实际利用过程中会利用Mimikatz抓取的hash进行伪造,与相应的计算机交互、

中间利用psxec进行一些远程命令的执行

psxec和Mimikatz的使用在网上有大量的内容和教程,此处不多赘述

kerberos域认证

 kerberos域认证是域渗透中很重要的内容,这部分内容学校计算机网络课程中也提到过

内网渗透学习-windows认证

 

 

 网上关于kerberos的介绍也很多,这里做一个简单的梳理(参考:https://blog.csdn.net/Howell_0626/article/details/125532666及https://blog.csdn.net/m0_58606546/article/details/121435198)

首先罗列一下整个环节中的重要名词

DC(Domain Control):域控制器

KDC(Key Distribution Center):密钥分发中心,在域环境中,KDC服务默认会安装在域控中。

AD(Account Database):账户数据库

AS(Authentication Service):身份验证服务,验证client的credential(身份认证信息),发放TGT。

TGS(Ticket Granting Service):票据发放服务,验证TGT,发放ST。

ST(Service Ticket):服务票据,由KDC的TGS发放,是客户端应用程序访问Server某个服务的凭证,Server端验证通过则完成Client与Server端信任关系的建立。

TGT(Ticket Granting ticket):票据授权票据,由KDC的AS发放,客户端获取到该票据后,以后申请其他应用的服务票据(ST)时,就不需要向KDC的AS提交身份认证信息(credential),TGT具有一定的有效期。由 KBRTGT HASH 加密的 sessionkey-as 和 Timestamp 等信息。TGT=KBRTGT HASH()

Ticket:票据

Master Key:长期密钥

Session Key:短期会话密钥

krbtgt账户:每个域控制器都有的KDC服务账户,这是一个特殊账户,它是一个无法登录的账户,创建域时系统会自动创建这样一个账户,在整个kerberos认证中会多次用到它的Hash值去做验证。它是获得黄金票据的关键一环。

Session key:用来加密client和TGS之间传输的数据。

Server session key:用来加密client和server之间传输的数据。

一张总结非常非常到位的图(来源:https://blog.csdn.net/Howell_0626/article/details/125532666)

内网渗透学习-windows认证

 

 

 实际渗透中的两个重要概念:

黄金票据:伪造TGT,前提是有域控管理员的权限(利用mimikatz获取krbtgt账户密码哈希值),获取krbtgt账户的Hash(NTML哈希)。伪造要求是域名称,域SID值,域的krbtgt账户的Hash,需要伪造的用户名。
白银票据:相对黄金票据简单很多,要求获取通信服务器的NTML Hash密码

金票银票的区别在于:获取的权限不同,认证的流程不同,加密方式不同。

以下是关于Kerberos域渗透的一些可能出现的面试题:

白银票据与黄金票据的原理?

内网渗透学习-windows认证

 

针对Kerberos的攻击?

 内网渗透学习-windows认证

 

 

 

 

原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/275165.html

(0)
上一篇 2022年7月18日
下一篇 2022年7月18日

相关推荐

发表回复

登录后才能评论