FreeIPA Pentesting
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
FreeIPA, esasen Unix ortamları için Microsoft Windows Active Directory'ye açık kaynaklı bir alternatifdir. Active Directory'ye benzer bir yönetim için tam bir LDAP dizini ile MIT Kerberos Anahtar Dağıtım Merkezi'ni birleştirir. CA ve RA sertifika yönetimi için Dogtag Sertifika Sistemi'ni kullanarak, akıllı kartlar da dahil olmak üzere çok faktörlü kimlik doğrulamayı destekler. Unix kimlik doğrulama süreçleri için SSSD entegre edilmiştir.
/etc/krb5.conf
dosyası, alan kaydı için gerekli Kerberos istemci bilgilerini saklar. 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 genelindeki varsayılan ayarlar /etc/ipa/default.conf
dosyasında ayarlanır.
Alan içindeki ana bilgisayarların kimlik doğrulama süreçleri için /etc/krb5.keytab
konumunda bir krb5.keytab
dosyasına sahip olması gerekir.
Kerberos kimlik doğrulamasıyla ilgili belirli dosyalara ve ayarlara işaret eden çeşitli ortam değişkenleri (KRB5CCNAME
, KRB5_KTNAME
, KRB5_CONFIG
, KRB5_KDC_PROFILE
, KRB5RCACHETYPE
, KRB5RCACHEDIR
, KRB5_TRACE
, KRB5_CLIENT_KTNAME
, KPROP_PORT
) kullanılır.
ipa
, kdestroy
, kinit
, klist
, kpasswd
, ksu
, kswitch
ve kvno
gibi araçlar, FreeIPA alanlarını yönetmek, Kerberos biletlerini işlemek, şifreleri değiştirmek ve hizmet biletleri almak gibi işlevler için merkezi öneme sahiptir.
Tipik bir FreeIPA sunucu kurulumu gösteren bir illüstrasyon sağlanmıştır.
FreeIPA'daki kimlik doğrulama, Kerberos'u kullanarak Active Directory'deki gibi çalışır. Alan kaynaklarına erişim, FreeIPA alan yapılandırmasına bağlı olarak çeşitli konumlarda saklanabilen geçerli bir Kerberos biletini gerektirir.
CCACHE dosyaları, genellikle /tmp
konumunda 600 izinleriyle saklanır ve Kerberos kimlik bilgilerini saklamak için ikili formatlardır; bu, kullanıcıların düz metin şifreleri olmadan kimlik doğrulama yapmalarını sağlar. Bir CCACHE biletini ayrıştırmak için klist
komutu kullanılabilir ve geçerli bir CCACHE Biletini yeniden kullanmak, KRB5CCNAME
'i bilet dosyasının yoluna dışa aktarmayı içerir.
Alternatif olarak, CCACHE Biletleri Linux anahtarında saklanabilir ve bilet yönetimi üzerinde daha fazla kontrol sağlar. Bilet saklama kapsamı değişir (KEYRING:name
, KEYRING:process:name
, KEYRING:thread:name
, KEYRING:session:name
, KEYRING:persistent:uidnumber
), klist
bu bilgiyi kullanıcı için ayrıştırabilir. Ancak, Unix anahtarından bir CCACHE Biletini yeniden kullanmak zorluklar çıkarabilir; Kerberos biletlerini çıkarmak için Tickey gibi araçlar mevcuttur.
Kerberos ilkelerini ve şifrelenmiş anahtarları içeren keytab dosyaları, geçerli bilet verme biletleri (TGT) almak için kritik öneme sahiptir ve ilkenin şifresini gerektirmez. Keytab dosyalarından kimlik bilgilerini ayrıştırmak ve yeniden kullanmak, klist
gibi yardımcı programlar ve KeytabParser gibi betikler ile kolayca gerçekleştirilebilir.
Linux'ta biletleri nasıl kullanacağınız hakkında daha fazla bilgi bulabilirsiniz:
Linux Active Directorysayım işlemini ldap ve diğer ikili araçlar aracılığıyla gerçekleştirebilir veya FreeIPA sunucusunun 443 numaralı portundaki web sayfasına bağlanarak yapabilirsiniz.
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ı” olarak adlandırılan kapsayıcılara ayrılır. Bunlar, Organizasyonel Birimler (OU) ile benzerdir.
FreeIPA'da varsayılan olarak, LDAP sunucusu anonim bağlamalara izin verir ve büyük bir veri yelpazesi kimlik doğrulamasız olarak sayılabilir. Bu, kimlik doğrulamasız olarak mevcut olan tüm verileri sayabilir:
Daha fazla bilgi almak için kimlik doğrulamalı bir oturum kullanmanız gerekir (kimlik doğrulama bölümünü kontrol edin, kimlik doğrulamalı bir oturumun nasıl hazırlanacağını öğrenin).
Domain'a katılmış bir makineden kurulu ikilileri kullanarak alanı listeleyebilirsiniz:
FreeIPA'nın admin kullanıcısı, AD'den domain admin'lere eşdeğerdir.
IPA sunucusundaki root kullanıcısı, şifre hash'lerine erişime sahiptir.
Bir kullanıcının şifre hash'i, “userPassword” özelliği içinde base64 olarak saklanır. Bu hash SSHA512 (eski FreeIPA sürümleri) veya PBKDF2_SHA256 olabilir.
Sistem AD ile entegrasyon içindeyse, şifre ipaNTHash olarak base64 içinde saklanır.
Bu hash'leri kırmak için:
• Eğer freeIPA AD ile entegre ise, ipaNTHash'i kırmak kolaydır: base64'ü decode etmelisiniz -> ASCII hex olarak yeniden kodlayın -> John The Ripper veya hashcat hızlı bir şekilde kırmanıza yardımcı olabilir.
• Eski bir FreeIPA sürümü kullanılıyorsa, SSHA512 kullanılır: base64'ü decode etmelisiniz -> SSHA512 hash'ini bulmalısınız -> 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'ü decode etmelisiniz -> PBKDF2_SHA256'yı bulmalısınız -> uzunluğu 256 byte'dır. John 256 bit (32 byte) ile çalışabilir -> SHA-265, psödo-rastgele fonksiyon olarak kullanılır, blok boyutu 32 byte'dır -> PBKDF2_SHA256 hash'imizin yalnızca ilk 256 bit'ini kullanabilirsiniz -> John The Ripper veya hashcat kırmanıza yardımcı olabilir.
Hash'leri çıkarmak için FreeIPA sunucusunda root olmanız gerekir, burada dbscan
aracını kullanarak bunları çıkarabilirsiniz:
Kullanıcılara veya hostlara kaynaklar (hostlar, hizmetler, hizmet grupları...) üzerinde belirli izinler veren kurallardır.
FreeIPA, sudo izinleri üzerinde merkezi kontrol sağlar. Bu kurallar, alan içindeki hostlarda sudo ile komutların yürütülmesini sağlar veya sınırlar. Bir saldırgan, bu kuralları inceleyerek geçerli hostları, kullanıcıları ve izin verilen komutları belirleyebilir.
Bir rol, çeşitli ayrıcalıklardan oluşur; her biri bir dizi izin içerir. Bu roller Kullanıcılara, Kullanıcı Gruplarına, Ana Bilgilere, Ana Bilgi Gruplarına ve Hizmetlere atanabilir. Örneğin, bu yapıyı örneklendirmek için FreeIPA'daki varsayılan “Kullanıcı Yöneticisi” rolünü ele alalım.
Kullanıcı Yöneticisi
rolü bu ayrıcalıklara sahiptir:
Kullanıcı Yöneticileri
Grup Yöneticileri
Aşama Kullanıcı Yöneticileri
Aşağıdaki komutlarla roller, ayrıcalıklar ve izinler listelenebilir:
https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e adresinde, alanı tehlikeye atmak için bazı izinlerin nasıl kötüye kullanılacağına dair basit bir örnek bulabilirsiniz.
Eğer root
adında yeni bir kullanıcı oluşturabiliyorsanız, onu taklit edebilir ve herhangi bir makineye root olarak SSH ile bağlanabilirsiniz.
BU DÜZENLENMİŞTİR.
Detaylı bir açıklamayı https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b adresinde kontrol edebilirsiniz.
AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)