当前位置: 首页 > news >正文

Windows密码的网络认证---基于挑战响应认证的NTLM协议

一,网络认证NTLM协议简介

        在平时的测试中,经常会碰到处于工作组的计算机,处于工作组的计算机之间是无法建立一个可信的信托机构的,只能是点对点进行信息的传输。

        举个例子就是,主机A想要访问主机B上的资源,就要向主机B发送一个存在于主机 B上的一个账户,主机B接收以后会在本地进行验证,如果验证成功,才会允许主机A进行相应的访问。

        NTLM 协议是一种基于 挑战(Challenge)/ 响应(Response认证机制,仅支持Windows的网络认证协议。

它主要分为协商、质询和验证三个步骤:

  • 协商,这个是为了解决历史遗留问题,也就是为了向下兼容,双方先确定一下传输协议的版本等各种信息。
  • 质询,这一步便是Challenge/Response认证机制的关键之处,下面会介绍这里的步骤。
  • 验证,对质询的最后结果进行一个验证,验证通过后,即允许访问资源。

二,基本的流程

认证成功

        首先,client会向server发送一个username,这个username是存在于server上的一个用户;

        接着会在本地查询是否存在这样的一个用户,如果存在,将会生成一个16位的随机字符,即challenge,然后用查询到的这个usernameNTLM hash和challenge进行加密,生成challenge1,将challenge1存储在本地,并将 challenge传给client;

        当client接收到challenge时,将发送的username所对应的NTLM hash对challenge进行加密即response,并 response发送给server;

        server在收到response后,将其与challenge1进行比较,如果相同,则验证成功;

        如果不相同,则验证失败;

认证失败

        首先,client会向server发送一个username,这个username是存在于server上的一个用户;

        当server接收到这个信息时,首先会在本地查询是否存在这样的一个用户,如果不存在,则直接返回认证失败;

三,NTLM协议v1v2区别

NTLM v1

  • 安全性较低:NTLM v1的认证过程相对简单,安全性较低。它容易受到中间人攻击和重放攻击等。
  • 认证机制:在NTLM v1中,客户端首先向服务器发送一个包含用户名(以明文形式)和挑战消息的请求。服务器接收到这个请求后,会用自己的密钥对这个挑战消息进行加密,并发送给客户端作为响应。客户端随后会用自己的密钥对挑战消息进行加密,并将这个加密后的消息发送给服务器进行验证。

NTLM v2

  • 增强的安全性:相较于NTLM v1,NTLM v2提供了更强的安全性。它引入了对响应消息的额外加密层,使得攻击者更难破解。
  • 改进的认证机制:在NTLM v2中,客户端和服务器之间的挑战和响应过程更加复杂。除了挑战消息外,还引入了目标信息(如服务器名称和域名)和时间戳,这些都被加入到加密计算中。这增加了攻击者伪造有效响应的难度。
  • 兼容性:尽管NTLM v2提供了更强的安全性,但它仍然需要与旧的系统和应用程序兼容。因此,许多现代Windows系统同时支持NTLM v1和v2,但默认情况下可能更倾向于使用v2进行认证。

四,抓包测试

实验环境:

server2019:192.168.20.153

server2008:192.168.20.154

在2019这个机器上已经安装wireshark;

在2008上已经存在一个管理员用户,为Administrator用户;

密码为com.1234;

使用下面的命令进行网络连接;

net use \\192.168.20.154 /u:Administrator com.1234

使用wireshark进行抓包;

接下来分析抓到的数据包;

接下来根据NTLMv2格式,找出各个字段对应的值;

username::domain:challenge:HMAC‐MD5:blobusername:对应数据包中 user name
domain:对应数据包中的 Domain name
HMAC‐MD5:对应数据包中的NTProofStr
blob:数据库包中rsponse去掉HMAC‐MD5的值

10号数据包发送username和password;

11号返回challenge;

12号返回response的数据包;

username:Administrator
domain:ADMIN

challenge:afa477384221e315

NTProofStr:24f00e683ff25a2163601ccc751ba732
rsponse:24f00e683ff25a2163601ccc751ba732010100000000000063af3e97b02edb0160c9af9d01a6f7c20000000002000a00410044004d0049004e0001001400530045005200560045005200320030003000380004001200610064006d0069006e002e0063006f006d000300280053006500720076006500720032003000300038002e00610064006d0069006e002e0063006f006d0005001200610064006d0069006e002e0063006f006d000700080063af3e97b02edb0106000400020000000800300030000000000000000100000000200000219d0a74dcdbdf803b0712aab3af7d3cc94960eaaf5d459b1e46bd5c4a0793fd0a001000000000000000000000000000000000000900260063006900660073002f003100390032002e003100360038002e00320030002e00310035003400000000000000000000000000

接下来构造NTLMv2格式;

Administrator::ADMIN:afa477384221e315:24f00e683ff25a2163601ccc751ba732:010100000000000063af3e97b02edb0160c9af9d01a6f7c20000000002000a00410044004d0049004e0001001400530045005200560045005200320030003000380004001200610064006d0069006e002e0063006f006d000300280053006500720076006500720032003000300038002e00610064006d0069006e002e0063006f006d0005001200610064006d0069006e002e0063006f006d000700080063af3e97b02edb0106000400020000000800300030000000000000000100000000200000219d0a74dcdbdf803b0712aab3af7d3cc94960eaaf5d459b1e46bd5c4a0793fd0a001000000000000000000000000000000000000900260063006900660073002f003100390032002e003100360038002e00320030002e00310035003400000000000000000000000000

在kali中使用命令进行爆破;(拥有一个强大的字典)

john --format=netntlmv2 1.txt --wordlist=rockyou.txt

这样就得到了账户的密码;

相关文章:

Windows密码的网络认证---基于挑战响应认证的NTLM协议

一,网络认证NTLM协议简介 在平时的测试中,经常会碰到处于工作组的计算机,处于工作组的计算机之间是无法建立一个可信的信托机构的,只能是点对点进行信息的传输。 举个例子就是,主机A想要访问主机B上的资源,…...

fpga 常量无法改变

parameter LED_ON_PERIOD0 n0*CLOCK_FREQ; parameter LED_OFF_PERIOD0 (2-n0)*CLOCK_FREQ;这种代码的变量不会无法内部修改 需要改成reg形式并在这种逻辑里面修改变量 always (posedge clk_ref or negedge sys_rst_n) begin虽然是并行逻辑 但是变量尽量还是先赋值从硬件上并…...

【HarmonyOS NEXT】如何给未知类型对象定义类型并使用递归打印所有的Key

关键词:嵌套对象、类型、递归、未知类型 目录 使用 Record 与 ESObject 定义未知对象类型 递归打印未知类型对象的key 在鸿蒙应用开发中,所有的数据都必须定义类型,且不存在 any 类型,那么我们当遇到 key 值可能随时变化的情况…...

RuoYi 样例框架运行步骤(测试项目自用,同学可自取)

目录 后台 API 运行导入,下载包端口号mysql 准备运行 PC(电脑端)运行安装 nodejs安装 yarn 及其依赖,启动服务登录admin(admin123) 或 ry(admin123) App(移动)运行下载 HBuilderX运行app运行注意&#xff1…...

Java进程CPU飙高排查

一、首先通过top指令查看当前占用CPU较高的进程pid 二、查看当前进程消耗资源的线程PID&#xff1a; top -Hp pid 使用 top -Hp <pid> 命令&#xff08;pid为Java进程的id号&#xff09;查看该Java进程内所有线程的资源占用情况。 三、通过print命令将线程pid转为16进…...

conda的对应环境下安装cuda11.0和对应的cudnn

在 Conda 环境中安装 CUDA 11.0 和对应的 cuDNN&#xff0c;可以按照以下步骤进行&#xff1a; 一. 环境配置 1. 创建 Conda 环境 首先&#xff0c;创建一个新的 Conda 环境&#xff08;可选&#xff09;&#xff1a; conda create -n myenv python3.8 conda activate myen…...

微服务透传日志traceId

问题 在微服务架构中&#xff0c;一次业务执行完可能需要跨多个服务&#xff0c;这个时候&#xff0c;我们想看到业务完整的日志信息&#xff0c;就要从各个服务中获取&#xff0c;即便是使用了ELK把日志收集到一起&#xff0c;但如果不做处理&#xff0c;也是无法完整把一次业…...

【自然语言处理与大模型】大模型(LLM)基础知识②

&#xff08;1&#xff09;LLaMA输入句子的长度理论上可以无限长吗&#xff1f; 理论上来说&#xff0c;LLM大模型可以处理任意长度的输入句子&#xff0c;但实际上存在一些限制。下面是一些需要考虑的因素&#xff1a; 1. 计算资源&#xff1a;生成长句子需要更多的计算资源&a…...

新能源汽车的未来:车载电源与V2G技术的前景

近年来&#xff0c;新能源汽车在全球市场上发展迅速&#xff0c;尤其是在中国&#xff0c;新能源汽车的月销量已经超过了燃油车。随着新能源技术的不断发展&#xff0c;新能源汽车不仅仅是作为出行工具&#xff0c;而逐渐成为“移动能源站”。本文将探讨电动汽车的车载外放电功…...

Git 本地操作(2)

会以下操作就可以完成本地的版本控制了&#xff0c;就不需要再复制文件每次改一个东西就复制整个工程保存下来啦&#xff01; 建议先看上一篇文章噢 &#xff01;&#xff01;&#xff01; 一、新建项目git本地操作 1、初始化仓库 创建一个 project 文件夹&#xff0c;将需…...

项目管理软件:5款甘特图工具测评

在项目管理中&#xff0c;甘特图作为一种直观且高效的任务进度展示工具&#xff0c;被广泛应用于各个行业。以下是几款功能强大、易于使用的甘特图工具&#xff0c;它们能够帮助项目经理更好地规划、跟踪和管理项目进度。 1、进度猫 进度猫是国内项目管理新秀&#xff0c;是…...

Unreal5从入门到精通之如何在指定的显示器上运行UE程序

前言 我们有一个设备,是一个带双显示器的机柜,主显示器是一个小竖屏,可以触屏操作,大显示器是一个普通的横屏显示器。我们用这个机柜的原因就是可以摆脱鼠标和键盘,直接使用触屏操作,又可以在大屏观看,非常适合用于教学。 然后我们为这款机柜做了很多个VR项目,包括Uni…...

【Spring MVC】DispatcherServlet 请求处理流程

一、 请求处理 Spring MVC 是 Spring 框架的一部分&#xff0c;用于构建 Web 应用程序。它遵循 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;将应用程序分为模型&#xff08;Model&#xff09;、**视图&#xff08;View&#xff09;和控制器&#x…...

【优选算法】——二分查找!

目录 1、二分查找 2、在排序数组中查找元素的第一个和最后一个位置 3、搜索插入位置 4、x的平方根 5、山脉数组的封顶索引 6、寻找峰值 7、寻找旋转排序数组中的最小值 8、点名 9、完结散花 1、二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组…...

leetcode hot100【LeetCode 300. 最长递增子序列】java实现

LeetCode 300. 最长递增子序列 题目描述 给定一个未排序的整数数组 nums&#xff0c;找出其中最长递增子序列的长度。 要求&#xff1a; 子序列是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0…...

sql注入——靶场Less1

?id1 ?id99union select 1,2,3-- 查看占位 ?id1 order by 3-- 尝试出表有几列 ?id1 order by 4-- 说明只有三列 ?id99 union select 1,database(),3-- 查询当前使用的数据库的名称 ?id99 union select 1,group_concat(table_name),3 from information_schema.tables …...

docker file容器化部署Jenkins(一)

Jenkins Github地址&#xff1a;https://github.com/jenkinsci/jenkins 国内镜像地址&#xff1a;https://docker.aityp.com/ 准备工作 # 创建持久化卷目录 mkdir /data/jenkins_home/Jenkins拉取镜像 # 由于Jenkins需要JDK&#xff0c;所以直接拉取带有JDK的Jenkins镜像 doc…...

ArkTS组件继承的高级用法

在HarmonyOS应用开发中&#xff0c;ArkTS作为开发语言&#xff0c;组件的继承是实现代码复用和扩展功能的重要机制。本文将详细介绍ArkTS中组件继承的高级用法&#xff0c;包括继承的概念、如何使用继承、以及继承在实际开发中的应用和最佳实践。 继承的概念 继承是面向对象编…...

第十二章 spring Boot+shiro权限管理

学习目标 引入依赖配置Shiro设计数据库表编写Mapper、Service和Controller前端页面测试与调优其他注意事项 Spring Boot与Shiro的集成是一种常见的Java Web应用程序权限管理解决方案。Shiro是一个强大的Java安全框架&#xff0c;提供了认证、授权、会话管理、加密等安全功能。以…...

jmeter基础01-3_环境准备-Linux系统安装jdk

Step1. 查看系统类型 打开终端&#xff0c;命令行输入uname -a&#xff0c;显示所有系统信息&#xff0c;包括内核名称、主机名、内核版本等。 如果输出是x86_64&#xff0c;则系统为64位。如果输出是i686 或i386&#xff0c;则系统为32位。 Step2. 官网下载安装包 https://www…...

【HTTP】HTTP协议核心体系:请求方法与状态码全结构化解析(附《思维导图》)

文章目录HTTP协议核心体系&#xff1a;请求方法与状态码全结构化解析一、核心基础概念1.1 HTTP方法的两大核心属性&#xff08;规范级定义&#xff09;1.2 HTTP状态码分类规则二、HTTP请求方法2.1 标准核心方法&#xff08;RFC 7231 定义&#xff09;2.1.1 只读类方法&#xff…...

DLSS Swapper终极指南:5分钟掌握游戏性能优化新技能

DLSS Swapper终极指南&#xff1a;5分钟掌握游戏性能优化新技能 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾因游戏帧率不足而烦恼&#xff1f;是否想尝试新版本DLSS却担心兼容性问题&#xff1f;DLSS Swap…...

Matlab GUI计时器:自动更新的数字时钟与恢复/暂停功能的定时器对象实现

Matlab图形用户界面计时器&#xff1a;使用定时器对象自动更新的MatlabGUI&#xff0c;一个数字时钟&#xff0c;作为显示基本组件的快速演示&#xff0c;带有一个按钮&#xff0c;用于恢复/暂停执行更新 实验室配了新酶标仪孵箱但总有人&#xff08;比如同组摸鱼的小师妹顺便…...

2026年3月Github开源项目精选Top10

&#x1f4c5;统计周期&#xff1a;2026-02-28 ~ 2026-03-29 &#x1f30b;数据来源&#xff1a;www.ffgithub.com &#x1f4da;数据更新&#xff1a;2026-03-29 Top1. 666ghj/MiroFish &#x1f53a; 总星标数量&#xff1a;43670⭐&#x1f53a; 周增长数量&#xff1a;63…...

[Python3高阶编程] - 横跨同步异步的利器: asgiref.sync

一、asgiref.sync 是什么&#xff1f;asgiref.sync 是 ASGI&#xff08;Asynchronous Server Gateway Interface&#xff09;参考实现库 asgiref 中的核心子模块&#xff0c;主要用于安全地桥接同步代码与异步代码。&#x1f4cc; 一句话总结&#xff1a; 它让你在异步环境中调…...

Qwen3.5-9B-AWQ-4bit惊艳效果展示:高清图识+中文摘要真实生成作品集

Qwen3.5-9B-AWQ-4bit惊艳效果展示&#xff1a;高清图识中文摘要真实生成作品集 1. 模型能力概览 Qwen3.5-9B-AWQ-4bit是一款让人眼前一亮的视觉理解模型&#xff0c;它能像人类一样"看懂"图片内容&#xff0c;并用流畅的中文给出专业分析。这个模型特别擅长处理各种…...

Qwen3.5-2B部署案例:基于Docker+Supervisor的生产级多用户服务搭建

Qwen3.5-2B部署案例&#xff1a;基于DockerSupervisor的生产级多用户服务搭建 1. 项目背景与模型介绍 Qwen3.5-2B是阿里云推出的轻量化多模态基础模型&#xff0c;属于Qwen3.5系列的小参数版本&#xff08;20亿参数&#xff09;。这个模型专为低功耗、低门槛部署场景设计&…...

PyFlow多线程编程:SingletonThreadSampleNode的完整实现指南

PyFlow多线程编程&#xff1a;SingletonThreadSampleNode的完整实现指南 【免费下载链接】PyFlow Visual scripting framework for python 项目地址: https://gitcode.com/gh_mirrors/py/PyFlow PyFlow作为Python的视觉化脚本框架&#xff0c;为开发者提供了直观的节点编…...

短视频 SEO 推广与视频广告投放的区别是什么_短视频 SEO 优化需要结合网站整体 SEO 策略吗

短视频 SEO 推广与视频广告投放的区别是什么_短视频 SEO 优化需要结合网站整体 SEO 策略吗 在当前数字化营销的浪潮中&#xff0c;短视频平台和视频广告投放已经成为许多企业和创作者推广内容、吸引观众的重要手段。对于SEO策略的理解和应用却常常存在误解。今天&#xff0c;我…...

intv_ai_mk11企业应用案例:如何将intv_ai_mk11集成进内部知识库与客服预处理流程

intv_ai_mk11企业应用案例&#xff1a;如何将intv_ai_mk11集成进内部知识库与客服预处理流程 1. 企业面临的挑战与AI解决方案 在当今企业运营中&#xff0c;知识管理和客户服务是两大核心痛点。许多企业面临以下问题&#xff1a; 知识库利用率低&#xff1a;员工难以快速找到…...