SlideShare a Scribd company logo
Windows 操作系统密码
一.背景知识(LM/NTLM hash)

   Windows 使用两种不同的密码表示方法(通常称为哈希)生成并存储用户帐户密码,而不是以


明文存储用户帐户密码。当帐户密码少于 15 位字符时,Windows 会为密码同时生成 LANManager


hash(LM hash)和 WindowsNT hsh(NT hash)。这些哈希存储在本地安全帐户管理器(SAM)


数据库或 ActiveDirectory 中。


与 NT 哈希相比,LM 哈希相对较弱,因此容易遭到攻击。而 NTLM-Hash 与 LM-Hash 算法相比,明


文口令大小写敏感,且无法根据 NTLM-Hash 判断原始明文口令是否小于 8 字节,摆脱了魔术字符串


"KGS!@#$%"。


   基于 Windows2000 的服务器和基于 WindowsServer2003 的服务器可对从运行所有早期版本的


Windows 主机连接的用户进行身份验证。但是,早于 Windows 2000 的 Windows 版本不使用


Kerberos 进行身份验证。为了向后兼容,Windows 2000 和 Windows Server 2003 支持 LAN Manager


(LM)身份验证、Windows NT(NTLM)身份验证和 NTLM 版本 2(NTLMv2)身份验证。NTLM、


NTLMv2 和 Kerberos 都使用 NT 哈希,也称为 Unicode 哈希。LM 身份验证协议使用 LM 哈希。




   LAN Manager Challenge/Response(LM)


   WindowsNT Challenge/Response(NTLM)


   NTLMv2


   Kerberos


二.抓取本地 Hash 值

   登录 Windows 后,可以使用 saminside/pwdump 等工具,从系统 SAM 数据库中读取

   出 LM hash 和 NTML hash。
http://www.insidepro.com/eng/saminside.shtml


   注:该对于使用 ActiveDirectory 的 Windows 主机无效。

三.破解 Hash 值

   1. Ophcrack:

       http://ophcrack.sourceforge.net/


   2. 在线破解 Hash:

       http://www.objectif-securite.ch/en/products.php


四.mimikatz_trunk

   原作者 Blog:

   http://blog.gentilkiwi.com/mimikatz


   pentestmonkey 的介绍:

   http://pentestmonkey.net/blog/mimikatz-tool-to-recover-cleartext-passwords-from-lsass


       1. mimikatz 可以直接获取本地登录用户的密码,包括断开状态的用户或使用权限

            运行应用的帐户(如 Sqlserver)
                               :

            将进程提升到 debug 权限:

            privilege::debug


            将 sekurlsa.dll 注入到 lsass.exe 进程里:

            inject::process lsass.exe sekurlsa.dll


            调用 sekurlsa.dll 里的 getLogonPasswords 函数获取出密码:

            @getLogonPasswords


            @getWDigest


            可以看到获取的信息如下:
登陆标识:LogonId


     登陆的账号:UserName


     域:LogonDomain


     认证方式:AuthenticationPackage


     登陆类型:LogonType


     会话 ID:Session


  2. 通过注入内存获取程序的底层信息:

     Winmine::infos


     Winmine::pause




lsass.exe 中除了保存密码的 hash 值外,大概可以推断出几个信息:

1. 我们都知道 Windows 不保存明文口令,但在内存中会保存,并且是可逆的;

2. 明文密码经过加密算法的密文保存在 lsass.exe 进程中(这个加密算法是可逆的,

  可以被调用函数后解密出明文)
               ;

具体逆向分析过程可以参考看雪论坛:http://bbs.pediy.com

More Related Content

PPT
憑證
PDF
A little ssl
PDF
Clipping 20141020-marketingmagazine
PDF
August LOR (Williamson)
PPTX
Micki nielsen vs julio cesar dos santos
DOCX
9spicy tuscon
憑證
A little ssl
Clipping 20141020-marketingmagazine
August LOR (Williamson)
Micki nielsen vs julio cesar dos santos
9spicy tuscon

Viewers also liked (8)

PDF
入侵物種管理與防制推動 990814-1
PDF
IT in Europe E-zine TechTarget - Building a Virtualised datacenter
PDF
HLS_roundtable.PDF
PPTX
Falabella A
PPTX
18 台灣大專校院推廣教育協會
PPTX
Diapositivas de la madre
PPT
Vicaria Agencia AICOM
PPTX
入侵物種管理與防制推動 990814-1
IT in Europe E-zine TechTarget - Building a Virtualised datacenter
HLS_roundtable.PDF
Falabella A
18 台灣大專校院推廣教育協會
Diapositivas de la madre
Vicaria Agencia AICOM
Ad

Similar to Windows Password (6)

DOC
加密方案设计原则
PPT
Linux2帳號與磁碟空間管理
PPT
Linux commands ppt
PPTX
The design of account protection
PPT
Erlang游戏开发
DOCX
Linux安全配置,公钥/私钥方式
加密方案设计原则
Linux2帳號與磁碟空間管理
Linux commands ppt
The design of account protection
Erlang游戏开发
Linux安全配置,公钥/私钥方式
Ad

Windows Password

  • 1. Windows 操作系统密码 一.背景知识(LM/NTLM hash) Windows 使用两种不同的密码表示方法(通常称为哈希)生成并存储用户帐户密码,而不是以 明文存储用户帐户密码。当帐户密码少于 15 位字符时,Windows 会为密码同时生成 LANManager hash(LM hash)和 WindowsNT hsh(NT hash)。这些哈希存储在本地安全帐户管理器(SAM) 数据库或 ActiveDirectory 中。 与 NT 哈希相比,LM 哈希相对较弱,因此容易遭到攻击。而 NTLM-Hash 与 LM-Hash 算法相比,明 文口令大小写敏感,且无法根据 NTLM-Hash 判断原始明文口令是否小于 8 字节,摆脱了魔术字符串 "KGS!@#$%"。 基于 Windows2000 的服务器和基于 WindowsServer2003 的服务器可对从运行所有早期版本的 Windows 主机连接的用户进行身份验证。但是,早于 Windows 2000 的 Windows 版本不使用 Kerberos 进行身份验证。为了向后兼容,Windows 2000 和 Windows Server 2003 支持 LAN Manager (LM)身份验证、Windows NT(NTLM)身份验证和 NTLM 版本 2(NTLMv2)身份验证。NTLM、 NTLMv2 和 Kerberos 都使用 NT 哈希,也称为 Unicode 哈希。LM 身份验证协议使用 LM 哈希。 LAN Manager Challenge/Response(LM) WindowsNT Challenge/Response(NTLM) NTLMv2 Kerberos 二.抓取本地 Hash 值 登录 Windows 后,可以使用 saminside/pwdump 等工具,从系统 SAM 数据库中读取 出 LM hash 和 NTML hash。
  • 2. http://www.insidepro.com/eng/saminside.shtml 注:该对于使用 ActiveDirectory 的 Windows 主机无效。 三.破解 Hash 值 1. Ophcrack: http://ophcrack.sourceforge.net/ 2. 在线破解 Hash: http://www.objectif-securite.ch/en/products.php 四.mimikatz_trunk 原作者 Blog: http://blog.gentilkiwi.com/mimikatz pentestmonkey 的介绍: http://pentestmonkey.net/blog/mimikatz-tool-to-recover-cleartext-passwords-from-lsass 1. mimikatz 可以直接获取本地登录用户的密码,包括断开状态的用户或使用权限 运行应用的帐户(如 Sqlserver) : 将进程提升到 debug 权限: privilege::debug 将 sekurlsa.dll 注入到 lsass.exe 进程里: inject::process lsass.exe sekurlsa.dll 调用 sekurlsa.dll 里的 getLogonPasswords 函数获取出密码: @getLogonPasswords @getWDigest 可以看到获取的信息如下:
  • 3. 登陆标识:LogonId 登陆的账号:UserName 域:LogonDomain 认证方式:AuthenticationPackage 登陆类型:LogonType 会话 ID:Session 2. 通过注入内存获取程序的底层信息: Winmine::infos Winmine::pause lsass.exe 中除了保存密码的 hash 值外,大概可以推断出几个信息: 1. 我们都知道 Windows 不保存明文口令,但在内存中会保存,并且是可逆的; 2. 明文密码经过加密算法的密文保存在 lsass.exe 进程中(这个加密算法是可逆的, 可以被调用函数后解密出明文) ; 具体逆向分析过程可以参考看雪论坛:http://bbs.pediy.com