sshamble
SSHamble 是一个用于 SSH 实现的研究工具,包括:
- 针对身份验证的有趣攻击
- 会话后身份验证攻击
- 预身份验证状态转换
- 身份验证时间分析
- 会话后枚举
该项目仍在进行中,可能会迅速发生变化。
您可以通过 research[α𝓽]runZero.com 联系我们团队。
安装
可以从发布页面下载二进制文件。
要从源代码构建 SSHamble,请确保安装了最新版本的 Go (1.22.6+)。
您可以使用 Go 将二进制文件安装到 GOPATH 的 bin
目录中。
如果您使用 macOS,除非在构建前禁用 CGO,否则可能会在运行时遇到错误:
$ export CGO_ENABLED=0
$ go install github.com/runZeroInc/sshamble@latest
要在本地从源代码构建:
$ git clone https://github.com/runZeroInc/sshamble
$ cd sshamble
$ go build -o sshamble
要启用实验性的 badkeys 支持,请先运行生成器:
$ git clone https://github.com/runZeroInc/sshamble
$ cd sshamble
$ go generate ./...
$ go build -o sshamble
使用方法
$ sshamble -h
▀██▄ ▀███████████████████████████████████████████████████████████████████████████████████████████
▀██▄
▀██▄ ▄████████ ▄████████ ██ ██ ▄███████▄ ▄████████▄ ████████▄ ██ ▄███████
▀██▄ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
███ ▀███████▄ ▀███████▄ █████████ █████████ ██ ██ ██ █████████ ██ ████████
▄██▀ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
▄██▀ ████████▀ ████████▀ ██ ██ ██ ██ ██ ██ ██ ████████▀ ▀██████ ▀███████
▄██▀
▄██▀ ▄███████████████████████████████████████████████████████████████████████████████████████████
一个用于探索(不)安全 shell 服务的工具。
使用以下命令开始网络扫描:
$ sshamble scan -o results.json 192.168.0.0/24
使用以下命令分析结果:
$ sshamble analyze -o results-directory results.json
用法:
sshamble [命令]
可用命令:
analyze 分析扫描 JSON 输出文件并对结果进行分类
help 关于任何命令的帮助
scan 枚举一组目标的 SSH 功能和暴露情况
标志:
-h, --help sshamble 的帮助
使用 "sshamble [命令] --help" 获取有关命令的更多信息。
扫描
$ sshamble -h
枚举一组目标的 SSH 功能和暴露情况
用法:
sshamble scan [-p 22] [-u root,admin] [-o scan.json] [-l scan.log] [--log-level trace] 192.168.0.0/24 ... [标志]
标志:
--categories string 要包含的类别列表。(默认 "bypass,gssapi,keyboard,password,pubkey,userenum,vuln")
--checks string 要运行的检查列表。非默认 ("userenum-none-timing,userenum-password-timing,userenum-pubkey-timing") (默认 "gssapi-any,keyboard-any,keyboard-empty,keyboard-null,keyboard-user,password-any,password-change-empty,password-change-null,password-empty,password-null,password-user,pubkey-any,pubkey-bulkhalf,pubkey-hunt,pubkey-user,skip-auth,skip-auth-method-empty,skip-auth-method-null,skip-auth-none,skip-auth-pubkeyany,skip-auth-success,skip-ssh-userauth,vuln-generic-env,vuln-gogs-env,vuln-ruckus-password-escape,vuln-softserve-env,vuln-tcp-forward")
--client-version string 要发送的客户端版本字符串 (默认 "OpenSSH_9.8p1")
--config string 配置文件 (默认为 $HOME/.sshamble.json)
-h, --help scan 的帮助
-i, --input-targets string 可选的目标输入文件
-I, --interact string 为 'first'、'all' 或 'none' 会话打开交互式 shell (默认 "none")
--interact-auto string 在交互式会话中运行的命令集(逗号分隔)(默认 "pty,shell")
-l, --log string 写入日志的文件(默认为 stderr)(默认 "-")
-L, --log-level string 要写入的日志级别 (trace,debug,info,warn,error) (默认 "info")
-m, --max-connections uint 最大并发连接数 (默认 5000)
-o, --output string JSON 输出的目标文件 (默认 "stdout")
--password string 用于身份验证的可选密码
--password-file string 包含用于身份验证的明文密码的可选文件
-p, --ports string 当目标未指定时要检查的端口列表(逗号分隔)(默认 "22")
--pprof string 在提供的端口上启动 Go pprof 调试监听器
--private-key string 包含用于身份验证的私钥的可选文件
--private-key-passphrase string 私钥文件的可选密码
--pubkey-bulk-limit uint 测试最大尝试次数的公钥半认证次数 (默认 10)
--pubkey-hunt-conn-limit uint 每个连接要测试的公钥数量 (默认 250000)
--pubkey-hunt-file string 包含要搜索的公钥的可选文件
--retries uint 初次成功后续失败连接的重试次数 (默认 2)
--timeout uint 等待目标响应的秒数 (默认 5)
--userenum-max-per-session-count uint 每个会话的最大身份验证尝试次数 (默认 1023)
--userenum-test-count uint 用户名枚举期间应用的测试次数 (默认 2500)
-u, --users string 在每个目标上测试的用户名列表(逗号分隔)(默认 "root")