内网学习四-Windows安全认证机制

理解一下Windows下的安全认证吧。

本地认证

本地认证流程

1
winlogon.exe -> 接收用户输入 -> lsass.exe -> (认证)

首先,用户注销、重启、锁屏后,操作系统会让winlogon显示登录界面,也就是输入框,接收输入后,将密码交给lsass进程,这个进程中会存一份明文密码,将明文密码加密成NTLM Hash,对SAM数据库比较认证。

  • Windows Logon Process(即 winlogon.exe),是Windows NT 用户登 陆程序,用于管理用户登录和退出。
  • LSASS用于微软Windows系统的安全机 制。它用于本地安全和登陆策略。

SAM

SAM(安全账户管理器),SAM是用来存储Windows操作系统密码的数据库文件,为了避免明文密码泄漏,SAM文件中保存的是明文密码经过一系列算法处理过的Hash值,被保存的Hash分为LM Hash、NTLMHash。在用户在本地或远程登陆系统时,会将Hash值与SAM文件中保存的Hash值进行对比。在后期的Windows系统中,SAM文件中被保存的密码Hash都被密钥SYSKEY加密。

该文件位于

1
C:\windows\system32\config\sam

Windows系统启动后被系统锁定,无法进行移动和复制

当我们登录系统的时候,系统会自动地读取SAM文件中的“密码”与我们输入的“密码”进行比对,如果相同,证明认证成功!

Windows本身不保存明文密码,只保留密码的Hash。

Hash的两种保存方式

1.LM Hash

目前大多数的Windows都采用NTLM协议认证,LM协议已经基本淘汰了。这种方式使用的是DES的加密方式,不满足分组长度的话补0,而且它的脆弱点在于DES的key值”KGS!@#$%”是个硬编码,这样的话是可以解密出原文的。

2.NTLM Hash

这个NTLM是一种网络认证协议,与NTLM Hash的关系就是:NTLM网络认证协议是以NTLM Hash作为根本凭证进行认证的协议。

在本地认证的过程中,其实就是将用户输入的密码转换为NTLM Hash与SAM中的NTLM Hash进行比较。加密流程也不再使用分组加密了使用了MD4,流程大概是这样的,假定密码是admin,那么操作系统会将admin转换为十六进制,经过Unicode转换后,再调用MD4加密算法加密,这个加密结果的十六进制就是NTLM Hash。

抓取本地Hash

这种方式通过 上传软件的方式动静会比较大

工具

1.GETPass

国人写的一个工具,比较好用,可以直接展示明文,但是需要比较高一点的权限

lSwQzT.png

PwDump7

这东西会把机子里面的Hash值全部dump出来

lSwdW6.png

后续可以将这些Hash值放在web端或者本地彩虹表破解即可

打上星号的位置是以前LM Hash所在的位置,win7之后就弃用了,测试win2003你就会发现使用的LM Hash

lSBhqg.png

QuarksPwDump

lSD70e.png

上述工具在上传的时候需要进行免杀

https://www.objectif-securite.ch/ophcrack 在线破解网站

离线提取Hash

比较推荐使用这一种方法

这一步的话需要先导出文件,然后拖取到本地

1
2
reg save hklm\sam sam.hive
reg save hklm\system system.hive

lpSriF.png

使用mimikatz进行导出hash

1
lsadump::sam /sam:sam.hive /system:system.hive

lpSLLt.png

上传mimikatz到本地

这一操作是读取lasse进程,该操作只能够在win7和08之前使用

1
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"

lppxn1.png

网络认证

内网渗透基础的两个认证协议ntlm和Kerberos协议是必须要认识的,这里总结一下

NTLM协议

在内网渗透中,经常遇到工作组环境,而工作组环境是一个逻辑 上的网络环境(工作区),隶属于工作组的机器之间无法互相建 立一个完美的信任机制,只能点对点,是比较落后的认证方式, 没有信托机构。

比较多的S是MB共享文件的案例,SMB的默认端口是445。

这个服务一般使用的是NTLM协议

NTLM是一种网络认证协议,它是基于挑战(Chalenge)/响应(Response)认证机制的一种认证模式。这个协议只支持Windows

协议过程三步走:

协商:主要用于确认双方协议版本

质询:就是挑战(Chalenge)/响应(Response)认证机制起作用的范畴。

验证:验证主要是在质询完成后,验证结果,是认证的最后一步

lpEldA.png

pass the hash

在内网渗透中,我们经常会需要抓取管理员的密码、NTLM Hash,通过搜集这些信息有助于我们扩大战果,尤其是在域环境下。

什么是哈希传递?

哈希传递是能够在不需要账户明文密码的情况下完成认证的一个技术。从上面的一个响应流程中我们可以看到如果当我们掌握了NTLM的Hash值的话我们可以解密出challenge值,我们就可以进行一个不需要账户明文密码登陆的操作

条件:

1
2
3
哈希传递需要被认证的主机能够访问到服务器
哈希传递需要被传递认证的用户名
哈希传递需要被传递认证用户的NTLM Hash

这个东西不算是一个漏洞,算是一个技巧。

Pass The Hash的工具:

  • Smbmap
  • CrackMapExec
  • Smbexec
  • Metasploit

这里以Metasploit的smb模块做一个操作,先要确定对方主机是否打开了445端口,也就是smb的服务端口

1
use exploit/windows/smb/psexec

我们需要设置的值如下

lpeezV.png

前提是我们已经提取了靶机的Hash值了

lpeGJ1.png

设置好之后就可以尝试效果了

lpMBG9.png

在Win7以后的主机可能还需要进行对UAC进行一个绕过,不然的话可能反弹不出来shell

我们可以在拿到的shell中直接关闭这个UAC,操作一下

image-20191224220622375

Kerberos认证

Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客 户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不 依赖于主机操作系统的认证,无需基于主机地址的信任,不要求 网络上所有主机的物理安全,并假定网络上传送的数据包可以被 任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一 种可信任的第三方认证服务,是通过传统的密码技术(如:共享 密钥)执行认证服务的。

参与的角色

Kerberos的标志是三只狗头,狗头分别代表以下角色:

  • Client
  • Server
  • KDC(Key Distribution Center) = DC(Domain Controller)

Kerberos认证协议的基础概念:

票据(Ticket):是网络对象互相访问的凭证。

TGT(Ticket Granting Ticket):入场券,通过入场券能够获得票据,是一种临时凭证的存在。

KDC负责管理票据、认证票据、分发票据,但是KDC不是一个独立的服务,它由以下服务组成:

Authentication Service: 为client生成TGT的服务
Ticket Granting Service: 为client生成某个服务的ticket

另外还需要介绍一个类似于本机SAM的一个数据库:AD,全称叫account database,存储所有client的白名单,只有存 在于白名单的client才能顺利申请到TGT。

从物理层面看,AD与KDC均为域控制器(Domain Controller)。

粗略认证流程
  1. client向kerberos服务请求,希望获取访问server的权限。 kerberos得到了这个消息,首先得判断client是否是可信赖的, 也就是白名单黑名单的说法。这就是AS服务完成的工作,通过 在AD中存储黑名单和白名单来区分client。成功后,返回AS返 回TGT给client。
  2. client得到了TGT后,继续向kerberos请求,希望获取访问 server的权限。kerberos又得到了这个消息,这时候通过client 消息中的TGT,判断出了client拥有了这个权限,给了client访问server的权限ticket。
  3. client得到ticket后,终于可以成功访问server。这个ticket只是 针对这个server,其他server需要向TGS申请。

详细的过程参考倾旋大佬的这篇文章即可,看完这篇文章你就搞懂他的一个流程跟传递的东西了

内网东西太多得耗时间去学,只能慢慢看了。。

Reference

https://payloads.online/archivers/2018-11-30/1

https://www.anquanke.com/post/id/170471

https://blog.csdn.net/SimGenius/article/details/77081827

https://www.offensive-security.com/metasploit-unleashed/psexec-pass-hash/


听说,打赏我的人最后都成了大佬。



文章目录
  1. 1. 本地认证
    1. 1.1. 本地认证流程
    2. 1.2. SAM
    3. 1.3. Hash的两种保存方式
    4. 1.4. 抓取本地Hash
      1. 1.4.1. 工具
    5. 1.5. 离线提取Hash
  2. 2. 网络认证
    1. 2.1. NTLM协议
      1. 2.1.1. pass the hash
    2. 2.2. Kerberos认证
      1. 2.2.1. 参与的角色
      2. 2.2.2. 粗略认证流程
    3. 2.3. Reference