Info:由于书本上的例子无法实现远程SSH,收集了一些大神写的例子,结合书本上代码性能的优点,自己把最终的实现记录了下来,难免忘记:
注: 还是半月更一次博客,现在更新得太频繁(不过这几天心情不错,多写了几篇^_^)
Botnet也就是我们所说的僵尸网络,是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序),从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。 首先是一个可控制的网络,这个网络并不是指物理意义上具有拓扑结构的网络,它具有一定的分布性,随着bot程序的不断传播而不断有新位置的僵尸计算机添加到这个网络中来。
其次,这个网络是采用了一定的恶意传播手段形成的,例如主动漏洞攻击,邮件病毒等各种病毒与蠕虫的传播手段,都可以用来进行Botnet的传播,从这个意义上讲,恶意程序bot也是一种病毒或蠕虫。
最后一点,也是Botnet的最主要的特点,就是可以一对多地执行相同的恶意行为,比如可以同时对某目标网站进行分布式拒绝服务(DDos)攻击,同时发送大量的垃圾邮件等,而正是这种一对多的控制关系,使得攻击者能够以极低的代价高效地控制大量的资源为其服务,这也是Botnet攻击模式近年来受到黑客青睐的根本原因。在执行恶意行为的时候,Botnet充当了一个攻击平台的角色,这也就使得Botnet不同于简单的病毒和蠕虫,也与通常意义的木马有所不同….. —— [百度百科 ]
结合了一些实例和性能,自己融合所形成的最终实例,最终代码如下:
#!/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’)是一个简单的实例,实际的操作中我们操作的机器可能会有成千上百台,这里就设计到文件的读写,需要一些额外的参数,如果要把它作为一个实际上的工具更需要额外的工具,我想这些简单的实现大家应该能够做。做个工具集,应该对大家来说应该不难。
差不多就是这样。