mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-enumeration-tool
This commit is contained in:
@@ -2,10 +2,10 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Linux'te PowerShell Kurulumu
|
||||
## Linux'te PowerShell'i Kurma
|
||||
|
||||
> [!TIP]
|
||||
> Linux'te PowerShell Core'u yüklemeniz gerekecek:
|
||||
> Linux'te PowerShell Core'u kurmanız gerekecek:
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y wget apt-transport-https software-properties-common
|
||||
@@ -24,11 +24,11 @@ pwsh
|
||||
# Az cli
|
||||
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
|
||||
```
|
||||
## MacOS'ta PowerShell Kurulumu
|
||||
## MacOS'ta PowerShell'i Yükleme
|
||||
|
||||
Talimatlar [**documentation**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4):
|
||||
Talimatlar için [**documentation**](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.4):
|
||||
|
||||
1. `brew` yüklü değilse yükleyin:
|
||||
1. `brew` henüz yüklü değilse yükleyin:
|
||||
```bash
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
```
|
||||
@@ -36,7 +36,7 @@ Talimatlar [**documentation**](https://learn.microsoft.com/en-us/powershell/scri
|
||||
```sh
|
||||
brew install powershell/tap/powershell
|
||||
```
|
||||
3. PowerShell'i çalıştırın:
|
||||
3. PowerShell'i çalıştır:
|
||||
```sh
|
||||
pwsh
|
||||
```
|
||||
@@ -49,19 +49,19 @@ brew upgrade powershell
|
||||
|
||||
### az cli
|
||||
|
||||
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) Python ile yazılmış çapraz platform bir araçtır; (çoğu) Azure ve Entra ID kaynaklarını yönetmek ve idare etmek için kullanılır. Azure'a bağlanır ve yönetimsel komutları komut satırı veya scriptler aracılığıyla yürütür.
|
||||
[**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) Python ile yazılmış, çapraz platform bir araç olup (çoğu) Azure ve Entra ID kaynaklarını yönetmek ve idare etmek için kullanılır. Azure'a bağlanır ve komut satırı veya scriptler aracılığıyla yönetim komutlarını çalıştırır.
|
||||
|
||||
Kurulum talimatları için şu bağlantıya bakın: [**installation instructions¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install).
|
||||
Follow this link for the [**installation instructions¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install).
|
||||
|
||||
Azure CLI'deki komutlar şu desenle yapılandırılır: `az <service> <action> <parameters>`
|
||||
Commands in Azure CLI are structured using a pattern of: `az <service> <action> <parameters>`
|
||||
|
||||
#### Debug | MitM az cli
|
||||
|
||||
**`--debug`** parametresini kullanarak, araç **`az`** tarafından gönderilen tüm istekleri görmek mümkündür:
|
||||
**`--debug`** parametresini kullanarak aracın **`az`** gönderdiği tüm istekleri görmek mümkündür:
|
||||
```bash
|
||||
az account management-group list --output table --debug
|
||||
```
|
||||
Araca bir **MitM** yapıp gönderdiği tüm **istekleri** manuel olarak kontrol etmek için şunu yapabilirsiniz:
|
||||
Aracı üzerinde bir **MitM** gerçekleştirmek ve gönderdiği tüm istekleri manuel olarak kontrol etmek için şunu yapabilirsiniz:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Bash" }}
|
||||
@@ -104,51 +104,215 @@ $env:HTTP_PROXY="http://127.0.0.1:8080"
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
<details>
|
||||
<summary><strong>“CA cert does not include key usage extension” hatasını düzeltme</strong></summary>
|
||||
|
||||
### Hatanın nedeni
|
||||
|
||||
When Azure CLI authenticates, it makes HTTPS requests (via MSAL → Requests → OpenSSL). If you’re intercepting TLS with Burp, Burp generates “on the fly” certificates for sites like `login.microsoftonline.com` and signs them with Burp’s CA.
|
||||
|
||||
Yeni yığınlarda (Python 3.13 + OpenSSL 3), CA doğrulaması daha katıdır:
|
||||
|
||||
- Bir CA sertifikası **Basic Constraints: `CA:TRUE`** içermeli ve sertifika imzalamaya izin veren bir **Key Usage** uzantısına sahip olmalıdır (**`keyCertSign`**, genelde **`cRLSign`** de).
|
||||
|
||||
Burp’ın varsayılan CA'sı (PortSwigger CA) eski olup genelde Key Usage uzantısından yoksundur; bu yüzden OpenSSL, ona “güvenseniz” bile reddeder.
|
||||
|
||||
Bu şu hatalara yol açar:
|
||||
|
||||
- `CA cert does not include key usage extension`
|
||||
- `CERTIFICATE_VERIFY_FAILED`
|
||||
- `self-signed certificate in certificate chain`
|
||||
|
||||
Bu yüzden şunları yapmalısınız:
|
||||
|
||||
1. Doğru Key Usage içeren modern bir CA oluşturun.
|
||||
2. Burp'ın yakalanan sertifikaları imzalarken onu kullanmasını sağlayın.
|
||||
3. macOS'ta bu CA'yı güvenilir olarak ekleyin.
|
||||
4. Azure CLI / Requests'i o CA bundle'a yönlendirin.
|
||||
|
||||
### Adım adım: çalışan yapılandırma
|
||||
|
||||
#### 0) Ön koşullar
|
||||
|
||||
- Burp yerel olarak çalışıyor (proxy at `127.0.0.1:8080`)
|
||||
- Azure CLI yüklü (Homebrew)
|
||||
- `sudo` kullanabiliyor olun (CA'yı sistem keychain'ine güvenilir olarak eklemek için)
|
||||
|
||||
#### 1) Standartlara uygun bir Burp CA oluşturun (PEM + KEY)
|
||||
|
||||
Create an OpenSSL config file that explicitly sets CA extensions:
|
||||
```bash
|
||||
mkdir -p ~/burp-ca && cd ~/burp-ca
|
||||
|
||||
cat > burp-ca.cnf <<'EOF'
|
||||
[ req ]
|
||||
default_bits = 2048
|
||||
prompt = no
|
||||
default_md = sha256
|
||||
distinguished_name = dn
|
||||
x509_extensions = v3_ca
|
||||
|
||||
[ dn ]
|
||||
C = US
|
||||
O = Burp Custom CA
|
||||
CN = Burp Custom Root CA
|
||||
|
||||
[ v3_ca ]
|
||||
basicConstraints = critical,CA:TRUE
|
||||
keyUsage = critical,keyCertSign,cRLSign
|
||||
subjectKeyIdentifier = hash
|
||||
authorityKeyIdentifier = keyid:always,issuer
|
||||
EOF
|
||||
```
|
||||
CA sertifikası + özel anahtar oluşturun:
|
||||
```bash
|
||||
openssl req -x509 -new -nodes \
|
||||
-days 3650 \
|
||||
-keyout burp-ca.key \
|
||||
-out burp-ca.pem \
|
||||
-config burp-ca.cnf
|
||||
```
|
||||
Basit doğrulama (Key Usage'ı mutlaka görmelisiniz):
|
||||
```bash
|
||||
openssl x509 -in burp-ca.pem -noout -text | egrep -A3 "Basic Constraints|Key Usage"
|
||||
```
|
||||
Şunun gibi şeyler içermesi beklenir:
|
||||
|
||||
- `CA:TRUE`
|
||||
- `Key Usage: ... Certificate Sign, CRL Sign`
|
||||
|
||||
#### 2) PKCS#12'e dönüştürme (Burp içe aktarma formatı)
|
||||
|
||||
Burp sertifika + özel anahtar ister, en kolay yol PKCS#12:
|
||||
```bash
|
||||
openssl pkcs12 -export \
|
||||
-out burp-ca.p12 \
|
||||
-inkey burp-ca.key \
|
||||
-in burp-ca.pem \
|
||||
-name "Burp Custom Root CA"
|
||||
```
|
||||
Dışa aktarma parolası istenecek (bir tane belirleyin; Burp bunu soracak).
|
||||
|
||||
#### 3) CA'yı Burp'a içe aktarın ve Burp'u yeniden başlatın
|
||||
|
||||
Burp içinde:
|
||||
|
||||
- Proxy → Options
|
||||
- Import / export CA certificate öğesini bulun
|
||||
- Import CA certificate'e tıklayın
|
||||
- PKCS#12'yi seçin
|
||||
- `burp-ca.p12` dosyasını seçin
|
||||
- Parolayı girin
|
||||
- Burp'u tamamen yeniden başlatın (önemli)
|
||||
|
||||
Neden yeniden başlatmak? Burp, yeniden başlatılana kadar eski CA'yı kullanmaya devam edebilir.
|
||||
|
||||
#### 4) macOS system keychain'de yeni CA'ya güvenin
|
||||
|
||||
Bu sayede sistem uygulamaları ve birçok TLS yığını CA'yı güvenilir kabul eder.
|
||||
```bash
|
||||
sudo security add-trusted-cert \
|
||||
-d -r trustRoot \
|
||||
-k /Library/Keychains/System.keychain \
|
||||
~/burp-ca/burp-ca.pem
|
||||
```
|
||||
(If you prefer GUI: Keychain Access → System → Certificates → import → set “Always Trust”.)
|
||||
|
||||
#### 5) Proxy ortam değişkenlerini yapılandırın
|
||||
```bash
|
||||
export HTTPS_PROXY="http://127.0.0.1:8080"
|
||||
export HTTP_PROXY="http://127.0.0.1:8080"
|
||||
```
|
||||
#### 6) Requests/Azure CLI'yi Burp CA'nızı güvenilir sayacak şekilde yapılandırın
|
||||
|
||||
Azure CLI dahili olarak Python Requests kullanır; her ikisini de şu şekilde ayarlayın:
|
||||
```bash
|
||||
export REQUESTS_CA_BUNDLE="$HOME/burp-ca/burp-ca.pem"
|
||||
export SSL_CERT_FILE="$HOME/burp-ca/burp-ca.pem"
|
||||
```
|
||||
Notlar:
|
||||
|
||||
- `REQUESTS_CA_BUNDLE` Requests tarafından kullanılır.
|
||||
- `SSL_CERT_FILE` diğer TLS kullanan uygulamalara ve uç durumlara yardımcı olur.
|
||||
- CA doğru olduğunda genellikle eski `ADAL_PYTHON_SSL_NO_VERIFY` / `AZURE_CLI_DISABLE_CONNECTION_VERIFICATION`'e ihtiyaç duymazsınız.
|
||||
|
||||
#### 7) Burp'un gerçekten yeni CA'nızla imzaladığını doğrulayın (kritik kontrol)
|
||||
|
||||
Bu, yakalama zincirinizin doğru olduğunu onaylar:
|
||||
```bash
|
||||
openssl s_client -connect login.microsoftonline.com:443 \
|
||||
-proxy 127.0.0.1:8080 </dev/null 2>/dev/null \
|
||||
| openssl x509 -noout -issuer
|
||||
```
|
||||
Beklenen issuer CA adınızı içerir, örn.:
|
||||
|
||||
`O=Burp Custom CA, CN=Burp Custom Root CA`
|
||||
|
||||
Hâlâ PortSwigger CA görüyorsanız, Burp içe aktardığınız CA'yı kullanmıyor → içe aktarmayı tekrar kontrol edin ve yeniden başlatın.
|
||||
|
||||
#### 8) Python Requests'in Burp üzerinden çalıştığını doğrulayın
|
||||
```bash
|
||||
python3 - <<'EOF'
|
||||
import requests
|
||||
requests.get("https://login.microsoftonline.com")
|
||||
print("OK")
|
||||
EOF
|
||||
```
|
||||
Beklenen: `OK`
|
||||
|
||||
#### 9) Azure CLI testi
|
||||
```bash
|
||||
az account get-access-token --resource=https://management.azure.com/
|
||||
```
|
||||
Zaten oturum açtıysanız, bir `accessToken` içeren JSON döndürmelidir.
|
||||
|
||||
</details>
|
||||
|
||||
### Az PowerShell
|
||||
|
||||
Azure PowerShell, PowerShell komut satırından Azure kaynaklarını doğrudan yönetmek için cmdlet'ler içeren bir modüldür.
|
||||
|
||||
Kurulum için şu bağlantıyı izleyin: [**installation instructions**](https://learn.microsoft.com/en-us/powershell/azure/install-azure-powershell).
|
||||
Follow this link for the [**installation instructions**](https://learn.microsoft.com/en-us/powershell/azure/install-azure-powershell).
|
||||
|
||||
Commands in Azure PowerShell AZ Module are structured like: `<Action>-Az<Service> <parameters>`
|
||||
|
||||
#### Debug | MitM Az PowerShell
|
||||
|
||||
**`-Debug`** parametresini kullanarak aracın gönderdiği tüm istekleri görmek mümkündür:
|
||||
Parametre **`-Debug`** kullanıldığında aracın gönderdiği tüm istekleri görmek mümkündür:
|
||||
```bash
|
||||
Get-AzResourceGroup -Debug
|
||||
```
|
||||
Araca bir **MitM** uygulamak ve gönderdiği tüm istekleri manuel olarak **kontrol etmek** için ortam değişkenlerini `HTTPS_PROXY` ve `HTTP_PROXY` olarak [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy) doğrultusunda ayarlayabilirsiniz.
|
||||
In order to do a **MitM** to the tool and **check all the requests** it's sending manually you can set the env variables `HTTPS_PROXY` and `HTTP_PROXY` according to the [**docs**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy).
|
||||
|
||||
### Microsoft Graph PowerShell
|
||||
|
||||
Microsoft Graph PowerShell, tek bir endpoint kullanarak SharePoint, Exchange ve Outlook gibi hizmetler dahil olmak üzere tüm Microsoft Graph API'lerine erişim sağlayan çapraz platform bir SDK'dır. PowerShell 7+ desteği, MSAL üzerinden modern kimlik doğrulama, harici kimlikler ve gelişmiş sorguları destekler. En az ayrıcalık prensibine odaklanarak güvenli işlemler sağlar ve Microsoft Graph API'nin en son özellikleriyle uyumlu kalmak için düzenli olarak güncellenir.
|
||||
Microsoft Graph PowerShell, tek bir endpoint üzerinden SharePoint, Exchange ve Outlook gibi servisler de dahil olmak üzere tüm Microsoft Graph API'larına erişim sağlayan çapraz platform bir SDK'dır. PowerShell 7+, MSAL aracılığıyla modern kimlik doğrulamayı, harici kimlikleri (external identities) ve gelişmiş sorguları destekler. En az ayrıcalık (least privilege) ilkesine odaklanarak güvenli işlemler sağlar ve Microsoft Graph API'nin en son özellikleriyle uyumlu kalmak için düzenli güncellemeler alır.
|
||||
|
||||
Kurulum için şu bağlantıyı izleyin: [**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation).
|
||||
Follow this link for the [**installation instructions**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation).
|
||||
|
||||
Microsoft Graph PowerShell'deki komutlar şu şekilde yapılandırılır: `<Action>-Mg<Service> <parameters>`
|
||||
Commands in Microsoft Graph PowerShell are structured like: `<Action>-Mg<Service> <parameters>`
|
||||
|
||||
#### Debug Microsoft Graph PowerShell
|
||||
#### Microsoft Graph PowerShell Hata Ayıklama
|
||||
|
||||
Parametre **`-Debug`** kullanılarak aracın gönderdiği tüm istekleri görüntülemek mümkündür:
|
||||
Using the parameter **`-Debug`** it's possible to see all the requests the tool is sending:
|
||||
```bash
|
||||
Get-MgUser -Debug
|
||||
```
|
||||
### ~~**AzureAD Powershell**~~
|
||||
|
||||
Azure Active Directory (AD) modülü, artık **kullanımdan kaldırıldı**, Azure PowerShell'in Azure AD kaynaklarını yönetmek için kullanılan bir parçasıdır. Entra ID'de kullanıcılar, gruplar ve uygulama kayıtlarını yönetmek gibi görevler için cmdlets sağlar.
|
||||
The Azure Active Directory (AD) module, now **deprecated**, is part of Azure PowerShell for managing Azure AD resources. Azure AD kaynaklarını yönetmek için kullanılan Azure PowerShell'in bir parçasıdır. Entra ID'de kullanıcıları, grupları ve uygulama kayıtlarını yönetmek gibi görevler için cmdlet'ler sağlar.
|
||||
|
||||
> [!TIP]
|
||||
> Bu, Microsoft Graph PowerShell ile değiştirilmiştir
|
||||
> Bu, Microsoft Graph PowerShell ile değiştirildi.
|
||||
|
||||
Follow this link for the [**installation instructions**](https://www.powershellgallery.com/packages/AzureAD).
|
||||
|
||||
|
||||
## Otomatik Recon ve Uyumluluk Araçları
|
||||
## Automated Recon & Compliance Tools
|
||||
|
||||
### [turbot azure plugins](https://github.com/orgs/turbot/repositories?q=mod-azure)
|
||||
|
||||
Turbot, steampipe ve powerpipe ile Azure ve Entra ID'den bilgi toplayabilir, uyumluluk kontrolleri yapabilir ve yapılandırma hatalarını tespit edebilir. Şu anda çalıştırılması en çok önerilen Azure modülleri şunlardır:
|
||||
Turbot with steampipe and powerpipe allows to gather information from Azure and Entra ID and perform compliance checks and find misconfigurations. Turbot, steampipe ve powerpipe ile Azure ve Entra ID'den bilgi toplamanıza, uyumluluk kontrolleri yapmanıza ve yanlış yapılandırmaları bulmanıza olanak tanır. The currently most recommended Azure modules to run are:
|
||||
|
||||
- [https://github.com/turbot/steampipe-mod-azure-compliance](https://github.com/turbot/steampipe-mod-azure-compliance)
|
||||
- [https://github.com/turbot/steampipe-mod-azure-insights](https://github.com/turbot/steampipe-mod-azure-insights)
|
||||
@@ -179,9 +343,9 @@ powerpipe server
|
||||
```
|
||||
### [Prowler](https://github.com/prowler-cloud/prowler)
|
||||
|
||||
Prowler, AWS, Azure, Google Cloud ve Kubernetes güvenlik en iyi uygulamaları değerlendirmeleri, denetimler, olay müdahalesi, sürekli izleme, sertleştirme ve adli inceleme hazırlığı gerçekleştirmek için kullanılan açık kaynaklı bir güvenlik aracıdır.
|
||||
Prowler, AWS, Azure, Google Cloud ve Kubernetes için güvenlik en iyi uygulamaları değerlendirmeleri, denetimler, olay müdahalesi, sürekli izleme, hardening ve forensics readiness gerçekleştirmek üzere kullanılan açık kaynaklı bir güvenlik aracıdır.
|
||||
|
||||
Temelde bir Azure ortamına karşı yüzlerce kontrol çalıştırmamıza, güvenlik yapılandırma hatalarını bulmamıza ve sonuçları json (ve diğer metin formatlarında) olarak toplamamıza veya web'de görüntülememize olanak tanır.
|
||||
Temelde bir Azure ortamı üzerinde yüzlerce kontrol çalıştırarak güvenlik yanlış yapılandırmalarını bulmamıza ve sonuçları json (ve diğer metin formatlarında) olarak toplamamıza veya web üzerinde görüntülememize olanak tanır.
|
||||
```bash
|
||||
# Create a application with Reader role and set the tenant ID, client ID and secret in prowler so it access the app
|
||||
|
||||
@@ -203,9 +367,9 @@ docker run --rm -e "AZURE_CLIENT_ID=<client-id>" -e "AZURE_TENANT_ID=<tenant-id>
|
||||
```
|
||||
### [Monkey365](https://github.com/silverhack/monkey365)
|
||||
|
||||
Azure abonelikleri ve Microsoft Entra ID güvenlik yapılandırması incelemelerini otomatik olarak gerçekleştirmeye olanak tanır.
|
||||
Azure abonelikleri ve Microsoft Entra ID güvenlik yapılandırma incelemelerini otomatik olarak gerçekleştirmeyi sağlar.
|
||||
|
||||
HTML raporları github repository klasörü içindeki `./monkey-reports` dizininde saklanır.
|
||||
HTML raporları, github repository klasörünün içindeki `./monkey-reports` dizininde saklanır.
|
||||
```bash
|
||||
git clone https://github.com/silverhack/monkey365
|
||||
Get-ChildItem -Recurse monkey365 | Unblock-File
|
||||
@@ -226,7 +390,7 @@ Invoke-Monkey365 -TenantId <tenant-id> -ClientId <client-id> -ClientSecret $Secu
|
||||
```
|
||||
### [ScoutSuite](https://github.com/nccgroup/ScoutSuite)
|
||||
|
||||
Scout Suite, manuel inceleme için yapılandırma verilerini toplar ve risk alanlarını vurgular. Çoklu bulutlara yönelik bir güvenlik denetim aracıdır ve bulut ortamlarının güvenlik duruşunun değerlendirilmesini sağlar.
|
||||
Scout Suite, manuel inceleme için yapılandırma verilerini toplar ve riskli alanları vurgular. Bulut ortamlarının güvenlik duruşunun değerlendirilmesine olanak tanıyan çoklu bulut güvenlik denetimi aracıdır.
|
||||
```bash
|
||||
virtualenv -p python3 venv
|
||||
source venv/bin/activate
|
||||
@@ -242,18 +406,18 @@ python scout.py azure --cli
|
||||
```
|
||||
### [Azure-MG-Sub-Governance-Reporting](https://github.com/JulianHayward/Azure-MG-Sub-Governance-Reporting)
|
||||
|
||||
Bu bir powershell scriptidir ve **Management Group ve Entra ID tenant içindeki tüm kaynakları ve izinleri görselleştirmenize** ve güvenlik yanlış yapılandırmalarını bulmanıza yardımcı olur.
|
||||
Bu, **bir Management Group ve Entra ID tenant içindeki tüm kaynakları ve izinleri görselleştirmenize** ve güvenlik yanlış yapılandırmalarını bulmanıza yardımcı olan bir PowerShell script'idir.
|
||||
|
||||
Az PowerShell module kullanılarak çalışır; bu nedenle bu modül tarafından desteklenen tüm kimlik doğrulama yöntemleri kullanılabilir.
|
||||
Az PowerShell module kullanılarak çalışır; dolayısıyla bu araç tarafından desteklenen herhangi bir kimlik doğrulama yöntemi kullanılabilir.
|
||||
```bash
|
||||
import-module Az
|
||||
.\AzGovVizParallel.ps1 -ManagementGroupId <management-group-id> [-SubscriptionIdWhitelist <subscription-id>]
|
||||
```
|
||||
## Otomatik Post-Exploitation araçları
|
||||
## Automated Post-Exploitation tools
|
||||
|
||||
### [**ROADRecon**](https://github.com/dirkjanm/ROADtools)
|
||||
|
||||
ROADRecon'un enumeration'ı Entra ID yapılandırması hakkında bilgiler sunar; örneğin kullanıcılar, gruplar, roller, koşullu erişim politikaları...
|
||||
ROADRecon'in enumeration'ı, Entra ID yapılandırması hakkında bilgi sağlar; örneğin users, groups, roles, conditional access policies...
|
||||
```bash
|
||||
cd ROADTools
|
||||
pipenv shell
|
||||
@@ -266,13 +430,13 @@ roadrecon gui
|
||||
```
|
||||
### [**AzureHound**](https://github.com/BloodHoundAD/AzureHound)
|
||||
|
||||
AzureHound, Microsoft Entra ID ve Azure için BloodHound collector'ıdır. Windows/Linux/macOS için tek bir statik Go binary'si olup doğrudan şunlarla iletişim kurar:
|
||||
- Microsoft Graph (Entra ID directory, M365) ve
|
||||
AzureHound, Microsoft Entra ID ve Azure için BloodHound toplayıcısıdır. Windows/Linux/macOS için tek bir statik Go ikili dosyasıdır ve doğrudan şunlarla iletişim kurar:
|
||||
- Microsoft Graph (Entra ID directory, M365) and
|
||||
- Azure Resource Manager (ARM) control plane (subscriptions, resource groups, compute, storage, key vault, app services, AKS, etc.)
|
||||
|
||||
Ana özellikleri
|
||||
- Tenant API'larına karşı genel internetten her yerden çalışır (iç ağ erişimi gerekmez)
|
||||
- Kimlikler ve bulut kaynakları arasındaki saldırı yollarını görselleştirmek üzere BloodHound CE'ye içeri aktarılabilir JSON çıktısı üretir
|
||||
Temel özellikler
|
||||
- Kiracı API'lerine kamu interneti üzerinden her yerden çalıştırılabilir (iç ağ erişimi gerekmez)
|
||||
- Kimlikler ve bulut kaynakları arasındaki saldırı yollarını görselleştirmek için BloodHound CE'nin içeri alması amacıyla JSON çıktısı üretir
|
||||
- Gözlemlenen varsayılan User-Agent: azurehound/v2.x.x
|
||||
|
||||
Kimlik doğrulama seçenekleri
|
||||
@@ -318,28 +482,28 @@ azurehound list web-apps -t "<tenant-id>" -o webapps.json
|
||||
azurehound list function-apps -t "<tenant-id>" -o funcapps.json
|
||||
```
|
||||
What gets queried
|
||||
- Graph endpoints (examples):
|
||||
- Graph endpoints (örnekler):
|
||||
- /v1.0/organization, /v1.0/users, /v1.0/groups, /v1.0/roleManagement/directory/roleDefinitions, directoryRoles, owners/members
|
||||
- ARM endpoints (examples):
|
||||
- ARM endpoints (örnekler):
|
||||
- management.azure.com/subscriptions/.../providers/Microsoft.Storage/storageAccounts
|
||||
- .../Microsoft.KeyVault/vaults, .../Microsoft.Compute/virtualMachines, .../Microsoft.Web/sites, .../Microsoft.ContainerService/managedClusters
|
||||
|
||||
Preflight behavior and endpoints
|
||||
- Each azurehound list <object> typically performs these test calls before enumeration:
|
||||
1) Identity platform: login.microsoftonline.com
|
||||
- Her azurehound list <object> tipik olarak sayımlamadan önce şu test çağrılarını gerçekleştirir:
|
||||
1) Kimlik platformu: login.microsoftonline.com
|
||||
2) Graph: GET https://graph.microsoft.com/v1.0/organization
|
||||
3) ARM: GET https://management.azure.com/subscriptions?api-version=...
|
||||
- Cloud environment base URLs differ for Government/China/Germany. See constants/environments.go in the repo.
|
||||
- Cloud environment base URLs Government/China/Germany için farklıdır. Repo'daki constants/environments.go dosyasına bakın.
|
||||
|
||||
ARM-heavy objects (less visible in Activity/Resource logs)
|
||||
- The following list targets predominantly use ARM control plane reads: automation-accounts, container-registries, function-apps, key-vaults, logic-apps, managed-clusters, management-groups, resource-groups, storage-accounts, storage-containers, virtual-machines, vm-scale-sets, web-apps.
|
||||
- These GET/list operations are typically not written to Activity Logs; data-plane reads (e.g., *.blob.core.windows.net, *.vault.azure.net) are covered by Diagnostic Settings at the resource level.
|
||||
- Aşağıdaki hedefler ağırlıklı olarak ARM kontrol düzlemi okumalarını kullanır: automation-accounts, container-registries, function-apps, key-vaults, logic-apps, managed-clusters, management-groups, resource-groups, storage-accounts, storage-containers, virtual-machines, vm-scale-sets, web-apps.
|
||||
- Bu GET/list işlemleri tipik olarak Activity Logs'a yazılmaz; data-plane okumaları (örn. *.blob.core.windows.net, *.vault.azure.net) kaynak düzeyinde Diagnostic Settings ile kapsanır.
|
||||
|
||||
OPSEC and logging notes
|
||||
- Microsoft Graph Activity Logs are not enabled by default; enable and export to SIEM to gain visibility of Graph calls. Expect the Graph preflight GET /v1.0/organization with UA azurehound/v2.x.x.
|
||||
- Entra ID non-interactive sign-in logs record the identity platform auth (login.microsoftonline.com) used by AzureHound.
|
||||
- ARM control-plane read/list operations are not recorded in Activity Logs; many azurehound list operations against resources won’t appear there. Only data-plane logging (via Diagnostic Settings) will capture reads to service endpoints.
|
||||
- Defender XDR GraphApiAuditEvents (preview) can expose Graph calls and token identifiers but may lack UserAgent and have limited retention.
|
||||
- Microsoft Graph Activity Logs varsayılan olarak etkin değildir; Graph çağrılarının görünürlüğünü elde etmek için etkinleştirip SIEM'e aktarın. Preflight Graph GET /v1.0/organization çağrısında UA azurehound/v2.x.x bekleyin.
|
||||
- Entra ID non-interactive sign-in logları, AzureHound tarafından kullanılan kimlik platformu kimlik doğrulamasını (login.microsoftonline.com) kaydeder.
|
||||
- ARM control-plane read/list işlemleri Activity Logs'a kaydedilmez; birçok azurehound list işlemi kaynaklara karşı orada görünmeyecektir. Sadece data-plane logging (Diagnostic Settings aracılığıyla) servis uç noktalarına yapılan okumaları yakalar.
|
||||
- Defender XDR GraphApiAuditEvents (preview) Graph çağrılarını ve token tanımlayıcılarını ortaya çıkarabilir ancak UserAgent eksik olabilir ve saklama süresi sınırlı olabilir.
|
||||
|
||||
Tip: When enumerating for privilege paths, dump users, groups, roles, and role assignments, then ingest in BloodHound and use prebuilt cypher queries to surface Global Administrator/Privileged Role Administrator and transitive escalation via nested groups and RBAC assignments.
|
||||
|
||||
@@ -347,7 +511,7 @@ Launch the BloodHound web with `curl -L https://ghst.ly/getbhce | docker compose
|
||||
|
||||
### [**MicroBurst**](https://github.com/NetSPI/MicroBurst)
|
||||
|
||||
MicroBurst includes functions and scripts that support Azure Services discovery, weak configuration auditing, and post exploitation actions such as credential dumping. It is intended to be used during penetration tests where Azure is in use.
|
||||
MicroBurst, Azure Services keşfini, zayıf yapılandırma denetimini ve credential dumping gibi post exploitation eylemlerini destekleyen fonksiyonlar ve script'ler içerir. Azure'ın kullanıldığı penetration tests sırasında kullanılmak içindir.
|
||||
```bash
|
||||
Import-Module .\MicroBurst.psm1
|
||||
Import-Module .\Get-AzureDomainInfo.ps1
|
||||
@@ -355,9 +519,9 @@ Get-AzureDomainInfo -folder MicroBurst -Verbose
|
||||
```
|
||||
### [**PowerZure**](https://github.com/hausec/PowerZure)
|
||||
|
||||
PowerZure, Azure, EntraID ve ilişkili kaynakların reconnaissance ve exploitation işlemlerini gerçekleştirebilen bir framework ihtiyacından oluşturuldu.
|
||||
PowerZure, Azure, EntraID ve ilgili kaynaklar üzerinde hem reconnaissance hem de exploitation gerçekleştirebilen bir framework ihtiyacından doğmuştur.
|
||||
|
||||
**Az PowerShell** modülünü kullanır; dolayısıyla bu araç tarafından desteklenen tüm kimlik doğrulama yöntemleri desteklenir.
|
||||
Bu araç **Az PowerShell** modülünü kullanır; bu nedenle modülün desteklediği herhangi bir authentication bu araç tarafından da desteklenir.
|
||||
```bash
|
||||
# Login
|
||||
Import-Module Az
|
||||
@@ -388,7 +552,7 @@ Invoke-AzureRunCommand -Command <command> -VMName <vmname>
|
||||
```
|
||||
### [**GraphRunner**](https://github.com/dafthack/GraphRunner/wiki/Invoke%E2%80%90GraphRunner)
|
||||
|
||||
GraphRunner, Microsoft Graph API ile etkileşim kurmak için kullanılan bir post-exploitation araç setidir. Microsoft Entra ID (Azure AD) hesabından reconnaissance, persistence ve pillaging yoluyla veri elde etme ve kalıcılık sağlama gibi işlemler için çeşitli araçlar sunar.
|
||||
GraphRunner, Microsoft Graph API ile etkileşim kurmak için kullanılan bir post-exploitation araç setidir. Microsoft Entra ID (Azure AD) hesabından reconnaissance, persistence ve pillaging yoluyla veri toplama ve kalıcılık sağlama gibi işlemler için çeşitli araçlar sağlar.
|
||||
```bash
|
||||
#A good place to start is to authenticate with the Get-GraphTokens module. This module will launch a device-code login, allowing you to authenticate the session from a browser session. Access and refresh tokens will be written to the global $tokens variable. To use them with other GraphRunner modules use the Tokens flag (Example. Invoke-DumpApps -Tokens $tokens)
|
||||
Import-Module .\GraphRunner.ps1
|
||||
@@ -432,9 +596,9 @@ Invoke-GraphRunner -Tokens $tokens
|
||||
```
|
||||
### [Stormspotter](https://github.com/Azure/Stormspotter)
|
||||
|
||||
Stormspotter, bir Azure aboneliğindeki kaynakların bir “attack graph”ini oluşturur. Bu, red teams ve pentesters'ın bir tenant içindeki attack surface ve pivot opportunities'ı görselleştirmesine ve defender'ların incident response çalışmalarını hızlıca yönlendirip önceliklendirmesine yardımcı olur.
|
||||
Stormspotter, Azure aboneliğindeki kaynakların bir “attack graph”ini oluşturur. Bu, red teams ve pentesters'in tenant içindeki attack surface ve pivot opportunities'ı görselleştirmesini sağlar ve defenders'ın incident response çalışmalarını hızlıca yönlendirmesine ve önceliklendirmesine yardımcı olur.
|
||||
|
||||
**Ne yazık ki bakım yapılmıyor gibi görünüyor.**
|
||||
**Ne yazık ki, bakımsız görünüyor.**
|
||||
```bash
|
||||
# Start Backend
|
||||
cd stormspotter\backend\
|
||||
@@ -452,11 +616,11 @@ az login -u test@corp.onmicrosoft.com -p Welcome2022!
|
||||
python stormspotter\stormcollector\sscollector.pyz cli
|
||||
# This will generate a .zip file to upload in the frontend (127.0.0.1:9091)
|
||||
```
|
||||
## Referanslar
|
||||
- [Cloud Discovery With AzureHound (Unit 42)](https://unit42.paloaltonetworks.com/threat-actor-misuse-of-azurehound/)
|
||||
## Kaynaklar
|
||||
- [AzureHound ile Bulut Keşfi (Unit 42)](https://unit42.paloaltonetworks.com/threat-actor-misuse-of-azurehound/)
|
||||
- [AzureHound repository](https://github.com/SpecterOps/AzureHound)
|
||||
- [BloodHound repository](https://github.com/SpecterOps/BloodHound)
|
||||
- [AzureHound Community Edition Flags](https://bloodhound.specterops.io/collect-data/ce-collection/azurehound-flags)
|
||||
- [AzureHound Community Edition Bayrakları](https://bloodhound.specterops.io/collect-data/ce-collection/azurehound-flags)
|
||||
- [AzureHound constants/environments.go](https://github.com/SpecterOps/AzureHound/blob/main/constants/environments.go)
|
||||
- [AzureHound client/storage_accounts.go](https://github.com/SpecterOps/AzureHound/blob/main/client/storage_accounts.go)
|
||||
- [AzureHound client/roles.go](https://github.com/SpecterOps/AzureHound/blob/main/client/roles.go)
|
||||
|
||||
Reference in New Issue
Block a user