彻底理解Windows认证

一、Windows本地认证

1. 我的密码在哪里?

  路径:C:\Windows\System32\config\SAM

  当我们登录系统的时候,系统会自动的读取SAM文件中的“密码”与我们输入的“密码”进行对比,如果相同,证明认证成功。

2. NTML(NT LAN Manager) Hash

NTML Hash是支持Net NTLM认证协议及本地认证过程中的一个重要参与物,其长度为32位,由数字与字母组成。

Windows本身不存储用户的明文密码,他会将用户的明文密码经过加密算法后存储在SAM数据库中。

当用户登录时,将用户输入的明文密码也加密成NTLM Hash,与SAM数据库中的NTLM Hash进行比较。NTLM Hash的前身是LM Hash,目前基本淘汰,但还是存在于window xp/2003中。

3. NTML Hash的产生

上图使用python库加密。

admin à hex(16禁进制编码) = 61646d696e

61646d696e àUnicode = 610064006d0069006e00

610064006d0069006e00àMD4 = 209c6174da490caeb422f3fa5a7ae634

adminà= 209c6174da490caeb422f3fa5a7ae634

4. 本地认证流程

Windows Logon Process(即winlogon.exe),是Windows NT用户登录程序,用于管理用户登录和退出。

LSASS用于微软Windows系统的安全机制。它用于本地安全和登录策略。

5. LM Hash

加密过程:

第一步是将明文口令转换为其大写形式;

第二步是将字符串大写后转换为16进制字符串;

第三步是密码不足14字节要求用0补全;

第四步是将上述编码分成2组7字节(56bits=14*4)的数据;

第五步是将每一组7字节的十六进制转换为二进制,每7bit一组末尾加0,再转换成十六进制组成得到2组8字节的编码;

第六步将以上步骤得到的两组8字节编码,分别作为DES加密key为魔术字符串“KGS!@#$% ”进行加密;

第七步将两组DES加密后的编码拼接。

二、 Windows网络认证

        在内网渗透中,经常遇到工作组环境,而工作组环境是一个逻辑上的网络环境(工作区),隶属于工作组的机器之间无法互相建立一个完美的信任机制,只能点对点,是比较落后的认证方式,没有信任机构。

假设A主机与B主机属于同一个工作组环境,A想访问B主机上的资料,需要将一个存在于B主机上的账户凭证发送给B主机,经过认证才能访问B主机上的资源。

最常见的服务:SMB服务   端口:445

1. NTLM协议

早期SMB(文件共享)协议在网络上传输明文口令。后来出现LAN Manger challenge/Response验证机制,简称LM,它是如此简单以至于很容易就被破解。

微软提出了WindowsNT挑战/响应验证机制,称之为NTLM。现在已经有了更新的NTLMv2以及Kerberos验证体系。

2. 挑战(challenge)/响应(Response)

流程:

第一步协商:

客户端主要在这一步向服务器确认协议版本,是V1还是V2以及其它信息。

第二步质询:

客户端向服务器端发送用户信息(用户名)请求

  • ·服务器接受到请求,生成一个16位的随机数,被称之为“challenge”,使用登录用户名对应的NTLM Hash加密challenge(16位随机字符),生成challenge1。同事,生成challenge1后,将challenge(16位随机字符)发送给客户端。//Net NTLM Hash=NTLM Hash(challenge)。
  • ·客户端接受到challenge后,使用将要登录的账户对应的NTLM Hash加密challenge生成response,然后将response发送至服务器端。

第三步验证:

服务器端收到客户端的response后,比对challenge1与response是否相当,若相当,则认证通过。

————————————————还有后续哦—————————————————————————————————————————————————————————————————————————————————————————————————

彻底理解Windows认证1的更多相关文章

  1. 7.内网渗透之windows认证机制

    文章参考自三好学生域渗透系列文章 看了内网渗透第五篇文章,发现如果想要真正了解PTT,PTH攻击流程,还需要了解windows的认证机制,包括域内的kerberos协议. windows认证机制 在域 ...

  2. 《深入理解Windows Phone 8.1 UI控件编程》基于最新的Runtime框架

    <深入理解Windows Phone 8.1 UI控件编程>本书基于最新的Windows Phone 8.1 Runtime SDK编写,全面深入地论述了最酷的UI编程技术:实现复杂炫酷的 ...

  3. 深入理解windows

    阿猫翻译的,用作备忘 深入理解windows——session.window stations.desktops 翻译自:http://www.brianbondy.com/blog/id/100/ ...

  4. Jetty支持Windows认证

    WAFFLE是什么? Jetty增加WAFFLE支持 DEMO 小结 WAFFLE是什么? WAFFLE是一个Windows认证框架,支持Negotiate, NTLM和Kerberos认证.WAFF ...

  5. asp.net权限认证:Windows认证

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  6. 自定义HttpModule,用于未登录用户,不弹出Windows认证窗口,而是跳转回SSO站点

    2012年的一篇随笔记录,可以学习到如何自定义HttpModule,而具体里面针对需求开发的代码,可能未必能让大伙了解到什么,可快速扫描而过. using System; using System.W ...

  7. 理解Windows注册表

    理解Windows注册表 注意 完之前先备份reg 前言 在Windows 3.x之前, Windows都是使用.ini文件来保存配置信息的, 但是.ini文件的大小最大只能为64KB, 为了突破这个 ...

  8. SQL Server如何正确的删除Windows认证用户

    在SQL Server数据库中,有时候会建立一些Windows认证的账号(域账号),例如,我们公司习惯给开发人员和Support同事开通NT账号权限,如果有离职或负责事宜变更的话,那么要如何正确的删除 ...

  9. python中用分别用selenium、requests库实现Windows认证登录

    最近在搞单位的项目,实现python自动化,结果在第一步就把我给拒之门外,查资料问大佬,问我们开发人员,从周一折腾到周五才搞定了 接下给大家分享一下 项目背景:我们系统是基于Windows平台实现的, ...

随机推荐

  1. window和 linux 在一起 ios和 android在一起 net和js在一起

    step 1: Windows 10 的 Linux Bash 支持「并不是使用虚拟机/模拟器」实现的,而是嵌入一个完整的 Ubuntu Linux 环境.技术上是实时将 Linux 的系统调用转换为 ...

  2. CQBZOJ 【重庆市NOIP模拟赛】避难向导

    题目描述 "特大新闻,特大新闻!全国爆发了一种极其可怕的病毒,已经开始在各个城市 中传播开来!全国陷入了巨大的危机!大量居民陷入恐慌,想要逃到其它城市以 避难!经调查显示,该病毒来自于C 市 ...

  3. 优雅写Java之一(常见编程技巧)

    一.字符串相关 推荐使用Apache Commons Lang3库 创建Empty字符串:return StringUtils.EMPTY; 或者 return ""; 创建重复的 ...

  4. .NET Core微服务一:Consul服务中心

    本文的项目代码,在文章结尾处可以下载. 防爬虫,本文的网址是:https://www.cnblogs.com/shousiji/p/12253295.html 本文使用的环境:Windows10 64 ...

  5. ssh隧道使用

    在内网中几乎所有的linux服务器和网络设备都支持ssh协议.一般情况下,ssh协议是允许通过防火墙和边界设备的,所以经常被攻击者利用.同时ssh协议的传输过程是加密的,所以我们很难区分合法的ssh会 ...

  6. CSS-07-CSS文本设置

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. Spring注解开发系列专栏

    这个系列主要是讲Spring注解的使用,可以为后面SpringBoot的学习带来一定的帮助.我觉得从Spring直接过度到SpringBoot还是有点快,还是得需要一个演变的过程.从Spring开发, ...

  8. Spring 核心功能演示

    Spring 核心功能演示 Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 SpringBoot, ...

  9. void * 和 void 在函数返回值中的区别

    一个很容易糊涂的问题. 在函数的返回值中, void 是没有任何返回值, 而 void * 是返回任意类型的值的指针. 还是看代码吧: #include <stdlib.h> #inclu ...

  10. supervisor管理tomcat

    操作目的:用supervisor工具管理tomcat服务 配置环境,安装服务,以及多实例 脚本编辑: 前提 机器的opt目录下必须有jdk-8u131-linux-x64_.rpm 以及apache- ...