首页 > 其他分享 >哈希传递

哈希传递

时间:2023-07-08 16:25:55浏览次数:37  
标签:Hash challenge NTLM 认证 传递 哈希 hash

哈希传递

简介

Pass The Hash 即PTH,就是通过传递Windwos 本地账户或者域用户的hash值,达到控制其他服务器的目的

在进入企业内网之后,如果是Windows PC或者服务器较多的环境,极有可能会使用到hash传递来进行内网的横传,现在企业内部一般对于口令强度均有一定的要求,抓取到本地hash后可能无法进行破解,同时从Windows Vista和Windows Server 2008开始,微软默认禁用LM hash.在Windows Server 2012 R2及之后版本的操作系统中,默认不会在内存中保存明文密码,这时可以通过传递hash来进行横传。

适用场景:内网中大量主机密码相同。

原理

hash 传递的原理是在认证过程中,并不是直接使用用户的密码进行认证的,而是使用用户的hash值,因此,攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不需要提供明文密码。在Windows系统中,通常会使用NTLM身份认证,NTLM是口令加密后的hash值。PTH是基于smb的服务(139端口和445 端口)

NTLM认证流程:

image

1、client发送账户名user到server
2、server判断本地账户名是否存在,没有则失败,有的话生成challenge,查找user对应的NTLM哈希,使用哈希加密challenge,生成一个net-ntlm hash存在内存中,将challenge发送给client
3、client接受到challenge以后,将自己的密码转换成NTLM哈希,用生成的哈希加密challenge生成response,发送response给server
4、server对比自己内存中的net-ntlm hash与client发来的response是否一致
5、如果密码匹配,服务器向客户端发送一个接受消息,表示认证成功。
注意:challenge每次认证都不一样,是一个随机生成的16字节随机数,response的形势与server生成的net-ntlm hash一个格式

通过认证流程我们不难看出,只要有NTLM哈希在手,哪怕不知道明文密码也可以完成NTLM的认证

NTLM验证靠HASH值

1.获得一台域主机的权限

2.Dump内存获得用户hash

3.通过pass the hash尝试登录其他主机

4.继续搜集hash并尝试远程登录

5.直到获得域管理员账户hash,登录域控,最终成功控制整个域

利用

hash传递浏览上传文件

当域内的用户想要访问域中的某个服务时,输入用户名和密码访问,本机kerberos服务会向KDC的AS认证服务发送一个AS-REQ认证请求。该请求包中包含: 请求的用户名客户端主机名、加密类型Authenticator(用户NTLM Hash加密的时间戳)以及一些其他信息

在AS-REQ阶段,是用用户密码Hash加密的Authenticator,所以也就造成了hash传递。我们只需要获取域用户Hash,同时目标机器开放smb服务,就可以进行Hash传递攻击。

mimikatz

	privilege::debug                            提升权限(以管理员权限运行)
	sekurlsa::logonpasswords          			获取内存中保存的登录信息
	sekurlsa::pth /user:administrator /domain:qf.com /ntlm:a803cf45d87009c404eb89df4b1ae94c
	弹出新窗口
	dir \\10.10.10.254\c$

image

image

标签:Hash,challenge,NTLM,认证,传递,哈希,hash
From: https://www.cnblogs.com/2210z/p/17537382.html

相关文章

  • 在 Go gRPC 中传递额外参数
    GogRPC是一个高性能、开源的RPC框架,它支持通过ProtocolBuffers进行序列化和反序列化,提供了简单易用的API,并且可以跨语言通信。在实际开发中,我们有时需要在gRPC方法之间传递一些额外的参数,例如请求头信息、跟踪ID、取消信号等。本文将介绍在GogRPC中如何传递这些额外......
  • 阿里面试官:谈谈对Redis哈希表的理解
    不少朋友问我,能不能搞个八股文精讲,把面试问题讲讲透,于是系列就这样诞生了。咱们第一期先聊聊Redis。相信哈希表大家并不陌生,今天顺便聊聊Redis的哈希表。Hash表回顾哈希表是一种存储数据的结构,它有很多名字(键值对、字典、符号表、映射、关联数组)。在哈希表中,键和值是一一对应的......
  • 【字符串,哈希】【Yandex】Yandex7736
    2023.6.30ProblemLink定义一个串\(S\)是好的,当且仅当\(S\)可以不断消去相邻两个相同字符直至消空。给定一个长为\(n\)的字符串\(s\),求有多少个有序对\((i,j)\)满足\(s_i\neqs_j\)且交换\(s_i,s_j\)后\(s\)是好的。技巧:镜面对称矩阵哈希,\(A^2=I\)考虑哈希,给......
  • SpringBoot集成kafka收发消息——传递消息为对象
    目前springboot整合后的kafka,因为序列化器是StringSerializer,这个时候如果需要传递对象可以有两种方式方式一:可以自定义序列化器,对象类型众多,这种方式通用性不强。方式二:可以把要传递的对象进行转json字符串,接收消息后再转为对象即可,本项目采用这种方式JSON.toJSONString(user)......
  • 算法学习day06哈希表part01-242、349、202、1
    packageSecondBrush.Hash;/***242.有效字母异位词*现在看到这个题目能想到怎么做,但是具体不知道怎么写*大致思路自己先描述一下:*就是建立一个hash表,然后遍历s,写进表中,遍历t,减去对应的数*hash表就可以理解为数组*/publicclassValidAnagram_242{publi......
  • 算法学习day07哈希表part02-454、383、15、18
    packageSecondBrush.Hash;importjava.util.HashMap;importjava.util.Map;/***454.四数相加II*给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:*0<=i,j,k,l<n*nums1[i]+nums2[j]+nums3[k......
  • get方法传递参数的方式
    GET方法是一种HTTP请求方法,用于从指定的资源请求数据当使用GET方法传递参数时,参数会编码为URL的一部分,通常是在问号(?)后面,参数之间使用和号(&)分隔。下面是一个示例URL,展示https://gptgo.ai/search?q=your_query_here¶m1=value1¶m2=value2上面是常用的方式传递参数,同时也可以......
  • [代码]如何在ASP.NET网页间传递数据
    重点总结目前为止在ASP.NET网页中传递数据的方式至少有5种:1、通过查询字符串传递数据。2、通过HTTPPOST传递数据。3、通过会话状态传递数据。4、通过源页的公共属性传递数据。5、通过源页中的控件值传递数据。到底使用哪种方式来进行数据的传递,这可能受到两方面的影响:1、页面重定......
  • [代码]如何在ASP.NET网页间传递数据
    重点总结目前为止在ASP.NET网页中传递数据的方式至少有5种:1、通过查询字符串传递数据。2、通过HTTPPOST传递数据。3、通过会话状态传递数据。4、通过源页的公共属性传递数据。5、通过源页中的控件值传递数据。到底使用哪种方式来进行数据的传递,这可能受到两方面的影响:1、页面重定......
  • js 使用get 接口如何传递 特殊字符给后端,类似 # 等特殊字符
    今天开发遇到个问题。用户输入了#怎么把文本完整的传递给后端如果直接传输就会出现#之后的东西全都没有,解决方法如下:1,使用其他特殊字符代替,使用replaceAll  //使用replaceAll替换所有#,然后后端再替换回来letnewStr=newQue.replaceAll('#','&')缺点,会......