OpenSSL漏洞簡述與網(wǎng)絡(luò)檢測方法
一、CVE-2014-0160漏洞背景
2014年4月7日OpenSSL發(fā)布了安全公告,在OpenSSL1.0.1版本中存在嚴重漏洞(CVE-2014-0160)。OpenSSL Heartbleed模塊存在一個BUG,問題存在于ssl/dl_both.c文件中的心跳部分,當攻擊者構(gòu)造一個特殊的數(shù)據(jù)包,滿足用戶心跳包中無法提供足夠多的數(shù)據(jù)會導致memcpy函數(shù)把SSLv3記錄之后的數(shù)據(jù)直接輸出,該漏洞導致攻擊者可以遠程讀取存在漏洞版本的OpenSSL服務(wù)器內(nèi)存中多達64K的數(shù)據(jù)。
在目前已有的資料中,國內(nèi)外同行已經(jīng)稱本漏洞為 “擊穿心臟”、“毀滅級”、“今年最嚴重”的漏洞。由于SSL協(xié)議是網(wǎng)絡(luò)加密登陸認證、網(wǎng)絡(luò)交易等的主流安全協(xié)議,而OpenSSL又是主流的SSL搭建平臺。因此這些稱呼好不為過,建議各網(wǎng)絡(luò)服務(wù)提供者、管理機構(gòu)和用戶高度注意本漏洞的處理情況,希望廣大用戶做出相應(yīng)的對策。
二、OpenSSL受影響版本的分布
根據(jù)已經(jīng)公開的信息,該漏洞影響分布情況如下。
OpenSSL 1.0.1f (受影響)
OpenSSL 1.0.2-beta (受影響)
OpenSSL 1.0.1g (不受影響)
OpenSSL 1.0.0 branch (不受影響)
OpenSSL 0.9.8 branch (不受影響)
三、處置建議
1、針對網(wǎng)絡(luò)管理員,可以做的事情包括
鑒于本漏洞的嚴重程度,如果確定本漏洞存在,對一般性的網(wǎng)絡(luò)服務(wù)者,暫停服務(wù)進行處置是一種較好的應(yīng)對策略。
如果確定本漏洞存在,又必須保證服務(wù)不能停止,可以在漏洞修補過程中,暫時停止https服務(wù),改用http服務(wù),但這會帶來相關(guān)認證信息明文傳輸?shù)娘L險,具體利害需要做出謹慎的判斷權(quán)衡。
具體修補方式為:
OpenSSL版本升級到最新的1.0.1g
重新生成你的私鑰
請求和替換SSL的證書
也可以使用-DOPENSSL_NO_HEARTBEATS參數(shù)重新編譯低版本的OpenSSL以禁用Heartbleed模塊
最新版本升級地址為:https://www.openssl.org/source/. (OpenSSL官方)
2、針對普通網(wǎng)絡(luò)用戶,我們鄭重提出的建議包括
鑒于本漏洞的嚴重程度,在不能確定你所網(wǎng)站和服務(wù)修補了本漏洞的情況下,在未來2~3天內(nèi)(2014年4月9日日起)不登陸,不操作是一種較好的應(yīng)對策略(這些操作包括網(wǎng)購、網(wǎng)銀支付等)。
如果你必須進行操作,可以關(guān)注這些網(wǎng)站和服務(wù)的修改情況。
一些手機客戶端的登陸,是對SSL的封裝,因此手機登錄也不安全。
其他安全企業(yè)團隊會公布目前仍有問題的站點、或沒有問題的站點情況,請予以關(guān)注。
四、分析與驗證
目前該漏洞的利用和驗證腳本已經(jīng)可以被廣泛獲取,地址包括。
http://fi****o.io/Heartbleed/ (web測試頁面)
http://s3. ****guin.org/ssltest.py (python腳本)
http:// **.* u u.com/s/1nt3BnVB (python腳本)
盡管從安全團隊的角度,我們不適宜明文傳播這些地址,但我們必須提醒用戶的是,幾乎所有的攻擊者都已經(jīng)擁有了相關(guān)資源,在過去24小時內(nèi),這一漏洞已經(jīng)遭到了極為廣泛的探測和嘗試。相信大多數(shù)有漏洞的站點均遭到了不止一次的攻擊。
鑒于該漏洞的嚴重程度和攻擊爆發(fā)事件,我們不得不打破搭建環(huán)境,測試驗證的管理,
在第一時間,選擇相對“輕量級”的網(wǎng)站做出直接驗證,以分析其實際后果敏感信息。通過網(wǎng)絡(luò)中已有的測試方法,我們尋找到幾個存在問題的網(wǎng)站進行分析,為了避免行為失當,我們沒有選擇與金融、交易相關(guān)的站點。
存在問題的網(wǎng)站地址:
Ap***.*****.gov.cn (測試時間為2014-04-09 01:00)
my-****.in (測試時間為2014-04-09 01:10)
www.shu****.cn (測試時間為2014-04-09 01:15)
git****.com (測試時間為2014-04-09 01:20)
feng*****.com (測試時間為2014-04-09 01:30)
獲取回來的相關(guān)信息情況如下:
圖 1 測試網(wǎng)站1
通過漏洞利用工具發(fā)送數(shù)據(jù)后,返回的數(shù)據(jù)中可以看到有內(nèi)網(wǎng)IP地址、路徑等信息。
圖 2 測試網(wǎng)站2
通過漏洞利用工具發(fā)送數(shù)據(jù)后,返回的數(shù)據(jù)中可以看到有APP信息、cookie信息和用戶名信息等。
圖 3 測試網(wǎng)站3
通過漏洞利用工具發(fā)送數(shù)據(jù)后,返回的數(shù)據(jù)中可以看到有手機號碼等。
圖 4 測試網(wǎng)站4
通過漏洞利用工具發(fā)送數(shù)據(jù)后,返回的數(shù)據(jù)中可以看到有信箱和密碼等信息。
通過上面的幾個網(wǎng)站的分析測試,發(fā)現(xiàn)該漏洞確實可以獲取到帶有敏感信息的內(nèi)存內(nèi)容。例如:用戶的cookie信息、內(nèi)網(wǎng)IP地址、用戶名、密碼、手機號、信箱等。如攻擊者利用此漏洞對網(wǎng)絡(luò)交易、證券、銀行等網(wǎng)絡(luò)進行攻擊,那么將會獲取到用戶名、密碼、銀行賬號等敏感信息。再次提醒網(wǎng)站管理員和使用SSL協(xié)議連接網(wǎng)站的用戶請盡快按照我們的處置建議進行操作。
五、網(wǎng)絡(luò)檢測相關(guān)方法
通用Snort規(guī)則檢測
由于眾所周知的SSL協(xié)議是加密的,我們目前沒有找到提取可匹配規(guī)則的方法,我們嘗試編寫了一條基于返回數(shù)據(jù)大小的檢測規(guī)則,其有效性我們會繼續(xù)驗證,如果有問題歡迎反饋。
alert tcp $EXTERNAL_NET any -> $HOME_NET 443 (msg:"openssl Heartbleed attack";flow:to_server,established; content:"|18 03|"; depth: 3; byte_test:2, >, 200, 3, big; byte_test:2, <, 16385, 3, big; threshold:type limit, track by_src, count 1, seconds 600; reference:cve,2014-0160; classtype:bad-unknown; sid:20140160; rev:2;)
Snort規(guī)則說明:此次漏洞主要針對的SSL協(xié)議。是針對心跳數(shù)據(jù)包前4個字節(jié)中包含\x18\x03,而在數(shù)據(jù)包第5個字節(jié)和第6個字節(jié)的數(shù)值按大尾模式轉(zhuǎn)化成數(shù)值在200和16385之間,在后面則是一些報警和過濾功能,日志記錄里,每10分鐘記錄一次。
行為檢測
從公共網(wǎng)絡(luò)管理者的角度,可以從同一IP短時間探測多個443端口的網(wǎng)絡(luò)連接角度進行檢測。這樣可以發(fā)現(xiàn)攻擊者或肉雞的大面積掃描行為。
另外由于攻擊者可能定期性的進行數(shù)據(jù)持續(xù)獲取,也可以從連接持續(xù)規(guī)律的時間性和首發(fā)數(shù)據(jù)數(shù)量的對比的角度進行檢測。
其他
是否相關(guān)攻擊的主機痕跡和取證方式,我們正在驗證。