Windows LM/NTLM HASH加密及获取工具

原创 2013年06月22日 16:07:20
Hash,一般翻译为散列,也有直接音译为哈希的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。


       MD5  SHA1 可以说是目前应用最广泛的Hash算法,而它们都是以 MD4 为基础设计的。那么他们都是什么意思呢?这里简单说一下:

    (1)MD4

    MD4(RFC 1320) MIT  Ronald L. Rivest  1990 年设计的,MD Message Digest的缩写。它适用在32位字长的处理器上用高速软件实现,它是基于 32 位操作数的位操作来实现的。

    (2) MD5

    MD5(RFC 1321) Rivest1991年对MD4的改进版本。它仍以512位分组来输入,其输出是432位字的级联,与 MD4 相同。MD5MD4来得复杂,并且速度较之要慢一点,但更安全,在抗分析和抗差分方面表现更好

    (3)SHA1 及其他

    SHA1是由NIST NSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4相同原理,并且模仿了该算法。

 

Windows系统下的hash密码格式

       Windows系统下的hash密码格式为:用户名称:RID:LM-HASH:NT-HASH值,例如:Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::表示

  用户名称为:Administrator

    RID为:500

    LM-HASH值为:C8825DB10F2590EAAAD3B435B51404EE
    NT-HASH值为:683020925C5D8569C23AA724774CE6CC

    (1)Windows下LM Hash值生成原理

    假设明文口令是“Welcome”,首先全部转换成大写“WELCOME”,再做将口令字符串大写转后后的字符串变换成二进制串: “WELCOME” -> 57454C434F4D4500000000000000

       技巧:可以将明文口令复制到UltraEdit编辑器中使用二进制方式查看即可获取口令的二进制串。

       说明:如果明文口令经过大写变换后的二进制字符串不足14字节,则需要在其后添加0x00补足14字节。然后切割成两组7字节的数据,分别经str_to_key()函数处理得到两组8字节数据:

    57454C434F4D45 -str_to_key()-> 56A25288347A348A
    00000000000000 -str_to_key()-> 0000000000000000

    这两组8字节数据将做为DESKEY对魔术字符串“KGS!@#$%”进行标准DES加密

    "KGS!@#$%" -> 4B47532140232425

    56A25288347A348A -4B47532140232425进行标准DES加密-> C23413A8A1E7665F

    0000000000000000 -4B47532140232425进行标准DES加密-> AAD3B435B51404EE

      将加密后的这两组数据简单拼接,就得到了最后的LM Hash

    LM Hash: C23413A8A1E7665FAAD3B435B51404EE

    (2) Windows下NTLM Hash生成原理

       IBM设计的LM Hash算法存在几个弱点,微软在保持向后兼容性的同时提出了自己的挑战响应机制,NTLM Hash应运而生。假设明文口令是“123456”,首先转换成Unicode字符串,与LM Hash算法不同,这次不需要添加0x00补足14字节

      "123456" -> 310032003300340035003600

        ASCII串转换成Unicode串时,使用little-endian序,微软在设计整个SMB协议时就没考虑过big-endian序,ntoh*()hton*()函数不宜用在SMB报文解码中。0x80之前的标准ASCII码转换成Unicode码,就是简单地从0x??变成0x00??。此类标准ASCII串按little-endian序转换成Unicode串,就是简单地在原有每个字节之后添加0x00。对所获取的Unicode串进行标准MD4单向哈希,无论数据源有多少字节,MD4固定产生128-bit的哈希值,

        16字节310032003300340035003600 -进行标准MD4单向哈希-> 32ED87BDB5FDC5E9CBA88547376818D4

        就得到了最后的NTLM Hash

        NTLM Hash: 32ED87BDB5FDC5E9CBA88547376818D4

        LM Hash算法相比,明文口令大小写敏感,无法根据NTLM Hash判断原始明文口令是否小于8字节,摆脱了魔术字符串"KGS!@#$%"MD4是真正的单向哈希函数,穷举作为数据源出现的明文,难度较大。


获取Windows LM/NTLM HASH值的工具:

           1.SAMInside:它能从SAM注册文件中提取用户名以及密码(SAM 是Windows系统中存放系统用户及密码的一种文件,用Syskey(系统密钥)加密保护。)

 2.PwDump

 3.ophcrack(附带pwdump)

 4.GetHashes(适用于xp)


总结一下:

      两种加密算法分别是LanManager(LM)NTLM,LM只能存储小于等于14个字符的密码hash,如果密码大于14个,windows就自动使用NTLM对其进行加密了,(这个在LC5里有两种破解方式,所以破解不出来的时候可以换种思路,基本是NTLM)一般情况下使用PwDump或其他一些hash导出工具(Cain)导出的hash都有对应的LMNTLM值,也就是说这个密码位数<=14,这时LM也会有值,如果大于14位那么就只有对应的NTLM hash可用了,在LM-Password中会以全0显示,在老版本中以AA3D开头显示的也表示密码位数超过14位,对我们来说没用,不能靠他来查LM彩虹表。 (最近遇到新的情况LM:aad3b435b51404eeaad3b435b51404ee不一定是空密码或者大于14位密码,也可以是人为的设置,这时只能用NTLM了)
      操作系统:对于XPwin2kwin2k3来说,系统默认使用LM进行加密(也可人为设置成NTLM),之后的win2008win7Vista禁用了LM,默认使用NTLM,所以不要拿着LM生成的rainbow table去找NTLMhash,但是反过来却可以,因为使用LM方式的加密往往会存在一个对应的NTLM hash(如果密码位数<=14的话,系统同时对这个密码使用NTLM加密并存储了NTLMhash),这时候使用ophcrackNTLM表查找的就是这个NTLMhash了,而不是LMhash 

Windows下LM-Hash与NTLM-Hash生成原理

LM-Hash与NTLM-Hash在windows下通过SAMInside提取到的密码Hash时,可以看到有两条,分别是LM-Hash和NT-Hash,这是对同一个密码的两种不同的加密方式,下面对其生...
  • endeav_or
  • endeav_or
  • 2015年12月06日 17:02
  • 3815

win7访问xp的共享,弹出重输入密码的对话框(NTLM)

最近在研究 NTLM 的东东,无意发现一博文,实乃 NTLM 应用之实例, 故转之,再次感谢原创者! ------------------------------------------------...
  • nhudx061
  • nhudx061
  • 2014年04月01日 15:14
  • 3802

c++实现LM和NTLM哈希

  • 2010年10月31日 19:27
  • 367KB
  • 下载

MD5,SHA1,SHA256,NTLM,LM等Hash在线破解网站收集

MD5 http://hashchecker.de/find.html http://paste2.org/p/441222 http://r0ot.podzemlje.net/?x=md5 ...
  • woswod
  • woswod
  • 2017年03月18日 13:54
  • 1425

国外hash(MD5、NTLM、LM、SHA)密码在线破解网站

PS:这是国外的hash密码在线破解网站列表,支持多种类型的hash密码,目前可查询破解的hash包括:MD5、NTLM、LM、SHA1、SHA 256-512、MySQL、WPA-PSK 。 MD5...
  • beagreatprogrammer
  • beagreatprogrammer
  • 2016年06月16日 14:33
  • 6326

国外在线Md5,md4,mysql,Sha1,NTLM破解网站

下面这信息是拷来的,仅供参考 2011年07月08日 星期五 3:52 P.M.   重新整理了,左边是网站名 右边是收录的数据量, 问号代表不清...
  • springsen
  • springsen
  • 2012年03月23日 12:30
  • 17810

用GetHashes软件获取Windows系统Hash密码值

一、Hash基本知识 1.Hash定义 Hash,一般翻译为“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出...
  • zaiyong
  • zaiyong
  • 2014年05月15日 10:32
  • 1361

Windows系统Hash密码值知识

对入侵者来说,获取Windows的口令是整个攻击过程至关重要的一环,拥有系统原来用户的口令,将使得内网渗 透和守控更加容易。Windows系统中的Hash密码值主要有LM-HASH以及NTLM-HA...
  • zero_295813128
  • zero_295813128
  • 2016年07月17日 12:47
  • 2174

常见加密算法浅析

DES3加密仿真结果:     解密仿真结果:     用软件验证结果正确。   DES: 明文/密文:64bits; 秘钥:56bits+8bits(校验值) 1. 64bits初始P置换,然后拆分...
  • frank_wff
  • frank_wff
  • 2015年01月14日 14:09
  • 788

【信息安全】第一章 密码破解

信息安全领域涵盖内容非常广泛,博主今天首先从介绍密码破解开始。密码破解是一门科学的艺术,它需要一定的知识,恰当的策略和合适的工具。下面我主要从密码破解的概念,方法,策略,工具来介绍密码破解,最后一部分...
  • Hacking_Henry
  • Hacking_Henry
  • 2016年03月07日 11:03
  • 1366
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows LM/NTLM HASH加密及获取工具
举报原因:
原因补充:

(最多只允许输入30个字)