kali-linux教程 ssh密码暴力破解和防御实战

1 hydra[海德拉]

Hydra是世界顶级密码暴力破解工具,支持几乎所有协议的在线密码破解,功能强大,其密码能否被破解关键取决于破解字典是否足够强大,在网络安全渗透过程中是一款必备的测试工具。
指定用户破解

hydra -l user -P passlist.txt ftp://192.168.0.1
hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
hydra -l admin -p password ftp://[192.168.0.0/24]/
hydra -L logins.txt -P pws.txt -M targets.txt ssh
hydra -l root -P pass.dic 192.168.106.134 ssh

用户列表破解

hydra -L userlist.txt -P passlist.txt -t 20 192.168.106.134 ssh

2 Medusa[美杜莎]

Medusa是一个速度快,支持大规模并行,模块化,爆破登录。可以同时对多个主机,用户或密码执行强力测试。Medusa和Hydra意义,属于在线密码破解工具。不同的是,Medusa的稳定性相较于Hydra好很多,但支持的模块要比Hydra少一些。

2.1 语法参数

Medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module [OPT]

-h [TEXT] 目标主机名称或者IP地址
-H [FILE] 包含目标主机名称或者IP地址文件
-u [TEXT] 测试的用户名
-U [FILE] 包含测试的用户名文件
-P [TEXT] 测试的密码
-P [FILE] 包含测试的密码文件
-C [FILE] 组合条目文件
-0 [FILE] 日志信息文件
-e [n/s/ns] n代表空密码, s代表为密码与用户名相同
-M [TEXT] 模块执行名称
-m [TEXT] 传递参数到模块
-d 显示所有的模块名称
-n [NUM] 使用非默认Tcp端口
-S 启用SSL
-r [NUM] 重试间隔时间,默认为3秒
-t [NUM] 设定线程数量
-T 同时测试的主机总数
-L 并行化,每个用户使用一个线程
-f 在任何主机上找到第一个账号/密码后,停止破解
-F 在任何主机上找到第一个有效的用户名/密码后停止审计
-9 显示模块的使用信息
-V [NUM] 详细级别(0-6)
-W [NUM] 错误调试级别(0-10 )
-V 显示版本
-Z [TEXT] 继续扫描上一次

2.2 破解SSH密码

medusa -M ssh -h 192.168.0.1 -U root -P passlist. txt

3 patator

Patator,强大的命令行暴力破解器。
/patator.py ssh_login –help“命令后即可获取其参数的详细使用信息
在 ssh 暴力破解模块 ssh_login 中需要设置 host,port,user,password 等参数。

可用模块:
ftp_login : 暴力破解FTP
ssh_login : 暴力破解 SSH
telnet_login : 暴力破解 Telnet
smtp_login : 暴力破解 SMTP
smtp_vrfy : 使用SMTP VRFY进行枚举
smtp_rcpt : 使用 SMTP RCPT TO枚举合法用户
finger_lookup : 使用Finger枚举合法用户
http_fuzz : 暴力破解 HTTP
ajp_fuzz : 暴力破解 AJP
pop_login : 暴力破解 POP3
pop_passd : 暴力破解 poppassd (http://netwinsite.com/poppassd/)
imap_login : 暴力破解 IMAP4
ldap_login : 暴力破解 LDAP
smb_login : 暴力破解 SMB
smb_lookupsid : 暴力破解 SMB SID-lookup
rlogin_login : 暴力破解 rlogin
vmauthd_login : 暴力破解 VMware Authentication Daemon
mssql_login : 暴力破解 MSSQL
oracle_login : 暴力破解 Oracle
mysql_login : 暴力破解 MySQL
mysql_query : 暴力破解 MySQL queries
rdp_login : 暴力破解 RDP (NLA)
pgsql_login : 暴力破解 PostgreSQL
vnc_login : 暴力破解 VNC
dns_forward : 正向DNS 查询
dns_reverse : 反向 DNS 查询
snmp_login : 暴力破解 SNMP v1/2/3
ike_enum : 枚举 IKE 传输
unzip_pass : 暴力破解 ZIP加密文件
keystore_pass : 暴力破解Java keystore files的密码
sqlcipher_pass : 暴力破解 加密数据库SQL Cipher的密码-
umbraco_crack : Crack Umbraco HMAC-SHA1 password hashes
tcp_fuzz : Fuzz TCP services
dummy_test : 测试模块

3.1 破解SSH密码

patator ssh_login host=10.0.0.1 user= root password=FILEO 0=passwords.txt -X ignore: mesg-' Authentication failed. '
patator ssh_login host=192.168.0.1 user=root password=FILE0 0=passlist.txt
patator ssh_login host=192.168.0.1 user=root password=FILE0 0=passlist.txt -X ignore:mesg= ' Authentication failed. '

4 Brutespray

BruteSpray是一款基于Nmap扫描输出的gnmap/XMl文件,自动调用Medusa对服务进行爆破。

4.1 语法参数

-f FILE, --file FILE 参数后跟一 个文件名,解析nmap输出的GNMAP或者XML文件
-o OUTPUT, --output OUTPUT 包含成功尝试的目录下
-s SERVICE, --service SERVICE 参数后跟-个服务名,指定要攻击的服务
-t THREADS, --threads THREADS参 数后跟一数值, 指定medus a线程数
-T HOSTS, --hosts HOSTS K参数后跟一数值,指定同时测试的主机数
-U USERLIST, --userlist USERLIST 参数后跟用户字典文件
-P PASSLIST, --passlist PASSLIST 参数后跟密码字典文件
-u USERNAME, --username USERNAME 参数后跟用户名,指定一个用户名进行爆破
-p PASSWORD, --password PASSWORD 参数后跟密码,指定一个密码进行爆破
-C,–continuous 成功之后继续爆破
-i, – interactive 交互模式

4.2 nmap扫描

(1)扫描整个内网C段
nmap -v 192.168.17.0/24 -oX nmap.xml
(2)扫描开放22端口的主机
nmap -A -p 22 -v 192.168.17.0/24 -oX 22.xml
(3)扫描存活主机
nmap –sP 192.168.17.0/24 -oX nmaplive.xml
(4)扫描应用程序以及版本号
nmap -sV –O 192.168.17.0/24 -oX nmap.xml

4.3 字典爆破

brutespray --file 22.xml -U user1ist.txt-p passlist.txt --threads 5 --hosts 5
#主机多的话 后面加  -C  ----成功之后继续爆破
#查看成功的日志文件  cat/root/brutespray-output/ssh-success.txt  

5 MSF

Metasploit Framework(简称MSF)是一个编写、测试和使用exploit代码的完善环境。这个环境为渗透测试,Shellcode编写和漏洞研究提供了一个可靠的平台,这个框架主要是由面向对象的Perl编程语言编写的,并带有由C语言,汇编程序和Python编写的可选组件。

5.1 SSH模块

root@kali:~# msfconsole
msf > search ssh

show options ----展示当前模块设置参数 选项/变量 查看用的

5.2 SSH用户枚举

msf > use auxiliary/scanner/ssh/ssh_enumusers
msf auxiliary(scanner/ssh/ssh_enumusers) > set phosts 192.168.0.1
msf auxiliary(scanner/ssh/ssh_enumusers) > set USER_FILE /root/userlist.txt
msf auxiliary(scanner/ssh/ssh_enumusers) > run

5.3 SSH版本探测

msf > use auxiliary/scanner/ssh/ssh_ version
msf auxiliary( scanner/ssh/ssh_ _version) > set rhosts 192.168.0.1
msf auxiliary( scanner/ssh/ssh_ _version) > run

5.4 SSH暴力破解

msf > use auxiliary/scanner/ssh/ssh plogin
msf auxiliary( scanner/ssh/ssh_login) > set rhosts 192.168.0.1
msf auxiliary(scanner/ssh/ssh_login) > set USER_FILE /root/userlist.txt
msf auxiliary(scanner/ssh/ssh_login) > set PASS_FILE /root/passlist.txt
msf auxiliary(scanner/ssh/ssh_login) > run

6 暴力破解防御

6.1 useradd shell [推荐]

新建用户时:
useradd yangge -s /sbin/nologin

6.2 密码的复杂性[推荐]

字母大小写+数字+特殊字符+20位以上+定期更换

6.3 修改默认端口[推荐]

vi /etc/ssh/sshd_config
Port 22222
systemctl restart sshd

6.4 限制登录的用户或组[推荐]

vi /etc/ssh/sshd_config
#PermitRootLogin yes
AllowUsers test      ----test用户
systemctl restart sshd

[ root@kali ~]# man sshd_ config
AllowUsers AllowGroups DenyUsers DenyGroups

6.5 使用sudu(推荐)

6.6 设置允许的IP访问[可选]

/etc/hosts.allow,例如sshd:192.168.0.1:allow
PAM基于IP限制
iptables/firewalld
只能允许从堡垒机

6.7 使用DenyHosts自动统计,并将其加入到/etc/hosts . deny

6.8 基于PAM实现登录限制[推荐]

模块: pam_tally2. so
功能:登录统计
示例:实现防止对sshd暴力破解     /etc/pam.d/sshd   插入下面的这句话
[root@tkali ~]# grep tally2 /etc/pam.d/sshd
auth        required       pam_tally2.so deny=2 even_deny_root root_unlock_time=60 unlock_time=60
#密码输错两次 连root用户也不例外 锁定60秒

6.9 禁用密码改用公钥方式认证

/etc/ssh/sshd_config
PasswordAuthentication no

6.10 保护xshel1导出会话文件[小心]

6.11 GRUP加密【针对本地破解】

你可能感兴趣的:(kali)