通过Azure AD Powershell查询Azure AD 用户信息
1. 查看当前Azure AD存在的用户
当我们在获取了Azure AD登录管理凭据后,可以使用"Get-AzureADUser -All $true"命令在Azure AD PowerShell中查看所有用户的详细信息。其中该命令"-All $true"参数可用于绕过默认的返回数量限制,返回当前Azure AD租户中所有存在的用户完整列表,如图1-1所示。
图1-1 通过命令查看当前Azure AD存在的用户
我们可以在上述命令返回结果中看到其输出了若干个用户的"ObjectId"、"DisplayName"、"UserPrincipalName"和"UserType"字段信息内容,在Azure AD中,这四个字段信息含义如下所示:
ObjectId:是一个唯一标识符,为Azure AD中的每个对象自动生成,用于区分不同的用户或资源。
DisplayName:用户的显示名称,通常是我们可以识别的名字,如本案例中的"admin"、"DangJason"等,
UserPrincipalName:又简单称为"UPN",其是用户的主要登录名,UPN的格式通常类似于电子邮件地址,如"jasonDang@adtest.example.com"。
UserType:通常是指用户的类型,在Azure AD中用户类型通常分为两种类型,一种类型通常是"Member"(组织内的正式员工)另一种类型是"Guest"(外部用户或来宾)。
2.查看当前Azure AD中所有用户名和用户类型
若想快速获取当前Azure AD中所有用户的主要用户名和用户类型,去更近一步的区分常规用户和来宾用户,方便下一步的账户配置不当及未授权的访问利用,我们可以在Azure AD PowerShell中执行"Get-AzureADUser -all $true | Select-Object UserPrincipalName, Usertype"命令来检索当前Azure AD中所有用户的UserPrincipalName(用户名)和Usertype(用户类型)属性。如图1-2所示,通过这条命令,我们可以快速获取一个包含用户主要名称和用户类型(如成员或来宾)的列表。
图1-2
3.查看定位具有管理员权限或相关命名的用户对象
若我们要在Azure AD 中快速检索定位具有管理员权限或相关命名的用户对象,可以通过在Azure AD PowerShell中执行"Get-AzureADUser -All $true |?{$_.Displayname -match "admin"}"命令来快速检索定位用户对象,在本例中,该命令中的"|?{$_.Displayname -match "admin"}"管道部分定义了筛选检索到的用户对象,仅包含 DisplayName 属性包含 "admin" 一词的用户(不区分大小写),在实际Azure AD攻防中,我们可根据具体的场景来使用"|?{$_.Displayname -match "xxx"}"管道部分来动态定义筛选DisplayName 属性包含要检索的用户对象名称,执行结果如图1-3所示。
图1-3
如果通过使用"Get-AzureADUser -All $true |?{$_.Displayname -match "xxx"}"命令筛选不出来要检索的用户对象名称,我们可以通过Get-AzureADUser -SearchString "xxx"命令来进行泛匹配,其中"xxx"要替换为要枚举的用户名称,在本例中枚举的是"admin"和"JasonDang"这两个用户,详情如图1-4所示,Get-AzureADUser -SearchString "xxx"命令可以搜索匹配用户的多种属性,如显示名称、用户主要名称等,这也是我们在对Azure AD攻防时,一种快速找出当前Azure AD中可能具有管理权限或与管理相关命名约定的用户账户的有效方法。
图1-4
4.通过ObjectId查看特定的租户信息
如在对Azure AD攻防期间,我们通过其他信息收集的方式获得了"ObjectId唯一标识符"信息,可在Azure AD PowerShell中执行"Get-AzureADUser -ObjectId <ID>"命令来枚举特定的用户,其中该命令中的<ID>参数选项在实际利用中,要去填写我们之前获取到"ObjectId唯一标识符",如图1-5所示
图1-5
5.查看Azure AD租户对象的所有属性信息
若要列出某一个Azure AD用户对象的所有属性信息(包括许可证分配、组成员身份、账户状态等详细信息),我们可以执行"Get-AzureADUser -ObjectId JasonDang@adtest.onmicrosoft.cn | fl "命令在Azure AD PowerShell中获取与该用户相关联的所有属性和值。如图1-5所示,需要读者注意的是,这里的 -ObjectId 参数选项用于指定要查询的用户对象,在本案例中,笔者用了"JasonDang@adtest.onmicrosoft.cn"这个用户,读者在实际操作过程中,需要以自身实际情况而定,而"fl "命令参数选项(即 Format-List *)表示列出该用户的所有属性信息,所列出的用户具体属性信息字段内容含义如表1-1所示。
表1-1 AzureAD用户具体属性信息字段内容含义
于此同时,我们通过执行"Get-AzureADUser -ObjectId JasonDang@adtest.onmicrosoft.cn| %{$_.PSObject.Properties.Name}"也能获取指定ObjectId的Azure AD用户的所有属性名称。该命令中的"%{}"是代表"ForEach-Object "的别名,其对每个属性执行脚本块内的操作。而$_.PSObject.Properties.Name 则代表获取当前对象中每个属性的名称。如图1-6所示,我们可以看到此命令的输出结果只输出了一个不包含属性值的属性名称列表。