当前位置: 首页 > 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…...

数字证书的简单记录

CA&#xff08;Certificate Authority&#xff09;&#xff1a;即数字证书颁发认证机构。 CA数字证书&#xff08;crt/cer证书&#xff09;&#xff1a;数字证书 申请者与颁发者信息申请者公钥颁发者签名&#xff0c;由CA机构使用私钥签名得到数字证书。 CA中间证书&#xff1…...

ssm基于SSM的校内信息服务发布系统的设计与实现+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码看文章最下面 需要定制看文章最下面 目 录 摘要 1 Abstract 1 目 录 2 1绪论 4 1.1研究背景与意义 4 1.2国内外研究现状 4 1.3研究…...

Java 教程简介

Java 教程简介 Java 是 Sun Microsystems 公司于 1995 年 5 月推出的一种面向对象的编程语言和运行平台&#xff0c;由 James Gosling 和他的同事共同研发。当前&#xff0c;这个产品已被 Oracle 公司所收购。这篇教程将带你了解 Java 的一些基础知识和应用。 Java 系统简介 …...

【C/C++】【三种方法】模拟实现strlen

学习目标&#xff1a; 使用代码模拟实现strlen。 逻辑&#xff1a; strlen 需要输入一个字符串数组类型的变量&#xff0c;并且返回一个整型类型的数据。strlen 需要计算字符串数组有多少个元素。 代码1&#xff1a;使用计数器 #define _CRT_SECURE_NO_WARNINGS 1 #include&…...

外贸平台开发多语言处理的三种方式

随着全球贸易的不断增长&#xff0c;外贸平台的多语言处理已成为提升用户体验和市场竞争力的重要因素。在开发外贸平台时&#xff0c;有多种方法可以实现多语言支持。本文将探讨三种主要的多语言处理方式&#xff1a;数据库级多语言支持、前端国际化框架以及内容管理系统&#…...

学习GCC

浅显易懂的GCC使用教程——初级篇_gcc -ddebug-CSDN博客 本文摘抄学习自上面的文章&#xff01; GCC: GNU Compiler Collection: GNU编译器套件&#xff0c;属于一种编程语言编译器&#xff0c;其原名为GCC(GNU C Compiler)&#xff0c;即GNU c语言编译器&#xff0c;虽然缩写…...

B2109 统计数字字符个数

B2109 统计数字字符个数 #include <iostream> using namespace std; # include <string.h> #include <ctype.h> #include <algorithm> int main(){ char str[256]; cin.getline(str,256); //fgets(str,256,stdin); int cnt 0; //for(size_t i 0…...

springboot Lark扫码登录

登录流程 测试通过的地址&#xff1a; https://open.larksuite.com/open-apis/authen/v1/index?app_idcli_a7add3c5bb38902f&redirect_urihttp%3A%2F%2Fstrongculture.cn&stateSTATE...

中专女生数赛疑云:阿里蒙冤,学校之过,尽显世态炎凉

11月3日&#xff0c;阿里巴巴全球数学竞赛组委会发布2024阿里巴巴全球数学竞赛有关情况说明&#xff1a;在本届竞赛中&#xff0c;江苏省涟水中等专业学校教师王某某和其指导的学生入围决赛&#xff0c;引发社会关注。根据决赛阅卷结果&#xff0c;二人未获奖。据调查了解&…...

【neo4j】 图数据库neo4j cypher单一语句 optional 可选操作的技巧

neo4j cypher单一语句 optional 可选操作的技巧 参考文章&#xff1a; Optional merge on relationships Cyper Merge on Optional Match 背景&#xff1a; 使用 match some node 中间还有一些可能与此node有联系的关系或者节点需要处理 create/merge/delete MATCH (src:SOU…...