0x00 前言

dll劫持的近期忙,没时间写,先给大家写个windows认证的水文。

0x01 windows认证协议

windows上的认证大致分为本地认证,ntlm协议,和Kerberos协议。

(1)本地认证

我们先来看到本地认证,本地认证是

Windows的本地认证是由 winlogon.exe 接受用户输入的密码 然后去lsass.exe 进程里面去取值,lsass会向sam文件里面读取hash密码 。如果hash值相对应那么就认证成功。这也是我们的lsass进程的内存中为什么会有hash的缘故,也是我们在抓取hash值时候都转存lsass进程的原因。

这里思考一个问题,为什么要有lsass这个进程,为什么winlogon不能直接从sam文件里面去取hash来认证。

(2)NTLM  hash 与NTLM 协议

实际上NTLM hash的NTLM协议是2个东西,NTLM HASH 是一串经过特殊加密的hash值,而ntlm协议是一种网络认证协议。但是他们有着密切的关系,如果有了ntlm hash值可以直接使用pass the hash登录该机器。

NTLM  hash的加密过程:

1.将明文转换成hex

2.转换hex的值在Unicode编码

3.unicode编码的值再md4加密

然后得到该用户的ntlm hash值。

NTLM 协议:

NTLM是一种网络认证协议,它是基于挑战(Challenge)/响应(Response)认证机制的一种认证模式。

NTLM协议的认证过程分为三步:

第一步:协商

第二步:质询

第三步:验证

第一步质询: 先发起请求,判断对方版本是ntlm v1还是v2 。

第二步质询:

就是挑战(Chalenge)/响应(Response) ,客户端向服务端发起一个用户名,服务器收到请求,生成一个(ntlmV1是8位数的challenge)16位数的 随机数 被称为challenge ,使用登陆名字对应的NTLM hash值来加密challenge。 同时会将challenge发送给客户端 客户端进行同样的用户的ntlm hash来加密 。

第三步验证:这时候就进行了第三步,2个加密后的challeng 进行比对 如果一样那么就验证通过。

(3)kerberos协议

简短洁说:客户端向服务端发起请求,如果请求的用户在ad内 as为client生成tgt

用户拿着tgt对kdc发起第二次交互,kdc会识别 我们的tgt到底有没有权限访问server,如果有那么就会分发一个ticket 也就是票据这步由tgs完成 ,然后拿着ticket 去请求server。

客户端要和dc建立2次会话才会向服务端发起通讯

详细具体的认证步骤,想了解的话可以去看官方文档。

. KDC
全称:key distributed center
作用:整个安全认证过程的票据生成管理服务,其中包含两个服务,AS和TGS
. AS
全称:authentication service
作用:为client生成TGT的服务
. TGS
全称:ticket granting service
作用:为client生成某个服务的ticket
. AD
全称:account database
作用:存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT
. TGT
全称:ticket-granting ticket
作用:用于获取ticket的票据
.client
想访问某个server的客户端
. server
提供某种业务的服务

0x02   结尾

刚刚说到的lsass存在的意义,给大家来简单说说,lsass.exe是一个系统重要进程,用于微软Windows系统的安全机制。它用于本地安全和登陆策略。如果结束该进程,会出现不可知的错误。

如果想了解内网渗透的师傅们,还需要熟悉windows认证,记得当时面试某xxx,和团队小伙伴每天背windwos认证协议,机制。

解读windows认证的更多相关文章

  1. Windows认证体系解读

    目录 Windows认证方式 Windows本地认证 NTLM认证方式(工作组环境中) wiresharek抓包NTLMv2,使用Hashcat爆破 NTLM认证方式(域环境中) Kerberos认证 ...

  2. 微软架构师解读Windows Server 2008 R2新特性

    目前众多企业都开始为自己寻找一个更加适合自身发展的服务器操作平台.微软的Windows Server 2008 R2就是可以为大家解决服务器平台问题.微软最新的服务器平台Windows Server ...

  3. Jetty支持Windows认证

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

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

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

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

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

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

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

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

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

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

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

  9. (转)IIS windows认证

    转自 https://my.oschina.net/u/2551141/blog/2878673 IIS配置Windows认证方式: 1.IIS->>要设置的网站->>身份验证 ...

随机推荐

  1. 停下来,回头看 ——记2020BUAA软工第一次作业-热身!

    description: 'Mar 1st, 2020 - Mar 3rd, 2020' 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 第一次作 ...

  2. Java中文件上传路径与路径修改相关问题(tomcat8.0+eclipse)

    1.普通文件上传的路径: 通过getRealPath获取相关路径 String photoFolder =request.getServletContext().getRealPath("u ...

  3. Eclipse+Mysql实现多条件查询

    最近做一个项目的时候,就需要用到多条件查询,但是一直不完美,所有有bug,不过今天经高人提醒,做出了个小例子,在这里简单跟大家分享一下: 不说多了,直接放关键sql代码: 已知条件:菜名,菜品,价格区 ...

  4. java调用DLL,打印二维码标签

    package com.ian.das.controller; import java.util.List; import org.xvolks.jnative.JNative; import org ...

  5. 前端AES加密解密

    最开始使用的aes-js的npm包,后来发现npm上面那个包只能加密16个长度的字节,非16个长度的字符串就会报错,后来使用的是crypto-js, AES总共有四种加密方式,我们使用的CBC方式: ...

  6. 2020ubuntu1804server编译安装redis5笔记(二)配置redis

    前一篇笔记记录了ubuntu1804server编译安装redis5,接下来要配置redis5了 网址:https://www.cnblogs.com/qumogu/p/12435694.html 第 ...

  7. 浅析js中的堆和栈

    这里先说两个概念:1.堆(heap)2.栈(stack)堆 是堆内存的简称.栈 是栈内存的简称.说到堆栈,我们讲的就是内存的使用和分配了,没有寄存器的事,也没有硬盘的事.各种语言在处理堆栈的原理上都大 ...

  8. element中的树形组件,如何获取父级菜单的id

    一般多选的树形组件,使用getCheckedNodes()方法只能获取到本级的菜单id,只有在子菜单全部选中的情况下才会选中上级.但我们想要不全选中子级的情况下也要获取它的上级,甚至上上级等,怎么办呢 ...

  9. C# RSACryptoServiceProvider 加密解密 RSA 加密解密

    什么是RSA:RSA公开密钥密码体制.所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥 推导出 解密密钥在计算上是不可行的”密码体制. 下附代码,在控制台中粘贴在启动类即 ...

  10. 关于ATL生成COM注册失败解决方法

    最近搞C++封装研究了下COM 做最后整理打包的时候发现各种问题引发的注册失败,so整理下备忘. 1.因引用其它动态连接库与你注册的dll不在同一目录下引起的异常.(解决方法将依赖dll放置与注册dl ...