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

一、域内用户枚举

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 故障现象: 客户反…

Android中的多线程与线程池详解

Android中的多线程与线程池详解 一、技术难点 在Android开发中&#xff0c;多线程和线程池是处理复杂任务、提高应用性能和响应性的关键技术。然而&#xff0c;这些技术也带来了一些技术难点。 1. 多线程技术难点 线程同步&#xff1a;多线程环境下&#xff0c;数据访问的同…

vue3兄弟组件通信之第三方库/插件-mitt工具

简介&#xff1a;官方已经移除了eventBus作为兄弟组件通信的方案&#xff0c;推荐使用第三方库mitt工具 一&#xff0c;安装mitt npm install --save mitt二&#xff0c;按需引入 在src目录下&#xff0c;新建utils文件夹&#xff0c;在其新建bus.js或bus.ts文件 // bus.js文…

Centos MySQL 源码安装(5.6)

mysql-boost-8.0.31.tar.gz 源码下载 下载地址:https://dev.mysql.com 源码安装要求 cmake、Boost C++库、ncurses库、OpenSSL库 //需要cmake3,gcc-5.3以上 源码搭建 mysql 环境 编辑scl.repo文件 cd /etc/yum.repos.d vi scl.repo //scl.repo文件内容如下:[scl] n…

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

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

AVL许可证更新

随着科技的飞速发展&#xff0c;软件已成为企业运营不可或缺的部分。然而&#xff0c;软件许可证的更新和管理成为了企业面临的重要挑战。AVL许可证更新作为企业软件管理的关键环节&#xff0c;正逐渐受到企业的关注。本文将深入探讨AVL许可证更新的重要性、最佳实践以及如何实…

通俗范畴论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…

误解与真相:为什么很多人认为前端开发“简单”?

在技术圈内&#xff0c;前端开发时常被一些非专业人士或初学者贴上“简单”的标签。这一看法虽然在一定程度上反映了前端技术入门门槛相对较低的事实&#xff0c;但同时也极大地低估了现代前端开发的深度与广度。本文将探讨这一观点背后的原因&#xff0c;并揭示前端开发的真实…

解决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…

multiple object tracking

最近正在work on 一些运动的项目&#xff0c;自己比较心仪和好奇这篇论文&#xff0c;希望有些技术能够借鉴到实际运用里 亮点 它所用的内容都是平易近人的&#xff0c;和日常套路一样&#xff0c;都是先检测再跟踪。 里面专门为体育项目考虑了。特别和之前的数据集相比&…

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

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

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

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

oracle 等待事件

1.db file scattered read 含义&#xff1a;当一个SQL语句需要从数据文件中读取多块非连续的数据块时&#xff0c;就会发生db file scattered read等待事件。这意味着数据分散在不同的位置&#xff0c;数据库需要进行多次I/O操作来收集所需的信息。场景&#xff1a;这种事件常…