域内攻击手法——域内用户枚举和密码喷洒

一、域内用户枚举

1、域内用户枚举原理

域内用户枚举可以在无域内有效凭据的情况下,枚举出域内存在的用户名,并对其进行密码喷洒攻击,以此获得域内的有效凭据,在 Kerberos 协议认证的 AS-REQ 阶段,客户端向 AS 发送的请求包中,cname字段对应的值是用户名,AS对用户名进行验证,当用户状态分别为用户存在且启用(需要密码认证)、用户存在但被禁用、用户不存在时,AS-REP返回的数据包各不相同,如下图所示,会产生3种状态的数据包,利用这一点,可以对目标与域进行域内用户枚举。

用户状态AS-REP返回包信息
用户存在且启用,但是没有提供密码KRB5DC_ERR_PREAUTH_REQUIRED(需要额外的预认证)
用户存在但禁用KRB5DC_ERR_CLIENT_REVOKED NT Status: STATUS_ACCOUNTDISADLED(用户状态不可用)
用户不存在KRB5DC_ERR_C_PRINCIPAL_UNKNOWN(在Kerberos数据库中找不到此用户)

2、域内用户枚举抓包分析

为了更直观的查看各种用户状态,接下来对各种状态的用户使用工具向AS请求TGT票据,在该过程中使用WireShark进行抓包,查看对于不同用户状态其AS-REP返回包信息。这里用域内用户枚举工具kerbrute针对以下用户进行枚举,并抓包分析

用户用户状态
Mary用户存在且启用,但是没有提供密码
Guest用户存在但禁用
Unknow用户不存在

在用户字典中放入Mary、Guest、Unknow3个用户名使用用户枚举工具kerbrute进行用户名枚举,在该过程使用WireShark抓包,kerbrute该工具使用方法如下:

kerbrute.exe userenum -d god.org usernames.txt
# 参数
username    	# 用户枚举模式
-d        		# 指定域名
usernames.txt   # 用户名字典文件,用户名可以不加域名后缀

kerbrute工具项目地址:https://github.com/ropnop/kerbrute

使用kerbrute工具进行用户名枚举,指定的域名为god.org,枚举的用户名字典为usernames.txt,可以看到枚举出的有效域用户名Mary

在这里插入图片描述通过WireShark在枚举过程中抓包,数据包如下:
在这里插入图片描述138、139两个数据包是用户Unknow的枚举,从AS-REP包可以看到返回状态为KRB5DC_ERR_C_PRINCIPAL_UNKNOWN,对应的是用户不存在状态。
在这里插入图片描述在这里插入图片描述140、142两个数据包是用户Mary的枚举,从AS-REP包可以看到返回状态为KRB5DC_ERR_PREAUTH_REQUIRED,对应的是用户存在且启用,但是没有提供密码,需要额外的预认证。
在这里插入图片描述在这里插入图片描述141、143两个数据包是用户Guest的枚举,从AS-REP包可以看到返回状态为KRB5DC_ERR_CLIENT_REVOKED NT Status: STATUS_ACCOUNTDISADLED,对应的是用户存在但禁用状态。

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

3、域内用户枚举工具

  • kerbrute
    Kerbrute是一款使用Go语言编写的域内用户名枚举和密码喷洒工具,上面已经使用过了。

    kerbrute.exe userenum --dc <域控IP> -d <域名> <用户名字典>
    
  • pyKerbrute
    pyKerbrute是一款使用Python编写的域内用户名枚举和密码喷洒工具。它可以通过TCP和UDP两种模式进行工作,用户名字典中的用户名格式不需要加域名后缀。域内用户名枚举命令如下:

    python2 EnumADUser.py <域控IP> <域名> <用户名字典> udp     # UDP模式
    python2 EnumADUser.py <域控IP> <域名> <用户名字典> tcp     # TCP模式
    

    在这里插入图片描述

4、域内用户枚举攻击防御

由于域内用户名枚举是发送大量的 AS-REQ 包,根据返回包的内容筛选出存在的域用户,因此可通过以下方法进行检测。

  • 流量层面:可通过检测同一IP在短时间内是否发送了大量的AS-REQ包来判断。如果同一IP在短时间内发送大量的AS-REQ包(如1min内大于30个AS-REQ包),则可判断为异常。
  • 日志层面:默认情况下域内用户名枚举并不会对不存在的用户名发起的AS-REQ包产生任何事件日志,因此日志层面不太好检测。

二、域内密码喷洒

1、域内密码喷洒原理

在Kerberos协议认证的AS-REQ阶段,请求包cname对应的值是用户名。当用户名存在时,在密码正确和密码错误两种情况下,AS-REP的返回包不一样。如下图所示为用户密码错误时的返回包状态,所以可以利用这一点对域用户名进行密码喷洒攻击。
这种针对所有用户的自动密码猜测通常是为了避免账户被锁定,因为如果目标域设置了用户锁定策略,针对同一个用户的连续密码猜测会导致账户被锁定,所以只有对所有用户同时执行特定的密码登录尝试,才能增加破解的概率,消除账户被锁定的概率。普通的爆破就是用户名固定来爆破密码,但是密码喷酒是用固定的密码去爆破用户名。

用户状态AS-REP返回包信息
用户存在密码错误KRB5KDC_ERR_PREAUTH_FAILED(用户存在密码错误)

2、域内密码喷洒抓包分析

基于以上原理,我们针对webadmin用户在AS-REQ阶段密码正确和错误的情况下,通过Wireshark抓包看看AS-REP的返回状态。这里使用kekeo工具向AS发起TGT票据申请,发送AS-REQ请求包,在该过程使用WireShark抓包

tgt::ask /user:<域用户名> /domain:<域名> /password:<域用户密码>

在这里插入图片描述第 4个是 AS-REQ 包,它是针对用户 webadmin 进行预认证的,第5个是AS-REP包,由于webadmin用户不存在,因此AS-REP包返回KRB5KDC_ERR_PREAUTH_FAILED错误。

在这里插入图片描述在这里插入图片描述第17个AS-REP包,是针对用户 webadmin 密码正确的情况返回的正常的AS-REP包返里面包含TGT票据。

3、域内密码喷洒工具

当攻击者不在域内时,可以先通过域内用户名枚举来枚举出域内存在的用户,然后再进行域内密码喷洒来尝试喷洒出有效的域用户密码。针对域内密码喷洒攻击,网上有很多开源的项目,下面介绍几款域内密码喷洒工具。

  • kerbrute
    如果通过net accounts /domain可以查询得知目标域不存在密码锁定策略,则可以针对单个用户进行密码字典爆破
    在这里插入图片描述
    该工具的密码喷洒命令如下:
    kerbrute_windows_amd64.exe passwordspray --dc <域控IP> -d <域名> <用户名字典> <单个密码>    # 适用于有锁定策略的情况
    kerbrute_windows_amd64.exe bruteuser --dc <域控IP> -d <域名> <密码字典> <单个用户名>        # 适用于没有锁定策略的情况,严格来说这种是爆破
    # 参数
    passwordspray			# 密码喷酒模式
    --dc					# 指定域控 IP
    -d						# 指定域名
    
    在这里插入图片描述
  • pyKerbrute
    在密码喷洒模式下,可以使用明文密码或密码Hash。密码喷洒命令如下:
    python2 ADPwdSpray.py <域控IP> <域名> <用户名字典> clearpassword <明文密码> tcp/udp
    python2 ADPwdSpray.py <域控IP> <域名> <用户名字典> ntlmhash <ntlmhash> tcp/udp
    

4、域内密码喷洒攻击防御

由于域内密码喷洒是通过发送大量的AS REQ包,根据返回包的内容判断密码是否正确,因此可通过以下方法进行检测。

  • 流量层面:可通过检测同一 IP 在短时间内是否发送了大量的AS-REQ包来判断。如果同一IP在短时间内发送大量的AS-REQ包(如1min内大于30个 AS-REQ 包),则可判断为异常。
  • 日志层面:当口令爆破成功时,会产生事件ID为4768且结果代码为0x0的审核成功的Kerberos身份验证服务事件日志。而当口令爆破失败时,默认情况下并不记录任何日志,因此日志层面不太好检测。

正常域用户登录主机,我们可以通过 net user /domain来列举出域内的用户。但是当我们用非域用户进行登录时,是不能使用 net user /domain这条命令的。如果当主机不在域内但是能与域控通信时,这种情况我们可以通过域内用户枚举的方式对进行用户枚举。然后利用枚举获取的域用户进行密码喷洒。

参考文档:
《域渗透攻防指南》(谢兆国 张秋圆)

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

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

相关文章

交易中的特殊存在

在交易的广袤天空中&#xff0c;有一群特殊的存在——他们&#xff0c;是Eagle Trader。 他们以鹰眼般的洞察力&#xff0c;捕捉市场的微妙变化&#xff0c;每一次决策都如同猎食者般精准&#xff1b;他们运用策略&#xff0c;如同雄鹰在风中翱翔&#xff0c;利用风向&#xf…

索尼MXF文件断电变2G恢复方法(PXW-Z280V)

PXM-Z280V算是索尼比较经典的机型&#xff0c;也是使用MXF文件格式的机型之一。近期接到很多例索尼MXF量突然不正常的案例&#xff08;如变成512字节或者2G&#xff09;&#xff0c;下面来看下这个案例。 故障存储: 128G存储卡 /文件系统&#xff1a;exFAT 故障现象: 客户反…

兴业严选|朝阳、大兴、丰台、等5.9折起总有一套适合你~

近日于上海&#xff0c;出现了一桩令人始料未及之事。一套地处浦东、面积达 245.7 平方米的住宅进行挂网拍卖。 出乎意料的是&#xff0c;此套房子受到众多买家的青睐&#xff0c;历经一番激烈的竞价竞争&#xff0c;最终以 1766 万元的价格成交&#xff0c;折合每平方米 7187…

通俗范畴论3 从特指对象到对象

同一性问题 如前所述&#xff0c;特指对象有个名字&#xff0c;并用一个点表示&#xff08;相当于另一个名字&#xff09;&#xff0c;它可以作为箭头的起点或终点&#xff0c;箭头的多少&#xff0c;以及箭头的起点和终点根据表达的需要而定&#xff0c;没有特别的约定。因此…

玄机平台流量特征分析-蚁剑流量分析

前言 蚁剑的流量特征 (1)每个请求体都存在ini_set(“display_errors”, “0”);set_time_limit(0)开头。并且后面存在base64等字符 (2)响应包的结果返回格式为&#xff1a; 随机数 响应内容 随机数 看一下题目要求 步骤1.1 这里要求我们找到木马的连接密码&#xff0c;…

智能猫砂盆效果这么惊艳吗?绝对不踩雷的智能猫砂盆合集来啦

身为一个铲屎官&#xff0c;我深受“天天铲屎”的困扰。想要片刻放松都不行&#xff0c;因为猫砂盆一旦堆积屎尿&#xff0c;尤其在夏天&#xff0c;会迅速发臭&#xff0c;滋生细菌。对猫而言&#xff0c;不清理猫砂盆会让它们感到不适&#xff0c;可能引发疾病或拒绝使用猫砂…

如何在Ubuntu上安装WordPress

如何在Ubuntu上安装WordPress 执行系统更新 apt update && apt upgrade第一步 安装 Apache apt install apache2确认 Apache 安装是否成功. systemctl status apache2安装成功后 打开浏览器输入 http://server-ip-address 第二步 安装 MySQL apt install mariad…

解决uniapp h5 本地代理实现跨域访问及如何配置开发环境

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 如何解决uniapp H5本地代理实现跨域访问&#xff1f; 1.第一种解决方法&#xff1a; 直接创建一个vue.config.js文件&#xff0c;并在里面配置devServer&#xff0c;直接上…

YOLOv10改进 | 注意力篇 | YOLOv10引入MLCA

1. MLCA介绍 1.1 摘要:注意力机制是计算机视觉中使用最广泛的组件之一,可以帮助神经网络强调重要元素并抑制不相关的元素。然而,绝大多数信道注意力机制只包含信道特征信息,忽略了空间特征信息,导致模型表示效果或目标检测性能较差,且空间注意力模块往往复杂且成本高昂。…

3. zabbix触发器、报警

zabbix触发器、报警 一、zabbix触发器1、触发器语法 二、配置邮件报警1、创建报警媒介2、指定收件人3、创建报警动作4、测试报警 一、zabbix触发器 针对某一个监控项创建 作用&#xff1a;基于某个条件&#xff0c;触发监控项状态的变化&#xff0c;正常–>问题&#xff0c…

NXP i.MX8系列平台开发讲解 - 3.15 Linux 之USB子系统(一)

专栏文章目录传送门&#xff1a;返回专栏目录 Hi, 我是你们的老朋友&#xff0c;主要专注于嵌入式软件开发&#xff0c;有兴趣不要忘记点击关注【码思途远】 目录 Linux 之USB子系统(一) 1. USB基础简介 1.1 USB的传输模式 1.2 USB 的设备描述符 1.3 USB 类的定义分类 2…

强化安全新篇章:韶关石油化工可燃气体报警器年检解析

韶关&#xff0c;这座位于广东省北部的城市&#xff0c;近年来在石油化工行业取得了显著的发展。 随着一批批大型石化企业的进驻和投产&#xff0c;韶关不仅成为了区域性的石化产业基地&#xff0c;也为地方经济带来了强劲的增长动力。 然而&#xff0c;随着石化产业的快速发…

Facebook与地方文化:数字平台的多元表达

在当今数字化时代&#xff0c;社交媒体不仅仅是人们交流的工具&#xff0c;更是促进地方文化传播和表达的重要平台。作为全球最大的社交网络之一&#xff0c;Facebook在连接世界各地用户的同时&#xff0c;也成为了地方文化多元表达的重要舞台。本文将深入探讨Facebook如何通过…

Python 修炼|人人编程手册|001 计算思维

在微信中阅读,关注公众号:CodeFit。 > 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注,为我的 持续创作 提供 动力! 1. 计算思维 在我们正式开启 Python 修炼之旅前,先来了解一个关键的概念 —— 计算思维。 计算思维,其核心本质在于 抽象 …

顶顶通呼叫中心中间件-替换授权文件使授权文件生效指南

一、登录my.ddrj.com下载授权文件 登录地址&#xff1a;用户-顶顶通授权管理系统 登录之后正式授权然后点击查看把license.json下载下来&#xff0c;然后替换到fs的授权文件路径&#xff0c;默认路径是&#xff1a;/ddt/fs/conf 如果安装路径不一样就需要自己去看看授权文件存…

中石化加油卡有什么用?

对于有车一族来说&#xff0c;有一张加油卡真的可以省下不少钱 但是像我们这种没车的人&#xff0c;即使得到加油卡也毫无用武之地 久而久之&#xff0c;难免会造成卡过期的情况出现 还好&#xff0c;前两天把我手上堆积了好久的加油卡在收卡云上卖出去了&#xff0c;99折真…

nodejs从基础到实战学习笔记-模块化、包

二、模块化 2.1 什么是模块化 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 2.1.1 把代码进行模块化拆分的好处 提高了代码的复用性提高了代码的可维护性可以实现按需…

Docker 镜像库国内加速的几种方法

在国内&#xff0c;拉取 Docker 镜像速度慢 / 时不时断线 / 无账号导致限流等&#xff0c;比较痛苦。 这里提供几个当前可用的镜像仓库&#xff0c;更新到/etc/docker/daemon.json即可。 更新完记得运行&#xff1a; sudo systemctl daemon-reload sudo systemctl restart …

百元价位真无线蓝牙耳机怎么选?四款宝藏平价机型盘点

在繁忙的现代生活中&#xff0c;真无线蓝牙耳机凭借其便携性、无线连接以及出色的音质&#xff0c;已经成为了许多人的必备配件&#xff0c;面对市场上琳琅满目的产品&#xff0c;如何在百元价位内挑选出一款性价比高、性能出色的真无线蓝牙耳机&#xff0c;确实是一个值得深思…

马斯克的Grok-1:开源AI模型的突破与挑战

在人工智能&#xff08;AI&#xff09;飞速发展的当下&#xff0c;xAI公司推出的最新作品Grok-1&#xff0c;不仅标志着技术的一大突破&#xff0c;也预示着AI领域的一次重大里程碑。这个经过四个月辛勤开发的模型&#xff0c;拥有高达3140亿参数的专家混合体系结构&#xff0c…