FreeIPA Pentesting

Reading time: 7 minutes

tip

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)

HackTricks'i Destekleyin

Temel Bilgiler

FreeIPA, esas olarak 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.

Parmak İzi

Dosyalar ve Ortam Değişkenleri

  • /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.

İkili Dosyalar

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.

Kimlik Doğrulama

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 Bilet Dosyaları

CCACHE dosyaları, genellikle /tmp dizininde 600 izinleriyle saklanır ve Kerberos kimlik bilgilerini depolamak 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.

Unix Anahtarlığı

Alternatif olarak, CCACHE Biletleri Linux anahtarlığı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 anahtarlığından bir CCACHE Biletini yeniden kullanmak zorluklar çıkarabilir; Kerberos biletlerini çıkarmak için Tickey gibi araçlar mevcuttur.

Keytab

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.

Hızlı Referans

Linux'ta biletleri nasıl kullanacağınız hakkında daha fazla bilgi bulabilirsiniz:

Linux Active Directory

Sayım

warning

ldap ve diğer ikili araçlar aracılığıyla veya FreeIPA sunucusunun 443 numaralı portundaki web sayfasına bağlanarak sayım 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 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:

ldapsearch -x

Daha fazla bilgi almak için kimlik doğrulamalı bir oturum kullanmanız gerekir (kimlik doğrulamalı bir oturum hazırlamak için Kimlik Doğrulama bölümüne bakın).

bash
# 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 alan katılımlı makineden kurulu ikili dosyaları kullanarak alanı listeleyebilirsiniz:

bash
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

note

FreeIPA'nın admin kullanıcısı, AD'den domain admins ile eşdeğerdir.

Hashes

IPA server'daki root kullanıcısı, şifre hash'lerine erişime sahiptir.

  • Bir kullanıcının şifre hash'i, “userPasswordattribute'unda base64 olarak saklanır. Bu hash SSHA512 (eski FreeIPA sürümleri) veya PBKDF2_SHA256 olabilir.
  • Şifre ipaNTHash olarak base64'te saklanır, eğer sistem AD ile entegrasyon içindeyse.

Bu hash'leri kırmak için:

• Eğer freeIPA AD ile entegre ise, ipaNTHash'i kırmak kolaydır: base64decode 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 bulun -> 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ı bulun -> length'i 256 byte'dır. John 256 bit (32 byte) ile çalışabilir -> SHA-265, pseudo-random fonksiyonu 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:

HBAC-Rules

Kullanıcılara veya hostlara kaynaklar (hostlar, hizmetler, hizmet grupları...) üzerinde belirli izinler veren kurallardır.

bash
# 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-Rules

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.

bash
# 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çermektedir ve her biri bir dizi izin kapsamaktadır. Bu roller Kullanıcılara, Kullanıcı Gruplarına, Ana Bilgilere, Ana Bilgi Gruplarına ve Hizmetlere atanabilir. Örneğin, bu yapıyı örneklemek 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:

bash
# 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ı Senaryosu Örneği

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.

Linikatz/LinikatzV2

Privesc

root kullanıcı oluşturma

warning

Eğer root adında yeni bir kullanıcı oluşturabiliyorsanız, onun kimliğine bürünebilir 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.

Referanslar

tip

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)

HackTricks'i Destekleyin