FreeIPA Pentesting
Temel Bilgiler
FreeIPA, genellikle Unix ortamları için Microsoft Windows Active Directory'ye bir açık kaynak 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 & 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.
Parmak İzi
Dosyalar ve Ortam Değişkenleri
/etc/krb5.conf
dosyası, etki alanına kaydolmak için gerekli olan Kerberos istemci bilgilerini depolayan yerdir. Bu, KDC'lerin ve yönetici sunucuları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
konumundaki dosyada ayarlanmıştı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ğrulamayla 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önetmede, Kerberos biletlerini işlemede, şifreleri değiştirmede ve hizmet biletleri almak gibi işlevlerde merkezi rol oynar.
Ağ
Tipik bir FreeIPA sunucusu kurulumunu tasvir etmek için bir görsel sağlanmıştır.
Kimlik Doğrulama
FreeIPA'da Kerberos'u kullanarak kimlik doğrulama, Active Directory'dekiyle benzerdir. Etki alanı kaynaklarına erişim için geçerli bir Kerberos biletine ihtiyaç vardır ve bu bilet, FreeIPA etki alanı yapılandırmasına bağlı olarak çeşitli konumlarda depolanabilir.
CCACHE Bilet Dosyaları
Genellikle /tmp
içinde 600 izinlerle depolanan CCACHE dosyaları, taşınabilirlikleri nedeniyle kullanıcıların düz metin şifresi olmadan kimlik doğrulama için önemli olan Kerberos kimlik bilgilerini depolamak için kullanılan ikili formatlardır. Bir CCACHE biletini 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 gerekir.
Unix Anahtarlık
Alternatif olarak, CCACHE Biletleri Linux anahtarlığında depolanabilir ve bilet yönetimi üzerinde daha fazla kontrol sağlar. Bilet depolama kapsamı değişir (KEYRING:ad
, KEYRING:process:ad
, KEYRING:thread:ad
, KEYRING:session:ad
, KEYRING:persistent:kullanıcınumarası
), klist
bu bilgiyi kullanıcı için ayrıştırabilir. Ancak, Unix anahtarlığından bir CCACHE Biletini yeniden kullanmak zorluklar doğurabilir, Kerberos biletlerini çıkarmak için Tickey gibi araçlar mevcuttur.
Keytab
Kerberos prensiplerini ve şifrelenmiş anahtarları içeren Keytab dosyaları, prensibin şifresine ihtiyaç duymadan geçerli 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'te biletleri nasıl kullanacağınız hakkında daha fazla bilgiyi aşağıdaki bağlantıda bulabilirsiniz:
pageLinux Active DirectoryNumaralandırma
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.
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ı” olarak adlandırılan konteynerlere yerleştirilir. Bunlar Organizasyon Birimleri (OU) ile benzerdir.
FreeIPA'da varsayılan olarak, LDAP sunucusu anonim bağlantılara izin verir ve kimlik doğrulama yapılmadan büyük bir veri yelpazesi numaralandırılabilir. Bu, kimlik doğrulama yapılmadan mevcut tüm verilerin numaralandırılmasını sağlar:
Daha fazla bilgi edinmek için bir kimlik doğrulama oturumu kullanmanız gerekmektedir (kimlik doğrulama oturumu nasıl hazırlanacağını öğrenmek için Kimlik Doğrulama bölümüne bakınız).
Bir etki alanına katılmış makineden, etki alanını sıralamak için kurulu ikili dosyaları kullanabilirsiniz:
FreeIPA'nın admin kullanıcısı, AD'den domain adminlerine eşdeğerdir.
Hash'ler
IPA sunucusu'ndaki root kullanıcısı, şifre hash'lerine erişebilir.
Bir kullanıcının şifre hash'i, "userPassword" niteliğinde base64 olarak saklanır. Bu hash, SSHA512 (eski FreeIPA sürümleri) veya PBKDF2_SHA256 olabilir.
Şifrenin Nthash'i, sistem AD ile entegre ise "ipaNTHash" içinde base64 olarak saklanır.
Bu hash'leri kırmak için:
Eğer FreeIPA AD ile entegre edilmişse, ipaNTHash kolayca kırılabilir: base64'ü çözümleyin -> ASCII hex olarak yeniden kodlayın -> John The Ripper veya hashcat size hızlıca kırmak için yardımcı olabilir
Eğer eski bir FreeIPA sürümü kullanılıyorsa, yani SSHA512 kullanılıyorsa: base64'ü çözümleyin -> SSHA512 hash'ini bulun -> John The Ripper veya hashcat size kırmak için yardımcı olabilir
Eğer yeni bir FreeIPA sürümü kullanılıyorsa, yani PBKDF2_SHA256 kullanılıyorsa: base64'ü çözümleyin -> PBKDF2_SHA256'yı bulun -> uzunluğu 256 bayttır. John, 256 bit (32 bayt) ile çalışabilir -> Pseudo-rastgele fonksiyon olarak SHA-265 kullanılır, blok boyutu 32 bayttır -> PBKDF2_SHA256 hash'inin sadece ilk 256 bit'ini kullanabilirsiniz -> John The Ripper veya hashcat size kırmak için yardımcı olabilir
Hash'leri çıkarmak için FreeIPA sunucusunda root olmanız gerekir, burada dbscan
aracını kullanarak onları çıkarabilirsiniz:
HBAC-Kuralları
Bu kurallar, belirli izinleri kullanıcılara veya kaynaklara (ana bilgisayarlar, hizmetler, hizmet grupları...) sağlar.
Sudo-Kuralları
FreeIPA, sudo-kuralları aracılığıyla sudo izinleri üzerinde merkezi kontrol sağlar. Bu kurallar, etki alanı içindeki ana bilgisayarlarda sudo ile komutların yürütülmesine izin verir veya sınırlar. Bir saldırgan, bu kuralları inceleyerek ilgili ana bilgisayarları, kullanıcıları ve izin verilen komutları tespit edebilir.
Rol Tabanlı Erişim Kontrolü
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 Bilgisayarlara, Ana Bilgisayar 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ünün şu ayrıcalıkları vardır:
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:
Saldırı Senaryosu Örneği
https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e adresinde alan adını tehlikeye atmak için bazı izinleri kötüye kullanma basit bir örneği bulabilirsiniz.
Linikatz/LinikatzV2
İst Privileges Yükseltme
root kullanıcısı oluşturma
Eğer root
adında yeni bir kullanıcı oluşturabilirseniz, onun kimliğini alabilir ve herhangi bir makineye root olarak SSH ile bağlanabilirsiniz.
BU SORUN GİDERİLMİŞTİR.
Detaylı açıklamayı https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b adresinde bulabilirsiniz.
Referanslar
Last updated