python指令碼生成密碼字典,暴力破解伺服器root密碼
大概在一年多前,我想做一個用於暴力破解md5加密的程式,原理是預先通過組合字串,算出對應的md5加密,然後根據md5加密串來查詢對應的字串,這種方法從理論上是可行的,實際操作起來有一些困難。
有的時候,一旦自己產生了一個想法,就自然有非常大的動力去努力實現這個想法。
我們算出字串admin經過MD5加密過後得到的值:
可以將原串和加密串以<K,V>對的格式儲存,這樣對於給定的加密串,可以很容易的查詢到原串。
但是,過程這麼容易的事情,為什麼在網上找不到一個可以根據任意MD5加密串破解到原串的網站呢?
後來我知道了,使用字母、數字、特殊字元組合成字串,隨著字串位數的增加,需要儲存空間會呈現指數增長的規律,如果說使用94個字元生成1為到80位的字串,把這寫字串儲存下來所需要的硬碟空間是很大的,之前計算過,準備這些硬碟需要非常多的錢。
之所以沒有這樣的完全可以破解md5加密串的網站,最大的原因是:空間不夠。
但是,根據一般的使用習慣,大家的密碼長度一般不會太長,對於一些短密碼的暴力破解,在自己的電腦上可以試一試。
今天準備了一個6位以內的密碼字典。
用到的python指令碼如下圖:
在python下給定字元自動組合字串顯得十分方便,之前用php寫的時候,是用遞迴來實現的,程式碼要複雜一些。
將上面的指令碼儲存為gen.py,
在終端執行命令:
程式開始生成字串,並儲存在檔案中。
指令碼執行起來並不是很快,因為數量太多了,從上面的截圖中可以看到,當前生成了少量的6位字串,檔案的體積已經到了1.77G,我終止了指令碼,因為需要測試的密碼已經在裡面了,如果繼續生成完整的所有6位字串,我的電腦的硬碟是不夠的。
到這裡,密碼字典檔案就已經準備好了。
接下來,對目標伺服器的root密碼進行暴力破解。
目標伺服器是linux的系統,開啟了ssh服務,存在root賬戶,需要找到root賬戶的密碼,並登入。
使用的工具是SPARTA,在上一篇四款用於資訊收集的黑客工具文章中提到過,具有掃描埠和暴力破解的功能。
將本地電腦當作目標伺服器,安裝ssh服務,確保可以使用root進行遠端登入。啟動SPARTA,掃描埠,可以掃到22埠處於開啟狀態。
嘗試第一次破解:不成功,因為密碼檔案行數太多
[ERROR] Maximum number of passwords is 50000000, this file has 324567999 entries.
將密碼檔案修改一下,因為我的密碼只有5位,那麼為了達到測試效果,就只准備所有5位的密碼。
再次測試,成功基於密碼字典的暴力破解root賬戶密碼。
根據使用阿里雲伺服器的經歷而言,阿里雲的雲盾是可以監測到暴力破解root密碼攻擊的,但是對於一些自己搭設的伺服器,如果在安全防護這方面做的不到位,很有可能就會在暴力破解之下被攻破,進而有可能產生十分不好的影響。