域内用户枚举和密码喷洒

一. 域内用户枚举原理和流量

1. 原理

在AS-REQ阶段客户端向AS发送用户名,cname字典存放用户名,AS对用户名进行验证,用户存在和不存在返回的数据包不一样。

不同之处主要是在返回数据包中的状态码不同,根据不同的状态码来区分账号在目标主机上的情况!

状态码主要分为四种:

KRB5DC_ERR_PREAUTH_REQUIRED 需要额外的预认证(用户存在)但是没有提供密码
KRB5DC_ERR_CLIENT_REVOKED 客户端凭证已被吊销(禁用)
KRB5DC_ERR_C_PRINCIPAL_UNKNOWN 在Kerberos数据库中找不到客户端(不存在)
KRB5KDC_ERR_PREAUTH_FAILED(用户存在密码错误)

官方文档中还有对应的状态码
微软地址: https://learn.microsoft.com/zh-cn/windows/security/threat-protection/auditing/event-4771

在这里插入图片描述

2. 流量分析

根据上面的四种状态码进行测试和流量分析:

用户存在,但是没有提供密码(test)

使用kerbrute工具输入下面命令并抓包

kerbrute.exe userenum --dc 192.168.41.10 -d hack.com 1.txt

在这里插入图片描述
先看AS-REQ包,里面只传输了我们要请求的用户名,而没有写密码
在这里插入图片描述
再看AS-REP包里的状态码

在这里插入图片描述

客户端凭证已被吊销(Guest(禁用))

我们使用kekeo工具输入下面命令申请用户的TGT票据

Tgt::ask /user:域用户 /domain:域名 /password:密码,

在这里插入图片描述
AS-REQ
在这里插入图片描述
AS-REP
在这里插入图片描述
可以看到请求的用户名是Guest,返回时的
数据是disabled禁用

test2在Kerberos数据库中找不到客户端(不存在)
用上面方法抓包分析
在这里插入图片描述
AS-REQ
在这里插入图片描述
AS-REP
在这里插入图片描述
可以看到请求的用户名是qwe,返回是的
数据是unknown

用户存在密码错误(test)
用上面方法抓包分析
在这里插入图片描述
AS-REQ

AS-REP
在这里插入图片描述
可以看到请求的用户名是ls,但是提供了错误的密码

3. 总结

域内用户枚举的原理是利用这两个都可以证明用户的存在:

    1. 正确的用户名,没有提供密码
    1. 正确的用户名,密码错误

这俩种都是根据AS-REP返回的error-code值来判断枚举的用户是否存在

比如利用kerbrute测试,在用户字典中添加几个用户
在这里插入图片描述

二. 域内密码喷洒原理和流量

利用kerbrute测试并抓包分析

kerbrute.exe passwordspray --dc 192.168.41.10 -d hack.com 1.txt qwe123!@#

test用户存在,密码错误
在这里插入图片描述
这里与上面不同,有四个数据包,原理是它先验证用户名是否存在,然后再进行密码验证

AS-REQ
在这里插入图片描述

AS-REP
在这里插入图片描述
在这里插入图片描述
test用户存在,密码正确
在这里插入图片描述
AS-REQ
在这里插入图片描述

AS-REP
在这里插入图片描述

三. 枚举和喷洒工具的使用

原理搞明白后接下来介绍来个工具

1. kerbrute工具

kerbrute使用Go语言开发,github提供了编译好的文件

地址: https://github.com/ropnop/kerbrute/releases

使用方法:
在这里插入图片描述
域内用户枚举

kerbrute.exe userenum--dc 域控IP -d 域名 用户字典

在这里插入图片描述

域内密码喷洒

kerbrute.exe passwordspray--dc 域控IP -d 域名 用户字典 密码(单密码)(有锁定策略使用)
kerbrute.exe bruteuser --dc 域控IP -d 域名 密码字典 用户名(没有锁定策略使用)

在这里插入图片描述
在这里插入图片描述

2. pykerbute工具

该工具是使用python2编写,支持tcp和udp俩种协议来用户枚举

用户枚举
EnumADUser.py 192.168.41.10 hack.com 1.txt tcp密码喷洒
hash值:
ADPwdSpray.py 192.168.41.10 hack.COM 1.txt ntlmhash e00045bd566a1b74386f5c1e3612921b udp
明文密码:
ADPwdSpray.py 192.168.41.10 hack.COM 1.txt clearpassword Admin@123 udp

四. 工作组和域内 – 喷洒和枚举

1. 不同环境下使用密码喷洒的场景

工作组环境
(1) 可以使用本地账号进行hash碰撞,找到可以登录的机器进行PTH认证,然后横向过去

(2) 如果通过信息收集,发现了域控的IP还有域名,可以直接使用工作组机器对域内用户进行密码喷洒,如果知道了域用户的密码可以生成票据,进行PTT,然后横向攻击上线

域环境
(1) 在域环境中一般不需要进行域内用户枚举,因为可以使用 net user /domain 可以直接查看。
(2) 在域环境中我们可以使用密码喷洒找到域用户的密码然后进行横向。

2. 工作组喷洒和域内主机喷洒的区别
工作组:工作组--工作组:可以使用NTLM协议:IPC,明文密码,PTH工作组--域内主机kerberos协议:用户枚举,密码喷洒NTLM协议:IPC,PTH
域内机器:域内机器-域内机kerberos协议:密码喷洒,IPC,PTH,PTT,PTK,明文密码域内机器-工作组机器NTLM协议:IPC,PTH

五. 通过喷洒控制域内主机

由上可知要喷洒用户由如下特点:

工作组:administrator用户 普通管理员(有UAC)但是只能上线低版本机器
域用户:administrator或者普通域管理员用户都可以
1. 工作组喷洒域内主机
前提条件:域控IP域名域内用户(需要枚举)
前俩个条件可以通过信息收集得到,但查看域内用户不行,除非控制的是域内用户,可以使用net user /domain 查看,所以需要枚举
  • 需要注意的是:上线的时候一定要把DNS修改不然PTT会失败
    在这里插入图片描述
    不然无法与域控通信

第一步成功上线内网一台工作组机器,利用CS插件上传FSCAN扫描C段
在这里插入图片描述
看到有DC的IP
第二步开始用户枚举,先上传工具kerbrute
在这里插入图片描述
输入命令开始用户枚举

kerbrute.exe userenum --dc 192.168.41.10 -d hack.com 1.txt

在这里插入图片描述
枚举到DC的用户,开始对administrator用户进行密码喷洒

kerbrute.exe bruteuser --dc 192.168.41.10 -d hack.com 2.txt administrator

在这里插入图片描述
得到DC的超管用户和明文密码使用之前的任意横向技术即可上线!

2. 域内主机进行喷洒,上线域控
前提:
域控IP
域名
域内用户(不需要枚举,使用net user /domain)

查看域内成员
在这里插入图片描述
上传工具,进行密码喷洒
在这里插入图片描述
接下来横向推荐使用PTT,因为得到票据,将超管票据打入内存后,可以上线任意域内成员机

3. 工作组hash碰撞或者密码喷洒

只能使用IPC,明文密码或者是pth认证,认证通过之后,可以使用copy命令将木马copy到目标机器,还可以使用服务或者是计划任务上线CS!

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

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

相关文章

271 基于matlab的可调Q因子小波变换故障诊断

基于matlab的可调Q因子小波变换故障诊断,可用在轴承、齿轮、活塞等故障诊断中,程序中包含了原始TQWT工具箱和轴承振动信号信号的谱包络的求取。通过仿真数据、实际轴承数据说明了方法的效果。程序已调通,可直接运行。 271 可调Q因子小波变换 …

基于java的CRM客户关系管理系统(二)

目录 第二章 相关技术介绍 2.1 后台介绍 2.1.1 B/S平台模式 2.1.2 MVC 2.1.3 Spring 2.1.4 Hibernate 2.1.5 Struts 2.2 前端介绍 2.2.1 JSP网页技术 2.3 开发工具 2.4 本章小结 前面内容请移步 基于java的CRM客户关系管理系统(二) 资源…

查看docker中各个容器所占的资源

要查看Docker中的每个容器占用的资源,可以使用docker stats命令。这个命令提供了容器的实时资源使用统计,包括内存使用情况。以下是如何使用docker stats命令的示例: docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsa…

Appium安装及配置(Windows环境)

在做app相关自动化测试,需要使用appium来做中转操作,下面来介绍一下appium的环境安装配置 appium官方文档:欢迎 - Appium Documentation 一、下载appium 下载地址:https://github.com/appium/appium-desktop/releases?page3 通…

进程——linux

目录 冯诺依曼体系结构(计算机组成原理与体系结构) 关于冯诺依曼,必须强调几点: 操作系统(Operator System) 概念 设计OS的目的 定位 如何理解 "管理" 总结 系统调用和库函数概念 承上启下 一、进程 基本概念…

C++:细谈Sleep和_sleep

ZINCFFO的提醒 还记得上上上上上上上上上上上上上上上上上上(上的个数是真实的)篇文章吗? 随机应变——Sleep()和_sleep() 但在ZINCFFO的C怪谈-02中: 我不喜欢Sleep...... 奤?媜煞鷥! 整活!…

STL中stack的使用

目录 一、stack类介绍和使用 stack类介绍 stack类定义 stack类常见构造函数 stack数据操作 empty()函数 top() pop() 和 push() 函数 size()函数 swap()函数 一、stack类介绍和使用 stack类介绍 1.stack是一种容器适配器,专门用在具有后进先出操作的上下…

C语言 指针——函数指针

目录 什么是函数指针? 函数指针的定义 定义函数指针时的常见错误 函数指针有什么用? 函数指针的主要应用 什么是函数指针? 函数指针 (Function Pointer) 就是指向函数的指针变量 数据类型 ( * 指针变量名 ) ( 形参列表 ); 例如&#x…

Python 机器学习 基础 之 处理文本数据 【停用词/用tf-idf缩放数据/模型系数/多个单词的词袋/高级分词/主题建模/文档聚类】的简单说明

Python 机器学习 基础 之 处理文本数据 【停用词/用tf-idf缩放数据/模型系数/多个单词的词袋/高级分词/主题建模/文档聚类】的简单说明 目录 Python 机器学习 基础 之 处理文本数据 【停用词/用tf-idf缩放数据/模型系数/多个单词的词袋/高级分词/主题建模/文档聚类】的简单说明…

什么是PLAB?

接上文PLAB---》 可以看到和TLAB很像,PLAB即 Promotion Local Allocation Buffers。用在年轻代对象晋升到老年代时。 在多线程并行执行YGC时,可能有很多对象需要晋升到老年代,此时老年代的指针就"热"起来了,于是搞了个…

秒杀基本功能开发(显示商品列表和商品详情)

文章目录 1.数据库表设计1.商品表2.秒杀商品表3.修改一下秒杀时间为今天到明天 2.pojo和vo编写1.com/sxs/seckill/pojo/Goods.java2.com/sxs/seckill/pojo/SeckillGoods.java3.com/sxs/seckill/vo/GoodsVo.java 3.Mapper编写1.GoodsMapper.java2.GoodsMapper.xml3.分别编写Seck…

数据库(10)——图形化界面工具DataGrip

以后关于数据库的图片演示就使用DataGrip了 : ) 创建数据库和表 在连接上数据库之后,可以选择Schema创建一个新的数据库。 点击OK后,就已经创建了一个空的表。 要在数据库中建立一张新的表,右键数据库,点击new table 要给新表添…

Java对sqlserver表的image字段图片读取和输出本地

Java代码实现对sqlserver数据库表的image字段图片的读取,和输出存储到本地 由于表image字段图片存的内容是二进制值,如何输出保存到本地: 代码示例:(注:连接sqlserver数据库需配置其驱动文件) …

让EXCEL VBA支持鼠标滚轮,vb6 IDE鼠标滚轮插件原理

vb6 IDE鼠标滚轮插件怎么运行的(适用于VBA) 使用 Spy,我发现代码窗口正在获取 WM_MOUSEWHEEL 事件,但没有触发 WM_VSCROLL 消息。因此,我编写了一个简单的消息钩子,当它捕获鼠标滚轮事件时触发滚动事件。 我从 Spy 得知代码窗口的…

Android 项目Gradle文件讲解(Groovy和Kotlin)

Android 项目Gradle文件讲解(Groovy和Kotlin) 前言正文一、Gradle的作用二、Gradle的种类① 工程build.gradle② 项目build.gradle③ settings.gradle④ gradle.properties⑤ gradle-wrapper.properties⑥ local.properties 三、Groovy和Kotlin的语言对比…

系统安全及其应用

系统安全及其应用 部署服务器的初始化步骤: 1、配置IP地址,网关,DNS解析 2、安装源,外网(在线即可yum) 内网(只能用源码包编译安装) 3、磁盘分区 lvm raid 4、系统权限配置和基础安…

【ArcGISPro】3.1.5下载和安装教程

下载教程 arcgis下载地址:Трекер (rutracker.net) 点击磁力链下载弹出对应的软件进行下载 ArcGISPro3.1新特性 ArcGIS Pro 3.1是ArcGIS Pro的最新版本,它引入了一些新的特性和功能,以提高用户的工作效率和数据分析能力。以下是ArcGIS…

神经网络的工程基础(二)——随机梯度下降法|文末送书

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型:从线性回归到通用人工智能》,欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下:regression2chatgpt/ch06_optimizer/stochastic_gradient_descent.ipynb 本文将讨论利用…

QT——QSlider实现,QT滑动控件的使用

目录 简介滑动块调节两种方法滑动条触发信号量理想滑动块运用(参考) 简介 QT中滑动条的控件叫QSlider,继承自QAbstractSlider类。 主要用途是通过滑块的滑动的方式在一定范围内调节某个值。根据调节的后得到的结果去执行一些处理&#xff0c…

第十三章 进程与线程

第十三章 进程与线程 程序与进程的概念 程序: 英文单词为Program,是指一系列有序指令的集合,使用编程语言所编写,用于实现一定的功能。 进程: 进程则是指启动后的程序,系统会为进程分配内存空间。 函数式…