SMB etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SMB etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

28 Ocak 2021 Perşembe

TryHackMe - Network Services - SMB Soru ve Cevapları


TryHackMe'nin Network Services odası SMB, Telnet ve FTP hakkında kısaca bilgilerin anlatıldığı ve aynı zamanda örnekler üzerinden gösterildiği başlangıç seviyesi bölümlerinden birtanesi.

SMB hakkında bir miktar burada anlatılanlar bir miktar da internetten araştırıp bulduklarım ile bir yazı yazdım, buradan ulaşılabiliyor.

Bu yazı içerisinde SMB ile ilgili herhangi bir zafiyeti istismar etmeye çalışmadan önce edinilmesi gerektiğini düşündüğüm aşağıdaki başlıklar bulunuyor:

- SMB nedir?

- SMB'yi çalıştıran nedir?

- SMB Bilgi Toplama (Enumeration) - nmap ve Enum4Linux araçlarının kullanımı

- En popüler SMB Zafiyetleri

ve son olarak "SMB Nasıl istismar edilir?" başlıklı bir kısım var ancak bu kısımda bunu ancak örnekler üzerinden yazılarda gösterebileceğimi yazmıştım, nitekim şimdi de onu yapıyorum.

TryHackMe'nin konu ile ilgili çalışmasının çözüm yolları ve çözümleri aşağıda yer alıyor.

Enumerating SMB (Bilgi Toplama Alıştırmaları)


1. Conduct an nmap scan of your choosing, How many ports are open?

İlk soru için bir nmap taraması yapıp kaç bağlantı noktasının açık bulunduğunu tespit etmemiz istenmiş. Bunun için herkes dilediği nmap komutu ile arama yapabilir, benim kullandığım komut ise aşağıdaki gibi:

┌──(sinem㉿sparta)-[~]
└─$ nmap -A -p- -T4 10.10.68.226  

 

Yukarıdaki ekranda görülebileceği gibi 22, 139 ve 445 numaralı portlar açık.


2.
What ports is SMB running on? 

Microsoft Windows işletim sistemleri Windows 95'den bu yana istemci ve sunucu SMB protokol desteği sağlamaktadır. Samba ise Unix işletim sistemleri için SMB protokolünü destekleyen açık kaynaklı bir sunucudur.

Nmap çıktılarına baktığımızda port 139 ve port 445 üzerinde Samba, 22 numaralı port üzerinde ise SSH çalışıyor. 

3. Let's get started with Enum4Linux, conduct a full basic enumeration. For starters, what is the workgroup name?    

Buradaki SMB yazısında SMB bilgi toplama aşamasında kullanılan Enum4Linux aracından bahsetmiştim. Bizden istenen bu aracı çalıştırıp bilgi toplamamız.
 
** Enum4Linux kullanımı oldukça kolay: enum4linux [option] [IP adresi] şeklinde komut yazılır.

"option" kısmına yazılacak olan flag'in ne olduğunu bilmek için enum4linux --help kullanılabilir.
 
Tüm opsiyonları tek seferde çalıştırmak ve bilgi toplama işlemini tek seferde gerçekleştirmek için "-a" opsiyonunu kullanıyorum. 

 -a        Do all simple enumeration (-U -S -G -P -r -o -n -i)
 
Workgroup bilgisinin de içerisinde yer alacağı komutum aşağıdaki gibi:

┌──(sinem㉿sparta)-[~]
└─$ enum4linux -a 10.10.68.226 
 


Yukarıdaki resimde görülebileceği gibi bizden istenen workgroup ismi de aynı yani workgroup.


4. What comes up as the name of the machine?   

Yukarıdaki ekran görüntüsünde POLOSMB olarak bu bilgiye de erişebiliyoruz.     
 

5. What operating system version is running?    

Hangi işletim sistemi versiyonunun kullanıldığını öğrenmek için OS information bölümüne bakmak gerekiyor ve burada "os version : 6.1" bilgisine erişebiliyoruz.



6. What share sticks out as something we might want to investigate?  


 
 
 
Yukarıdaki resimlerde görülebileceği gibi incelenmesi gerekiyor gibi görünen bilgi "profiles".


Exploiting SMB (İstismar Alıştırmaları)


7. What would be the correct syntax to access an SMB share called "secret" as user "suit" on a machine with the IP 10.10.10.2 on the default port?


Belirtilmiş olan kullanıcı adı ve IP kullanılarak bir SMB bağlantısı kurmamız istenmiş, bunun için yazılması gereken komutun nasıl yazılacağı ise hemen üstte bilgi olarak verilmiş.
 
smbclient //[IP]/[SHARE]

Followed by the tags:

-U [name] : to specify the user
-p [port] : to specify the port 

Soruda talep edilen komut ise aşağıdaki şekilde yazılmalı:

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


8. Great! Now you've got a hang of the syntax, let's have a go at trying to exploit this vulnerability. You have a list of users, the name of the share (smb) and a suspected vulnerability.

Lets see if our interesting share has been configured to allow anonymous access, I.E it doesn't require authentication to view the files. We can do this easily by:

- using the username "Anonymous"

- connecting to the share we found during the enumeration stage

- and not supplying a password. 

Şimdi yukarıda Enum4Linux ile bilgi toplama aşamasını tamamlamış olduğumuz makinada yer alan zafiyeti istismar etmeye çalışacağız. Bu aşamada kullanıcıların bir listesini de bulmuştuk. 

Buarada edinmiş olduğumuz bilgilerin son satırında aşağıda yer alan satırı da atlamamak gerekiyor:

[+] Enumerating users using SID S-1-22-1 and logon username '', password ''
S-1-22-1-1000 Unix User\cactus (Local User)

 

Soruda bize dosyalara erişim için authentication yani kimlik doğrulama gerekmediği, kullanıcı adı olarak "Anonymous" kullanabileceğimiz ve parola girmemizin gerekmediği söylenmiş ancak bu bilgi zaten Enum4Linux tarafından bize verilmişti.

Does the share allow anonymous access? Y/N?

Bu sorunun da yanıtı doğal olarak Y oluyor, yani evet anonymous olarak erişim mümkün. Bunun doğrulamasını yapmak için ise aşağıdaki komutu girebiliyoruz ve smb bağlantısının kurulduğunu görüyoruz. Parola sorulduğunda enter'a basıp geçebilir ya da buraya da anonymous yazabiliriz.
 
 ┌──(sinem㉿sparta)-[~]
└─$ smbclient //10.10.103.60/profiles -U anonymous -p 139                                                                                                                                                                              1 ⨯
Enter WORKGROUP\anonymous's password:
Try "help" to get a list of possible commands.
smb: \>

 
* Eğer bağlanmaya çalıştığınızda Error NT_STATUS_CONNECTION_REFUSED şeklinde bir hata alıyorsanız makinayı terminate edip ardından tekrar deploy ile yeni bir IP adresi almanız sorunu çözebilir.


9.
Great! Have a look around for any interesting documents that could contain valuable information. Who can we assume this profile folder belongs to? 


İlginç bir şeyler var mı diye etrafa bir bakmak lazım ancak bunu nasıl yapacağınızı bilmiyorsanız smb komut satırı açıldıktan sonra bir ? koyarak öğrenebilirsiniz:
 

 
Hangi komutları çalıştırabileceğimiz yukarıdaki resimde görülebiliyor.  
Bu liste içerisinde yer alan ls ise bize dizinlerde hangi dosyaların yer aldığını gösterecek. 

Bulunduğumuz dizin ile başlayalım:


Dizinde yer alan txt dosyası adeta göz alıyor.

İçini açmak için kullanacağımız komut ise cat ancak az evvel SMB'de cat komutunun çalıştırılabilen komutlar arasında olmadığını da öğrendik. 
 
Ne yapacağız? Dosyayı kendi makinamıza aktaracağız ve bunun için de get komutunu kullanacağız.

Dikkat edilmesi gereken bir diğer önemli konu dosya adında boşluklar olması. Bu şekilde bir dosya adı ile ilgili bir işlem yapmak istediğimizde yapacağımız en kolay şey dosya adını tırnak içinde yazmak:

Komutun genel kullanımı: $ get “Working From Home Information.txt” <output name>

Ben aşağıdaki şekilde bir çıktı istediğimden şu komutu giriyorum:

smb: \> get "Working From Home Information.txt" info.txt

getting file \Working From Home Information.txt of size 358 as info.txt (1.1 KiloBytes/sec) (average 1.1 KiloBytes/sec)
 
Metin dosyası artık benim makinamda ve cat ile açabilirim. Öncelikle dosyanın bulunduğum dizine aktarılıp aktarılmadığını ls ile kontrol ettikten sonra:



Profile folder kime aittir diye soruyordu soru, cevabın John Cactus olduğunu öğrenmiş olduk.
 

10. What service has been configured to allow him to work from home?

Bu soruyu yanıtlamak için yukarıdaki resimde yer alan yazıyı okumak yeterli. Pandemi nedeniyle bağlantıların ssh ile yapılacağı yazılmış.
 

11. Okay! Now we know this, what directory on the share should we look in?

Hangi dizine bakmamız gerektiğini nasıl anlayabiliriz? Tekrar smb bağlantısının kurulduğu terminale döndüğümüzde yanıtı orada bulabiliyoruz: .ssh

12. This directory contains authentication keys that allow a user to authenticate themselves on, and then access, a server. Which of these keys is most useful to us?

Bu dizinde bizi kullanıcıların ssh ile sunucuya bağlantı kurabilmek için kimlik doğrulama aşamasında ihtiyaç duyacakları anahtarlar bekliyor ve bunların hangisinin en çok işe yarayan olduğu sorulmuş. Bu sorunun yanıtını bilmiyordum ve Google'a sorarak öğrendim.

İlk yapılması gereken .ssh'ın içerisinde ne olduğunu görmek, bunun için de cd kullanıyoruz:
 
 
 
Görüldüğü gibi zaten araştırılabilecek 3 adet isim var, id_rsa şifreleme için kullanılan private key, id_rsa.pub ise public key'i içeriyor.
 
İşte ssh bağlantısı için de bu iki dosyaya ihtiyaç duyacağım ancak sorunun yanıtına gelecek olursak: id_rsa
 

13. Download this file to your local machine, and change the permissions to "600" using "chmod 600 [file]".

Now, use the information you have already gathered to work out the username of the account. Then, use the service and key to log-in to the server.
What is the smb.txt flag?

İlk yapılması istenen ile başlayalım ve id_rsa'i kendi makinamıza bir alalım. Hatta elimiz değmişken id_rsa.pub'ı da alalım. Her ikisini de az evvel kullandığımız get komutunu aynı şekilde smb açık olan terminal vasıtasıyla yapacağız:

 
İsimlerini privatekey.txt ve publickey.txt koyduğum dosyaları kendi makinama attım.
 
Şimdi soruda istenen ikinci adıma geldim. Kendi makinamda işlem yaptığım terminale geçip dosyanın yetkilerini değiştireceğim:
 
┌──(sinem㉿sparta)-[~]
└─$ chmod 600 privatekey.txt

Ve son olarak da bulmuş olduğun kullanıcı adı ve key dosyalarını kullanarak ssh ile bağlantıyı kur denilmiş. Bunu yapmak için kullanıcı adı lazım ve kullanıcı adı John Cactus değil. Bu yazının üst kısımlarında bir yerde Enum4Linux çıktılarının son satırında yer alan bir bilginin önemli olabileceğini söylemiştim, kullanıcı adı orada verilmişti: cactus.
 
Geriye smb.txt flag'ı almak kaldı. Bunun için ssh bağlantısını yapmayı deneyelim:
 
SSH şu şekilde kullanılıyor:
 
$ ssh -i <output name> username@<IP> 

Ben komutu şöyle giriyorum:
 
┌──(sinem㉿sparta)-[~]
└─$ ssh -i privatekey.txt cactus@10.10.103.60
 
Aşağıdaki resme bakılırsa ben de artık kaktüsüm 🌵



Flag için ise bulunduğum dizindeki dosyaları görmek amacıyla ls komutunu kullanıyor ve smb.txt'yi orada bulunca da cat komutuyla açıp mutlu sona ulaşıyorum. 
 
 


John the Ripper ile Şifre Kırmak

  JOHN THE RIPPER ARACIYLA ŞİFRE KIRMAK  John The Ripper, açık kaynak ve ücretsiz bir şifre kırma aracı. Her ne kadar Unix için çıkmış ols...