




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、常見(jiàn) HTTPS 攻擊方法解析0 x00 背景研究常見(jiàn)的 https 攻擊方法Beast crime breach,并針對(duì)https 的特性提出一些安全部署https 的建議。針對(duì)于 HTTPS 的攻擊,多存在于中間人攻擊的環(huán)境中,主要是針對(duì)于HTTPS 所使用的壓縮算法和CBC 加密模式,進(jìn)行 side-channel-attack。這幾類(lèi)攻擊的前置條件都比較苛刻,且都需要受害主機(jī)提交很多次請(qǐng)求來(lái)收集破譯關(guān)鍵數(shù)據(jù)的足夠信息。常見(jiàn)的攻擊方法,主要有,BEAST、Lucky-13、RC4 Biases、CRIME、TIME、BREACH 等。主要對(duì)其中幾種進(jìn)行介紹。0 x01 CRIMEComp
2、ression Ratio Info-leak Made Easy攻擊原理攻擊者控制受害者發(fā)送大量請(qǐng)求,利用壓縮算法的機(jī)制猜測(cè)請(qǐng)求中的關(guān)鍵信息,根據(jù) response 長(zhǎng)度判斷請(qǐng)求是否成功。如下面的 https 頭,攻擊這可以控制的部分為get 請(qǐng)求地址,想要猜測(cè)的部分為Cookie。那么攻擊者只需要在 GET 地址處,不斷變換猜測(cè)字符串,進(jìn)行猜測(cè)。GET /sessionid=a HTTP/1.1 Host: User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0Cookie:
3、sessionid=d3b0c44298fc1c149afbf4c8996fb924GET /sessionid=a HTTP/1.1 Host: User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0)Gecko/20100101 Firefox/16.0Cookie: sessionid=d3b0c44298fc1c149afbf4c8996fb924比如上面的情況 Response 長(zhǎng)度為 1000byte。GET /sessionid=d HTTP/1.1 Host: User-Agent: Mozilla/5.0 (Window
4、s NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0Cookie: sessionid=d3b0c44298fc1c149afbf4c8996fb924當(dāng)攻擊者猜對(duì)了 cookie 的第一個(gè)字母,Response 的長(zhǎng)度會(huì)縮小到 9999byte。當(dāng) Response 被 SSL 加密之后,如果使用RC4 加密模式,長(zhǎng)度并不會(huì)發(fā)生隨機(jī)改變。使用 BCB 加密模式時(shí), 因?yàn)?padding 的原因,長(zhǎng)度會(huì)有略微的改變。受影響的加密算法Deflate = LZ77 + HuffManGZip = Headers + Data Compresse
5、d using Deflate攻擊前提攻擊者可以獲取受害者的網(wǎng)絡(luò)通信包。(中間人攻擊,ISP 供應(yīng)商)瀏覽器和服務(wù)器支持均支持并使用壓縮算法。攻擊這可以控制受害者發(fā)送大量請(qǐng)求并可以控制請(qǐng)求內(nèi)容。防御方法客戶(hù)端可以升級(jí)瀏覽器來(lái)避免這種攻擊。Chrome: 21.0.1180.89 and aboveFirefox: 15.0.1 and aboveOpera: 12.01 and aboveSafari: 5.1.7 and above服務(wù)器端可以通過(guò)禁用一些加密算法來(lái)防止此類(lèi)攻擊。ApacheSSLCompression flag = “SSLCompression off”GnuTLSPri
6、orities flag = “!COMP-DEFLATE禁止過(guò)于頻繁的請(qǐng)求。修改壓縮算法流程,用戶(hù)輸入的數(shù)據(jù)不進(jìn)行壓縮。隨機(jī)添加長(zhǎng)度不定的垃圾數(shù)據(jù)。TLS 1.0.SPDY protocol (Google).Applications that uses TLS compression.Mozilla Firefox (older versions) that support SPDY.Google Chrome (older versions) that supported both TLS and SPDY.POC這個(gè) poc 并不是模擬真實(shí)環(huán)境下的中間人攻擊,只是在python 中利用
7、CRIME 的思想驗(yàn)證了攻擊的可行性。import stringimport zlibimport sysimport random 5.6. charset = string.letters + string.digits 7.8. COOKIE = .join(random.choice(charset) for x in range(30) 9.HEADERS = (POST / HTTP/1.1rnHost: rnConnection: keep-alivernUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKi t/53
8、7.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1rnAccept: */*rnReferer: /rnCookie: secret=+COOKIE+rnAccept-Encoding: gzip,deflate,sdchrnAccept-Language: en-US,en;q=0.8rn19.Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3rn20.rn)BODY =(POST / HTTP/1.1rnHost: rnConnection: keep-alivernUser-Agent:
9、 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKi t/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1rnAccept: */*rnReferer: /rnCookie: secret=)cookie = 29.30. def compress(data):31.c = pressobj()return press(data) + c.flush(zlib.Z_SYNC_FLUSH)def getposset(perchar,chars):posset = baselen = len
10、(compress(HEADERS+perchar)for i in chars:t = len(compress(HEADERS+ perchar+i)if (t=baselen):posset += ireturn possetdef doguess():global cookiewhile len(cookie)30:posset = getposset(BODY+cookie,charset)trun = 1tem_posset = possetwhile 1=0:if not doguess():print (-)ChangebodyBODY = BODYBODY.find(rn)
11、+ 2:print (+)origncookie+COOKIEprint (+)Gotten cookie+cookie0 x02 TIMETiming Info-leak Made Easy攻擊原理Unable to render embedded object: File (1.jpg) not found.攻擊者控制受害者發(fā)送大量請(qǐng)求,利用壓縮算法的機(jī)制猜測(cè)請(qǐng)求中的關(guān)鍵信息,根據(jù) response 響應(yīng)時(shí)間判斷請(qǐng)求是否成功。其實(shí) TIME 和CRIME 一樣都利用了壓縮算法,只不過(guò) CRIME 是通過(guò)長(zhǎng)度信息作為輔助,而TIME 是通過(guò)時(shí)間信息作為輔助。如上圖當(dāng)數(shù)據(jù)長(zhǎng)度,大于 MTU 時(shí)
12、會(huì)截?cái)酁閮蓚€(gè)包發(fā)送,這樣就會(huì)產(chǎn)生較大的相應(yīng)時(shí)間差異。攻擊者吧包長(zhǎng)控制在 MTU 左右,不斷嘗試猜測(cè)COOKIE。 Unable to render embedded object: File (QQ 圖片20140724174303.jpg) not found.如上圖所示,我們通過(guò)添加 Padding 來(lái)吧數(shù)據(jù)包大小增加到和MTU 相等,Case 1 中我們添加的extraByte 和需要猜測(cè)的數(shù)據(jù)重合,因?yàn)閴嚎s算法的原因,并不會(huì)增加包的長(zhǎng)度,而Case 2 中extraByte 和需要猜測(cè)的數(shù)據(jù)并不一致,導(dǎo)致了分包。攻擊這可以通過(guò)響應(yīng)時(shí)間的不同來(lái)區(qū)分 Case1 Case2 兩種情況。攻擊
13、前提攻擊這可以控制受害者發(fā)送大量請(qǐng)求并可以控制請(qǐng)求內(nèi)容。穩(wěn)定的網(wǎng)絡(luò)環(huán)境。防御方法在解密 Response 過(guò)程中加入隨機(jī)的短時(shí)間延遲。阻止短時(shí)間內(nèi)的頻繁請(qǐng)求。0 x03 BEASTBrowser Exploit Against SSL/TLS攻擊原理攻擊者控制受害者發(fā)送大量請(qǐng)求,利用 CBC 加密模式猜測(cè)關(guān)鍵信息。CBC 模式工作的方法是當(dāng)加密第i 塊的時(shí)候,和第i-1 塊的密文異或。更正式地表達(dá)如下:Ci= E(Key, Ci-1 Mi)很顯然,當(dāng)你加密第一塊的時(shí)候,沒(méi)有前一塊的密文和它異或,因此,標(biāo)準(zhǔn)的做法是產(chǎn)生一個(gè)隨機(jī)的初始化向量(IV),并且用它和第一塊明文異或。第一塊M0 的加密如下
14、:C0= E(Key, IV M0).然后,接著第一塊 M1 加密如下:C1= E(Key, C0 M1).現(xiàn)在,除非 C0 碰巧和 IV 一樣(這是非常不可能的),那么,即使M0 = M1,對(duì)于加密函數(shù)來(lái)說(shuō),兩個(gè)輸入是不同的,因此,C0 C1。 CBC 有兩種的基本的使用方法:對(duì)于每條記錄都認(rèn)為是獨(dú)立的;為每一個(gè)記錄產(chǎn)生一個(gè) IV把所有的記錄當(dāng)作一個(gè)鏈接在一起的大對(duì)象,并且在記錄之間繼續(xù)使用 CBC 的狀態(tài)。這意味著最后一條記錄 n 的IV 是 n-1 條記錄的密文。SSLV3 和 TLS1.0 選擇的是第二個(gè)用法。這好像本來(lái)就是個(gè)錯(cuò)誤CBC 有兩種的基本的使用方法:對(duì)于每條記錄都認(rèn)為是獨(dú)立
15、的;為每一個(gè)記錄產(chǎn)生一個(gè) IV把所有的記錄當(dāng)作一個(gè)鏈接在一起的大對(duì)象,并且在記錄之間繼續(xù)使用 CBC 的狀態(tài)。這意味著最后一條記錄 n 的IV 是 n-1 條記錄的密文。SSL 3.0 和 TLS1.0 選擇的是第二個(gè)用法。因此產(chǎn)生了加密算法的安全問(wèn)題。攻擊者可以把想要猜測(cè)的數(shù)據(jù)段替換掉成:X Ci-1 P當(dāng)這個(gè)注入的內(nèi)容被加密,X 會(huì)被異或,結(jié)果傳給加密算法的明文塊如下:Ci-1 P如果 P=Mi , 新的密文塊將和Ci 一樣,這意味著,你的猜測(cè)是正確的。攻擊前提攻擊者可以獲取受害者的網(wǎng)絡(luò)通信包。(中間人攻擊,ISP 供應(yīng)商)攻擊者需要能得到發(fā)送敏感數(shù)據(jù)端的一部分權(quán)限。以便將自己的信息插入
16、SSL/TLS 會(huì)話(huà)中。攻擊者需要準(zhǔn)確的找出敏感數(shù)據(jù)的密文段。攻擊這可以控制受害者發(fā)送大量請(qǐng)求并可以控制請(qǐng)求內(nèi)容。防御方法使用 RC4 加密模式代替BCB 加密模式。部署 TLS 1.1 或者更高級(jí)的版本,來(lái)避免SSL 3.0/TLS 1.0 帶來(lái)的安全問(wèn)題。在服務(wù)端設(shè)置每傳輸固定字節(jié),就改變一次加密秘鑰。影響范圍TLS 1.0.SPDY protocol (Google).Applications that uses TLS compression.Mozilla Firefox (older versions) that support SPDY.Google Chrome (older
17、versions) that supported both TLS and SPDY.POC僅在 python 上模擬了攻擊思想的實(shí)現(xiàn),編碼中只實(shí)現(xiàn)了第一個(gè)字母的猜測(cè)。import sysimport stringimport randomfrom Crypto.Cipher import AES 5.key = lyp62/22Sh2RlXJFmode = AES.MODE_CBC8. vi = 1234567812345678charset = string.letters + string.digitscookie = .join(random.choice(charset) for x
18、 in range(30)HEADERS = (POST / HTTP/1.1rnHost: rnConnection: keep-alivernUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKi t/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1rnAccept: */*rnReferer: /rnCookie: secret=+cookie+rnAccept-Encoding: gzip,deflate,sdchrnAccept-Language: en-U
19、S,en;q=0.8rn20.Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3rn21.rn)global pad_numdef add_padding(plaintext):global pad_numpad_num = 16 - len(plaintext) % 16for i in range(0,pad_num):plaintext += chr(pad_num)return plaintextdef check_padding(plaintext):global pad_numfor i in range(1,pad_num+1):if (
20、plaintext-i!=chr(pad_num):return Falsereturn True 35.def encrypto(plaintext):global pad_numobj = AES.new(key,mode,vi)if (len(plaintext) % 16):plaintext = add_padding(plaintext)else:pad_num=0ciphertext = obj.encrypt(plaintext)if (check_padding(ciphertext):return ciphertextelse:return 0 48.def decrypt
21、o(ciphertext):obj = AES.new(key,mode,vi)plaintext = obj.decrypt(ciphertext)return plaintext 53.def findcookie():global HEADERSreturn HEADERS.find(secret=)+7 57.guess_cookie=pos_cookie=findcookie()pos_block_s = pos_cookie + 16 - pos_cookie%16HEADERS = HEADERS:pos_cookie + (16 - pos_cookie % 16 + 15)*
22、a +HEAD ERSpos_cookie:encry_head = encrypto(add_padding(HEADERS)per_per_block = encry_headpos_block_s - 16:pos_block_s#Ci-1per_block = encry_headpos_block_s:pos_block_s+16#xaft_block = encry_headpos_block_s+16:pos_block_s+32#Ci+1for i in charset:guess_block = a * 15 + iinsert_block = .join(chr(ord(a
23、) ord(b) ord(c) for a,b,c inzip(per_block,per_per_block,guess_block)temp_header = HEADERS:pos_block_s+16 + insert_block + HEADERSpo s_block_s+16:encry_temp_header = encrypto(add_padding(temp_header)if (aft_block = encry_temp_headerpos_block_s+32:pos_block_s+48):print (+)first byte is:+iprint(+)orign
24、 cookie:+cookie攻擊者首先使用降級(jí)攻擊,來(lái)讓瀏覽器使用 ssl v3.0,再通過(guò)ssl v3.0 CBC-mode 存在的缺陷,竊取到用戶(hù)傳輸?shù)拿魑摹? x04 POODLE降級(jí)攻擊ssl v3.0 是一個(gè)存在了很久的協(xié)議了,現(xiàn)在大多數(shù)瀏覽器為了兼容性都會(huì)支持這個(gè)協(xié)議,但是并不會(huì)首先使用這個(gè)協(xié)議,中間人攻擊者可以駁回瀏覽器協(xié)商高版本協(xié)議的請(qǐng)求,只放行 ssl v3.0 協(xié)議。Padding Oracle 攻擊針對(duì)于 CBC 的攻擊之前已經(jīng)有一些了,比如,Beast,Lucky17 之類(lèi)的,詳細(xì)可以看這里首先來(lái)看 CBC-mod 的加解密流程。解密流程加密流程校驗(yàn)流程MAC1 =
25、hash(明文)密文 = Encode(明文+MAC1+Padding,K) 明文 = Decode(密文,k) - MAC1-Padding(padding 的長(zhǎng)度由最后一個(gè)字節(jié)標(biāo)識(shí))MAC2 = hash(明文) 如果 MAC1 = MAC2 則校驗(yàn)成功 否則失敗知二求三Padding Oracle 攻擊一般都會(huì)滿(mǎn)足一個(gè)知二求三的規(guī)律,如下圖VI解密后的數(shù)據(jù),叫它 midText 把Plaintext這三個(gè)值我們得到其中兩個(gè)就可以推出另外一個(gè),因?yàn)樗麄冊(cè)谝黄?Xor 了嘛。 HYPERLINK /wp-content/uploads/2014/12/file0004.jpg /wp-con
26、tent/uploads/2014/12/file0004.jpg在 Poodle 攻擊中,我們會(huì)把最后一個(gè)數(shù)據(jù)塊替換成我們想要猜測(cè)的數(shù)據(jù)塊。如下圖所示。這樣導(dǎo)致的直接后果就是,CBC 完整性驗(yàn)證失敗,數(shù)據(jù)包被駁回。我們假設(shè)最后一個(gè)數(shù)據(jù)塊均為padding組成(其實(shí)我們可以通過(guò)控制包的長(zhǎng)度來(lái)達(dá)到這一目的,比如增加 path 的長(zhǎng)度)那么當(dāng)且僅當(dāng) Plaintext7 = 7(block 為 16 為時(shí)為 15) 的時(shí)候CBC 完整性校驗(yàn)才會(huì)通過(guò)。如果不為 7, 多刪或者少刪的 padding,都會(huì)影響到MAC 的正確取值,從而導(dǎo)致校驗(yàn)失敗。那么,我們只需要不斷地更改(1) IV 最后一位的值 ,直到(3) Plaintext 最后一位為 7 (CBC 驗(yàn)證通過(guò)) 的時(shí)候,我們就可以推出 (2) mid text 的最后一位。0 x05 安全配置建議此處的安全配置以 nginx 為例,主要在Nginx.conf 中配置。使用較為安全的 SSL 加密協(xié)議。ssl_protocols TLSv1 TLSv1.1 TLSv1.2;使用嚴(yán)格的加密方法設(shè)置。ssl_ciphersECD
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 在線(xiàn)外賣(mài)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 煙葉批發(fā)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 棉花供銷(xiāo)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 生活小物品批發(fā)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 工藝美術(shù)品及收藏品零售企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 鹽、醬油、醋及調(diào)味品批發(fā)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 藥店經(jīng)營(yíng)培訓(xùn)方案
- 美容養(yǎng)顏花茶創(chuàng)業(yè)計(jì)劃
- 安全生產(chǎn)月科普
- 蟲(chóng)蛇咬傷護(hù)理
- 《景陽(yáng)岡》課本劇劇本
- qc小組活動(dòng)記錄
- Book Unit Learning Chinese Style的實(shí)用學(xué)習(xí)課件
- 益盟軟件使用說(shuō)明書(shū)
- GB/T 778.1-2007封閉滿(mǎn)管道中水流量的測(cè)量飲用冷水水表和熱水水表第1部分:規(guī)范
- GB/T 34754-2017家庭牧場(chǎng)草地放牧強(qiáng)度分級(jí)
- GB/T 28572-2012大中型水輪機(jī)進(jìn)水閥門(mén)系列
- GB/T 21287-2021電子特氣三氟化氮
- GB/T 13818-2009壓鑄鋅合金
- CB/T 3780-1997管子吊架
- 2009-2022歷年湖北省選調(diào)生招錄考試《綜合知識(shí)和行政職業(yè)能力測(cè)驗(yàn)》真題含答案帶詳解2022-2023上岸資料匯編1
評(píng)論
0/150
提交評(píng)論