Az - Unauthenticated Enum & Initial Entry
Tip
सीखें और अभ्यास करें AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
सीखें और अभ्यास करें GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
सीखें और अभ्यास करें Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- देखें subscription plans!
- शामिल हों 💬 Discord group या telegram group या हमें फ़ॉलो करें Twitter 🐦 @hacktricks_live.
- PRs सबमिट करके hacking tricks साझा करें HackTricks और HackTricks Cloud github repos.
Azure Tenant
Tenant Enumeration
कुछ public Azure APIs ऐसी होती हैं जिन्हें सिर्फ टेनेंट के domain का पता होने पर एक attacker query करके उस टेनेंट के बारे में और जानकारी एकत्र कर सकता है।
आप सीधे API को query कर सकते हैं या PowerShell लाइब्रेरी AADInternals (Install-Module AADInternals) का उपयोग कर सकते हैं:
- लॉगिन जानकारी जिसमें tenant ID शामिल है
Get-AADIntTenantID -Domain <domain>(main APIlogin.microsoftonline.com/<domain>/.well-known/openid-configuration)- टेनेंट में सभी valid doimains
Get-AADIntTenantDomains -Domain <domain>(main APIautodiscover-s.outlook.com/autodiscover/autodiscover.svc)- उपयोगकर्ता की लॉगिन जानकारी। यदि
NameSpaceTypeManagedहै, तो इसका मतलब है EntraID इस्तेमाल हो रहा है Get-AADIntLoginInformation -UserName <UserName>(main APIlogin.microsoftonline.com/GetUserRealm.srf?login=<UserName>)
आप AADInternals की सिर्फ एक कमांड से एक Azure tenant की सारी जानकारी query कर सकते हैं:
# Doesn't work in macos because 'Resolve-DnsName' doesn't exist
Invoke-AADIntReconAsOutsider -DomainName corp.onmicrosoft.com | Format-Table
## Output Example of the Azure tenant info:
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
It’s possible to observe details about the tenant’s name, ID, and “brand” name. Additionally, the status of the Desktop Single Sign-On (SSO), also known as Seamless SSO, is displayed. When enabled, this feature facilitates the determination of the presence (enumeration) of a specific user within the target organization.
इसके अतिरिक्त, आउटपुट लक्ष्य tenant से जुड़ी सभी verified domains के नाम और उनके संबंधित identity types भी दिखाता है। federated domains के मामले में, प्रयुक्त identity provider का Fully Qualified Domain Name (FQDN), सामान्यतः एक ADFS server, भी प्रकट होता है। “MX” कॉलम यह दर्शाता है कि ईमेल Exchange Online की ओर रूट किए जाते हैं या नहीं, जबकि “SPF” कॉलम यह बताता है कि Exchange Online ईमेल भेजने वाले के रूप में सूचीबद्ध है। ध्यान देने योग्य है कि वर्तमान reconnaissance फ़ंक्शन SPF रिकॉर्ड्स के अंदर मौजूद “include” स्टेटमेंट्स को पार्स नहीं करता है, जिससे false negatives हो सकते हैं।
User Enumeration
Tip
ध्यान दें कि भले ही एक tenant एक ही उपयोगकर्ता के लिए कई ईमेल इस्तेमाल कर रहा हो, username is unique। इसका मतलब है कि यह केवल उस domain के साथ काम करेगा जिसे उपयोगकर्ता ने associated किया है, और अन्य domains के साथ नहीं।
यह संभव है कि किसी tenant के अंदर check if a username exists किया जाए। इसमें भी guest users शामिल हैं, जिनका username इस फॉर्मैट में होता है:
<email>#EXT#@<tenant name>.onmicrosoft.com
यह ईमेल उपयोगकर्ता का ईमेल पता है जहाँ “@” को underscore “_” से बदल दिया गया है।
With AADInternals, आप आसानी से जांच सकते हैं कि उपयोगकर्ता मौजूद है या नहीं:
# Check does the user exist
Invoke-AADIntUserEnumerationAsOutsider -UserName "user@company.com"
मैंके पास src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md की सामग्री मौजूद नहीं है। कृपया उस README.md की टेक्स्ट यहाँ पेस्ट करें (या बताएं कि मैं किस हिस्से का अनुवाद करूं), ताकि मैं निर्देशों के अनुसार Markdown/HTML संरचना नहीं बदलते हुए हिंदी में अनुवाद कर सकूँ।
UserName Exists
-------- ------
user@company.com True
आप एक टेक्स्ट फ़ाइल भी उपयोग कर सकते हैं जिसमें प्रत्येक पंक्ति में एक ईमेल पता हो:
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
वर्तमान में चुनने के लिए 4 विभिन्न enumeration methods हैं। आप Get-Help Invoke-AADIntUserEnumerationAsOutsider में जानकारी पा सकते हैं:
यह निम्नलिखित enumeration methods का समर्थन करता है: Normal, Login, Autologon, and RST2.
-
Normal method वर्तमान में सभी tenants के साथ काम करती दिखती है। पहले इसके लिए कम से कम एक domain में Desktop SSO (aka Seamless SSO) को enabled होना आवश्यक था।
-
Login method किसी भी tenant के साथ काम करती है, लेकिन enumeration queries Azure AD sign-in log में failed login events के रूप में लॉग हो जाएँगी!
-
Autologon method अब सभी tenants के साथ काम नहीं करती दिखती। सम्भवतः इसके लिए DesktopSSO या directory sync enabled होना आवश्यक है।
वैध usernames का पता लगाने के बाद आप किसी user के बारे में info प्राप्त कर सकते हैं:
Get-AADIntLoginInformation -UserName root@corp.onmicrosoft.com
यह स्क्रिप्ट o365spray आपको यह पता लगाने की भी अनुमति देती है कि email वैध है या नहीं.
git clone https://github.com/0xZDH/o365spray
cd o365spray
python3 -m pip install -r requirements.txt
# Check 1 email
python3 ./o365spray.py --enum -d carloshacktricks.onmicrosoft.com -u carlos
# Check a list of emails
python3 ./o365spray.py --enum -d carloshacktricks.onmicrosoft.com -U /tmp/users.txt
User Enumeration via Microsoft Teams
एक अन्य अच्छा सूचना स्रोत Microsoft Teams है।
Microsoft Teams की API उपयोगकर्ताओं को खोजने की अनुमति देती है। विशेष रूप से “user search” endpoints externalsearchv3 और searchUsers का उपयोग Teams-में पंजीकृत उपयोगकर्ता खातों की सामान्य जानकारी प्राप्त करने के लिए किया जा सकता है।
API प्रतिक्रिया के आधार पर non-existing users और उन existing users के बीच अंतर करना संभव है जिनके पास वैध Teams subscription है।
स्क्रिप्ट TeamsEnum का उपयोग दिए गए उपयोगकर्ता नामों के सेट को Teams API के खिलाफ validate करने के लिए किया जा सकता है, लेकिन इसे उपयोग करने के लिए आपके पास Teams access वाला एक उपयोगकर्ता खाता होना चाहिए।
# Install
git clone https://github.com/lucidra-security/TeamsEnum
cd TeamsEnum
python3 -m pip install -r requirements.txt
# Login and ask for password
python3 ./TeamsEnum.py -a password -u <username> -f inputlist.txt -o teamsenum-output.json
I don’t have the file content. Please paste the contents of src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md that you want translated.
मेरे पास फाइल की सामग्री उपलब्ध नहीं है। कृपया वह README.md सामग्री पेस्ट करें जिसे आप हिंदी में अनुवादित करवाना चाहते हैं।
[-] 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)
इसके अलावा, मौजूदा उपयोगकर्ताओं की उपलब्धता की जानकारी enumerate की जा सकती है, जैसे कि:
- Available
- Away
- DoNotDisturb
- Busy
- Offline
यदि कोई ऑफिस से बाहर संदेश कॉन्फ़िगर किया गया है, तो TeamsEnum का उपयोग करके उस संदेश को भी प्राप्त किया जा सकता है। यदि कोई आउटपुट फ़ाइल निर्दिष्ट की गई थी, तो आउट-ऑफिस संदेश स्वचालित रूप से JSON फ़ाइल में संग्रहीत कर दिए जाते हैं:
jq . teamsenum-output.json
कृपया src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md की सामग्री भेजें ताकि मैं अनुवाद कर सकूँ।
{
"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
}
]
}
Password Spraying / Brute-Force
Azure सेवाएँ जो डोमेनों का उपयोग करती हैं
यह भी संभव है कि आप सामान्य azure सबडोमेन्स में प्रकट हुए Azure services exposed को खोजने की कोशिश कर सकते हैं, जैसा कि इस post: में दस्तावेज़ित है
- App Services:
azurewebsites.net - App Services – Management:
scm.azurewebsites.net - App Services:
p.azurewebsites.net - App Services:
cloudapp.net - Storage Accounts-Files:
file.core.windows.net - Storage Accounts-Blobs:
blob.core.windows.net - Storage Accounts-Queues:
queue.core.windows.net - Storage Accounts-Tables:
table.core.windows.net - Databases-Redis:
redis.cache.windows.net - Databases-Cosmos DB:
documents.azure.com - Databases-MSSQL:
database.windows.net - Key Vaults:
vault.azure.net - Microsoft Hosted Domain:
onmicrosoft.com - Email:
mail.protection.outlook.com - SharePoint:
sharepoint.com - CDN:
azureedge.net - Search Appliance:
search.windows.net - API Services:
azure-api.net
आप ऐसे लक्ष्य के लिए MicroBust के एक तरीके का उपयोग कर सकते हैं। यह फ़ंक्शन कई azure domains: में बेस डोमेन नाम (और कुछ संयोजनों) की खोज करेगा:
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
Phishing
- Common Phishing for credentials or via OAuth Apps
- Device Code Authentication Phishing
Filesystem Credentials
यह az cli कई दिलचस्प जानकारी <HOME>/.Azure के अंदर स्टोर करता है:
azureProfile.jsonमें पिछले लॉग-इन उपयोगकर्ताओं की जानकारी होती हैclouds.configमें subscriptions के बारे में जानकारी होती हैservice_principal_entries.jsonमें applications credentials होते हैं (tenant id, clients and secret)msal_token_cache.jsonमें access tokens and refresh tokens होते हैं
ध्यान दें कि macOS और linux में ये फाइलें clear text में unprotected रूप से स्टोर होती हैं.
संदर्भ
- https://aadinternals.com/post/just-looking/
- https://www.securesystems.de/blog/a-fresh-look-at-user-enumeration-in-microsoft-teams/
- https://www.netspi.com/blog/technical-blog/cloud-penetration-testing/enumerating-azure-services/
Tip
सीखें और अभ्यास करें AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
सीखें और अभ्यास करें GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
सीखें और अभ्यास करें Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- देखें subscription plans!
- शामिल हों 💬 Discord group या telegram group या हमें फ़ॉलो करें Twitter 🐦 @hacktricks_live.
- PRs सबमिट करके hacking tricks साझा करें HackTricks और HackTricks Cloud github repos.
HackTricks Cloud

