SMB(SERVER MESSAGE BLOCK) VE ENUMERATION
SMB
SMB bilgisayarların yazıcıların ve diğer cihazların ağ üzerinde birbiri arasında dosya paylaşımı yapmasını sağlayan bir servis protokolüdür.
SMB DOSYA PAYLAŞIMI
Bir dosya oluşturup, dosyamızı paylaşmayı deneyelim. Dosya paylaşımı genelde Domain adı veridiğimiz alanlarda kullanılır. Domain üzerinde birden fazla kullanıcı grup ve cihaz bulunduğu için genelde bu ortamlarda departmanların kendi dosyalarına sadece o departmanın üyeleri erişebilir gibi güvenlik özellikleri de verilir. Örneği bir ortak alana herkes ulaşabilsin diyebiliriz. Bunların yanı sıra okuma ve yazma izinlerini de değiştirebiliriz.
Dosya paylaşımını kaldırmak için istediğimiz dosyaya sağ tıklayarak erişim kısmından erişimi kaldır diyebiliriz.
Eğer bir gizli klasör oluşturmak istiyorsak windows için klasörün sonuna “$” , linux için ise başına “ . ” koyabiliriz.
SMB ENUMERATION
Daha fazla SMB ve Dosya paylaşımını anlatmayacağım bu bir sistem mühendisliği konusu. Şimdi gelelim hackerlar için bu smb’nin önemi nedir.
SMB doğru yapılandırılmadığı zaman güvenlik ilkelerinden bütünlük ve gizlilik ve erişilebilirlik ihlalleri ortaya çıkar. Örneğin bir İK çalışanı bir IT çalışanı departmanının paylaşılan klasörüne erişebiliyorsa ve hatta burda bir değişiklik yapabiliyorsa bu çok büyük bir ihlaldir. Bizde bu açıklıktan yararlanacağız.
Hiçbir şey bilmediğimizi var sayarsak önce domain yapısını bir öğrenelim. Bunun için enum4linux aracını kullanabiliriz.
enum4linux -S <ip-address>
dersek bize Domain üzerinde paylaşılan klasörleri listeler. enum4linux ‘un Domain ile alakalı birçok kullanımı bulunur, bunlara man yazarak erişebiliriz. ÖRNEK: “enum4linux -u username -p password <ip-address>” domainde bir kullanıcı olarak çıktı almamızı sağlar. Eğer istenirse bu işlem nmap ve msfconsole scriptleri ile de yapılabilir.
“nmap — script=smb-enum-domains.nse, smb-enum-shares.nse -p 445"
SMB EXPLOITATION
Şimdi, SMB ile ağ üzerinde paylaşılan klasörleri öğrendik ama bu smb klasörlerini okumamız için bize bir istemci lazım. Sunucumuz belli fakat onun smb serverına istek yapabilecek bir smb client yok.
Bunun için Linux üzerinde bulunan smblient, smbmap vs.. gibi araçları kullanabiliriz. Bağlanmak için
“smbclient //ip-address/dosya_path” olarak verebiliriz.
NetBios konusunu daha önce anlatmıştım fakat aynı ağ üzerinde olmadığımız sürece NetBios, WINS ile isim çözümlemesi yapamaz bu yüzden //pc-name/dosya_path yazmamamız gerekir. IP adresi kullanmak best practice dir.
Bu işlemi de yaptıktan sonra artık server içerisindeyiz ve yanlış yapılandırmalardan dolayı bazı hassas bilgileri okuyabiliyoruz. :)
NOT: SMB’de get komutu ile indirdiğim gibi put komutu ile dosyada yerleştirebilirim. Bu işlemler Read ve Write haklarına göre yapılır.