zoukankan      html  css  js  c++  java
  • 解读windows认证

    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次会话才会向服务端发起通讯

     

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

     

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

    0x02   结尾

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

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

  • 相关阅读:
    Arcgis中修改字段名方法
    题事件名称为CLR20r3
    【转】CLR20R3 程序终止的几种解决方案
    Ajax+asp.net无刷新验证用户名
    [转载]C/C++编译器cl.exe的命令选项
    [网络整理]DEBUG命令使用解析五
    [网络整理]DEBUG命令使用解析一
    [网络整理]DEBUG命令使用解析六
    [易学C#]C#3.0语言新特性
    [易学C#]C#3.0语言新特性之Lambda表达式
  • 原文地址:https://www.cnblogs.com/nice0e3/p/12653863.html
Copyright © 2011-2022 走看看