Web安全實踐(12)密碼探測

吞吞吐吐的發表於2017-09-14

本系列導航http://www.cnblogs.com/xuanhun/archive/2008/10/25/1319523.html

安全技術區http://space.cnblogs.com/group/group_detail.aspx?gid=100566 

前言

(作者:玄魂)

 

接著上一篇的使用者名稱列舉的話題接下來簡單的探討一下常見的密碼探測。

園友Hunts.C昨天留言談到了校內網,他說”就是個使用者ID和郵箱,實際上這裡的使用者ID就是使用者名稱的作用啊。 只不過它的登入是使用郵箱登入“,其實校內網支援的登入方式為使用者名稱登入和郵箱登陸兩種方式,另外對每個使用者都分配了唯一的IDHunts.C說的對,ID和使用者名稱的作用是相同的,但是對於使用者名稱列舉來說,ID是對使用者名稱的隱藏,因為用ID是不能登陸的。

這一次要 說的內容比較少。

正文

12.1自動化密碼探測

所謂自動化密碼探測就是利用探測軟體不斷的向目標發出請求,根據響應來判斷探測成功與否。

自動化探測一般有兩種方式。 一是對同一使用者名稱嘗試不同的密碼,二是對不同的使用者嘗試相同的密碼。第二種方法更能有效的防止賬戶鎖定。

對於使用者名稱和密碼生成有兩種方式,一是使用既存的字典,二是程式根據使用者給定的使用者名稱或密碼組合規則不斷生成。

對於自動化密碼探測最大的障礙是驗證碼和人機區分測試(簡單的問題)。

12.2社會工程學

“社會工程學”這個詞我不知道是怎麼產生的,一開始覺得叫行為心理學似乎更合適。後來才知道社會工程學其實就是間諜活動。

(1)推測法。根據相關資訊,常見的如生日,姓名,電話號碼,常用的數字組合(1213456等),字母組合,郵箱,父母的名字等等。

(2)欺騙。你可以根據他給你的QQ等資訊,通過聊天逐步得到他的相關資訊。

(3)利用客服。比如你可以冒充郵箱使用者本人給客服打電話說密碼丟失。以前聽說QQ可以,前天園友告訴我yahoo的信箱也可以,真是不可思議。

(4)”社會工程”允許你以接近目標本人或他的家人,朋友的方式來獲得你想要的資訊,當然這個web攻擊本身關係不緊密,但是卻是黑客攻擊的手段之一。

 

12.3 Post使用者名稱,密碼

目前也有很多現成的軟體可供選擇,用來破解web登入密碼。關於工具的使用不是我們要討論的重點,我們看一下它的工作原理。

下面是我登入校內網的時候一段POST資料(實際分析過程中應是全過程資料分析,這只是區域性):

POST /Login.do HTTP/1.1

Host: login.xiaonei.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,zh;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: http://www.xiaonei.com/SysHome.do

Cookie: syshomeforreg=1; isnewreg=1; XNESSESSIONID=abc_7S1cRa2rw8aernG6r; ick=abc_7S1cRa2rw8aernG6rheifer.xiaonei.com; __utma=204579609.1392121359.1231048483.1231048483.1231048483.1; __utmb=204579609; __utmc=204579609; __utmz=204579609.1231048483.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); _de=8EAD38BFFD04FDBE; userid=201573034; univid=5426; gender=1; univyear=2005; hostid=201573034; BIGipServerpool_profile=3737916938.20480.0000; xn_app_histo_201573034=6-35-17954-4-8-16555-12012-3-2-13496-19; mop_uniq_ckid=123.189.16.137_1231047874_1991448146

Content-Type: application/x-www-form-urlencoded

Content-Length: 83

email=xuanhun&password=xuanhun521&origURL=http%3A%2F%2Fwww.xiaonei.com%2FSysHome.do

這是一個常規的Post請求資料段,最後的部分傳送的是使用者名稱和密碼,這些資料在網路上傳輸的時候應該是被加密的,因為採用了https連線。暴力探測也就是不斷的向目標伺服器傳送類似的請求,根據響應來判斷是否成功。

12.4關於程式設計

具體的暴力破解程式的設計不是幾句話就能說清楚的,希望有機會把具體的程式展示出來。

下面是一段自動登入的程式碼,展示了暴力破解的一個橫斷面。具體可參HttpWebRequest和HttpWebResponse的相關介紹。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetURL);

request.Method = “POST”; //post

 

request.ContentType = “application/x-www-form-urlencoded”;

request.ContentLength = data.Length;

request.UserAgent = “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.1124)”;

Stream newStream = request.GetRequestStream();

newStream.Write(data, 0, data.Length);

newStream.Close();

request.CookieContainer = cc;

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

cc.Add(response.Cookies);

Stream stream = response.GetResponseStream();

string result = new StreamReader(stream, System.Text.Encoding.Default).ReadToEnd();

return result;

如果你理解了如何傳送登入資訊,那麼再結合多執行緒和字典攻擊就可以寫出自己的web密碼探測工具了。

當然我們沒處理驗證碼的情形,如果它的驗證碼儲存在cookie中或者隱藏欄位中那是十分可笑的事情,我們可以直接用程式讀取。驗證碼一般儲存在伺服器端,一般我們可以將隨機生成的驗證碼的內容放入Session中,使用者提交的時候將提交的內容與Session中的驗證碼進行比較判斷。關於驗證碼的具體內容我想在後面的繞過驗證一節中繼續討論。


本文轉自懸魂部落格園部落格,原文連結:http://www.cnblogs.com/xuanhun/archive/2009/01/04/1368250.html,如需轉載請自行聯絡原作者


相關文章