#Drilldown into Service Principals
Get-ADIntServicePrincipals > doc.txt
Get-ADIntServicePrincipals -ClientIDs <AppPrincipalID>
Conditional Access Policies
Conditional Access Policies are stored and displayed as JSON.
#Display info for Conditional Access Policies
Get-ADIntConditionalAccessPolicies
MFASweep/Conditional Access Policies
Uses APIs to see if a user can authenticate or is blocked by Access Policies.
#Check to see if user can login to any resource or is blocked
Import-Module .\MFASweep.ps1
Invoke-MFASweep -Username USERNAME@DOMAIN.onmicrosoft.com -Password 'PASSWORD'
##Each individual module can be run separately if needed as well.##
#Microsoft Graph API
Invoke-GraphAPIAuth -Username targetuser@targetdomain.com -Password Winter2020
#Azure Service Management API
Invoke-AzureManagementAPIAuth -Username targetuser@targetdomain.com -Password Winter2020
#Microsoft 365 Exchange Web Services
Invoke-EWSAuth -Username targetuser@targetdomain.com -Password Winter2020
#Microsoft 365 Web Portal
Invoke-O365WebPortalAuth -Username targetuser@targetdomain.com -Password Winter2020
#Microsoft 365 Web Portal w/ Mobile User Agent
Invoke-O365WebPortalAuthMobile -Username targetuser@targetdomain.com -Password Winter2020
#Microsoft 365 Active Sync
Invoke-O365ActiveSyncAuth -Username targetuser@targetdomain.com -Password Winter2020
#ADFS
Invoke-ADFSAuth -Username targetuser@targetdomain.com -Password Winter2020
Unified Audit Log Settings
Important to know what traces your leaving behind for defense evasion.
Obtaining detailed information on a user can help identify their location for Conditional Access Policy bypasses.
#Enumerate all users
Get-ADDIntUsers | Select UserPrincipalName, ObjectID, ImmuatableID
#Drilldown into user
Get-ADDIntUsers -UserPrincipalName USERNAME
Enumerating Administrators
#List Global Admins
Get-AADIntGlocalAdmins
#Recon
$results = Invoke-AADIntReconAsInsider
#Select specific groups from recon output
$results.roleInformation | Where Memebers -ne $null | select Name.Members
Enumerating Sync Account
#Get Sync account
Get-AADIntSyncConfiguration
Detect
API calls are not logged within Azure, so AADInternals will not detected.
Azure Sign-Ins are logged but difficult to baseline.
Application header can be forged, so it is unreliable to baseline.
Below is a list of Application IDs and their name used for sign-ins.