27 Ocak 2021 Çarşamba

SMB (Server Message Block Protocol)


 

SMB NEDİR?

SMB bir ağdaki dosyalara, yazıcılara, seri bağlantı noktalarına ve diğer kaynaklara erişimi paylaşmak için kullanılan bir istemci-sunucu iletişim protokolüdür. (https://searchnetworking.techtarget.com/definition/Server-Message-Block-Protocol)

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

SMB protokolü "TALEP - YANIT" şeklinde çalışır ve bağlantı kurabilmek için istemci ile sunucu arasında birden fazla mesajı taşır.

İstemci, sunucuya TCP/IP, NetBEUI ya da IPX/SPX kullanarak bağlanır.

Bağlantı kurulduktan sonra istemci(ler) sunucuya paylaşımlara erişmesine, dosyaları açmasına, dosyaları okuyup yazmasına veya bir dosya sistemiyle yapmak istenebilecek herhangi bir şey yapmasına izin veren komutlar (SMB'ler) gönderebilir.

Windows'ta SMB, TCP / IP üzerinden NetBIOS'a gerek kalmadan doğrudan TCP / IP üzerinden 445 numaralı port üzerinden çalışabilir (varsayılan ayar). Diğer sistemlerde ise 139 numaralı bağlantı noktasını kullanarak bulunabilir ki bu bize SMB'nin TCP / IP üzerinden NetBIOS ile çalıştığını gösterir.

SMB'Yİ ÇALIŞTIRAN NEDİR?

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.

Genellikle bir sunucuda SMB paylaşım sürücüsüne rastlanır. Dosyaları görüntülemek ya da transfer etmek için kullanılan bu sürücü aynı zamanda hassas verilere erişmek isteyen saldırgan için de çok iyi bir kaynaktır.

SMB - BİLGİ TOPLAMA 


nmap


Bilgi toplamaya (herhangi bir şey için) ilk olarak port tarama aracı olan nmap ile başlamak mantıklı.
 
nmap komutunu "-p139,445" flag ile birlikte kullanmak sadece bu iki varsayılan SMB portu hakkında bilgi toplamaya yardımcı olacaktır.
 
Nmap, SMB modunu ve SMB özelliklerini de kontrol edebilir. Bunun için aşağıdaki şekilde bir komut yazılabilir:  
 
nmap -Pn -n -sT -sC -p139,445 [IP]
 
Bilinen zafiyetleri kontrol etmek için ise aşağıdaki komut kullanılabilir:
 

nmap -Pn --script smb-vuln* -p 139,445 [IP] 

Enum4Linux


SMB paylaşımları hakkında bilgi toplamak için Enum4Linux iyi bir araç. Hem Windows hem Linux işletim sistemlerinde kullanılıyor ve SMB ile ilgili hedeften hızlı şekilde bilgi toplamaya yardımcı oluyor. 

Kali'de genellikle varsayılan olarak yüklü gelmekle birlikte eğer yüklü değilse https://github.com/CiscoCXSecurity/enum4linux adresinden yüklenebilir.

Enum4Linux kullanımı oldukça kolay: enum4linux [option] [IP adresi] şeklinde komut yazılır.

Hangi opsiyonların kullanılabileceğini öğrenmek için:

┌──(root💀sparta)-[/home/sinem]
└─# enum4linux --help 

 

EN POPÜLER SMB ZAFİYETLERİ


SMB ile ilgili uzaktan kod çalıştırmaya yol açabilecek zafiyetler ve istismar yöntemleri bulunabilmekle birlikte genellikle sistemde var olan hatalı yapılandırmaları tespit etmek ve bunlar üzerinden ilerlemek daha iyi bir yöntem olabilir.

En popüler SMB zafiyetleri aşağıdaki gibidir:
 
CVE-2020-1206 (SMBleed) (Bilgi açığı/Information Disclosure zafiyeti)
Score: 7.5 High

CVE-2020-0796 (SMBGhost)  (Uzaktan Kod Çalıştırma zafiyeti /Windows SMBv3 Client/Server Remote Code Execution Vulnerability)
Score: 9.0 High
 
MS17-010 (EternalBlue) (Uzaktan Kod Çalıştırma zafiyeti /Remote Code Execution Vulnerability)
Score:  Kritik
 
MS08-67 (Conficker) (Uzaktan Kod Çalıştırma zafiyeti /Remote Code Execution Vulnerability) 
  

SMB NASIL İSTİSMAR EDİLEBİLİR? 


Bu zafiyetlerin her biri için POC ya da exploit kodlarına internetten çeşitli kaynaklardan erişilebiliyor.
 
Örnek makinalara rastladıkça burada #SMB tag ile paylaşmaya çalışacağım.

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...