IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> NTLM网络认证协议分析及Net-NTLMhash的获取 -> 正文阅读

[系统运维]NTLM网络认证协议分析及Net-NTLMhash的获取

目录

前言

一、NTLM协议

wireshark对NTLM协议抓取并获取Net-NTLMhash

hashcat使用

二、Responder

Windows系统名称解析顺序

获取Net-NTLMhash


前言

Windows认证分为本地认证和网络认证,传送门——>?Windows认证原理,计算机开机时用户输入账户密码,这一行为要经过windows的本地认证。而比如当我们访问同一局域网的一台主机上的SMB共享时提供凭证通过验证才能成功进行访问,这就涉及到windows的网络认证。

一、NTLM协议

NTLM是一种网络认证协议,它是基于挑战(Chalenge)/响应(Response)认证机制的一种认证模式。这个协议只支持Windows

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

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

协商时会确定传输协议的版本,这里版本分为v1和v2,NTLMv1与NTLM v2最显著的区别就是Challenge与加密算法不同,共同点就是加密的原料都是NTLM Hash,NTLM v1的Challenge有8位,NTLM v2的Challenge为16位;NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5。

质询的完整过程

比如,局域网的两台主机A和主机B,暂且将主机A称为client,主机B称为server

  • 首先,client会向server发送一个username,这个username是存在于server上的一个用户。
  • 当server接收到这个信息时,首先会在本地查询是否存在这样的一个用户,如果不存在,则直接返回认证失败,如果存在,将会生成一个16位的随机字符,即Chalenge,然后用查询到的这个user的NTLM hash对Chalenge进行加密,生成Chalenge1,将Chalenge1存储在本地,并将Chalenge传给client。
  • 当client接收到Chalenge时,将发送的username所对应的NTLM hash对Chalenge进行加密即Response,并Response发送给server。
  • 质询到这里就结束了,最后一步就是属于验证的机制了
  • server在收到Response后,将其与Chalenge1进行比较,如果相同,则验证成功

??

wireshark对NTLM协议抓取并获取Net-NTLMhash

实验环境

  • 主机A:192.168.10.16
  • 主机B:192.168.10.17

1. 访问共享

主机A访问主机B的共享

2. 数据抓取

抓到的数据包,这里也可以看到,访问共享是基于SMB协议的。Negotiate Protocol Response,是进行协商

?下面这条数据包,服务器向客户端返回16位长的challenge

接着下一条数据,客户端将发送的用户名所对应的NTLM hash对Chalenge进行加密得到Response,即这里的 “ntlmv2_response” 的值。

?获取了这些信息后,就可以使用Hashcat对其进行破解

3.?Net-NTLMhash格式介绍及拼接

NTLMv2的格式为:username::domain:challenge:HMAC-MD5:blob

username就是你发送过去账号名,如administrator。domain即host name,如下为WIN2012

HMAC-MD5对应数据包中的NTProofStr,blob

?blob对应数据包中Response去掉NTProofStr的后半部分,如下

所以完整的NTLMv2数据为如下,此数据为Net-NTLMhash。即?Net NTLM Hash =?NTLM Hash(Challenge)

administrator::WIN2012:f6b8f52d43c85ade:3b9b036676d0a85eed09e9b8baa08a50:010100000000000096312f09822fd8018ec69d474154efdc0000000002001000410044004d0049004e002d005000430001001000410044004d0049004e002d005000430004001000610064006d0069006e002d005000430003001000610064006d0069006e002d00500043000700080096312f09822fd8010600040002000000080030003000000000000000000000000030000058be941f2f54fe24d44ac916bfbe9e966fbe0b40d1b62dcc8d117613d1d46f500a001000000000000000000000000000000000000900240063006900660073002f003100390032002e003100360038002e00310030002e0031003700000000000000000000000000

然后使用hashcat即可破解

hashcat使用

kali中自带该工具

1. 使用hashcat破解Net-NTLMhash

hashcat? [option]

  • -m:hash-type,5600对应NetNTLMv2,详细参数可查表:https://hashcat.net/wiki/doku.php
  • -o:输出文件
  • 字典文件为1.txt
  • --force代表强制执行,测试系统不支持Intel OpenCL

执行如下破解

hashcat -m 5600 administrator::WIN2012:f6b8f52d43c85ade:3b9b036676d0a85eed09e9b8baa08a50:010100000000000096312f09822fd8018ec69d474154efdc0000000002001000410044004d0049004e002d005000430001001000410044004d0049004e002d005000430004001000610064006d0069006e002d005000430003001000610064006d0069006e002d00500043000700080096312f09822fd8010600040002000000080030003000000000000000000000000030000058be941f2f54fe24d44ac916bfbe9e966fbe0b40d1b62dcc8d117613d1d46f500a001000000000000000000000000000000000000900240063006900660073002f003100390032002e003100360038002e00310030002e0031003700000000000000000000000000 1.txt -o result.txt --force

打开result.txt,在原来5个字段的密文中新添加了一个明文,即为密码

当然在实际的测试环境中,我们不可能使用这样的方法去获取,可以使用中间人攻击的方式来获取Net-NTLMhash,常用的两个工具是Responder和Inveigh

二、Responder

下载:https://github.com/lgandx/Responder

Windows系统名称解析顺序

先补充一个前置知识,比如当我们访问一个共享时 net use \123423refd,其寻找这个主机名称会遵循以下的步骤

  1. 本地hosts文件(%windir%\System32\drivers\etc\hosts)
  2. DNS缓存/DNS服务器
  3. 链路本地多播名称解析(LLMNR)和NetBIOS名称服务(NBT-NS)

如果在缓存中没有找到名称,DNS名称服务器又请求失败时,Windows系统就 会通过链路本地多播名称解析(LLMNR)和Net-BIOS名称服务(NBT-NS)在本地进行名称解析。这时,客户端就会将未经认证的UDP广播到网络中,询问它是否为本地系统的名称,由于该过程未被认证,并且广播到整个网络,从而允许网络 上的任何机器响应并声称是目标机器。当用户输入不存在、包含错误或者DNS中 没有的主机名时,通过工具(responder)监听LLMNR和NetBIOS广播,攻击者可以 伪装成受害者要访问的目标机器,并从而让受害者交出相应的登陆凭证。核心过 程与arp欺骗类似,我们可以让攻击者作中间人,截获到客户端的Net-NTLM Hash。

获取Net-NTLMhash

1. kali开启Responder

工作组环境,主机(win 2012,win7,kali)处于同一网段NAT

进入Responder-master,执行如下命令

./Responder.py -I eth0 -Pv?
  • -I? 即选择当前监听的网卡

?2. win2012触发无效名称解析

如下,随便访问一个不存在共享

本地和缓存查询不到该访问名称sfs,win2012就会将未经认证的UDP广播到网络中,询问谁是这个名称,由于该过程未被认证,并且广播到整个网络,从而允许网络 上的任何机器响应并声称是目标机器。此时kali伪装成win2012要访问的目标机器,接着进行ntlm认证。从而让受害者交出相应的登陆凭证(net-ntlm hash)。此时kali已经获取到了Net-NTLMhash

?hashcat破解,确实是win2012的密码。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:35:20  更:2022-03-06 13:38:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:26:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码