00. 密码存储路径:
-
%SystemRoot%\system32\config\sam
-
流程: 输入密码与Sam进行对比
-
Sam: 存储windows ntlm
01. NTLM (NT LAN Manager )hash
- ntlm Hash 是支持Net NTlm认证新协议及本地认证过程中重要参与物,长度为32,由数字贺字母组成
- WIndows 不存储用户的明文密码,只存储ntlm,后续对产生的ntlm与sam文件中的ntlm进行比较
- NTLM 前 版本为:LM_Hash (Windows XP WIndows 2003)
02. NTLM 生成:
-
基本流程:
- 字母转hex(十六进制)
- 十六进制转Unicode
- unicode 通过 md4 加密得到ntlm,最终生成结果为:32位:
- 实现代码:
# poc-t 框架下,流程生产: #!/usr/bin/env python # -*- coding: utf-8 -*- ''' @Name: getntlm.py @Author: loecho @Email: 1loechome@gmail.com @Blog: https://www.loecho.me @Time: 2020/7/23 17:58 ''' import hashlib, binascii def poc(password): ntlmHash = binascii.hexlify(hashlib.new('md4', password.encode('utf-16le')).digest()) with open(r'ntlmHash.txt', 'a')as f: f.write(ntlmHash+'\n') return '[+] htlmHash: ' + ntlmHash #print ntlmHash # return '[+]'+ password+'\t'+'[+]' + ntlmHash # 直接调用库生产: Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 16:30:00) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from passlib.hash import nthash >>> ntlm_hash = nthash.hash('loecho') >>> ntlm_hash '659ff5f9cbeaef25947510fab544cfee' >>>
-
POC-T 生成:
Administrator | !@#tools9012#@! | B700A | mimikatz | 10.6.19.12 | 1598925126465 | |
---|---|---|---|---|---|---|

- 直接生成:

03. LM-Hash

- 小写转大写字母
- 密码未达到七位,填充14位,每8比特填充0
- 由于DES加密,Key位硬编码,单次DES,安全性低
- DES结果脆弱,较容易被破解猜解
04. 本地认证流程:
- WIndows Logon Process ,接受输入
- LSASS,对输入进行认证处理
05. Windows 网络认证:
- 内网渗透,工作组环境,只能点对点认证
- 内网渗透,域环境,NTLM认证协议
NTLM 协议:
- SMB协议,早期为明文口令
- WindowsNT挑战/相应验证机制,最新NTLMv2
挑战(Challenge)/响应(Response)

-
协议协商
-
客户端--->服务端:信息包含用户名
-
服务端查找后与对应用户名的ntlm+16为随机字符,生产challenge1,发送给客户端
-
客户端接收challenge,使用对应NTLM Hash 加密Challenge生产Response,发送至服务端
NTLM v2 协议
-
NTLM v1 与 NTLM v2 最显著的区别就是Challenge与加密算法不同
-
CHallenge: NTLM v1 的Challenge有8位, NTLM v2的Challenge位16位
-
Net-NTLM Hash: NTLM v1的主要加密算法DES NTLM v2的主要加密算法HMAC-MD5
-
Responder smbexec
Pass The Hash (哈希传递)
-
不需要账号密码,获得认证的过程
必要条件:
-
互通
-
认证的用户名
-
需要NTLM Hash
-
Active Directory(活动目录)概念

- 服务器及客户端计算机管理
- 用户服务
- 资源管理
- 桌面配置
- 应用系统支持

域认证体系 - Kerbroes
Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被 任意地读取、修改和插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享
密钥)执行认证服务的。
域认证所参与的角色
- Client
- Server
- KDC (Key Distribution Center) = DC
- AD (Accent Database): 存储所有client的白名单,只有存在Celient才能申请到TGT
- AS: 为Client生成TGT的服务
- TGS:为Client生成某个服务ticket
认证流程:









- 针对获得到NTLM Hash的服务
- Mimikatz
- 针对单一服务进行伪造
- DCSync 域同步 ---> LDAP

