13 KiB
macOS Red Teaming
AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Red Team Expert)!
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 The PEASS Family'yi keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.
MDM'leri Kötüye Kullanma
- JAMF Pro:
jamf checkJSSConnection
- Kandji
Yönetim platformuna erişmek için yönetici kimlik bilgilerini ele geçirmeyi başarırsanız, kötü amaçlı yazılımınızı makinelerde dağıtarak potansiyel olarak tüm bilgisayarları tehlikeye atabilirsiniz.
MacOS ortamlarında kırmızı takım çalışması yaparken MDM'lerin nasıl çalıştığı hakkında biraz anlayışa sahip olmanız şiddetle önerilir:
{% content-ref url="macos-mdm/" %} macos-mdm {% endcontent-ref %}
MDM'yi C2 Olarak Kullanma
Bir MDM, profil yükleme, sorgulama veya kaldırma, uygulama yükleme, yerel yönetici hesapları oluşturma, firmware şifresi ayarlama, FileVault anahtarını değiştirme gibi izinlere sahip olacaktır...
Kendi MDM'nizi çalıştırmak için https://mdmcert.download/ adresinden elde etmeye çalışabileceğiniz bir satıcı tarafından imzalanan CSR'ınıza ihtiyacınız vardır. Apple cihazları için kendi MDM'nizi çalıştırmak için MicroMDM kullanabilirsiniz.
Ancak, kayıtlı bir cihaza bir uygulama yüklemek için hala bir geliştirici hesabı tarafından imzalanmış olması gerekmektedir... ancak, MDM kaydı sırasında cihaz, MDM'nin SSL sertifikasını güvenilir bir CA olarak ekler, böylece artık herhangi bir şeyi imzalayabilirsiniz.
Bir cihazı MDM'ye kaydetmek için kök olarak bir mobileconfig
dosyası yüklemeniz gerekmektedir, bu dosya bir pkg dosyası aracılığıyla teslim edilebilir (zip içinde sıkıştırabilir ve Safari'den indirildiğinde açılacaktır).
Mythic agent Orthrus bu tekniği kullanır.
JAMF PRO'yu Kötüye Kullanma
JAMF, özel komut dosyaları (sistem yöneticisi tarafından geliştirilen komut dosyaları), yerel yükler (yerel hesap oluşturma, EFI şifresi ayarlama, dosya/süreç izleme...) ve MDM (cihaz yapılandırmaları, cihaz sertifikaları...) çalıştırabilir.
JAMF otomatik kaydı
https://<şirket-adı>.jamfcloud.com/enroll/
gibi bir sayfaya giderek otomatik kaydın etkin olup olmadığını kontrol edebilirsiniz. Etkinse erişim için kimlik bilgileri isteyebilir.
JamfSniper.py betiğini kullanarak bir parola sıçratma saldırısı gerçekleştirebilirsiniz.
Ayrıca, uygun kimlik bilgilerini bulduktan sonra diğer kullanıcı adlarını brute-force yöntemiyle deneyebilirsiniz:
JAMF cihaz Kimlik Doğrulama
jamf
ikili dosyası, keşif zamanında herkesle paylaşılan anahtar zincirini açmak için gizli anahtarı içeriyordu: jk23ucnq91jfu9aj
.
Ayrıca, jamf LaunchDaemon olarak /Library/LaunchAgents/com.jamf.management.agent.plist
konumunda kalıcı olarak çalışır.
JAMF Cihaz Devralma
jamf
'ın kullanacağı JSS (Jamf Yazılım Sunucusu) URL'si /Library/Preferences/com.jamfsoftware.jamf.plist
konumundadır.
Bu dosya temel olarak URL'yi içerir:
{% code overflow="wrap" %}
plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
[...]
<key>is_virtual_machine</key>
<false/>
<key>jss_url</key>
<string>https://halbornasd.jamfcloud.com/</string>
<key>last_management_framework_change_id</key>
<integer>4</integer>
[...]
{% endcode %}
Böylece, bir saldırgan, bu dosyayı üzerine yazan kötü amaçlı bir paket (pkg
) bırakabilir ve kurulduğunda URL'yi Typhon ajanından bir Mythic C2 dinleyicisine ayarlayabilir, böylece JAMF'ı C2 olarak kullanabilir.
# After changing the URL you could wait for it to be reloaded or execute:
sudo jamf policy -id 0
# TODO: There is an ID, maybe it's possible to have the real jamf connection and another one to the C2
{% endcode %}
JAMF Taklit Etme
Bir cihaz ve JMF arasındaki iletişimi taklit etmek için şunlara ihtiyacınız vardır:
- Cihazın UUID'si:
ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'
- Cihaz sertifikasını içeren JAMF anahtar zinciri:
/Library/Application\ Support/Jamf/JAMF.keychain
Bu bilgilerle, çalınan Donanım UUID'ye sahip ve SIP devre dışı bırakılmış bir VM oluşturun, JAMF anahtar zincirini bırakın, Jamf ajanını kancalayın ve bilgilerini çalın.
Sırların Çalınması
Ayrıca, özel betikleri Jamf aracılığıyla çalıştırmak isteyebilecek yöneticilerin yerini izleyebilirsiniz. Bu betikler buraya yerleştirilir, çalıştırılır ve kaldırılır. Bu betikler kimlik bilgilerini içerebilir.
Ancak, kimlik bilgileri bu betiklere parametreler olarak geçirilebilir, bu yüzden ps aux | grep -i jamf
'ı (root olmadan bile) izlemeniz gerekecektir.
JamfExplorer.py adlı betik, yeni dosyaların eklenmesini ve yeni işlem argümanlarını dinleyebilir.
macOS Uzaktan Erişim
Ve ayrıca MacOS "özel" ağ protokolleri hakkında:
{% content-ref url="../macos-security-and-privilege-escalation/macos-protocols.md" %} macos-protocols.md {% endcontent-ref %}
Active Directory
Bazı durumlarda MacOS bilgisayarının bir AD'ye bağlı olduğunu göreceksiniz. Bu senaryoda, alıştığınız gibi aktif dizini numaralandırmaya çalışmalısınız. Aşağıdaki sayfalarda yardım bulun:
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} pentesting-ldap.md {% endcontent-ref %}
{% content-ref url="../../windows-hardening/active-directory-methodology/" %} active-directory-methodology {% endcontent-ref %}
{% content-ref url="../../network-services-pentesting/pentesting-kerberos-88/" %} pentesting-kerberos-88 {% endcontent-ref %}
Size yardımcı olabilecek bazı yerel MacOS araçları dscl
'dir:
dscl "/Active Directory/[Domain]/All Domains" ls /
Ayrıca, MacOS için AD'yi otomatik olarak sıralamak ve kerberos ile oynamak için bazı araçlar hazırlanmıştır:
- Machound: MacHound, MacOS ana bilgisayarlarında Active Directory ilişkilerini toplamaya ve içe aktarmaya izin veren Bloodhound denetim aracının bir uzantısıdır.
- Bifrost: Bifrost, macOS üzerinde Heimdal krb5 API'leri ile etkileşim kurmak için tasarlanmış bir Objective-C projesidir. Projenin amacı, hedefte başka bir çerçeve veya paket gerektirmeden yerel API'leri kullanarak macOS cihazlarında Kerberos etrafında daha iyi güvenlik testleri yapmaktır.
- Orchard: Active Directory sıralaması yapmak için JavaScript for Automation (JXA) aracı.
Alan Bilgisi
echo show com.apple.opendirectoryd.ActiveDirectory | scutil
Kullanıcılar
MacOS kullanıcılarının üç türü vardır:
- Yerel Kullanıcılar - Yerel OpenDirectory hizmeti tarafından yönetilen, Active Directory ile herhangi bir şekilde bağlantılı olmayan kullanıcılardır.
- Ağ Kullanıcıları - Geçici Active Directory kullanıcılarıdır ve kimlik doğrulaması için DC sunucusuna bağlantı gerektirirler.
- Mobil Kullanıcılar - Kimlik bilgileri ve dosyaları için yerel bir yedek olan Active Directory kullanıcılarıdır.
Kullanıcılar ve gruplar hakkındaki yerel bilgiler, /var/db/dslocal/nodes/Default klasöründe saklanır.
Örneğin, mark adlı kullanıcıyla ilgili bilgiler /var/db/dslocal/nodes/Default/users/mark.plist dosyasında saklanır ve admin adlı grupla ilgili bilgiler /var/db/dslocal/nodes/Default/groups/admin.plist dosyasında bulunur.
MacHound, Bloodhound veritabanına HasSession ve AdminTo kenarlarına ek olarak üç yeni kenar ekler:
- CanSSH - ana bilgisayara SSH yapmaya izin verilen varlık
- CanVNC - ana bilgisayara VNC yapmaya izin verilen varlık
- CanAE - ana bilgisayarda AppleEvent komut dosyalarını çalıştırmaya izin verilen varlık
#User enumeration
dscl . ls /Users
dscl . read /Users/[username]
dscl "/Active Directory/TEST/All Domains" ls /Users
dscl "/Active Directory/TEST/All Domains" read /Users/[username]
dscacheutil -q user
#Computer enumeration
dscl "/Active Directory/TEST/All Domains" ls /Computers
dscl "/Active Directory/TEST/All Domains" read "/Computers/[compname]$"
#Group enumeration
dscl . ls /Groups
dscl . read "/Groups/[groupname]"
dscl "/Active Directory/TEST/All Domains" ls /Groups
dscl "/Active Directory/TEST/All Domains" read "/Groups/[groupname]"
#Domain Information
dsconfigad -show
Daha fazla bilgi için https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/ adresine bakabilirsiniz.
Keychain'e Erişim
Keychain, muhtemelen bir prompt oluşturmadan erişilen hassas bilgileri içerir ve bu da bir kırmızı takım egzersizinde ilerlemeye yardımcı olabilir:
{% content-ref url="macos-keychain.md" %} macos-keychain.md {% endcontent-ref %}
Harici Hizmetler
MacOS Kırmızı Takım çalışması, genellikle MacOS'un doğrudan birkaç harici platformla entegre olduğu normal bir Windows Kırmızı Takım çalışmasından farklıdır. MacOS'un yaygın bir yapılandırması, OneLogin senkronize kimlik bilgileri kullanarak bilgisayara erişim sağlamak ve OneLogin aracılığıyla birkaç harici hizmete (github, aws gibi) erişmektir.
Çeşitli Kırmızı Takım teknikleri
Safari
Safari'de bir dosya indirildiğinde, eğer "güvenli" bir dosya ise, otomatik olarak açılır. Örneğin, bir zip dosyası indirirseniz, otomatik olarak açılır:
Referanslar
- https://www.youtube.com/watch?v=IiMladUbL6E
- https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6
- https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0
- Come to the Dark Side, We Have Apples: Turning macOS Management Evil
- OBTS v3.0: "An Attackers Perspective on Jamf Configurations" - Luke Roberts / Calum Hall
AWS hackleme konusunda sıfırdan kahramana dönüşmek için htARTE (HackTricks AWS Red Team Expert)'ı öğrenin!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı yapmak 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 Family'yi keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya bizi Twitter 🐦 @carlospolopm'da takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github reposuna PR göndererek paylaşın.