域内用户枚举和密码喷洒

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

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.mzph.cn/web/20578.shtml

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

相关文章

20分钟Angular框架快速入门

Angular框架快速入门可以按照以下步骤进行: 一、准备工作 安装Node.js:Angular依赖于Node.js进行开发,因此首先需要安装Node.js。确保安装的是最新稳定版本。 二、安装Angular CLI 打开命令行工具:在Windows上可以使用CMD或Pow…

数学建模 —— 人工神经网络(6)

目录 一、人工神经网络 1.1 人工神经网络结构 1.2 神经元/感知器 1.3 激活函数 1.3.1 sign函数 1.3.2 sigmoid函数(Logistic函数) 1.3.3 tanh双曲正切函数 1.3.4 ReLU函数 1.4 分类 二、BP人工神经网络 2.1 概述 2.2 处理过程 2.3 例题 2.…

Android Studio插件开发 - Dora SDK的IDE插件

IDE插件开发简介 Android Studio是一种常用的集成开发环境(IDE),用于开发Android应用程序。它提供了许多功能和工具,可以帮助开发人员更轻松地构建和调试Android应用程序。 如果你想开发Android Studio插件,以下是一…

移动系统编程-安装和运行Ionic应用程序 (Installation and Running Ionic Apps)

安装 (Installation) 假设您已经安装了Node.js和Angular,您可以使用以下命令安装Ionic: npm install -g ionic/cli您也可以不使用CLI安装Ionic,但如果您使用的是最新版本的Cordova,这样做可能会导致版本不匹配,不推荐…

基础技术-ELF系列(3)-libelf使用

成就更好的自己 本篇是基础技术系列中ELF相关技术的第三篇,也是计划中的最后一篇(后续遇到问题可能还会有后续)。本文将会以上一篇文章中提到的实际问题写一段Demo为例,着重讲解一下libelf库的基本使用。 没有看过之前文章的朋友…

【技术实操】银河高级服务器操作系统实例分享,数据库日志文件属主不对问题分析

1. 问题现象描述 2023 年 06 月 30 日在迁移数据库过程中,遇到数据库 crash 的缺陷,原因如下:在数据库启动时候生成的一组临时文件中,有 owner 为 root 的文件, 文件权限默认为 640, 当数据库需要使用的时…

「C系列」C 基本语法

文章目录 一、C 基本语法1. **程序结构**2. **数据类型**3. **变量声明**4. **运算符**6. **函数**7. **指针**8. **数组**9. **结构体和联合体**10. **预处理指令**11. **内存管理** 二、C 关键字1. 整体概览2. 具体关键字数据类型关键字控制流关键字其他关键字C11新增关键字总…

高速服务区智慧公厕管理系统引导屏UI界面展示

在现代社会,高速服务区作为人们出行途中的重要休憩场所,其各项设施的智能化水平也在不断提升。其中,智慧公厕管理系统的出现,为人们带来了更加便捷、舒适的如厕体验,而引导屏 UI 界面更是这一系统的重要展示窗口。 智慧…

mdk 编程入门:探索编程世界的神秘之旅

mdk 编程入门:探索编程世界的神秘之旅 在科技日新月异的今天,编程已成为一项不可或缺的技能。MDK编程作为其中的一员,以其独特的魅力和广泛的应用领域吸引着越来越多的初学者。那么,如何入门MDK编程呢?本文将带你走进…

Python | Leetcode Python题解之第126题单词接龙II

题目: 题解: class Solution:def findLadders(self, beginWord: str, endWord: str, wordList: List[str]) -> List[List[str]]:ans []if endWord not in wordList:return anssize len(beginWord)cur_word_set {beginWord}ws set(wordList)# 用于…

MySQL开发教程和具体应用案例

一、MySQL开发教程 初识数据库 定义:数据仓库,安装在操作系统之上,用于存储和管理数据。 分类:关系型数据库(如MySQL、Oracle、SQL Server)和非关系型数据库(如Redis、MongoDB)。 SQL:结构化查询语言,用于管理和操作关系型数据库。 操作数据库 创建、修改、删除…

【LeetCode 637】二叉树的层平均值

1. 题目 2. 分析 没啥好说的,这题很简单,希望能在5min内搞定。遇到问题要快速排查,不要怀疑编译器。 3. 代码 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # …

nacos配置发布流程代码示例

在 Nacos 中发布配置通常不需要直接编写代码,而是通过 Nacos 的管理界面或者使用 Nacos 提供的客户端 SDK 来完成。不过,如果想要通过编程的方式来发布配置,可以使用 Nacos 的客户端 SDK。 以下是一个使用 Java 和 Nacos 客户端 SDK 发布配置…

如何在 Linux VPS 上自定义你的 Bash 提示符

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 在管理 Linux 服务器时,您将花费大量时间使用命令行。对于大多数人来说,这意味着与 Bash shell 一起花费大量时间。 虽然大多数发行版为用户和 root 提供了合理…

WPF Binding对象、数据校验、数据转换

在WinForm中,我们要想对控件赋值,需要在后台代码中拿到控件对象进行操作,这种赋值形式,从根本上是无法实现界面与逻辑分离的。 在WPF中,微软引入了Binding对象,通过Binding,我们可以直接将控件与…

CSS双飞翼布局

双飞翼布局是一种经典的CSS布局模式&#xff0c;主要用于实现左右两列固定宽度&#xff0c;中间列自适应的布局。 比如&#xff1a;写一个左中右布局占满全屏&#xff0c;其中左、右两块固定宽 200px&#xff0c;中间自适应&#xff0c;要求先加载中间块。 <!DOCTYPE html…

启动u盘恢复成普通u盘

DiskUtility&#xff08;磁盘工具&#xff09;恢复可启动U盘为普通存储设备。点击顶部菜单栏的"抹掉"按钮。 u盘启动盘怎么恢复成u盘

Re0:从零开始的C++游戏开发【中】

Re0:从零开始的C游戏开发 &#xff08;中&#xff09; 这是蒟蒻观看B站upVoidmatrix的课程从零开始的提瓦特幸存者的个人笔记【自用】 前言&#xff1a;采用适用于小白的easyx图形库。 第三集 提瓦特の幸存者 3.1 程序动画实现及角色移动 在开始之前&#xff0c;我们应该认…

如何使用Dora SDK完成Fragment流式切换和非流式切换

我想大家对Fragment都不陌生&#xff0c;它作为界面碎片被使用在Activity中&#xff0c;如果只是更换Activity中的一小部分界面&#xff0c;是没有必要再重新打开一个新的Activity的。有时&#xff0c;即使要更换完整的UI布局&#xff0c;也可以使用Fragment来切换界面。 何…

ArrayList和LinkedList对比,ArrayList使用注意事项

ArrayList和LinkedList对比&#xff0c;ArrayList使用注意事项 ArrayList 和 LinkedList 是 Java 中常用的两种集合类&#xff0c;它们在内部实现和性能上有一些重要的区别。 ArrayList: ArrayList 是基于动态数组实现的。它内部使用一个数组来存储元素&#xff0c;当数组空间…