yzdily / yzdily.github.io

20 stars 1 forks source link

CTF 工具篇之别出心裁的SSH暴力破解工具PuTTY #45

Open yzdily opened 3 years ago

yzdily commented 3 years ago

本文是翻译文章,文章原作者InfosecMatter ,文章来源:https://www.infosecmatter.com 原文地址:https://www.infosecmatter.com/ssh-login-bruteforcer-using-putty-plink/ 前言 这篇文章介绍了最新研究成果ssh-putty-brute.ps1。该工具可以把著名的用于连接SSH客户端的PuTTY(putty.exe或plink.exe),转变为一个可靠的SSH暴力破解工具。该工具还可以规避任何防病毒或端点防护解决方案。

为什么使用PuTTY进行SSH暴力破解? 事实上,有很多成熟的工具可以进行SSH登录暴力破解工作,如Nmap的ssh-brute NSE脚本,Metasploit的ssh_login scanner,THC Hydra, RedLogin 等等。

但是这些工具存在一个通病,它们早已成为防病毒或端点防护解决方案防控的重点对象。

所以在某些情况下,我们无法使用经典的渗透测试工具或Linux的黑客发行版来进行进行暴力破解攻击,我们需要一个新面孔。

工具适用场景 最近,我们以员工的角度为客户进行了攻击模拟。

测试环境是一个典型的Windows 10环境,但在多个级别上都进行了严格的安全控制。

例如,不能下载或运行任何可疑的文件,甚至连shell都无法生成。

我们设法绕过来一些限制,成功生成了一个shell。但是我们仍然无法使用任何有价值的PowerShell模块。

我们对目标进行了常规的端口扫描,意外在网络上发现了大量的SSH服务器。

我们很自然的产生了破解SSH服务器登录密码的想法,但苦于没有一款合适的工具。我们手上唯一的工具只有PuTTY SSH客户端。但是如果依靠PuTTY来达到目的,显然是不切实际的。

于是,我们有了一个新奇的想法,能不能以某种方式实现PuTTY自动化,并将其用作SSH暴力破解工具呢?

最终我们通过PowsShell脚本达到了目的。

SSH PuTTY bruteforcer ssh-putty-brute.ps1是对PuTTY SSH客户端的包装。

就地取材,它可以使用图形化的putty.exe客户端或命令行形式的plink.exe

下面,介绍一下该工具的功能: •使用putty.exe或plink.exe进行攻击 •使用PowerShell编写,不需要额外的模块 •Payload本身无恶意,未被防病毒或端点防护解决方案检测到 •实用而智能的设计:     •支持单一密码攻击或字典攻击     •允许跨多个SSH服务器进行密码喷洒     •如果发生中断,支持恢复     •攻击时可避免尝试相同的凭据     •跳过已攻陷的SSH帐户

您可以在我们的InfosecMatter Github存储库中找到该工具。

工具使用 以下是工具使用的详细介绍:

import-module .\ssh-putty-brute.ps1

# Usage:
ssh-putty-brute [-h ip|ips.txt] [-p port] [-u user|users.txt] [-pw pass|pwdlist.txt]

# Examples:
ssh-putty-brute -h 10.10.5.11 -p 22 -u root -pw P@ssw0rd
ssh-putty-brute -h 10.10.5.11 -p 22 -u root -pw (Get-Content .\pwdlist.txt)

让我们看一些实际攻击的例子。

我们还可以同时对多个SSH服务器执行密码喷洒:

ssh-putty-brute -h (gc .\ips.txt) -p 22 -u root -pw P@ssw0rd

我们还可以通过使用字典同时对多个SSH服务器上多个用户进行暴力破解:

ssh-putty-brute -h (gc .\ips.txt) -p 22 -u (gc .\users.txt) -pw (gc .\pwdlist.txt)

工作原理 该工具通过利用PuTTY客户机的各种命令行参数来自动化SSH登录过程。

在默认情况下,工具使用plink.exe。如果找不到它,会使用putty.exe。我们还可以使用命令行参数(-client)来进行指定。

该工具一次执行一次登录尝试,通过观察客户端的回显,尽可能准确判断出此次登录尝试是否成功。

另外,该工具还会将攻击记录保存在当前工作目录中的日志文件中,方便后续的攻击复现,跟踪攻击流程。

在进行攻击之前,该工具会先比对现存的信息。因此,在攻击中该工具不会重复相同的账户密码组合,也不会再攻击已失陷的账户。

这也允许我们在攻击中断时轻松地重新运行攻击。工具将在被中断的地方自动恢复。

结果获取 如果想要查看攻击成功,只需要转到运行攻击的同一目录下,然后键入以下命令:

Get-Content ssh-putty-brute.log | Select-String True 这是一个简单的示例:

我们甚至可以在进行攻击时,随时查看结果。

运行环境和指标 工具需要把putty.exe或plink.exe路径添加进PATH或者放在当前工作目录中。

运行该工具时还需要注意以下几点:

桌面体验感 如果将该工具与图形化的putty.exe一起使用。可能会造成桌面卡顿,影响体验感。

尽管该工具通过隐藏或最小化PuTTY窗口的方式, 但在进行登录时,SSH服务器密钥指纹窗口必须短暂显示,才能被工具接收。不可避免的会影响用户体验。

速度 该工具采用单线程循环的模式进行工作,因此它的速度并不算快。它会逐个地遍历每个账户,2~3秒完成一次工作尝试。

如果您想提高速度,可以运行多个工具实例,测试表明这样做确实可以提高速度。但是不要期望提高很多。

兼容性 该工具已通过以下软件版本的测试: •Microsoft Windows 10 •PuTTY版本0.68(2017) •PuTTY版本0.73(2019) •PowerShell v4 •PowerShell v5

结论 作为一名合格的渗透测试者,我们应该适应各种环境, 利用一切所能利用的。

我们在能力有限且工具集受限的情况下,成功地将PuTTY转变为一种进行暴力登录攻击的工具,为我们所用。