如何通过Wireshark分析ssh暴力猜解等异常行为
作者:FancyPig | 发布时间: | 更新时间:
杂谈
很多人会说ssh协议本身是加密的根本没法分析暴力猜解行为,但实际上,我们通过加密包的长度是可以分析暴力猜解行为的,下面我会以常见的几种暴力破解软件为例,分析其中的特征
相关阅读
图文教程
环境准备
- kali linux虚拟机(作为暴力破解攻击的机器,本地IP为
192.168.244.128) - ubuntu虚拟机(作为靶机,本地IP为
192.168.244.131)
ubuntu虚拟机需要事先安装好ssh,可以输入下面命令快速安装
sudo apt install openssh-server
hydra
我们使用hydra暴力破解,首先准备两个文件
user.txt存储要暴力破解的用户名password.txt存储要暴力破解的密码
譬如,user.txt如下
root
es
mysql
fancypig
password.txt如下
123456
test
qwedsazxc
!@#qwer
我们这里设计的时候,故意将真实的账户和密码都放到这两个文件的最后,然后我们用hydra的单线程进行暴力破解,并打开kali linux虚拟机中的wireshark,这里我们过滤器里设置port 22只抓22端口的包

开始抓取后,我们打开终端运行hydra,开始暴力破解
hydra -t 1 -L user.txt -P password.txt -e ns -vV 192.168.244.131 ssh
我们在抓取过程中发现

几乎所有尝试密码错误的加密包长度(len)都是相同的,发送包长度(len)为84,返回包长度(len)为52

那么,暴力破解成功的时候len是多少呢?这里看到已经破解成功了

返回包长度(len)为36

因此,我们可以通过请求频繁,最终返回len=36来判断服务器ssh被入侵。
同样的方式我们还可以分析其他的软件。
medusa
medusa -h 192.168.244.131 -U user.txt -P password.txt -M ssh -t 1
然后我们可以观察到暴力破解错误的基本上都是差不多的

当暴力破解成功时,我们会发现返回包长度为656


Metasploit渗透框架
输入msfconsole打开框架,然后搜索ssh暴力破解的模块
msfconsole
search ssh_login

我们这里需要使用auxiliary/scanner/ssh/ssh_login模块
use auxiliary/scanner/ssh/ssh_login
然后输入下面的命令查看我们可以使用的参数
show options

我们这里可以使用RHOST来指定IP地址
set rhost 192.168.244.131
USER_FILE来指定我们的用户名字典
set USER_FILE user.txt
PASS_FILE指定密码字典
set PASS_FILE password.txt
设置每次破解的账户名和密码打印出来
set verbose yes
输入run开始运行

可以看到基本上密码失败的请求包和相应包长度均为100、132

直到最后找到密码,发现返回的加密包的长度(len)为168

patator
我们输入完成的字典进行暴力破解
patator ssh_login host=192.168.244.131 user=FILE0 0=user.txt password=FILE1 1=password.txt


如果不确认的话,我们直接输入正确的用户名和密码进行暴力破解

我们可以发现返回的加密包长度(len)为48

BrutesPray
安装BrutesPray
apt-get update
apt-get install brutespray

扫描需要提前用nmap导出xml结果,才能使用,我们这里知道只需要扫描22端口就行了,因此使用下面的命令
sudo nmap -sS -p22 192.168.244.131 -oX ssh.xml

然后我们使用ssh.xml进行暴力破解
brutespray -t 1 -U user.txt -P password.txt -t 192.168.244.131 --file ssh.xml

这里看到最后一次是暴力破解成功了

发现返回的加密包长度也是656

貌似使用的和medusa是同一个内核,这里看到实锤了
