前面的講座中,他們介紹了SIP安全的幾個(gè)核心概念,包括,認(rèn)證,簽權(quán),SIP加密,TLS等。現(xiàn)在我們繼續(xù)討論關(guān)于對語音的加密,DTLS,目前出現(xiàn)的幾個(gè)安全問題,如何防范這些安全問題和如何使用工具來檢測這些問題。
1
在我們的講座中,我們前面討論了對SIP信令的加密,但是僅對SIP加密仍然不會(huì)實(shí)現(xiàn)真正的加密,系統(tǒng)必須對語音也進(jìn)行加密。對語音加密的則稱之為SRTP。
SRTP的主要作用當(dāng)然是確保語音流和RTP Payload的加密安全,同時(shí)防范第三方軟件對語音的注入,確保本身語音的完整性。SRTP不使用PKI的方式來交換密鑰,它使用的是Master key的方式。如果直接通過明文的SDP發(fā)送key是不安全的,所以必須使用加密的方式來傳輸。如果發(fā)起INVITE之前沒有開啟TLS的話,SDP消息中的k就會(huì)被暴露出來,這也是非常不安全的。
如何傳輸以安全的方式傳輸SDP中的k是一個(gè)非常復(fù)雜的流程。以下是一個(gè)傳輸SDP k的流程圖。這里需要注意到是,在傳輸過程中,用戶需要設(shè)置SRTCP來保證第三方侵入,防止對呼叫方強(qiáng)制發(fā)送BYE消息,掛斷呼叫。
cipher 加密默認(rèn)使用的是AES,它是一種高級的加密方式。RFC3711 標(biāo)準(zhǔn)對此加密方式的類型和算法有非常詳細(xì)地說明,AES本身就非常復(fù)雜,筆者對此不是太了解,如果讀者希望獲得更多算法的話,筆者建議讀者查閱RFC 3711。我們現(xiàn)在介紹的SDP中的k屬性,它相對比較簡單,所有的k的消息都在交互中進(jìn)行。另外一種方式就是使用SDP中的Crypto,它也是一種交互機(jī)制,但是支持了很多參數(shù),而且比較靈活。它主要描述了前一個(gè)單播媒體中的cryptographic suite,key 參數(shù)和會(huì)話參數(shù)。注意,Crypto必須出現(xiàn)在SDP的媒體中,不會(huì)出現(xiàn)在信令中;镜恼Z法格式為:
a=crypto: []
在以上的舉例中,SDP包含了3個(gè)m 媒體流,但是其中的兩個(gè)媒體流則使用了RTP/SAVP傳輸,每個(gè)媒體流都有自己的crypto。
關(guān)于crypto具體的解釋如下:
tag 1 定義crypto的suite。一般默認(rèn)是1。
AES_CM_128_HMAC_SHA1_80 則表示是SRTP使用的cipher。
HMAC_SHA1_80是一個(gè)80bit的認(rèn)證tag消息。
Master key的長度是128 bit(前面已經(jīng)定義為AES_CM_128),默認(rèn)的最大生命周期是2^20。
inLine 是一種Key的方式。這里已經(jīng)明確,inLine 后面的一串字符(PSXXXVBR)。注意,這里也可能是一個(gè)URL。
1:32這里不是1 是Master Key ID,32 Bytes長。也可以支持更多更多的Master key,這些key未來可能會(huì)更新。
我們的示例中使用的是默認(rèn)的設(shè)置。關(guān)于crypto suite在RFC4586中有非常詳細(xì)地定義,我們這里不再更多討論。
以下是一個(gè)終端設(shè)置的舉例,用戶必須啟動(dòng)相應(yīng)的安全設(shè)置和參數(shù)。注意,不同的終端可能支持的參數(shù)有所不同,用戶要注意檢查。
在SDP中的消息舉例,這里通常出現(xiàn)的兩個(gè)crpto中,用戶會(huì)首先選擇第一個(gè)crpto。另外,一定要注意,因?yàn)榧用苁请p方的安全機(jī)制,需要雙方檢查,同時(shí)需要IPPBX本身要配置相應(yīng)的設(shè)置,否則可能導(dǎo)致呼叫失敗。
2
盡管SIP加密方式已經(jīng)對SIP信令點(diǎn)安全設(shè)置了很多復(fù)雜的算法,但是仍然缺乏對呼叫方的身份(Caller Identity)認(rèn)證經(jīng)過多次轉(zhuǎn)發(fā)到身份保護(hù)機(jī)制。如果初始的SIP請求發(fā)起方經(jīng)過多個(gè)路徑,當(dāng)初SIP消息的發(fā)起者的身份在到達(dá)最終目的地之前可能因?yàn)榘踩膯栴}發(fā)生修改。RFC4474 對類似呼叫方身份做了安全的保護(hù)。RFC 4474 在頭域中定義了兩個(gè)參數(shù)值:Identity和Identity-Info來確保發(fā)起請求者的安全。Identity負(fù)責(zé)傳輸用戶有效性的簽名消息,Identity-Info負(fù)責(zé)對證書簽名者傳輸一個(gè)證明信息。
以下圖例解釋了如何通過SIP頭域中的Indentity和Indentify-Info 發(fā)送到呼叫請求中的身份消息。
整個(gè)身份驗(yàn)證的流程經(jīng)過以下幾個(gè)步驟:
終端發(fā)起INVITE消息,Proxy收到消息以后和自簽的證書服務(wù)器進(jìn)行交互。
本地Proxy通過證書服務(wù)器,使用hash和from header生成本用戶的Indentity。
簽名服務(wù)器返回證書消息,Proxy在SIP消息中添加證書的Indentity和Indentity-Info(證書發(fā)放簽名)。然后對對端Proxy發(fā)起一個(gè)INVITE消息。
對端Proxy收到INVITE消息以后,通過web server 獲取證書信息,然后提取SIP消息中的Indentity和Indentity-Info,結(jié)合hash來計(jì)算用戶安全身份。
如果驗(yàn)證成功,則對另外一個(gè)終端發(fā)起INVITE消息。整個(gè)驗(yàn)證過程結(jié)束。
注意,RFC 4474 僅發(fā)布了SIP請求中的安全機(jī)制,并沒有規(guī)定如果發(fā)生錯(cuò)誤時(shí)的響應(yīng)處理機(jī)制。響應(yīng)處理是一個(gè)更加復(fù)雜的處理流程,希望未來有更多RFC規(guī)定來進(jìn)一步的優(yōu)化。
通過以上身份的驗(yàn)證,整個(gè)INVITE信息的安全處理結(jié)束,接下來啟動(dòng)語音的安全認(rèn)證流程。這里使用了DTLS(Datagram Transport Layer Security)來驗(yàn)證Indentity和語音的加密處理。以前我們介紹過,TLS不能支持UDP的傳輸,但是實(shí)際工作場景中,仍然有很多應(yīng)用使用UDP。所以,為了滿足UDP的安全處理機(jī)制,通過對TLS拓展實(shí)現(xiàn)DTLS的安全機(jī)制。DTLS可以適用于時(shí)延比較敏感的應(yīng)用場景和VPN(隧道)等場景。在以下場景中,INVITE完成以后,用戶通過DTLS實(shí)現(xiàn)對雙方Indentity加密認(rèn)證,也包括來對語音進(jìn)行加密。
當(dāng)然,以上場景僅是一個(gè)非常簡單的雙方呼叫的場景,事實(shí)上,在DTLS加密的環(huán)境中,很多應(yīng)用層面的功能需要考慮,例如,匿名呼叫的防范,早期媒體流的處理,分拆SIP請求,多個(gè)媒體處理的握手認(rèn)證流程。如果Proxy在處理這些功能處理時(shí)不能正確處理DTLS握手的流程,也同樣會(huì)導(dǎo)致很多呼叫問題。關(guān)于DTLS的規(guī)定,用戶可以參考RFC5763進(jìn)行進(jìn)一步的研究,我們這里比做更多討論。
3
上面我們提到了關(guān)于對發(fā)起呼叫方的安全控制機(jī)制,但是,目前仍然沒有看到非常完整的關(guān)于呼叫方安全保障的完整的解決方案,除了RFC 4474以外,以下規(guī)定也對caller的身份做了相關(guān)的規(guī)定:
- RFC 4474bis-00是RFC 4474的升級,除了header中的identiy以外使用,不僅僅在from header中使用SIP URL,在from header中還增加了Tel的號碼支持。
- STIR(Secure Telephone Identity)是目前專門針對VoIP-to-PSTN規(guī)定的標(biāo)準(zhǔn),主要目的對發(fā)起呼叫者的號碼進(jìn)行保護(hù)和確認(rèn)。因?yàn),在?shí)際電話應(yīng)用的場景中,大部分的用戶仍然相信普通電話號碼的呼叫,但是因?yàn)榫W(wǎng)絡(luò)的介入,PSTN號碼可能最終被其他非法業(yè)務(wù)利用來進(jìn)行非法呼叫。此標(biāo)準(zhǔn)專門針對非法呼叫,語音語音郵箱攻擊等業(yè)務(wù)設(shè)計(jì)了不同的機(jī)制。具體規(guī)定請讀者查閱STIR證書草案。
- P-Asserted-Identity:服務(wù)提供商對號碼服務(wù)提供的認(rèn)證用戶保護(hù)。其中,在SIP INVITE的呼叫中包括了caller id消息,Proxy 通過在SIP頭中添加P-Asserted-Identity對呼出的網(wǎng)絡(luò)聲明其真實(shí)性。
- PSTN網(wǎng)絡(luò)中的ISUP通過S/MIME 支持了SIP的SDP加密,需要說明的是,SIP header 不會(huì)被加密,仍然需要通過TLS處理。此圖例中,SIP經(jīng)過兩個(gè)Gateway 傳輸,最后到達(dá)另外一邊的終端。通過MIME來傳輸ISUP消息。
- IPPBX SIP trunk 和服務(wù)提供商之間的安全策略限制或防范設(shè)備。在上面的安全策略中,我們所探討的都是基于本地認(rèn)證機(jī)制來實(shí)現(xiàn)的。這些解決方案相對比較復(fù)雜。如果用戶部署了企業(yè)IPPBX的話,企業(yè)IPPBX通過SIP 中繼實(shí)現(xiàn)外部呼叫連接的話,可以通過以下方式實(shí)現(xiàn):
通過SIP中級加密的方式的話,企業(yè)用戶的SIP中繼必須需要安全處理,例如,使用MD5或者TLS加密的方式。如果按照這樣的方式來對接運(yùn)營商trunk,本地PBX需要支持支持運(yùn)營商提供的認(rèn)證方式,運(yùn)營商也可以調(diào)整認(rèn)證方式接受本地PBX生成的證書,本地IPPBX必須有有效的證書。
使用對SIP支持比較好的防火墻來對SIP進(jìn)行安全處理。事實(shí)上,類似的方法也可能遇到很多問題。
使用IP-Sec 設(shè)備或者SBC來連接,通過IP-Sec設(shè)備來對所有語音設(shè)備進(jìn)行加密處理。這里要注意,因?yàn)镮P-Sec設(shè)備會(huì)處理全部的信令和媒體,增加了很多網(wǎng)絡(luò)開銷,帶寬要求也會(huì)隨之增加。從目前市場情況來看,如果針對VOIP 語音應(yīng)用來說,可能SBC是最佳的解決方案。在后期的討論中,我們會(huì)重點(diǎn)介紹SBC的作用,讀者可以了解更多比較全面的關(guān)于SBC的解決方案。
4
在前面的章節(jié)和本章節(jié)的前幾個(gè)部分我們重點(diǎn)從技術(shù)的角度討論了關(guān)于SIP中安全機(jī)制的設(shè)置和一些技術(shù)概念。在以下的圖例中,VOIP用戶仍然面對很多的安全問題,包括上面提到的那些問題,這些安全問題涉及了整個(gè)網(wǎng)絡(luò)的方方面面,同時(shí)也涉及了公司安全策略和各種規(guī)章制度。
研究人員Dimitris Geneiatakis發(fā)表的關(guān)于幾種SIP安全的匯總:
如果我們回到具體到現(xiàn)實(shí)環(huán)境中,SIP安全的問題主要包括以下幾個(gè)方面:
通常情況下,VOIP電話系統(tǒng)都會(huì)受到至少五種以上的攻擊或侵入。因?yàn)槠年P(guān)系,我們這里不展開討論所有的攻擊方式和細(xì)節(jié)。關(guān)于以上攻擊方式的介紹,請讀者查閱SANS Institute Reading Room 發(fā)表的文章,作者重點(diǎn)介紹了各種攻擊方式的概念和基本原理。哥倫比亞大學(xué)的SIP研究機(jī)構(gòu)也發(fā)布過關(guān)于SIP安全的介紹,用戶可以查閱。如果讀者對安全方面的加密算法有非常濃厚的興趣,可以查閱Amruta Ambre發(fā)表的關(guān)于算法加密討論的文章。
以下是一個(gè)示例通過修改SIP信息,把真正的呼叫轉(zhuǎn)入到侵入者自己的終端,用戶必須使用TLS/PKI/SRTP對信令和語音加密。
更多關(guān)于使用工具侵入或偽裝的操作方式,請參閱筆者提供的參考資料。
另外一個(gè)案例是一個(gè)所謂通過釣魚的方式獲取用戶信息。很多時(shí)候,釣魚者會(huì)給用戶發(fā)送郵件或者短信通知用戶呼叫一個(gè)電話號碼(例如:07558101000),說銀行有什么業(yè)務(wù)需要客戶馬上聯(lián)系銀行。如果用戶呼叫上面的號碼的話,這時(shí)這個(gè)號碼會(huì)呼叫網(wǎng)關(guān)的號碼,然后通過VOIP網(wǎng)關(guān)修改路由,最后轉(zhuǎn)呼到銀行的電話號碼上(真正的銀行號碼:07558100000)。如果用戶不小心的話,可能聽到銀行的呼叫就會(huì)按照銀行系統(tǒng)的要求輸入用戶密碼信息(323345),這時(shí),釣魚者可以通過SIP線路上的DTMF按鍵音獲取到用戶的真正的密碼消息。當(dāng)然,這樣的后果用戶是知道的。
另外,非法的盜打情況也可能經(jīng)常發(fā)生,因?yàn)楹芏鄧H長途的花費(fèi)是非常高昂的,犯罪分子利用國際話費(fèi)結(jié)算的差價(jià)獲利。中國國內(nèi)經(jīng)常會(huì)看到電話騷擾,電話盜打,電話欺騙的新聞。國外也有類似的問題發(fā)生。根據(jù)FBI的官方報(bào)道,2001 年第一個(gè)被逮捕的犯罪分子,通過攻擊VOIP電話系統(tǒng),轉(zhuǎn)售獲得利潤的個(gè)人。
FBI抓捕捕到盜打電話的罪犯。
5
國家安全監(jiān)管機(jī)構(gòu),VOIP行業(yè),廠家,用戶等都有非常明確的安全機(jī)制來防范安全問題,但是可能仍然會(huì)出現(xiàn)安全問題。我們今天介紹幾個(gè)防范措施來最大限度保證用戶的VOIP網(wǎng)絡(luò)安全。目前,有效地防范VOIP網(wǎng)絡(luò)攻擊的手段很多需要公司系統(tǒng)管理員處不同角度來進(jìn)行排查,其中也包括了對公司員工的安全教育,公司規(guī)定的安全規(guī)則,技術(shù)手段,安全設(shè)備部署等。
關(guān)于技術(shù)方面的討論我們前面的章節(jié)部分和以前的講座中已經(jīng)做了很多分享,現(xiàn)在,我們再補(bǔ)充一點(diǎn)來自于政府權(quán)威機(jī)構(gòu)和研究機(jī)構(gòu)的一些安全建議。
美國國家安全監(jiān)管機(jī)構(gòu)FBI 建議,F(xiàn)BI的建議中,包括了從地理位置的安全處理,設(shè)備的安全處理,人員安全培訓(xùn),管理員的安全培訓(xùn),采購商的安全處理等方面的內(nèi)容。以下圖例解釋了多種網(wǎng)絡(luò)設(shè)備在安全方面的設(shè)置和相關(guān)的公司規(guī)章制度的設(shè)立,值得讀者去參考。
美國負(fù)責(zé)計(jì)算機(jī)安全的機(jī)構(gòu)NIST也給出了幾個(gè)方面的建議:
- 網(wǎng)絡(luò)數(shù)據(jù)和語音分離,私有網(wǎng)絡(luò)和公網(wǎng)的分離。
- 使用支持ALG的防火墻或者SBC來提升安全性能。
- 使用比較嚴(yán)格的安全認(rèn)證機(jī)制來防范被破解。
- 使用TLS加密方式。
- 進(jìn)來少用個(gè)人電腦軟電話或者來自未經(jīng)授權(quán)的第三方基于SIP的軟電話。
6
因?yàn)閂OIP網(wǎng)絡(luò)中很可能出現(xiàn)很多網(wǎng)絡(luò)安全的問題,公司層面雖然制定了很多安全策略,管理人員也部署了針對安全機(jī)制的設(shè)備,但是仍然需要一些非常有經(jīng)驗(yàn)的系統(tǒng)管理員來進(jìn)行維護(hù)檢測。技術(shù)人員必須了解一些安全工具,以免讓攻擊者侵入。俗話說,知己知彼才能百戰(zhàn)百勝,F(xiàn)在,我們羅列幾個(gè)已經(jīng)在VOIP方面使用多年的工具,以便幫助管理員進(jìn)一步防范攻擊者的攻擊。
以下列表列出了VOIP工程師可能經(jīng)常使用的排查根據(jù)和平臺(tái),大家可以學(xué)習(xí):
1、使用Wireshark 工具抓包解析數(shù)據(jù):
2、Nmap 掃描網(wǎng)絡(luò)
3、SIPScan: 掃描端口,IP地址。
4、Authtool 獲取認(rèn)證的工具,密碼破解。
5、進(jìn)行洪水工具的工具:
6、Linux 工具: inviteflood,registerflood
7、SIP 信令篡改工具:erase_registrations(刪除注冊),add_registrations(添加注冊流程)
8、Linux 系統(tǒng)缺陷檢測工具:protos SIP test suite
9、Linux 工具:reghijacker(攻擊注冊流程),authtool(竊取認(rèn)證消息)
10、Linux 工具:sip_rogue(偽裝B2BUA,或者SIP Proxy)
11、Linux 工具:teardown 對已創(chuàng)建的SIP 會(huì)話拆線工具,自動(dòng)結(jié)束終端通話。
12、Linux 工具:check_sync 創(chuàng)建一個(gè)SIP 終端重啟命令。
13、Linux 工具:redirector 對SIP呼叫執(zhí)行重定向,可能轉(zhuǎn)接到非法服務(wù)器。
14、Linux RTP 語音注入工具:rtpinjector 對RTP語音進(jìn)行注入。
15、“正式的”Linux平臺(tái)工具:Asterisk,F(xiàn)reeSWITCH, SIPp以上這些工具或平臺(tái)是正規(guī)的開源語音平臺(tái),用戶可以通過這些平臺(tái)開發(fā)呼叫中心,IPPBX,壓力測試等相關(guān)業(yè)務(wù)。
到現(xiàn)在為止,我們已經(jīng)把SIP的整個(gè)安全措施,流程,機(jī)制和相關(guān)架構(gòu),安全工具等等問題后做了一個(gè)比較全面的介紹,希望,讀者通過這個(gè)系列的講座充分了解SIP安全的重要性,同時(shí),也必須注意,因?yàn)榫W(wǎng)絡(luò)環(huán)境不斷變化,安全防范措施和攻擊工具也同時(shí)進(jìn)行升級,所以用戶需要關(guān)注更多這個(gè)方面的研究報(bào)告,以便保證用戶系統(tǒng)的安全。以下鏈接是關(guān)于SIP安全的相關(guān)技術(shù)資料說明,筆者再次提醒,可能有的工具已經(jīng)不再工作,可能SIP安全能力得到了推廣,所以,攻擊工具可能不能完全正常工作。讀者需要不斷練習(xí),實(shí)戰(zhàn)是解決問題的唯一手段。
參考資料:
關(guān)于STIR:https://datatracker.ietf.org/doc/draft-ietf-stir-certificates/
關(guān)于 Secure Telephone Identity Threat Model:
https://datatracker.ietf.org/doc/rfc7375/?include_text=1
關(guān)于P-Asserted-Identity:https://www.ietf.org/rfc/rfc3325.txt
關(guān)于SRTP標(biāo)準(zhǔn):https://www.rfc-editor.org/info/rfc3711
關(guān)于RFC3261認(rèn)證的升級:https://datatracker.ietf.org/doc/rfc4474/
關(guān)于RFC 4474:https://www.rfc-editor.org/rfc/rfc4474.txt
https://tools.ietf.org/html/draft-jennings-dispatch-rfc4474bis-00
關(guān)于 DTLS:http://www.rfc-base.org/txt/rfc-5763.txt
https://www.rfc-editor.org/rfc/rfc4568.txt
關(guān)于DTLS和SIP 身份討論:
https://www.rfc-editor.org/rfc/rfc6347.txt
https://www.cisco.com/c/en/us/td/docs/solutions/Enterprise/Video/telepresence.html#wp42084
https://www.cisco.com/c/en/us/about/security-center/securing-voip.html
SIP加密算法研究:
Detection and Prevention Mechanism on Call Hijacking in VoIP System。
SANS Institute Reading Room 關(guān)于安全的討論:https://www.sans.org/reading-room/whitepapers/voip/security-issues-countermeasure-voip-1701
SIP安全討論:http://cdn.ttgtmedia.com/searchUnifiedCommunications/downloads/SIP1Controlling_Convergent_Networks_CH7.pdf
關(guān)于SIP安全的討論:
https://www.cs.columbia.edu/~smb/classes/f06/l13.pdf
http://download.securelogix.com/library/SIP_Security030105.pdf
關(guān)于SIP安全討論:http://startrinity.com/VoIP/Resources/sip-security-mechanisms-a-state-of-the-art-review.pdf
關(guān)于SIP安全和攻擊工具介紹:
http://www.hackingvoip.com/presentations/IPCOMM_SIP.pdf
https://link.springer.com/chapter/10.1007/978-3-642-11530-1_10
https://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Endler.pdf
安全測試標(biāo)準(zhǔn):https://www.rfc-editor.org/rfc/rfc4475.txt
FBI 關(guān)于電話盜打報(bào)告和安全機(jī)制建議:https://www.fbi.gov/
攻擊工具列表:http://www.voipsa.org/Resources/tools.php
關(guān)注我們的微信號:asterisk-cn 獲得更多有價(jià)值的技術(shù)分享,訪問技術(shù)論壇下載開源免費(fèi)IPPBX:www.issabel.cn/forum.