Tool - AADInternal
Azure AD and Microsoft 365 Kill Chain
https://aadinternals.com/aadkillchain/
Image from AADinternals
# Install the module
Install-Module -Name "AADInternals"
# Import the module
Import-Module -Name "AADInternals"
Markdown Table
User Level | Recon Commands | Compromise Commands | Persistence Commands | Actions on Intent Commands |
---|---|---|---|---|
Add Cache | Get-AADIntAccessTokenForAADGraph -SaveToCache |
|||
Outsider | Get-AADIntTenantDomains ,Get-AADIntOpenIDConfiguration , Get-AADIntLoginInformation , Invoke-AADIntReconAsOutsider ,Invoke-AADIntUserEnumerationAsOutsider |
Invoke-AADIntPhishing |
||
Guest | Get-AADIntAzureTenants ,Get-AADIntAzureInformation ,Get-AADIntSPOSiteUsers ,Invoke-AADIntReconAsGuest ,Invoke-AADIntUserEnumerationAsGuest |
New-AADIntBulkPRTToken ,Join-AADIntDeviceToAzureAD , Join-AADIntDeviceToIntune |
||
User | Get-AADIntTenantDetails ,Get-AADIntGlobalAdmins ,Get-AADIntSyncConfiguration ,Get-AADIntCompanyInformation , Invoke-AADIntReconAsInsider , Invoke-AADIntUserEnumerationAsInsider |
New-AADIntSAMLToken , New-AADIntKerberosTicket ,Open-AADIntOffice365Portal |
||
Admin | Get-AADIntAzureSubscriptions |
Grant-AADIntAzureUserAccessAdminRole , Set-AADIntAzureRoleAssignment , Invoke-AADIntAzureVMScript , Register-AADIntPTAAgent , Set-UserMFA ,Set-UserMFAApps |
ConvertTo-AADIntBackdoor ,Set-AADIntPassThroughAuthentication |
New-AADIntSAMLToken , New-AADIntKerberosTicket , Open-AADIntOffice365Portal |
On-prem Admin | Export-AADIntADFSSigningCertificate , Get-AADIntSyncCredentials , Set-AADIntUserPassword , Install-AADIntPTASpy |
New-AADIntSAMLToken , New-AADIntKerberosTicket , Open-AADIntOffice365Portal |
Mermaid
Here are the full diagrams including all commands per user level:
1. Outsider
graph TD Recon --> Compromise --> Persistence --> ActionsOnIntent Recon["Recon: - Get-AADIntTenantDomains - Get-AADIntOpenIDConfiguration - Get-AADIntLoginInformation - Invoke-AADIntReconAsOutsider - Invoke-AADIntUserEnumerationAsOutsider"] Compromise["Compromise: - Invoke-AADIntPhishing"] Persistence["Persistence: None"] ActionsOnIntent["Actions on Intent: None"]
2. Guest
graph TD Recon --> Compromise --> Persistence --> ActionsOnIntent Recon["Recon: - Get-AADIntAzureTenants - Get-AADIntAzureInformation - Get-AADIntSPOServiceInformation - Get-AADIntSPOServiceInformation - Invoke-AADIntReconAsGuest - Invoke-AADIntUserEnumerationAsGuest"] Compromise["Compromise: None"] Persistence["Persistence: None"] ActionsOnIntent["Actions on Intent: - New-AADIntBulkPRTToken - Join-AADIntDeviceToAzureAD - Join-AADIntDeviceToIntune"]
3. User
graph TD Recon --> Compromise --> Persistence --> ActionsOnIntent Recon["Recon: - Get-AADIntTenantDetails - Get-AADIntGlobalAdmins - Get-AADIntSyncConfiguration - Get-AADIntCompanyInformation - Get-AADIntSPOServiceInformation - Invoke-AADIntReconAsInsider - Invoke-AADIntUserEnumerationAsInsider"] Compromise["Compromise: None"] Persistence["Persistence: None"] ActionsOnIntent["Actions on Intent: - New-AADIntBulkPRTToken - New-AADIntSAMLToken - Join-AADIntDeviceToAzureAD - New-AADIntKerberosTicket"]
4. Admin
graph TD Recon --> Compromise --> Persistence --> ActionsOnIntent Recon["Recon: - Get-AADIntAzureSubscriptions"] Compromise["Compromise: - Grant-AADIntAzureUserAccessAdminRole - Set-AADIntAzureRoleAssignment - Invoke-AADIntAzureVMScript - Register-AADIntPTAAgent - Set-UserMFA - Set-UserMFAApps"] Persistence["Persistence: - ConvertTo-AADIntBackdoor - Set-AADIntPassThroughAuthentication"] ActionsOnIntent["Actions on Intent: - New-AADIntSAMLToken - New-AADIntKerberosTicket - Open-AADIntOffice365Portal"]
5. On-prem Admin
graph TD Recon --> Compromise --> Persistence --> ActionsOnIntent Recon["Recon: - Export-AADIntADFSSigningCertificate - Get-AADIntSyncCredentials"] Compromise["Compromise: - Set-AADIntUserPassword - Install-AADIntPTASpy"] Persistence["Persistence: None"] ActionsOnIntent["Actions on Intent: - New-AADIntSAMLToken - New-AADIntKerberosTicket - Open-AADIntOffice365Portal"]