13 KiB
FreeIPA Pentesting
AWS hackleme becerilerinizi sıfırdan kahraman seviyesine kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerden oluşan koleksiyonumuz olan The PEASS Ailesi'ni keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @hacktricks_live'ı takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.
Temel Bilgiler
FreeIPA, öncelikle Unix ortamları için Microsoft Windows Active Directory'ye bir açık kaynaklı alternatiftir. Active Directory'ye benzer şekilde, yönetim için bir MIT Kerberos Anahtar Dağıtım Merkezi ile birlikte tam bir LDAP dizini birleştirir. CA ve RA sertifika yönetimi için Dogtag Certificate System kullanarak, akıllı kartlar da dahil olmak üzere çok faktörlü kimlik doğrulama destekler. Unix kimlik doğrulama süreçleri için SSSD entegre edilmiştir.
Parmak İzi
Dosyalar ve Ortam Değişkenleri
/etc/krb5.conf
dosyası, etki alanına kaydolmak için gereken Kerberos istemci bilgilerini depolayan yerdir. Bu, KDC'lerin ve yönetici sunucularının konumlarını, varsayılan ayarları ve eşlemeleri içerir.- IPA istemcileri ve sunucuları için sistem genelinde varsayılanlar,
/etc/ipa/default.conf
konumunda bulunan dosyada ayarlanır. - Etki alanındaki ana bilgisayarlar, kimlik doğrulama süreçleri için
/etc/krb5.keytab
konumunda birkrb5.keytab
dosyasına sahip olmalıdır. - Çeşitli ortam değişkenleri (
KRB5CCNAME
,KRB5_KTNAME
,KRB5_CONFIG
,KRB5_KDC_PROFILE
,KRB5RCACHETYPE
,KRB5RCACHEDIR
,KRB5_TRACE
,KRB5_CLIENT_KTNAME
,KPROP_PORT
), Kerberos kimlik doğrulamasıyla ilgili belirli dosyalara ve ayarlara işaret etmek için kullanılır.
İkili Dosyalar
ipa
, kdestroy
, kinit
, klist
, kpasswd
, ksu
, kswitch
ve kvno
gibi araçlar, FreeIPA etki alanlarını yönetme, Kerberos biletleriyle ilgili işlemler yapma, şifreleri değiştirme ve hizmet biletleri alma gibi işlevlerde merkezi bir rol oynar.
Ağ
Tipik bir FreeIPA sunucusu kurulumunu göstermek için bir görsel sağlanmaktadır.
Kimlik Doğrulama
FreeIPA'da Kerberos kullanarak kimlik doğrulama, Active Directory ile benzerlik gösterir. Etki alanı kaynaklarına erişim için geçerli bir Kerberos bileti gereklidir ve bu bilet, FreeIPA etki alanı yapılandırmasına bağlı olarak çeşitli konumlarda depolanabilir.
CCACHE Bilet Dosyaları
CCACHE dosyaları, taşınabilirlikleri nedeniyle kullanıcının düz metin parolası olmadan kimlik doğrulama için önemli olan Kerberos kimlik bilgilerini depolamak için kullanılan /tmp
gibi genellikle 600 izinli ikili formatlardır. Bir CCACHE bileti ayrıştırmak için klist
komutu kullanılabilir ve geçerli bir CCACHE Biletini yeniden kullanmak için KRB5CCNAME
'i bilet dosyasının yoluna ihraç etmek gereklidir.
Unix Anahtar Halkası
Alternatif olarak, CCACHE Biletleri Linux anahtar halkasında depolanabilir ve bu, bilet yönetimi konusunda daha fazla kontrol sağlar. Bilet depolama kapsamı değişir (KEYRING:ad
, KEYRING:süreç:ad
, KEYRING:iş parçacığı:ad
, KEYRING:oturum:ad
, KEYRING:kalıcı:uidnumarası
) ve kullanıcı için bu bilgileri ayrıştırmak için klist
kullanılabilir. Bununla birlikte, Unix anahtar halkasından bir CCACHE Biletini yeniden kullanmak zorluklar yaratabilir ve Kerberos biletlerini çıkarmak için Tickey gibi araçlar mevcuttur.
Keytab
Kerberos prensiplerini ve şifrelenmiş anahtarları içeren keytab dosyaları, prensibin parolasına ihtiyaç duymadan geçerli bir bilet alma işlemi için kritiktir. Keytab dosyalarından kimlik bilgilerini ayrıştırmak ve yeniden kullanmak, klist
gibi yardımcı programlar ve KeytabParser gibi betiklerle kolayca gerçekleştirilebilir.
Hile Kağıdı
Linux'ta biletleri nasıl kullanacağınız hakkında daha fazla bilgiyi aşağıdaki bağlantıda bulabilirsiniz:
{% content-ref url="privilege-escalation/linux-active-directory.md" %} linux-active-directory.md {% endcontent-ref %}
Numaralandırma
{% hint style="warning" %} Numaralandırmayı ldap ve diğer ikili araçlar aracılığıyla veya FreeIPA sunucusunun 443 numaralı bağlantı noktasına bağlanarak gerçekleştirebilirsiniz. {% endhint %}
Ana Bilgisayarlar, Kullanıcılar ve Gruplar
Ana bilgisayarlar, kullanıcılar ve gruplar oluşturmak mümkündür. Ana bilgisayarlar ve kullanıcılar sırasıyla "Ana Bilgisayar Grupları" ve "Kullanıcı Grupları" adı verilen konteynerlara yerleştirilir. Bunlar, Organizasyon Birimleri (OU) ile benzerdir.
FreeIPA'da, LDAP sunucusu varsayılan olarak anonim bağlantılara izin verir ve kimlik doğrulama yapılmadan büyük bir veri yelpazesi numaralandırılabilir. Bu, kimlik doğrulamasız olarak mevcut olan tüm verileri numaralandırabilir:
ldapsearch -x
Daha fazla bilgi almak için bir kimlik doğrulama oturumu kullanmanız gerekmektedir (bir kimlik doğrulama oturumu nasıl hazırlanacağını öğrenmek için Kimlik Doğrulama bölümüne bakın).
# 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"
Bir etki alanına katılmış bir makineden, etki alanını sıralamak için kurulu ikili dosyaları kullanabilirsiniz:
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'nın admin kullanıcısı, AD'deki domain adminlerine eşdeğerdir. {% endhint %}
Hashler
IPA sunucusundaki root kullanıcısı, şifre hash'lerine erişebilir.
- Bir kullanıcının şifre hash'i "userPassword" özniteliğinde base64 olarak saklanır. Bu hash, SSHA512 (eski FreeIPA sürümleri) veya PBKDF2_SHA256 olabilir.
- Şifrenin Nthashi, sistem AD ile entegre ise "ipaNTHash" olarak base64 olarak saklanır.
Bu hash'leri kırmak için:
-
FreeIPA AD ile entegre ise, ipaNTHash kolayca kırılabilir: Base64'ü çözümle -> ASCII hex olarak yeniden kodla -> John The Ripper veya hashcat hızlıca kırmanıza yardımcı olabilir.
-
Eski bir FreeIPA sürümü kullanılıyorsa, SSHA512 kullanılır: Base64'ü çözümle -> SSHA512 hash'ini bul -> John The Ripper veya hashcat kırmanıza yardımcı olabilir.
-
Yeni bir FreeIPA sürümü kullanılıyorsa, PBKDF2_SHA256 kullanılır: Base64'ü çözümle -> PBKDF2_SHA256'yı bul -> uzunluğu 256 bayttır. John, 256 bit (32 bayt) ile çalışabilir -> Pseudo-rastgele işlev olarak SHA-265 kullanılır, blok boyutu 32 bayttır -> PBKDF2_SHA256 hash'inin sadece ilk 256 bitini kullanabilirsiniz -> John The Ripper veya hashcat kırmanıza yardımcı olabilir.
Hash'leri çıkarmak için FreeIPA sunucusunda root olmanız gerekmektedir, burada dbscan
aracını kullanarak bunları çıkarabilirsiniz:
HBAC-Kuralları
Bu kurallar, kullanıcılara veya kaynaklara (sunucular, hizmetler, hizmet grupları...) belirli izinler veren kurallardır.
# 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
Sudo-Kuralları
FreeIPA, sudo-kuralları aracılığıyla merkezi kontrol sağlayarak sudo izinlerini etkinleştirir. Bu kurallar, etki alanı içindeki ana bilgisayarlarda sudo ile komutların yürütülmesini izin verir veya sınırlar. Bir saldırgan, bu kuralları inceleyerek ilgili ana bilgisayarları, kullanıcıları ve izin verilen komutları tespit edebilir.
# 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
Rol Tabanlı Erişim Kontrolü
Bir rol, çeşitli ayrıcalıkları içeren bir dizi izini kapsar. Bu roller, Kullanıcılara, Kullanıcı Gruplarına, Sunuculara, Sunucu Gruplarına ve Hizmetlere atanabilir. Örneğin, bu yapıyı açıklamak için FreeIPA'daki varsayılan "Kullanıcı Yöneticisi" rolünü düşünelim.
Kullanıcı Yöneticisi
rolü şu ayrıcalıklara sahiptir:
- Kullanıcı Yöneticileri
- Grup Yöneticileri
- Aşama Kullanıcı Yöneticileri
Aşağıdaki komutlarla rolleri, ayrıcalıkları ve izinleri sıralamak mümkündür:
# 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
Saldırı Senaryo Örneği
https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e adresinde, bir alanı tehlikeye atmak için bazı izinleri kötüye nasıl kullanacağınızın basit bir örneğini bulabilirsiniz.
Linikatz/LinikatzV2
Privilege Escalation (Privesc)
root kullanıcısı oluşturma
{% hint style="warning" %}
Eğer root
adında yeni bir kullanıcı oluşturabilirseniz, onun yerine geçebilir ve herhangi bir makineye root olarak SSH ile bağlanabilirsiniz.
BU DÜZELTİLDİ. {% endhint %}
Detaylı bir açıklamayı https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b adresinde bulabilirsiniz.
Referanslar
- 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 hackleme konusunda sıfırdan kahraman olmak için htARTE (HackTricks AWS Red Team Expert)'ı öğrenin!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te tanıtmak veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerden oluşan koleksiyonumuz olan The PEASS Family'yi keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya bizi Twitter'da 🐦 @hacktricks_live** takip edin.**
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github reposuna PR göndererek paylaşın.