Reel HackTheBox Rehberi
Özet
Reel bir Windows Active Directory makinesidir ve HTB'de sert bir kutu olarak kabul edilir. Bu kutu, diğer kutularda nadiren bulunan bir kimlik avı senaryosu sunarak benzersizliğiyle öne çıkar. FTP hizmetinin numaralandırılmasıyla başlayarak, bir kullanıcının e-posta adresini ortaya çıkaran bazı dosyalar bulunur. Bundan sonra bir kimlik avı e-postası gönderilir, böylece eke tıklandığında ilk erişim elde edilir. İlk erişimden sonra ayrıcalık yükseltme kısmı, Active Directory altyapısındaki hakların kötüye kullanılması yoluyla yapılır.
İçindekiler
- Sayım
- İlk Erişim
- Yanal Hareket 1 (nico'dan tom'a)
- Yanal Hareket 2 (Tom'dan Claire'e)
- Ayrıcalık Yükseltmesi (claire'den yöneticiye)
Sayım
Port ve servis taramasıyla numaralandırmaya başlama:
Varsayılan betik taramasının önerdiği gibi, 21 numaralı portta Anonymous FTP oturum açmaya izin veriliyor . Bu nedenle, FTP'ye Anonymous :: Anonymous olarak oturum açın. Oturum açtıktan sonra, AppLocker.docx , readme.txt ve Windows Event Forwarding.docx adlı 3 dosyadan oluşan bir Documents dizini olduğu görülebilir . Bu dosyaları yerel olarak indirdikten sonra daha fazla bilgi edinilebilir.
Şimdi readme.txt dosyasının içeriğini okuyalım .
Yukarıda gösterildiği gibi readme.txt dosyası rtf format prosedürleriyle ilgili bir iletişim içeriyor . Belgenin belirli format dosyasını e-postayla göndermeyi istediği anlaşılıyor. “ Windows Event Forwarding.docx ” dosyası bir belge dosyasıdır ve çoğu durumda, daha sonra oturum açmak/e-posta göndermek için meşru bir kullanıcı adı olarak kullanılabilen yaratıcı adını içerir.
Creator adını kontrol etmek için exiftool'u şu komutla kullanabilirsiniz:
İlk Erişim
Görülen Creator adı nico@megabank.com'dur . Hatırlarsak , readme.txt dosyası bir rtf dosyasını e-posta adresine e-postayla göndermekten bahsediyordu . Kötü amaçlı bir rtf dosyasını ek olarak e-postayla göndermeyi deneyebiliriz, böylece kullanıcı bunu işlerse ters kabuğu elde edebilmeliyiz.
İlk olarak, elde edilen e-posta kimliğine bir e-posta gönderip gönderemeyeceğimizi kontrol edebiliriz. Bunu yapmak için iletişim kurmak ve e-postanın alındığına dair bir onay almak için telnet kullanıyoruz.
Hedef e-posta doğrulandıktan sonra, kurbana gönderilecek .rtf dosyasını oluşturma zamanı gelir. RTF dosyaları oldukça çok yönlüdür ve çok çeşitli kelime işleme yazılımları tarafından desteklenir, bu da belgeleri farklı platformlar ve uygulamalar arasında paylaşma konusunda popülerliklerini artırır. Temelde düz metin belgeleri olan bu dosyalara Microsoft Word, Google Docs ve LibreOffice dahil olmak üzere çok sayıda kelime işlemcisi kullanılarak erişilebilir ve bunlar değiştirilebilir.
Burada .rtf dosyası oluşturmak için kullanılabilecek bir araç takımı betiği var . Betik buradan indirilebilir ( https://github.com/bhdresh/CVE-2017-0199.git ).
Exploit kullanımına göre scriptin bir sunucuda barındırılması gereken bir .hta dosyası veya .doc dosyası olması gerekiyor, böylece exploit .hta dosyasını kullanarak bir .rtf dosyası üretebiliyor.
.hta dosyası oluşturmak için msfvenom aşağıdaki komutla kullanılabilir:
file.hta dosyası oluşturulduktan sonra dosyayı barındırmak için 80 numaralı porttan yerel olarak bir sunucu başlatılabilir.
Artık exploit, .rtf dosyasını oluşturmak için aşağıdaki komutla kullanılabilir:
sendEmail aracı Kali Linux içerisinde hedef mail id'sine (yani nico@megabank.com) e -posta göndermek için kullanılabilir ve raj.rtf dosyası ek olarak kullanılabilir.
Bu e-postayı göndermeden önce msfvenom yükümüzde belirtildiği gibi 443 numaralı portta netcat dinleyicisini başlatmamız gerekiyor .
E-posta gönderildiğinde ve kurban ekteki dosyaya tıkladığında, 443 numaralı portta ters kabuk bağlantısı alıyoruz. Ters kabuk elde edildikten sonra, user.txt bayrağı nico kullanıcısının masaüstünde bulunabilir.
Yanal Hareket 1 (nico'dan tom'a)
Nico kullanıcısı olarak ilk erişimden sonra , kullanıcının masaüstüne bir cred.xml dosyası yerleştirilir. cred.xml dosyasının içeriğini okuduğunuzda , HTB\Tom kullanıcı adı ve serileştirilmiş biçimde bir parola olduğu görülebilir. Serileştirilmiş parolayı oluşturmak için PowerShell'de yerleşik olan bir cmdlet kullanılabilir, yani Import-Clixml . Aşağıdaki komut cred.xml dosya içeriğini serileştirmek için kullanılabilir:
Elde edilen deserialize edilmiş şifre 1ts-mag1c!!! .
Artık Tom kullanıcısının şifresini aldıktan sonra ssh kullanarak Tom kullanıcısı olarak giriş yapabiliriz.
Yanal Hareket 2 (Tom'dan Claire'e)
Tom kullanıcısı olarak oturum açtıktan sonra , Masaüstünde Bloodhound adında bir dizin ve note.txt adında bir metin dosyası içeren bir AD Denetim klasörü bulunur . note.txt dosyasının içeriğini okuduğunuzda, kullanıcıdan Domain Admin'e hiçbir AD saldırı yolu olmadığını ve denetimin tekrar yapılması gerektiğini belirten bulgular hakkında bir not bulunur.
Bloodhound klasörü içindeki Ingestors dizini eski denetim bulgularını içeriyor gibi görünüyor, bu nedenle sonuçları yakalamak için bloodhound'u hedef sistemde tekrar çalıştırmak daha iyi olacaktır.
Bu nedenle, SharpHound.ps1 betiğini aşağıdaki bağlantıdan indirin: https://github.com/BloodHoundAD/BloodHound/blob/master/Collectors/SharpHound.ps1
SharpHound.ps1 dosyasını Kali'den hedef Windows makinesine aktarmak için impacket-smbserver betiğini kullanacağız .
Hedef makinede alınan ilk kabuğun içinde, dosyayı almak için aşağıdaki komutu çalıştırın:
Dosya kopyalandıktan sonra şimdi SharpHound.ps1 modülünü çalıştırıyoruz.
Bloodhound çalıştırıldıktan sonra sonuçlar 20230102182633_BloodHound.zip dosyasında görülebilir .
Bundan dolayı zip dosyasını smb servisini kullanarak aşağıdaki komutla kali makinesine kopyalayabiliriz:
Sonuçları görsel olarak analiz etmek için Bloodhound aracını çalıştıracağız. Ancak önce neo4j sunucusunu şu komutla başlatacağız:
Neo4j servisi başlatıldıktan sonra Bloodhound aracını başlatabiliriz.
Geçerli kimlik bilgilerinizi kullanarak neo4j veritabanına giriş yapın ve SharHound.ps1 betiği tarafından oluşturulan zip dosyasını yükleyin.
Zip dosyasını yükledikten ve sonuçları analiz ettikten sonra, tom kullanıcısının claire kullanıcısıyla Birinci Derece Nesne Denetimi haklarına sahip olduğu gözlemlendi, bu da tom kullanıcısının claire kullanıcısı üzerinde WriteOwner izinlerine sahip olduğunu gösteriyor. Ve ileride claire kullanıcısının Backup_Admins grubunda WriteDACL izinlerine sahip olduğu da görülebilir . Şimdi PowerView.ps1'i kullanarak ve WriteOwner izinlerini kötüye kullanarak, tom kullanıcısının claire'in ACL'sinin sahibi olabileceği, ACL'de izinler alabileceği ve bu izinleri parolayı sıfırlamak için kullanabileceği görülüyor.
Ayrıcalık Yükseltmesi (claire'den yöneticiye)
Claire'in şifresi sıfırlandıktan sonra ssh kullanarak giriş yapabiliriz:
Ve claire'in Backup_Admins grubundaki WriteDACL izinleri nedeniyle, artık claire'i Backup_Admins grubunun bir üyesi olarak ekleyebiliriz.
Ancak, Yönetici kullanıcısının masaüstüne yerleştirilen root.txt bayrağını hala okuyamıyoruz. Yönetici masaüstünde bazı betiklerden oluşan bir Yedekleme Betikleri dizini var.
Herhangi bir scriptin şifre kelimesini string olarak içerip içermediği kontrol edildiğinde, BackupScript.ps1 scriptinde admin şifresinin Cr4ckMeIfYouC4n! şeklinde olduğu görüldü .
Yönetici şifresi alındıktan sonra artık ssh üzerinden yönetici olarak giriş yapıp root.txt bayrağını alabiliriz.