第四期学习活动—第二天优秀作业

2021-12-02 12:32:35 浏览数 (1)

Windows之NTLM认证

1、什么是NTLM

NTLM是NT LAN Manager的缩写,这也说明了协议的来源。NTLM 是指 telnet 的一种验证身份方式,即质询/应答身份验证协议

2、NTLM发展

NTLM的前身是LM Hash但是因为LM的加密算法密码长度最大只能为14个字符,而且容易被破解。所以为了解决LM加密和身份验证方案中固有的安全弱点,Microsoft 于1993年在Windows NT 3.1中引入了NTLM协议,也就是说从Windows Vista 和 Windows Server 2008开始,默认情况下只存储NTLM Hash,LM Hash将不再存在。

3、NTLM身份验证

认证方法分为两种:

本地认证

1、本地登陆时用户密码存储在SAM文件中,可以把它当作一个存储密码的数据库,所有的操作都在本地进行的。它将用户输入的密码转换为NTLM Hash,然后与SAM中的NTLM Hash进行比较。 2、操作系统的密码存储在C盘的目录下:%SystemRoot%\system32\config\sam 3、认证的流程 winlogon.exe -> 接收用户输入 -> lsass.exe -> (认证) Windows Logon Process(即 winlogon.exe),是Windows NT 用户登陆程序,用于管理用户登录和退出。 LSASS用于微软Windows系统的安全机制。它用于本地安全和登陆策略。 4、大致的运算流程为:用户密码->HEX编码->Unicode编码->MD4

网络认证

1、网络认证是一种Challenge/Response 验证机制,由三种消息组成:通常称为type 1(协商),类型type 2(质询)和type 3(身份验证)。 协商:主要用于确认双方协议版本、加密等级等(双方确定使用的协议版本,在NTLM认证中,NTLM响应分为NTLM v1,NTLMv2,NTLM session v2三种协议,不同协议使用不同格式的Challenge和加密算法) 质询:服务器在收到客户端的协商消息之后, 会读取其中的内容,并从中选择出自己所能接受的服务内容,加密等级,安全服务等等。并生成一个随机数challenge, 然后生成challenge消息返回给客户端。该消息就是质询/响应认证机制的主要功能体现。 身份验证:验证主要是在挑战完成后,验证结果,是认证的最后一步。 2、认证过程 用户登录客户端电脑 (type 1)客户端向服务器发送type 1(协商)消息,它主要包含客户端支持和服务器请求的功能列表(确认双方协议版本、加密等级等)。 (type 2)服务器用type 2消息(质询)进行响应,这包含服务器支持和同意的功能列表。但是,最重要的是,它包含服务器产生的Challenge。 (type 3)客户端用type 3消息(身份验证)回复质询。用户接收到步骤3中的challenge之后,使用用户hash与challenge进行加密运算得到response,将response,username,challeng发给服务器。消息中的response是最关键的部分,因为它们向服务器证明客户端用户已经知道帐户密码。 服务器拿到type 3之后,使用challenge和用户hash进行加密得到response2与type 3发来的response进行比较。如果用户hash是存储在域控里面的话,那么没有用户hash,也就没办法计算response2。也就没法验证。这个时候用户服务器就会通过netlogon协议联系域控,建立一个安全通道,然后将type 1,type 2,type3 全部发给域控(这个过程也叫作Pass Through Authentication认证流程) 域控使用challenge和用户hash进行加密得到response2,与type 3的response进行比较

Windows之Kerberos认证

1、什么是Kerberos

1、Kerberos 是一种由 MIT(麻省理工大学)提出的一种网络身份验证协议。它旨在通过使用密钥加密技术为客户端/服务器应用程序提供强身份验证。 2、Kerberos 认证中,最主要的问题是如何证明「你是你」的问题,如当一个 Client 去访问 Server 服务器上的某服务时,Server 如何判断 Client 是否有权限来访问自己主机上的服务,同时保证在这个过程中的通讯内容即使被拦截或篡改也不影响通讯的安全性,这正是 Kerberos 解决的问题。 3、Kerberos 主要是用在域环境下的身份认证协议。

2、Kerberos 协议框架

在 Kerberos 协议中主要是有三个角色的存在: 1. 访问服务的 Client; 2. 提供服务的 Server; 3. KDC(Key Distribution Center)密钥分发中心:(AD(Account Database) AS(Authenication Service) TGS(Ticket Granting Service))4 4. TGT(ticket granting ticket): 票据授权票据 5. ST(service ticket): 服务票据 上面几个术语简单说下它们的关系:KDC由AS(认证服务)和TGS(票据授权服务)组成,AS进行身份认证发放TGT,TGT是用来避免多次请求而需要重复认证的凭证;TGS(票据授权票据)发放ST(服务票据),ST用来访问某个service时的凭证,ST相当于告诉service你的身份被KDC认证为合法的一个凭证。

2.1 注意

1、KDC 服务默认会安装在一个域的域控中 2、从物理层面看,AD与KDC均为域控制器(Domain Controller) 3、AD其实是一个类似于本机SAM的一个数据库,全称叫account database,存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT 4、KDC 服务框架中包含一个 KRBTGT 账户,它是在创建域时系统自动创建的一个账号,你可以暂时理解为他就是一个无法登陆的账号,在发放票据时会使用到它的密码 HASH 值。

3、Kerbreros粗略认证流程

如果把 Kerberos 中的票据类比为一张火车票,那么 Client 端就是乘客,Server 端就是火车,而 KDC 就是就是车站的认证系统。如果Client端的票据是合法的(由你本人身份证购买并由你本人持有)同时有访问 Server 端服务的权限(车票对应车次正确)那么你才能上车。当然和火车票不一样的是 Kerberos 中有存在两张票,而火车票从头到尾只有一张。

域前置了解

1、域前置的作用

1、通过混淆HTTPS中的域名来规避审查 2、连接至一个被允许的服务器,但是将HTTP请求发送给真正的目标 3、最大的一个限制,真假域名必须来自在相同的域名供应商

2、域前置原理

同一个cdn厂商下倘若有两个域名a.com,b.com,这时候我们使用curl命令访问第一个a.com并将host名改为b.com这时候,实际访问的是b.com的内容。而一般的监测机制是不会检测host头的。

3、结果

可达到的效果:通过一个高信任域名隐藏自己的真实域名与ip,且受害主机上的流量只有跟cdn通信的,不会有跟真实c2的。 技术实现重点: 需要基于https 需要知道cdn上的其他高信誉域名或者ip 需要修改malleable profile文件

0 人点赞