Hash窃取与传递
Hash窃取与传递
NTHASH(NTLM)
在 Windows中, 存储的密码Hash就叫做 NTHash,也叫做 NTLM,其中NTLM 全称是 “NT LAN Manager”,NTHash 是通过对密码明文进行十六进制和unicode转换,然后md4算法运算后得到(算法表示为MD4(UTF-16-LE(password)) )。这个 NTHash 就是存在 SAM 数据库里,能够直接被 mimikatz 抓取的 hash,也存在域控的 NTDS 文件中,使用这个 hash 可以直接进行 pass-the-hash 攻击。
NTLM本地认证
首先,用户注销、重启、锁屏后,操作系统会让winlogon显示登录界面,也就是输入框,接收输入后,将密码交给lsass进程,这个进程中会存一份明文密码,将明文密码加密成NTLM Hash,对SAM数据库比较认证。
NTLM 身份验证
Windows 的 NTLM 认证就是利用 NTLM Hash 进行的认证,可以分为 本地认证 和 网络认证 两种方式。NTLM 的网络认证,既可用于域内的认证服务,又可用于工作组环境。NTLM 有 NTLMv1 、NTLMv2 、NTLMsession v2 三个版本,目前使用最多的是NTLMv2版本。
Net-NTLM
这是一种网络认证协议,其使用 NTHash 为基础,基于 challenge/response 的机制来实现服务端和客户端的双方认证。在局域网或者域中,经常会使用 Net-NTLM 协议来进行认证,大概流程如下:

通过这样的认证流程,就能够在不发送用户密码明文和Hash的情况下进行认证了。
通过 Responder 等工具抓取流量获取到的 hash 是 Net-NTLM 加密过后的hash,这类hash不能直接用来进行 pass-the-hash 攻击,但是可以用来进行重放攻击,也存在暴力破解的可能性。具体原因可以参考上面的流程。

NTLM 认证的相关安全问题
NTLM 认证固然存在不少安全问题,大体有以下几种:
- 哈希传递攻击
- 利用 NTLM 进行内网信息收集
- NTLM Relay
- 
哈希传递(Pass The Hash)攻击简称 PTH,该方法通过找到与账户相关的密码散列值(NTLM Hash)来进行攻击。由于在 Windows 系统 NTLM 认证的 TYPE 3 消息计算 Response 的时候,客户端是使用用户的 NTLM Hash 进行计算的,而不是用户密码进行计算的。因此在模拟用户登录或对访问资源的用户进行身份认证的时候,是不需要用户明文密码的,只需要用户 Hash。攻击者可以利用 NTLM HASH 直接远程登录目标主机或反弹 Shell。
在域环境中,用户登录计算机时一般使用域账号,大量计算机在安装时会使用相同的本地管理员账号和密码,因此,如果计算机的本地管理员账号和密码也相同,攻击者就能使用哈希传递攻击的方法来登录内网中的其他主机。使用该方法,攻击者不需要花费时间来对Hash进行爆破,在内网渗透里非常经典。常常适用于域环境或工作组环境。
利用 NTLM 进行内网信息收集
在NTLM认证中 TYPE 2 消息返回 Challenge 的过程中,同时返回了操作系统类型,主机名,NetBIOS 名称等。这也就意味着如果我们在能跟服务器进行 NTLM 交流中,给服务器发送一个 TYPE 1 的请求,服务器返回 TYPE 2 消息的响应,这一步,我们就可以得到很多信息。
NTLM Relay
NTLM hash 分为 NTLMv1 NTLMv2 NTLM session v2 三种,NTLMv2 的强度比 NTLMv1 强了不少 ,我们在实战中,如果获得的是NTLMv1的话直接对其进行爆破就行了,而现实情况中我们遇到的是 NTLMv2,NTLMv2的密码强度高了不少,因此如果你没有一个超级强大的字典,你很难得到明文密码。那么,如果爆破行不通的话我们不妨试一下NTLM Relay攻击。
在这个NTLM Relay中,我们就是要将截获的Net-NTLM Hash重放来进行攻击,从而实现对其他机器的控制,所以严格意义上应该叫作Net-NTLM Relay。

参考
跟着玄武大佬学NTLM relay攻防 - 知乎 (zhihu.com)
NTLM Relay is dead, Long Live NTLM Relay (zeronights.ru)
纯干货-内网渗透系列教程——NTLM 与 NTLM 身份认证 - 哔哩哔哩 (bilibili.com)
Hash窃取与传递的更多相关文章
- Windows NTLM Hash和Hash传递、Key传递攻击
Hash(Key) 获取 工具: Mimikatz 用法: .\mimikatz.exe privilege::debug #查看权限 sekurlsa::logonpasswords #获取hash ...
- (二)文档请求不同源之location.hash跨域
一.基本原理 用location.hash解决域名完全不同的跨域,例如,http://www.baidu.com#helloworld中的"#helloworld"就是locati ...
- 内网渗透-windows认证
前言:全国HW刚结束,加强一波内网概念,去年11月红队成绩并不理想,这次必拿下好成绩.冲!!! 0x00 本地认证 本地认证基础知识 在本地登录Windows的情况下,操作系统会使用用户输入的密码作为 ...
- js跨域那些事
原文:http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html 什么是跨域 JavaScript出于安全方面的考虑,不允许跨域调用其 ...
- js跨域访问
什么是跨域 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦.这里把涉及到跨域的一些问题简单地整理一下: 首 ...
- [转]JavaScript跨域总结与解决办法
转载自http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html仅用作个人读书笔记. 什么是跨域 1.document.domain+ ...
- JavaScript跨域方法
一.什么是跨域 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦.这里把涉及到跨域的一些问题简单地整理一下: ...
- JavaScript跨域总结与解决办法
什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window.name实现的跨域数据传输 5.使用H ...
- 对iframe跨域通信的封装
github源码:https://github.com/boycy815/topProxy 为了偷懒所以依赖了Kissy:http://docs.kissyui.com/ 用法举例:需求是在http: ...
随机推荐
- Linux centos7 mysql 的安装配置
2021-07-21 1. 创建用户 # 创建用户useradd mysql# 修改密码 passwd mysql 2. 下载 wget 网址 3. 解压 # 创建安装文件夹mkdir app# 解压 ...
- Tomcat中的一些问题
问题: 一闪而过,解决办法: 用记事本打开startup.bat文件,在最下面添加pause 再次运行,发现问题 CATALINA_HOME是TOMCAT安装路径的别名, 计算机>属性>环 ...
- MySQL(一)——入门
一.安装 二.配置环境变量 https://www.cnblogs.com/wzk153/category/1934516.html https://www.cnblogs.com/wzk153/ca ...
- AFL++ Fuzz一个libexif例子
CVE-2009-3895 首先在NVD找到漏洞描述如下: 大致意思是说:libexif 0.6.18 中的 libexif/exif-entry.c 中的 exif_entry_fix 函数中基于堆 ...
- Activiti 学习(一)—— Activiti 基础
工作流概述 在一个公司中,每一项业务的开始和结束,都可以理解为一个工作流,例如,公司的费用报销的基本流程如下: 如图所示的工作流:员工先提出费用报销申请,提交该申请给部门领导,部门领导审批后,再提交给 ...
- .Net 如何修改 HttpHeaders 中的 Content-Disposition
最近在看一些.Net5的内容,于是就想将之前Spring写的一个项目迁移到.Net上来看看. 不得不说.Net这几年发展的确实挺好的,超快的启动速度,极佳的性能让它一点不比Java差,但确实在国内生态 ...
- php 圆角图片处理
/** * 把图片转换成圆角 * @param string $imgpath * @param int $radius * @return resource */ public function r ...
- 致Python初学者,Python常用的基础函数你知道有哪些吗?
Python基础函数: print()函数:打印字符串 raw_input()函数:从用户键盘捕获字符 len()函数:计算字符长度 format(12.3654,'6.2f'/'0.3%')函数:实 ...
- Jenkins 进阶篇 - 任务关联
有时候我们的一个任务里面会进行很多的步骤,例如构建一个后端的 Java 服务,可能会有代码静态扫描,静态扫描通过后会打包成 jar 或者 war 文件,打包成功后可能还会对制品进行存档备份,然后可能会 ...
- symfony中使用__construct获取services对象
symfony中服务的使用总所周知的方便,但是当一个controller多次使用到同一个服务的时候就会出现在每个Action中都get获取服务,此时为了省事相信你也尝试使用构造函数申明一个私有对象避免 ...