1. 程式人生 > >python指令碼生成密碼字典,暴力破解伺服器root密碼

python指令碼生成密碼字典,暴力破解伺服器root密碼

大概在一年多前,我想做一個用於暴力破解md5加密的程式,原理是預先通過組合字串,算出對應的md5加密,然後根據md5加密串來查詢對應的字串,這種方法從理論上是可行的,實際操作起來有一些困難。

python指令碼生成密碼字典,暴力破解伺服器root密碼

 

 

有的時候,一旦自己產生了一個想法,就自然有非常大的動力去努力實現這個想法。

我們算出字串admin經過MD5加密過後得到的值:

 

python指令碼生成密碼字典,暴力破解伺服器root密碼

 

 

可以將原串和加密串以<K,V>對的格式儲存,這樣對於給定的加密串,可以很容易的查詢到原串。

但是,過程這麼容易的事情,為什麼在網上找不到一個可以根據任意MD5加密串破解到原串的網站呢?

後來我知道了,使用字母、數字、特殊字元組合成字串,隨著字串位數的增加,需要儲存空間會呈現指數增長的規律,如果說使用94個字元生成1為到80位的字串,把這寫字串儲存下來所需要的硬碟空間是很大的,之前計算過,準備這些硬碟需要非常多的錢。

之所以沒有這樣的完全可以破解md5加密串的網站,最大的原因是:空間不夠。

但是,根據一般的使用習慣,大家的密碼長度一般不會太長,對於一些短密碼的暴力破解,在自己的電腦上可以試一試。

今天準備了一個6位以內的密碼字典。

用到的python指令碼如下圖:

 

python指令碼生成密碼字典,暴力破解伺服器root密碼

 

 

在python下給定字元自動組合字串顯得十分方便,之前用php寫的時候,是用遞迴來實現的,程式碼要複雜一些。

將上面的指令碼儲存為gen.py,

在終端執行命令:

 

python指令碼生成密碼字典,暴力破解伺服器root密碼

 

 

程式開始生成字串,並儲存在檔案中。

 

python指令碼生成密碼字典,暴力破解伺服器root密碼

 

 

指令碼執行起來並不是很快,因為數量太多了,從上面的截圖中可以看到,當前生成了少量的6位字串,檔案的體積已經到了1.77G,我終止了指令碼,因為需要測試的密碼已經在裡面了,如果繼續生成完整的所有6位字串,我的電腦的硬碟是不夠的。

到這裡,密碼字典檔案就已經準備好了。

接下來,對目標伺服器的root密碼進行暴力破解。

目標伺服器是linux的系統,開啟了ssh服務,存在root賬戶,需要找到root賬戶的密碼,並登入。

使用的工具是SPARTA,在上一篇四款用於資訊收集的黑客工具文章中提到過,具有掃描埠和暴力破解的功能。

將本地電腦當作目標伺服器,安裝ssh服務,確保可以使用root進行遠端登入。啟動SPARTA,掃描埠,可以掃到22埠處於開啟狀態。

嘗試第一次破解:不成功,因為密碼檔案行數太多

 

python指令碼生成密碼字典,暴力破解伺服器root密碼

 

 

[ERROR] Maximum number of passwords is 50000000, this file has 324567999 entries.

將密碼檔案修改一下,因為我的密碼只有5位,那麼為了達到測試效果,就只准備所有5位的密碼。

 

python指令碼生成密碼字典,暴力破解伺服器root密碼

 

 

再次測試,成功基於密碼字典的暴力破解root賬戶密碼。

根據使用阿里雲伺服器的經歷而言,阿里雲的雲盾是可以監測到暴力破解root密碼攻擊的,但是對於一些自己搭設的伺服器,如果在安全防護這方面做的不到位,很有可能就會在暴力破解之下被攻破,進而有可能產生十分不好的影響。