域内用户枚举和密码喷洒

2024-06-02 08:04
文章标签 密码 用户 枚举 喷洒

本文主要是介绍域内用户枚举和密码喷洒,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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.chinasem.cn/article/1023397

相关文章

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

C++11作用域枚举(Scoped Enums)的实现示例

《C++11作用域枚举(ScopedEnums)的实现示例》枚举类型是一种非常实用的工具,C++11标准引入了作用域枚举,也称为强类型枚举,本文主要介绍了C++11作用域枚举(ScopedEnums... 目录一、引言二、传统枚举类型的局限性2.1 命名空间污染2.2 整型提升问题2.3 类型转换问题三、C

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

PostgreSQL数据库密码被遗忘时的操作步骤

《PostgreSQL数据库密码被遗忘时的操作步骤》密码遗忘是常见的用户问题,因此提供一种安全的遗忘密码找回机制是十分必要的,:本文主要介绍PostgreSQL数据库密码被遗忘时的操作步骤的相关资... 目录前言一、背景知识二、Windows环境下的解决步骤1. 找到PostgreSQL安装目录2. 修改p

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录