安全矩阵

 找回密码
 立即注册
搜索
查看: 2522|回复: 0

如何针对 SSH 服务的暴力破解

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-8-12 09:34:39 | 显示全部楼层 |阅读模式
原文链接:如何针对 SSH 服务的暴力破解

关于 SSH 服务的暴力枚举,应用场景主要包括外围的边界突破以及内网的横向移动,所以可能需要在多种平台上使用这样的工具,本文主要介绍几款工具,包括 python 版、Go 语言版、C/C++ 版、C# 版等,根据自己的应用场景选择适合的版本即可。
Python 版SSH-Brute-Forcer(python 2)
项目地址:
git clone https://github.com/d3vilbug/Brutal_SSH
使用之前需要安装一个库:
pip2 install -r requirements.txt
查看帮助信息:
python2 brutal_SSH.py

指定用户名和密码,针对单个 IP 的暴力破解:
python2 brutal_SSH.py -i 127.0.0.1 -p 22 -U /root/usernames.txt -P /root/passwords.txt

不支持批量目标检测,需要自己编写 bash 脚本来批量调用改项目。
C# 版C# 主要适用于 Windows 平台,需要依赖系统上的 .Net Framework 框架。
RedLogin
https://github.com/ParsingTeam/RedLogin
编译环境 VS 2015 + .net 3.5,在首次打开项目进行编译时,报错,缺少 Renci 库,打开 NuGet,执行:
Install-Package SSH.NET -Version 2020.0.1
安装成功之后即可编译成功,首次运行,查看帮助信息:

指定目标列表文件,用户名文件和密码文件即可,例如:
Redlogin.exe target.txt username.txt password.txt

编译好的 relese 版本查看附件中的 RedLogin.V1.exe.zip,使用之前要确保系统上已经安装好了 .net 3.5,否则无法运行。
PowerShell 版SSH-PuTTY-login-bruteforcer
验证 SSH 账户密码使用第三方工具 putty 或者 plink,在企业内部,这两款 SSH 连接工具是管理员最常用的,对于我们在企业内网进行 SSH 暴力破解时,如果有防护软件之类的,可以用这种方式来规避。
https://github.com/InfosecMatter/SSH-PuTTY-login-bruteforcer
使用之前首先要准备 putty.exe 或者 plink.exe,与该 PowerShell 脚本放在同一目录下:

使用方法如下:
PS C:\SSH-PuTTY-login-bruteforcer-master> import-module .\ssh-putty-brute.ps1
ssh-putty-brute [-h ip|ips.txt] [-p port] [-u user|users.txt] [-pw pass|pwdlist.txt]
实操案例:

这种方式虽然慢点,但是适合在做内网横线移动时使用。
类似的方式,除了 PowerShell 还可以写 bat 脚本来达到相同的效果。
C/C++ 版cbrutekrag
项目地址:
https://github.com/matricali/cbrutekrag
安装方法:
首先安装 libssh 库,
rpm -vi http://mirror.centos.org/centos/ ... .4-2.el8.x86_64.rpm
然后编译安装:
make && make install
安装完成之后,查看帮助信息:
./cbrutekrag -h

参数上针对多个目标进行暴力枚举,例如:
cbrutekrag -T target.txt -C combinations.txt -o result.log

该工具还支持扫描网段的模式,指定网段,然后扫描其 ssh 服务,然后暴力枚举:
cbrutekrag -s -t 8 -C combinations.txt -o result.log 192.168.0.0/24

Go 版Go 语言的优势在于跨平台
sshgobrute
项目地址:
https://github.com/aldenso/sshgobrute
安装方式:
go get github.com/aldenso/sshgobrute
代码很简单,方便大家学习扩展,编写属于自己的小工具,查看帮助:

例如:
sshgobrute -file passwords.txt -ip 127.0.0.1 -port 22 -user root
扫描结果如下:

结果比较乱,但是速度还可以,作为参考,扩展一些其他能力还是比较容易的。
crssh
项目地址:
https://github.com/hlts2/crssh
安装方式:
go get github.com/hlts2/crssh
查看帮助信息:
crssh -h

该工具有两种暴力破解模式,一种是 -d 使用字典攻击,一种是 -b 自动生成指定位数的字典,然后进行暴力破解,比如:
1、使用字典攻击的模式:
crssh root@127.0.0.1 -p 22 -d

用到的字典在项目 godict 中:
https://github.com/hlts2/godict/blob/main/assets/filesystem.go
2、使用指定位数的密码攻击(-s 指定密码位数):
crssh root@127.0.0.1 -p 22 -b -s 2

3、-d 和 -b 参数可以一起使用,比如:
crssh root@127.0.0.1 -p 22 -db -s 2

总结对于外部公网 IP 开放 SSH 端口的服务,暴力破解的成功率比较低,因为有大量的自动化攻击工具日夜不断的扫描,存在弱口令的情况越来越少,通用密码字典成功的几率微乎其微,如果针对目标有深入的研究,生成有关系的密码字典,说不定有成功突破的机会,但是在企业内部网络,测试开发机非常多,开发测试运维人员,每日工作多次登录系统,或者认为测试机无关紧要,所以会将密码设置的比较简单,也是认为内网不会有人攻击,所有存在大量的弱口令,在内网横线移动的时候,枚举口令是个非常有效的方式。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 13:32 , Processed in 0.014979 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表