FreeIPA Pentesting

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मूल जानकारी

FreeIPA Microsoft Windows Active Directory के लिए एक ओपन-सोर्स वैकल्पिक है, मुख्य रूप से Unix वातावरणों के लिए। यह Active Directory के समान प्रबंधन के लिए MIT Kerberos Key Distribution Center के साथ एक पूर्ण LDAP निर्देशिका को संयोजित करता है। CA और RA प्रमाणपत्र प्रबंधन के लिए Dogtag Certificate System का उपयोग करते हुए, यह स्मार्टकार्ड सहित मल्टी-फैक्टर प्रमाणीकरण का समर्थन करता है। Unix प्रमाणीकरण प्रक्रियाओं के लिए SSSD एकीकृत है।

फिंगरप्रिंट्स

फ़ाइलें और पर्यावरण चर

  • /etc/krb5.conf पर फ़ाइल, जिसमें डोमेन में पंजीकरण के लिए आवश्यक Kerberos क्लाइंट जानकारी संग्रहित है। इसमें KDCs और व्यवस्थापक सर्वर के स्थान, डिफ़ॉल्ट सेटिंग्स, और मैपिंग शामिल हैं।

  • /etc/ipa/default.conf पर फ़ाइल में IPA क्लाइंट और सर्वर के लिए सिस्टम-व्यापी डिफ़ॉल्ट सेटिंग्स सेट किए गए हैं।

  • डोमेन में होस्ट को प्रमाणीकरण प्रक्रियाओं के लिए /etc/krb5.keytab पर krb5.keytab फ़ाइल होनी चाहिए।

  • विभिन्न पर्यावरण चर (KRB5CCNAME, KRB5_KTNAME, KRB5_CONFIG, KRB5_KDC_PROFILE, KRB5RCACHETYPE, KRB5RCACHEDIR, KRB5_TRACE, KRB5_CLIENT_KTNAME, KPROP_PORT) करोबेरोस प्रमाणीकरण के संबंधित फ़ाइल और सेटिंग्स को इंगित करने के लिए उपयोग किए जाते हैं।

बाइनरी

ipa, kdestroy, kinit, klist, kpasswd, ksu, kswitch, और kvno जैसे उपकरण FreeIPA डोमेन प्रबंधन, करोबेरोस टिकट, पासवर्ड बदलना, और सेवा टिकट प्राप्त करने जैसे अन्य कार्यों के लिए महत्वपूर्ण हैं।

नेटवर्क

एक चित्रण प्रदान किया गया है जो एक साधारण FreeIPA सर्वर सेटअप को दर्शाता है।

प्रमाणीकरण

FreeIPA में करोबेरोस का उपयोग करके प्रमाणीकरण, Active Directory में उसी तरह का है। डोमेन संसाधनों तक पहुंच के लिए एक वैध करोबेरोस टिकट की आवश्यकता होती है, जो FreeIPA डोमेन कॉन्फ़िगरेशन के आधार पर विभिन्न स्थानों पर संग्रहीत किया जा सकता है।

CCACHE टिकट फ़ाइलें

CCACHE फ़ाइलें, जो सामान्यत: /tmp में 600 अनुमतियों के साथ संग्रहीत होती हैं, करोबेरोस क्रेडेंशियल संग्रहण के लिए बाइनरी प्रारूप होती हैं, जो पोर्टेबिलिटी के कारण उपयोगकर्ता के प्लेनटेक्स्ट पासवर्ड के बिना प्रमाणीकरण के लिए महत्वपूर्ण हैं। CCACHE टिकट का पार्सिंग klist कमांड का उपयोग करके किया जा सकता है, और एक वैध CCACHE टिकट का पुनः उपयोग करने के लिए KRB5CCNAME को टिकट फ़ाइल के पथ पर निर्यात करना शामिल है।

Unix Keyring

वैकल्पिक रूप से, CCACHE टिकट को लिनक्स की कीरिंग में संग्रहीत किया जा सकता है, जो टिकट प्रबंधन पर अधिक नियंत्रण प्रदान करता है। टिकट संग्रहण का दायरा भिन्न होता है (KEYRING:name, KEYRING:process:name, KEYRING:thread:name, KEYRING:session:name, KEYRING:persistent:uidnumber), जिसे klist उपयोगकर्ता के लिए इस सूचना का पार्सिंग करने में सक्षम है। हालांकि, Unix कीरिंग से CCACHE टिकट का पुनः उपयोग करना चुनौतियों का सामना कर सकता है, जिसमें Tickey जैसे उपकरण उपलब्ध हैं करोबेरोस टिकट निकालने के लिए।

Keytab

करोबेरोस प्रिंसिपल्स और एन्क्रिप्टेड कुंजियों को संग्रहित करने वाली Keytab फ़ाइलें, मुख्य रूप से प्रिंसिपल के पासवर्ड की आवश्यकता न होने पर वैध टिकट ग्रांटिंग टिकट (TGT) प्राप्त करने के लिए महत्वपूर्ण हैं। Keytab फ़ाइल से क्रेडेंशियल का पार्सिंग और पुनः उपयोग करना आसानी से klist और KeytabParser जैसे स्क्रिप्ट के साथ किया जा सकता है।

चीटशीट

आप निम्नलिखित लिंक में लिनक्स में टिकट का उपयोग कैसे करें के बारे में अधिक जानकारी पा सकते हैं:

pageLinux Active Directory

गणना

आप लडप और अन्य बाइनरी उपकरणों के माध्यम से गणना कर सकते हैं, या FreeIPA सर्वर के पोर्ट 443 में वेब पेज से कनेक्ट करके भी कर सकते हैं।

होस्ट, उपयोगकर्ता, और समूह

होस्ट, उपयोगकर्ता, और समूह बनाना संभव है। होस्ट और उपयोगकर्ता को "होस्ट समूह" और "उपयोगकर्ता समूह" कहलाने वाले कंटेनर में वर्गीकृत किया जा सकता है। ये संगठनात्मक इकाइयों (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

FreeIPA का व्यवस्थापक उपयोगकर्ता AD से डोमेन व्यवस्थापकों के समकक्ष है।

हैश

IPA सर्वर के रूट उपयोगकर्ता के पास पासवर्ड हैश तक पहुंच है।

  • एक उपयोगकर्ता का पासवर्ड हैश “userPasswordविशेषता में base64 के रूप में संग्रहीत होता है। यह हैश SSHA512 (पुराने संस्करणों के लिए FreeIPA) या PBKDF2_SHA256 हो सकता है।

  • पासवर्ड का NthashipaNTHash” में 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

सुडो-नियम

FreeIPA सुडो-नियम के माध्यम से सुडो अनुमतियों पर केंद्रीकृत नियंत्रण सक्षम करता है। ये नियम डोमेन के होस्ट पर सुडो के साथ कमांड का निषेध या अनुमति देते हैं। एक हमलावर संभावित रूप से इन नियमसमूहों की जांच करके लागू होने वाले होस्ट, उपयोगकर्ता, और अनुमत कमांड्स की पहचान कर सकता है।

# 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

रूट उपयोगकर्ता निर्माण

यदि आप नाम root वाले नए उपयोगकर्ता बना सकते हैं, तो आप उसकी अनुकरण कर सकते हैं और आप किसी भी मशीन में रूट के रूप में SSH कर सकते हैं।

यह सुधार किया गया है।

आप https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b में एक विस्तृत व्याख्या की जांच कर सकते हैं।

संदर्भ

शून्य से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated