%SystemRoot%\system32\config\sam
流程: 输入密码与Sam进行对比
Sam: 存储windows ntlm
基本流程:
# poc-t 框架下,流程生产:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
@Name: getntlm.py
@Author: loecho
@Email: [email protected]
@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 | |
---|---|---|---|---|---|---|
协议协商
客户端--->服务端:信息包含用户名
服务端查找后与对应用户名的ntlm+16为随机字符,生产challenge1,发送给客户端
客户端接收challenge,使用对应NTLM Hash 加密Challenge生产Response,发送至服务端
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
不需要账号密码,获得认证的过程
互通
认证的用户名
需要NTLM Hash
Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被 任意地读取、修改和插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享
密钥)执行认证服务的。