当普通的计算机加入域中时,使用ADExplorer查看该计算机的属性:

可以看到属性中包含了该计算机的名字($结尾),创建者的sid,最后密码设置时间,说明在计算机加入域的过程中,windows域为其创建了密码,用于建立与域控之间的安全通道。

如果我们拿到一台域内计算机,并没有域账号登录,此时可以切换到system权限,klist

可以看到已经有票证在里边,这里其实就是利用的计算机对象的票证,我们可以利用该票证查看域内的管理员,域控,域用户等等信息。

如何查看计算机对象的密码呢,可以借助mimikatz,有两种查看方式:

privilege::debug

sekurlsa::logonPasswords

或者

privilege::debug

token::elevate

lsadump::secrets

可以看到计算机对象的密码是120个字符,240字节,有时候密码包含不可见字符,会以十六进制形式显示,类似于如下所示:

有时候虚拟机中的计算机切换到以前快照,由于当前计算机密码和域控中保存的密码不一致导致建立安全通道失败

解决的方法大致分为以下几种:

  1. 重新加入域
  2. 修改及计算机对象密码,使计算机对象密码与域控中保存的密码相同。

第一种方法可能导致计算机中数据丢失,下边介绍第二种方法,修改计算机对象的密码。

官方提供修改计算机对象密码的工具有两种:

reset-ComputerMachinePassword

nltest /sc_change_pwd:galaxy.local

以上两种工具只能在已建立安全通道的情况下修改密码且只能修改随机密码,密码用户不能指定。

分析nltest,发现最后调用了netlogon服务,具体地,就是调用了c:windowssystem32netlogon.dll的NlChangePassword函数。

通过调用函数NlGenerateRandomBits产生随机密码,因为netlogon服务在lsass进程中,我们使用windbg进行双机调试,在RtlUnicodeString上下断点,修改SourceString内存值为我们想要的密码,比如这里为120个a:

成功修改客户机与域控中计算机对象密码为120个a。

下边介绍计算机对象在域渗透中的应用:

  1. 维持权限,隐藏后门

默认情况下,计算机对象的密码每30天修改一次,但这是客户端自己设置的,并不受域控影响,我们可以设置计算机对象一直不修改密码

修改DisablePasswordChange为1可以禁止计算机自己修改密码,修改MaximumPasswordAge可以更改默认更新密码的间隔。

这样下次我们想登陆进来的时候可以直接用计算机对象的密码创建白银票据登陆系统:

  1. 提权到域控

如果计算机对象在一些高权限的组,那么就可以获取该组的权限。

比如如下计算机test1在域管理员

那么我们就可以hash传递,使用test1的身份获取访问域控的权限。

这个常用在对邮箱服务器的攻击上,因为邮箱服务器默认属于Exchange Trusted Subsystem组,对整个域具有写DACL的权限,默认可以拿到域控的权限。

  1. 利用计算机创建者身份

使用普通域用户test将test1计算机加入域,查看test1的属性,mS-DS-CreatorSID可以看到创建者的sid:

查看test1计算机的DACL:

可以看到多了重置密码的权限(更改密码需要原来的密码才能更改,比较鸡肋,重置密码可以在不知道原来密码的情况下重置密码)。如果我们拿到了test用户的权限,就可以使用重置密码的权限重置test1计算机的密码,如果test1在高权限的组中,可以完全获得该组的权限(见情况2)

注意:此处重置的是域控中的计算机对象的密码,并没有重置客户端密码,这会导致信任关系失败。

使用以下命令可以重置计算机对象的密码为特定值:

Set-ADAccountPassword test1$ –NewPassword (ConvertTo-SecureString -AsPlainText –String "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -force)

  1. 打印机漏洞

微软的spoolsv.exe注册了一个服务和若干个rpc。允许认证用户远程调用,其中RemoteFindFirstPrinterChangeNotificationEx这个函数运行传进一个unc路径,打印机服务就会去请求该unc路径。由于打印机是以system权限运行的(打印机spooler服务运行在system权限下),所以我们访问打印机rpc,迫使打印机服务向我们发起请求拿到的net-ntlm hash是机器用户hash。这样我们就拿到了使任意计算机(域控、邮件服务器对象)向任意机器发起SMB认证的权限。如果我们控制了一台无约束委派的计算机,就可以实现完全控制整个域的目的。

  1. CVE-2018-8581

这个漏洞最终可以实现邮箱服务器对象向任意用户发起基于HTTP的NTLM认证,由于HTTP到LDAP可以实现中间人攻击,我们可以中继到域控,利用邮箱服务器的writeDACL特性,可以同步域内用户hash。

参考资料:

https://adsecurity.org/?p=2753

https://adsecurity.org/?p=280

https://adsecurity.org/?p=2011

https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/pass-the-hash-with-machine-accounts

https://blog.netspi.com/machineaccountquota-is-useful-sometimes/

bat 域 本机管理员密码_Windows域中特殊的用户-计算机对象攻防相关推荐

  1. bat 域 本机管理员密码_域渗透——Local Administrator Password Solution

    0x00 前言 在域渗透中,有关域内主机的本地管理员的安全介绍还很少,对于LAPS大都比较陌生,所以这次就和我一起学习一下吧. 0x01 简介 在实际的域环境中,域内主机的本地管理员账户往往被忽视,再 ...

  2. 脚本修改域内本地管理员密码

    一台一台的修改域内计算机本地管理员密码不太现实,在没有Configuration manager这些工具的情况下,使用脚本来修改本地密码也颇为方便: 'Script for change the lo ...

  3. 域内计算机本地管理员密码管理

    随着互联网技术的不断发现,信息安全在企业中的受重视度也越来越高,终端管理是信息安全中至关重要的一环,不可能要求终端用户和服务器管理员有着一样的安全隐患意识和技术水平,因此在终端管理员层如何制定完善终端 ...

  4. 重置被遗忘的域控制器(DC)管理员密码

    安装好AD的DC后,经常由于域中的管理员帐户的密码过于复杂而忘记,迫使管理员重新创建AD,从而耽误工作. 现在向大家介绍一个好工具,以后域控的管理员密码即使忘掉了也不用重新搭建AD了,是作为系统管理员 ...

  5. aspnet管理员用户登录_WINDOWS/LINUX系统修改管理员密码方法

    首先要登录到服务器 1.Windows系统修改管理员密码方法: 命令方式修改:开始->运行或WIN+R键,输入CMD,打开命令行输入net user administrator(如有更改请输入更 ...

  6. linux 修改密码和端口号_WINDOWS/LINUX系统修改管理员密码方法

    首先要登录到服务器 1.Windows系统修改管理员密码方法: 命令方式修改:开始->运行或WIN+R键,输入CMD,打开命令行输入net user administrator(如有更改请输入更 ...

  7. 本地管理员密码解决方案 Local Admin Password Solution (LAPS)

    据调查,大多数的企业在部署AD域后,针对客户端电脑的本机管理员采用以下几种方式管理方式: 1. 禁用本机管理员,只使用域账登录:但存在的问题是:当电脑因故障脱离域,或是无法使用域账号登录时,电脑就无法 ...

  8. LAPS本地管理员密码之使用PowerShell查看和重置密码

    目录 目录 一.PowerShell策略设置 二.引入AdmPwd.PS模块 三.查看指定电脑管理员密码 四.强制重置指定电脑管理员密码 文章说明 文章主要介绍在部署了LAPS后,怎么使用PowerS ...

  9. 京瓷打印机1025默认管理员密码_FW316R默认管理员密码

    1 FW316R 默认管理员密码 刚买的 FW316R ,想要配置了,可是默认管理员密码是什么呢 ? 下面是 整理的关于 FW316R 默认管理员密码的相关资料. FW316R 默认管理员密码: 一. ...

最新文章

  1. cmake语法【一】
  2. gets会读取回车键吗_Linux Shell 读取从键盘输入的数据
  3. Servlet--02--xml文件配置
  4. Python 列表(List)操作方法详解
  5. linux代码环境配置,linux下配置环境变量【原创】(示例代码)
  6. gan简介_GAN简介
  7. POJ 1007 DNA排序解题
  8. 0x02是什么意思_学习STM32时为什么要学习汇编?
  9. ActivityManager kill reason
  10. React 第十二章 React思想
  11. matlab fdtd,fdtd(fdtd中文教程)
  12. GSAP JS基础教程--动画的控制及事件
  13. 记录——《C Primer Plus (第五版)》第八章编程练习第二题
  14. android之去掉actionbar
  15. 329.矩阵中的最长递增路径
  16. 夯实Java基础系列8:深入理解Java内部类及其实现原理
  17. Android 实现短信接收监听--(短信动态权限添加)
  18. 口袋里只有一百块钱,也要活出十个亿的气势
  19. 人工智能python+dlib+opencv技术10分钟实现抖音人脸变狗头详细图文教程和完整项目代码
  20. 项目经理多为技术出身之怪相

热门文章

  1. 多线程读取矩阵文件+多线程矩阵乘法(C++实现)
  2. 长度限制的队列Python
  3. android网页无法定位吗,在android中,js 无法定位 html页面的某元素
  4. 手工雕刻图纸_龙门整体铝板雕刻弧形楼梯护栏实力商家
  5. 最近使用SIFT匹配,尝试了一下从大图片中提取小图片的方法,不怎么好使
  6. jmeter中重要组件及其执行顺序
  7. mysqli存储过程
  8. 引用用户控件图片无法
  9. Linux 组调度学习
  10. VC++保存绘制的图形-1