Az - Unauthenticated Enum & Initial Entry

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

HackTricks'i desteklemenin diğer yolları:

Azure Kiracı

Kiracı Numaralandırma

Sadece kiracının alan adını bilen bir saldırganın daha fazla bilgi toplamak için sorgulayabileceği bazı genel Azure API'leri bulunmaktadır. API'yi doğrudan sorgulayabilir veya PowerShell kütüphanesi AADInternals kullanabilirsiniz:

APIBilgiAADInternals işlevi

login.microsoftonline.com/<domain>/.well-known/openid-configuration

Kiracı kimlik bilgileri dahil olmak üzere Giriş bilgileri

Get-AADIntTenantID -Domain <domain>

autodiscover-s.outlook.com/autodiscover/autodiscover.svc

Kiracının tüm alan adları

Get-AADIntTenantDomains -Domain <domain>

login.microsoftonline.com/GetUserRealm.srf?login=<UserName>

Kiracının Giriş bilgileri, kiracı Adı ve alan adı dahil olmak üzere giriş kimlik bilgileri Eğer NameSpaceType Managed ise, bu AzureAD'nin kullanıldığı anlamına gelir.

Get-AADIntLoginInformation -UserName <UserName>

login.microsoftonline.com/common/GetCredentialType

Masaüstü SSO bilgileri dahil olmak üzere Giriş bilgileri

Get-AADIntLoginInformation -UserName <UserName>

Azure kiracısının tüm bilgilerini AADInternals kütüphanesinin sadece bir komutu ile sorgulayabilirsiniz:

Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table

Azure kiracı bilgilerinin çıktı örneği:

Tenant brand:       Company Ltd
Tenant name:        company
Tenant id:          1937e3ab-38de-a735-a830-3075ea7e5b39
DesktopSSO enabled: True

Name                           DNS   MX    SPF  Type      STS
----                           ---   --    ---  ----      ---
company.com                   True  True  True  Federated sts.company.com
company.mail.onmicrosoft.com  True  True  True  Managed
company.onmicrosoft.com       True  True  True  Managed
int.company.com              False False False  Managed

Tenant'ın adı, kimliği ve "marka" adı hakkında ayrıntıları gözlemlemek mümkündür. Ayrıca, Masaüstü Tek Oturum Açma (SSO) durumu, aynı zamanda Seamless SSO olarak bilinir, görüntülenir. Bu özellik etkinleştirildiğinde, bu özelliğin hedef organizasyondaki belirli bir kullanıcının varlığının belirlenmesini (enumarasyon) kolaylaştırır.

Ayrıca, çıktı hedef kiracıyla ilişkilendirilmiş tüm doğrulanmış alanların adlarını ve bunların ilgili kimlik türlerini sunar. Federasyonlu alanlar durumunda, genellikle kullanılan kimlik sağlayıcının Tam Nitelikli Alan Adı (FQDN) bilgisi, tipik olarak bir ADFS sunucusu, ayrıca açıklanır. "MX" sütunu e-postaların Exchange Online'a yönlendirilip yönlendirilmediğini belirtirken, "SPF" sütunu Exchange Online'ı bir e-posta gönderici olarak listeler. Mevcut keşif işlevinin SPF kayıtlarındaki "include" ifadelerini ayrıştırmadığı, bu durumun yanlış negatiflere neden olabileceği önemlidir.

Kullanıcı Enumarasyonu

Tenant içinde bir kullanıcı adının var olup olmadığını kontrol etmek mümkündür. Bu aynı zamanda konuk kullanıcıları da içerir, bunların kullanıcı adı şu formatta olabilir:

<email>#EXT#@<tenant name>.onmicrosoft.com

E-posta, kullanıcının e-posta adresidir ve "@" işareti alt tire ile "_" ile değiştirilmiştir.

AADInternals ile kullanıcının var olup olmadığını kolayca kontrol edebilirsiniz:

# Check does the user exist
Invoke-AADIntUserEnumerationAsOutsider -UserName "user@company.com"

Kimlik Doğrulamasız Bilgi Toplama ve İlk Giriş

Bu bölümde, Azure bulut platformunda kimlik doğrulamasız bilgi toplama ve ilk giriş adımlarını ele alacağız.

Bilgi Toplama

  1. Azure Portal URL'sini Belirleme: Azure portal URL'sini belirleyerek hedef bulut ortamına erişim sağlayabiliriz.

  2. Hedefin IP Aralığını Belirleme: Hedefin IP aralığını belirleyerek hedefin ağ yapılandırmasını anlayabiliriz.

  3. Blob Depolama Hizmeti Taraması: Blob depolama hizmetlerini taramak için otomatize araçlar kullanabiliriz.

İlk Giriş

  1. Blob Depolama Hizmetine Erişim: Blob depolama hizmetine kimlik doğrulamasız erişim sağlayarak veri çalma veya değiştirme olasılığını değerlendirebiliriz.

  2. Azure Functions Kullanımı: Azure Functions gibi hizmetler aracılığıyla kimlik doğrulamasız kod yürüterek sisteme giriş yapabiliriz.

  3. Azure Container Instances Kullanımı: Azure Container Instances üzerinde kimlik doğrulamasız konteyner çalıştırarak sisteme sızma olasılığını değerlendirebiliriz.

UserName         Exists
--------         ------
user@company.com True

Ayrıca, her satırda bir e-posta adresi içeren bir metin dosyası da kullanabilirsiniz:

user@company.com
user2@company.com
admin@company.com
admin2@company.com
external.user_gmail.com#EXT#@company.onmicrosoft.com
external.user_outlook.com#EXT#@company.onmicrosoft.com
# Invoke user enumeration
Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider -Method Normal

Üç farklı numaralandırma yöntemi arasından seçim yapabilirsiniz:

YöntemAçıklama

Normal

Yukarıda bahsedilen GetCredentialType API'sine atıfta bulunur. Varsayılan yöntem.

Giriş

Bu yöntem, kullanıcı olarak oturum açmaya çalışır. Not: sorgular oturum açma kaydına kaydedilecektir.

Otomatik Giriş

Bu yöntem, kullanıcı olarak otomatik giriş uç noktası aracılığıyla oturum açmaya çalışır. Sorgular oturum açma kaydına kaydedilmez! Bu nedenle, parola püskürtme ve kaba kuvvet saldırıları için de iyi çalışır.

Geçerli kullanıcı adlarını keşfettikten sonra bir kullanıcı hakkında bilgi alabilirsiniz:

Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com

Betik o365creeper ayrıca bir e-postanın geçerli olup olmadığını keşfetmenize olanak tanır.

# Put in emails.txt emails such as:
# - root@corp.onmicrosoft.com
python.exe .\o365creeper\o365creeper.py -f .\emails.txt -o validemails.txt

Microsoft Teams Üzerinden Kullanıcı Numaralandırma

Bilgi için başka bir iyi kaynak Microsoft Teams'tir.

Microsoft Teams'in API'si kullanıcılara yönelik arama yapmaya izin verir. Özellikle "kullanıcı arama" uç noktaları externalsearchv3 ve searchUsers Teams'e kayıtlı kullanıcı hesapları hakkında genel bilgi talep etmek için kullanılabilir.

API yanıtına bağlı olarak, mevcut olmayan kullanıcılar ile geçerli bir Teams aboneliği olan mevcut kullanıcılar arasında ayrım yapmak mümkündür.

TeamsEnum betiği, belirli bir kullanıcı adı setini Teams API'sine karşı doğrulamak için kullanılabilir.

python3 TeamsEnum.py -a password -u <username> -f inputlist.txt -o teamsenum-output.json

Kimlik Doğrulamasız Enum ve Başlangıç Girişi

Bu senaryoda, hedef Azure hedefinin kimlik doğrulamasız bir şekilde nasıl keşfedileceğini ve erişilebileceğini göstereceğiz.

Adım 1: Enumerasyon

Hedef Azure hedefini hedeflemek için, öncelikle hedefin IP adresini veya alan adını belirleyin. Ardından, aşağıdaki adımları izleyerek hedefteki kaynakları keşfedin:

  1. Azure Portalı'na gidin ve hedef Azure hedefinin URL'sini ziyaret edin.

  2. Kaynakları ve hizmetleri inceleyin, erişilebilir olanları belirleyin.

Adım 2: Başlangıç Girişi

Kimlik doğrulamasız bir şekilde erişilebilen bir kaynak veya hizmet bulduktan sonra, aşağıdaki adımları izleyerek başlangıç girişini gerçekleştirin:

  1. Erişilebilir bir kaynağın veya hizmetin URL'sini belirleyin.

  2. Tarayıcınızı veya bir API istemcisini kullanarak erişim sağlayın.

  3. Veri çalma, değiştirme veya hizmetin işlevselliğini kötüye kullanma gibi saldırı vektörlerini test edin.

Bu adımları takip ederek, Azure hedefinde kimlik doğrulamasız bir şekilde enum yapabilir ve başlangıç girişini gerçekleştirebilirsiniz.

[-] user1@domain - Target user not found. Either the user does not exist, is not Teams-enrolled or is configured to not appear in search results (personal accounts only)
[+] user2@domain - User2 | Company (Away, Mobile)
[+] user3@domain - User3 | Company (Available, Desktop)

Ayrıca, mevcut kullanıcılar hakkında kullanılabilirlik bilgilerini şu şekilde sıralamak mümkündür:

  • Kullanılabilir

  • Uzakta

  • Rahatsız Etmeyin

  • Meşgul

  • Çevrimdışı

Eğer bir dışarıda mesajı yapılandırılmışsa, TeamsEnum kullanılarak mesaj alınabilir. Bir çıkış dosyası belirtildiyse, dışarıda mesajları otomatik olarak JSON dosyasında saklanır:

jq . teamsenum-output.json

Kimlik Doğrulamasız Bilgi Toplama ve İlk Giriş

Bu bölümde, Azure bulut platformunda kimlik doğrulamasız bilgi toplama ve ilk giriş için kullanılabilecek bazı teknikler açıklanmaktadır. Bu teknikler, zayıf yapılandırılmış veya hatalı yapılandırılmış Azure hizmetlerine erişim sağlayabilir ve sızma testi sırasında faydalı olabilir. Bu tekniklerin kullanımı yasa dışı olabilir, bu nedenle yalnızca yasal izinler çerçevesinde ve etik sınırlar içinde kullanılmalıdır.

{
"email": "user2@domain",
"exists": true,
"info": [
{
"tenantId": "[REDACTED]",
"isShortProfile": false,
"accountEnabled": true,
"featureSettings": {
"coExistenceMode": "TeamsOnly"
},
"userPrincipalName": "user2@domain",
"givenName": "user2@domain",
"surname": "",
"email": "user2@domain",
"tenantName": "Company",
"displayName": "User2",
"type": "Federated",
"mri": "8:orgid:[REDACTED]",
"objectId": "[REDACTED]"
}
],
"presence": [
{
"mri": "8:orgid:[REDACTED]",
"presence": {
"sourceNetwork": "Federated",
"calendarData": {
"outOfOfficeNote": {
"message": "Dear sender. I am out of the office until March 23rd with limited access to my email. I will respond after my return.Kind regards, User2",
"publishTime": "2023-03-15T21:44:42.0649385Z",
"expiry": "2023-04-05T14:00:00Z"
},
"isOutOfOffice": true
},
"capabilities": [
"Audio",
"Video"
],
"availability": "Away",
"activity": "Away",
"deviceType": "Mobile"
},
"etagMatch": false,
"etag": "[REDACTED]",
"status": 20000
}
]
}

Azure Hizmetleri

Azure kiracısının kullandığı alan adlarını bildiğimize göre şimdi açığa çıkarılmış Azure hizmetlerini bulmaya çalışma zamanı.

Bu hedefe ulaşmak için MicroBust'tan bir yöntem kullanabilirsiniz. Bu işlev, temel alan adını (ve birkaç türevini) birkaç Azure hizmet alanında arayacaktır:

Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose

Açık Depolama

Açık depolama hesaplarını bulmaya çalışmak için InvokeEnumerateAzureBlobs.ps1 gibi bir araç kullanabilirsiniz. Bu araç, Microburst/Misc/permitations.txt dosyasını kullanarak basit permütasyonlar oluşturacak ve açık depolama hesaplarını bulmaya çalışacaktır.

Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp
[...]
https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
[...]

# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
# Check: <Name>ssh_info.json</Name>
# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json

SAS URL'leri

Bir paylaşılan erişim imzası (SAS) URL'si, belirli bir Depolama hesabının belirli bir bölümüne (tam bir konteyner, bir dosya olabilir...) belirli izinlerle (okuma, yazma...) erişim sağlayan bir URL'dir. Eğer sızdırılmış bir tane bulursanız, hassas bilgilere erişebilirsiniz, şöyle görünürler (bu bir konteynere erişim sağlamak için, eğer sadece bir dosyaya erişim sağlıyorsa URL'nin yolu aynı zamanda o dosyayı da içerecektir):

https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D

Verilere erişmek için Storage Explorer kullanın

Kimlik Bilgilerinin Tehdit Altında Olması

Sosyal Mühendislik

Parola Sıkmak / Kaba Kuvvet Saldırısı

Az - Password Spraying

Referanslar

Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları:

Last updated