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?
└─$ 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?
└─$ enum4linux -a 10.10.68.226
4. What comes up as the name of the machine?
5. What operating system version is running?
6. What share sticks out as something we might want to investigate?
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ş.
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?
└─$ 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: \>
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:
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.
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)
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: .ssh12. 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:
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?
└─$ 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.
└─$ ssh -i privatekey.txt cactus@10.10.103.60
