1. 程式人生 > >kali linux SSH服務的版本識別與爆破

kali linux SSH服務的版本識別與爆破

  1. SSH原理
    最早的時候,網際網路通訊都是明文通訊,內容都是明文通訊,當然在如今,任然存在明文通訊,這種情況在學校的網路中比較常見。1995年,芬蘭學者Tatu Ylonen設計了SSH協議,將登入資訊全部加密,成為網際網路安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為Linux系統的標準配置。ssh只是一種網路協議,有不同的安全需求,所以就有不同的實現,既有商業,也有開源,在這裡,我要介紹的就是在linux下的開源實現。
    SSH之所以安全,是因為它用到了公鑰加密。不過,這裡有一個坑,那就是中間人攻擊,關於中間人攻擊的說明,我會在以後的部落格中更新,在這裡只簡單的描述一下SSH登入的基本原理。

整個過程是這樣的:

(1)遠端主機監聽到使用者的登入請求後,把公鑰發給使用者;
(2)使用者使用這個公鑰,將登入密碼加密後返回回來;
(3)遠端主機用自己的私鑰解密登入密碼,如果密碼正確,就同意使用者登入。

這個過程本身是安全的,但是實施的時候存在一個風險:如果有人截獲了登入請求,然後冒充遠端主機,將偽造的公鑰發給使用者,那麼使用者很難辨別真偽。因為不像https協議,SSH協議的公鑰是沒有證書中心(CA)公證的,也就是說,都是自己簽發的。
可以設想,如果攻擊者插在使用者與遠端主機之間(比如在公共的wifi區域),用偽造的公鑰,獲取使用者的登入密碼。再用這個密碼登入遠端主機,那麼SSH的安全機制就蕩然無存了。這種風險就是著名的”中間人攻擊”(Man-in-the-middle attack)。

  1. ssh服務的版本探測
    開啟msfconsole控制檯,
    這裡寫圖片描述
search ssh //輸入該命令,查詢與ssh服務相關的命令

這裡寫圖片描述
我們在查詢到的模組列表中找到這樣一個版本掃描模組

這裡寫圖片描述
然後使用該模組,在這裡要注意的一點是ssh在這裡使用的是預設埠22,所以省略的埠的設定,僅僅設定了主機地址。當然,如果ssh的服務埠不是預設的22,就要藉助nmap之類的工具,掃描得到ssh到底使用了那個埠。
這裡寫圖片描述
3.使用工具hydra爆破ssh
輸入以下命令開始爆破

hydra -l(使用者名稱) root -P(爆破字典) /usr/share/wordlists/passwords.txt(絕對路徑,passwords.
txt為字典檔名,可以將自己的字典加入到該目錄下) -V(顯示爆破過程) -t(指定執行緒數) 4 ssh://127.0.0.1(如果是預設埠,可以不寫,如果不是預設埠,要加埠xx,如ssh://127.0.0.1:xx)

這裡寫圖片描述

過程時間比較長,這裡花費的時間取決於密碼強度和字典的大小,經過一段時間後,密碼已經成功爆破出來!
這裡寫圖片描述