22 KiB
FreeIPA पेंटेस्टिंग
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- अगर आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान देखें!
- आधिकारिक PEASS और HackTricks स्वैग प्राप्त करें
- हमारे विशेष NFTs कलेक्शन The PEASS Family की खोज करें
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह या मुझे ट्विटर 🐦 @carlospolopm** पर फॉलो** करें।
- हैकिंग ट्रिक्स साझा करें द्वारा PRs सबमिट करके HackTricks और HackTricks Cloud github repos में।
मूल जानकारी
FreeIPA को Microsoft Windows Active Directory के एक खुला स्रोत विकल्प के रूप में प्रस्तुत किया गया है और यह मुख्य रूप से Unix परिवेशों में एकीकृत प्रबंधन के लिए उपयोग किया जाता है। इसमें एक पूर्ण LDAP निर्देशिका शामिल है जिसे MIT Kerberos Key Distribution Center द्वारा समर्थित किया गया है, जो Active Directory के समान है। Dogtag प्रमाणपत्र प्रणाली का उपयोग सीए और आरए प्रमाणपत्रों का प्रबंधन करने के लिए किया जाता है, जो स्मार्टकार्ड सहित बहु-कारक प्रमाणीकरण क्षमताओं को सक्षम करता है। Unix प्रमाणीकरण प्रक्रिया में शामिल होने के लिए, SSSD का उपयोग किया जाता है।
फिंगरप्रिंट
फ़ाइलें और पर्यावरण चर
/etc/krb5.conf
पर फ़ाइल, जिसमें डोमेन में पंजीकरण के लिए आवश्यक Kerberos क्लाइंट जानकारी संग्रहित है। इसमें KDCs और व्यवस्थापक सर्वर के स्थान, डिफ़ॉल्ट सेटिंग्स, और मैपिंग शामिल हैं।/etc/ipa/default.conf
पर स्थित फ़ाइल में IPA clients और servers के लिए सिस्टम-व्यापी डिफ़ॉल्ट सेटिंग्स सेट किए गए हैं।- डोमेन में होस्ट को प्रमाणीकरण प्रक्रियाओं के लिए
/etc/krb5.keytab
परkrb5.keytab
फ़ाइल होनी चाहिए। - कई पर्यावरण चर (
KRB5CCNAME
,KRB5_KTNAME
,KRB5_CONFIG
,KRB5_KDC_PROFILE
,KRB5RCACHETYPE
,KRB5RCACHEDIR
,KRB5_TRACE
,KRB5_CLIENT_KTNAME
,KPROP_PORT
) का उपयोग Kerberos प्रमाणीकरण से संबंधित विशिष्ट फ़ाइलों और सेटिंग्स को निर्दिष्ट करने के लिए किया जाता है।
बाइनरी
ipa
, kdestroy
, kinit
, klist
, kpasswd
, ksu
, kswitch
, और kvno
जैसे उपकरण FreeIPA डोमेन का प्रबंधन करने, Kerberos टिकट्स का हैंडलिंग, पासवर्ड बदलने, और सेवा टिकट्स प्राप्त करने में महत्वपूर्ण हैं।
नेटवर्क
एक चित्रण प्रदान किया गया है जो एक साधारण FreeIPA सर्वर सेटअप को दर्शाता है।
प्रमाणीकरण
FreeIPA में Kerberos का उपयोग करके प्रमाणीकरण, Active Directory में की तरह है। डोमेन संसाधनों तक पहुंच के लिए एक वैध Kerberos टिकट की आवश्यकता होती है, जो FreeIPA डोमेन कॉन्फ़िगरेशन के आधार पर विभिन्न स्थानों पर संग्रहित किया जा सकता है।
CCACHE टिकट फ़ाइलें
CCACHE फ़ाइलें, जो सामान्यत: /tmp
में 600 अनुमतियों के साथ संग्रहित होती हैं, Kerberos क्रेडेंशियल संग्रहण के लिए बाइनरी प्रारूप होती हैं, जो पोर्टेबिलिटी के कारण एक उपयोगकर्ता के सादा पासवर्ड के बिना प्रमाणीकरण के लिए महत्वपूर्ण हैं। CCACHE टिकट का पार्सिंग klist
कमांड का उपयोग करके किया जा सकता है, और एक वैध CCACHE टिकट का पुनः उपयोग करने के लिए KRB5CCNAME
को टिकट फ़ाइल के पथ पर निर्यात करना शामिल है।
Unix Keyring
वैकल्पिक रूप से, CCACHE टिकट को लिनक्स की कीरिंग में संग्रहित किया जा सकता है, जो टिकट प्रबंधन पर अधिक नियंत्रण प्रदान करता है। टिकट संग्रहण की दायरा विभिन्न होती है (KEYRING:name
, KEYRING:process:name
, KEYRING:thread:name
, KEYRING:session:name
, KEYRING:persistent:uidnumber
), जिसे klist
उपयोगकर्ता के लिए इस सूचना का पार्सिंग करने में सक्षम है। हालांकि, Unix keyring से CCACHE टिकट का पुनः उपयोग करना चुनौतियों का सामना कर सकता है, जिसमें Tickey जैसे उपकरण उपलब्ध हैं जो Kerberos टिकट निकालने के लिए हैं।
Keytab
Keytab फ़ाइलें, जिसमें Kerberos प्रिंसिपल्स और एन्क्रिप्टेड कुंजी होती हैं, महत्वपूर्ण हैं वैध टिकट ग्रांटिंग टिकट्स (TGT) प्राप्त करने के लिए बिना प्रिंसिपल के पासवर्ड की आवश्यकता होती है। Keytab फ़ाइलों से क्रेडेंशियल का पार्सिंग और पुनः उपयोग करना आसानी से klist
और KeytabParser जैसे स्क्रिप्ट के साथ किया जा सकता है।
चीटशीट
आप निम्नलिखित लिंक में लिनक्स में टिकट का उपयोग कैसे करें के बारे में अधिक जानकारी पा सकते हैं:
{% content-ref url="privilege-escalation/linux-active-directory.md" %} linux-active-directory.md {% endcontent-ref %}
गणना
{% hint style="warning" %} आप ldap और अन्य बाइनरी उपकरणों के माध्यम से गणना कर सकते हैं, या FreeIPA सर्वर के पोर्ट 443 में वेब पेज से कनेक्ट करके भी कर सकते हैं। {% endhint %}
होस्ट, उपयोगकर्ता, और समूह
होस्ट, उपयोगकर्ता, और समूह बनाना संभव है। होस्ट और उपयोगकर्ता को "होस्ट समूह" और "उपयोगकर्ता समूह" कहलाने वाले कंटेनर में वर्गीकृत किया जा सकता है। ये संगठनात्मक इकाइयों (OU) के समान हैं।
FreeIPA में, LDAP सर्वर अनामत प्रिष्ठ की अनुमति देता है, और एक बड़ा डेटा सेट अनधिकृत रूप से गणनीय है। यह सभी डेटा को अनधिकृत रूप से उपलब्ध करा सकता है:
ldapsearch -x
अधिक जानकारी प्राप्त करने के लिए आपको प्रमाणित सत्र का उपयोग करना होगा (प्रमाणीकरण अनुभाग की जांच करें जिससे आप प्रमाणित सत्र कैसे तैयार करें इसका ज्ञान प्राप्त होगा)।
# Get all users of domain
ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=domain_name,dc=local"
# Get users groups
ldapsearch -Y gssapi -b "cn=groups,cn=accounts,dc=domain_name,dc=local"
# Get all the hosts
ldapsearch -Y gssapi -b "cn=computers,cn=accounts,dc=domain_name,dc=local"
# Get hosts groups
ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local"
एक डोमेन ज्वाइंड मशीन से आप स्थापित बाइनरी का उपयोग करके डोमेन को जांचने में सक्षम होंगे:
ipa user-find
ipa usergroup-find
ipa host-find
ipa host-group-find
-------------------
ipa user-show <username> --all
ipa usergroup-show <user group> --all
ipa host-find <host> --all
ipa hostgroup-show <host group> --all
{% hint style="info" %} FreeIPA का व्यवस्थापक उपयोगकर्ता AD से डोमेन व्यवस्थापकों के समकक्ष है। {% endhint %}
हैश
IPA सर्वर के रूट उपयोगकर्ता के पास पासवर्ड हैश तक पहुंच है।
- एक उपयोगकर्ता का पासवर्ड हैश “userPassword” विशेषता में base64 के रूप में संग्रहीत होता है। यह हैश SSHA512 (पुराने संस्करणों के लिए FreeIPA) या PBKDF2_SHA256 हो सकता है।
- पासवर्ड का Nthash “ipaNTHash” में base64 के रूप में संग्रहीत होता है अगर सिस्टम में AD के साथ एकीकरण है।
इन हैशों को क्रैक करने के लिए:
• यदि FreeIPA AD के साथ एकीकृत है, तो ipaNTHash को क्रैक करना आसान है: आपको base64 को डिकोड करना चाहिए -> इसे ASCII हेक्स के रूप में पुनः एनकोड करें -> John The Ripper या hashcat आपको इसे तेजी से क्रैक करने में मदद कर सकते हैं
• यदि पुराना संस्करण का FreeIPA उपयोग किया गया है, तो SSHA512 का उपयोग किया गया है: आपको base64 को डिकोड करना चाहिए -> SSHA512 हैश खोजें -> John The Ripper या hashcat आपको इसे क्रैक करने में मदद कर सकते हैं
• यदि नया संस्करण का FreeIPA उपयोग किया गया है, तो PBKDF2_SHA256 का उपयोग किया गया है: आपको base64 को डिकोड करना चाहिए -> PBKDF2_SHA256 खोजें -> इसकी लंबाई 256 बाइट है। John 256 बिट (32 बाइट) के साथ काम कर सकता है -> SHA-265 को प्यूडो-रैंडम फ़ंक्शन के रूप में उपयोग किया जाता है, ब्लॉक का आकार 32 बाइट है -> आपको केवल PBKDF2_SHA256 हैश के पहले 256 बिट का उपयोग करना है -> John The Ripper या hashcat आपको इसे क्रैक करने में मदद कर सकते हैं
हैशों को निकालने के लिए आपको FreeIPA सर्वर में रूट होना चाहिए, वहां आप उन्हें निकालने के लिए उपकरण dbscan
का उपयोग कर सकते हैं:
HBAC-नियम
ये नियम उपयोगकर्ताओं या होस्टों को संसाधनों (होस्ट, सेवाएं, सेवा समूह...) पर विशेष अनुमतियाँ प्रदान करते हैं।
# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=hbac,dc=domain_name,dc=local"
# Using ipa
ipa hbacrule-find
# Show info of rule
ipa hbacrule-show <hbacrule> --all
सुडो-नियम
फ्रीआईपीए द्वारा सुडो अनुमतियों पर केंद्रीकृत नियंत्रण सक्षम किया जाता है द्वारा सुडो-नियम। ये नियम होस्ट्स पर सुडो के साथ कमांड का निषेध या अनुमति देते हैं। एक हमलावर संभावित रूप से इन नियमसमूहों की जांच करके लागू होने वाले होस्ट, उपयोगकर्ता, और अनुमत कमांड्स की पहचान कर सकता है।
# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local"
# Using ipa
ipa sudorule-find
# Show info of rule
ipa sudorule-show <sudorule> --all
भूमिका-आधारित पहुंच नियंत्रण
एक भूमिका विभिन्न विशेषाधिकारों से मिलकर बनी होती है, जिसमें प्रत्येक में एक अनुमतियों का संग्रह होता है। ये भूमिकाएँ उपयोगकर्ताओं, उपयोगकर्ता समूहों, होस्ट, होस्ट समूहों, और सेवाओं को सौंपी जा सकती हैं। उदाहरण के लिए, इस संरचना को दिखाने के लिए फ्रीआईपीए में डिफ़ॉल्ट "उपयोगकर्ता प्रशासक" भूमिका को ध्यान में रखें।
उपयोगकर्ता प्रशासक
भूमिका में ये विशेषाधिकार होते हैं:
- उपयोगकर्ता प्रशासक
- समूह प्रशासक
- स्टेज उपयोगकर्ता प्रशासक
निम्नलिखित कमांड का उपयोग करके भूमिकाएँ, विशेषाधिकार और अनुमतियों को गणना किया जा सकता है:
# Using ldap
ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"
# Using ipa binary
ipa role-find
ipa role-show <role> --all
ipa privilege-find
ipa privilege-show <privilege> --all
ipa permission-find
ipa permission-show <permission> --all
हमला स्थिति उदाहरण
https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e में आप एक सरल उदाहरण पा सकते हैं कि कैसे कुछ अनुमतियों का दुरुपयोग करके डोमेन को कंप्रमाइज किया जा सकता है।
Linikatz/LinikatzV2
Privesc
रूट उपयोगकर्ता निर्माण
{% hint style="warning" %}
यदि आप नाम root
वाले नए उपयोगकर्ता बना सकते हैं, तो आप उसकी अनुकरण कर सकते हैं और आप किसी भी मशीन में रूट के रूप में SSH कर सकते हैं।
यह सुधार किया गया है। {% endhint %}
आप https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b में एक विस्तृत व्याख्या की जांच कर सकते हैं।
संदर्भ
- https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b
- https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a
- https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1
- https://www.youtube.com/watch?v=9dOu-7BTwPQ
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप चाहते हैं कि आपकी कंपनी HackTricks में विज्ञापित हो या HackTricks को PDF में डाउनलोड करें तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें
- हमारे विशेष NFTs कलेक्शन The PEASS Family खोजें
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह या मुझे ट्विटर 🐦 @carlospolopm** पर फॉलो** करें।
- अपने हैकिंग ट्रिक्स साझा करें द्वारा PRs सबमिट करके HackTricks और HackTricks Cloud github रेपो में।