精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:安全企業動態 → 正文

開源BTS產品中存在多處漏洞,攻擊者或可劫持手機通訊基站

責任編輯:editor007 作者:Alpha_h4ck |來源:企業網D1Net  2016-08-28 20:54:41 本文摘自:黑客與極客

  前言

在過去的幾周時間里,我從多個方面對GSM的安全性進行了調查和研究,例如GSM通信協議中存在的漏洞。除此之外,我還對目前世界上應用最為廣泛的BTS軟件進行了安全審計。在這篇文章中,我將會給大家介紹一下我在這款開源產品中所發現的多個漏洞,這些漏洞將允許攻擊者入侵基站收發信臺(BTS),并遠程控制它的信號收發模塊。

背景知識

一個基站收發信臺(BTS)是由軟件和無線電設備組成的,它是智能手機連接GSM、UMTS、以及LTE網絡時必不可少的關鍵組件。BTS主要分為基帶單元、載頻單元和控制單元三部分。基帶單元主要用于話音和數據速率適配以及信道編碼等;載頻單元主要用于調制/解調與發射機/接收機間的耦合;控制單元則用于BTS的操作與維護。BTS中存儲編碼算法A5和密鑰Kc,用于解密接收到的密文形式的用戶數據和信令數據(包括解密)。

它相當于Wi-Fi網絡中的無線接入點,它負責管理Um接口的通信過程。Um接口是MS(MobileStation,移動臺)和BTS之間的接口,通過該接口,MS完成與網絡側的通信,完成分組數據傳送、移動性管理、會話管理、無線資源管理等多方面的功能。Um接口是GSM/GPRS/EDGE網絡中,MS與網絡之間的接口,也被稱為空中接口(AirInterface)。Um接口用于傳輸MS與網絡之間的信令信息和業務信息。具體如圖一所示:

  圖一:MS與BTS的連接

BTS的底層軟件實際上是一個信號收發器,而它就是無線硬件設備的直接接口。它主要負責頻率調諧,并處理GMSK(高斯最小移頻鍵控)數據的調制與解調。簡而言之,它主要負責的是將無線電波轉化成數字信號。BTS其余邏輯單元的通信和同步操作都是由圖二所示的三個UDP數據包負責處理的。

  圖二:信號收發模塊以及用來與BTS其余邏輯單元進行通信的三個UDP數據包

其如上圖所示,“ClockSocket”數據包主要負責進行時間同步;BTS會使用“CommandSocket”數據包來向信號收發器發送控制命令;最后,“DataSocket”數據包負責將GSM數據包從BTS通過無線電信號廣播出去,然后接收返回的響應信息。其中,信號收發器模塊中的“UDPSocket”類主要負責處理上述三個信道的通信過程。

我們的分析表明,目前大多數BTS軟件所使用的都是同一個(或者極其相似的)收發器代碼庫。因此,基本上這些BTS軟件都會受到相同漏洞的影響。惡意攻擊者可以利用這些漏洞來遠程控制信號收發器模塊,從而影響BTS的正常功能。

不僅如此,攻擊者還有可能向收發器模塊發送GSM數據脈沖,然后對移動用戶進行各種網絡攻擊,例如IMSI分離、加密降級、以及拒絕服務攻擊等等。

為了讓信號收發器模塊能夠接收并處理攻擊者發送的信息,發送至數據信道套接字的UDP數據包必須遵循下列格式:

當信號收發器模塊接收到了這些數據包之后,它會解碼這些數據包,然后使用GMSK來進行信號調制。最終,不同內容的信號脈沖將會被發送到與之相連的移動臺(MS)。

即便是下方列表中標注的產品只使用了GMS或者UMTS網絡,但是它們的信號收發器模塊(這是一個獨立組件)本身卻是基本相同的。所以我們推測,負責處理LTE連接的BTS軟件同樣也使用了類似的信號收發器代碼。

受影響產品

-YateBTS<= 5.0.0

-OpenBTS<= 4.0.0

-OpenBTS-UMTS<= 1.0.0

-Osmo-TRX/Osmo-BTS<= 0.1.10

-以及其他使用了相同信號收發器代碼的產品

相關廠商

-Legba股份有限公司(YateBTS)

-RangeNetworks(OpenBTS和OpenBTS-UMTS)

-OsmoCOM(Osmo-TRX和Osmo-BTS)

問題一:過度暴露的服務綁定

概述

這個漏洞存在于上述產品的網絡庫中,這個問題導致信號收發器的UDPsockets地址綁定到了0.0.0.0,但是這三個信號收發器的地址應該綁定到用戶設置的地址上(默認為127.0.0.1)。這也就意味著,攻擊者可以利用這些地址來與BTS系統進行連接,并從信號收發器中接收(發送)數據包。除此之外,訪問這些暴露了UDP網絡套接字的服務其安全性將無法得到保障,因為任何身份驗證機制都無法保證這些服務的安全。

  圖三:三個信號收發器的套接字地址全部綁定到了地址0.0.0.0

影響

攻擊者可以使用IP連接來發送UDP數據包,并獲取BTS的所有功能。這也就意味著,攻擊者可以實現遠程控制、GSM流量劫持、獲取用戶的通信數據、DoS拒絕服務攻擊,甚至還會發生更加糟糕的事情。

細節披露

我們可以在UDPSocket類的構造器中找到引起這個漏洞的根本原因。在源文件“CommonLibs/Sockets.cpp”中,你可以找到“UDPSocket::open”方法,而正是這個方法中的錯誤代碼才導致了這個漏洞的存在。值得注意的是,所有受影響的產品中都包含有這份源文件。下面這段代碼就是漏洞代碼:

從上面的代碼段中我們可以看到,系統將綁定的地址保存到了mDestination類的成員變量中,但是UDPSocket::open方法的實現方式卻是這樣的:

盡管UDPSocket類提供了一個構造參數來指定服務器所要綁定的IP地址,但是這部分數據卻被代碼忽略了。正如上圖第272行代碼所示,通信socket被綁定到了INADDR_ANY,然而并沒有使用mDestination地址變量。

問題二:基于棧的遠程緩沖區溢出

概述

攻擊者可以通過向設備的控制信道發送一個較大的UDP數據包來引起棧緩沖區的溢出。

影響

攻擊者可以實現遠程代碼執行(RCE)或者對設備發動拒絕服務(DoS)攻擊。

細節披露

控制信道是由源文件Transceiver.cpp中的Transceiver::driveControl方法控制的。這部分代碼如下所示:

注意代碼中數據包的緩存空間,這部分空間存在于方法棧中,其大小被定義為100字節(MAX_PACKET_LENGTH)。

接下來,我們對源文件Sockets.cpp中聲明的DatagramSocket::read方法(DatagramSocket類是UDPSocket類的父類)進行了分析,結果我們發現了下列信息:

我們可以看到,代碼讀取的是MAX_UDP_LENGTH所代表的長度,并非MAX_PACKET_LENGTH變量的值。而MAX_UDP_LENGTH的值是在Sockets.h源文件中定義的,如下圖所示:

因此,攻擊者只需要向信號收發器發送一個大小超過100字節的UDP數據包,就可以成功在目標設備上引起棧溢出。圖四顯示的是該漏洞所引發的錯誤調試信息:

  圖四:由于UDP數據包過大所導致的數據包切分錯誤

問題三:未經身份驗證的遠程控制

概述

控制信道并沒有引入任何形式的身份驗證機制。再加上‘問題一’使得其部分信息暴露在了外部網絡中,所以惡意攻擊者就可以利用這個漏洞來遠程控制信號收發器模塊。

影響

攻擊者可以:

-通過關閉模塊來實現拒絕服務攻擊。

-通過修改無線電信號頻率來阻塞信號發送。

-通過“SETBSIC”命令遠程劫持BTS。

細節披露

控制信道使用源文件Transceiver.cpp中的Transceiver::driveControl方法來處理UDP協議。該協議暴露的部分功能包括:

-開啟或關閉TRX模塊:CMDPOWERON / CMD POWEROFF

-更改TRX的無線頻率:CMDRXTUNE frequency / CMD TXTUNE frequency

-設置GSM信號的驗證信息:CMDSETBSIC value

攻擊者只需要向服務器的5701端口發送一個簡單的UDP數據包,就可以遠程執行上面這些控制命令了。關于協議的完整內容可以在TRXManager/README.TRXManager文件中找到。

結論,緩解方案,以及建議

通過這篇文章,想必大家已經了解了這些代碼漏洞和身份驗證機制的缺乏將會如何影響上述的這些BTS產品了。而且不僅如此,攻擊者甚至還可以利用這些漏洞來發動大規模的網絡攻擊。

我們強烈建議廠商趕緊采取下列的緩解措施,以提升相應產品的安全性能:

1. 更新你的BTS軟件,如果收到了更新補丁推送,請盡快安裝補丁程序。

2. 將用于控制操作和數據轉換的socket地址綁定到本地接口(127.0.0.1)。

3. 防火墻:阻止流經端口5701(控制端口)和端口5702(數據端口)的所有外部網絡流量。

4. 引入身份驗證系統,以防止沒有權限的攻擊者通過BTS控制端口來登錄服務器或訪問網絡。

5. 修復代碼中的緩沖區大小問題。

6. 進行額外的代碼審計。

* 參考來源:ZIMPERIUMzLabs,本文由Alpha_h4ck編譯,轉載請注明來自FreeBuf(Freebuf.COM)

關鍵字:攻擊者數據包

本文摘自:黑客與極客

x 開源BTS產品中存在多處漏洞,攻擊者或可劫持手機通訊基站 掃一掃
分享本文到朋友圈
當前位置:安全企業動態 → 正文

開源BTS產品中存在多處漏洞,攻擊者或可劫持手機通訊基站

責任編輯:editor007 作者:Alpha_h4ck |來源:企業網D1Net  2016-08-28 20:54:41 本文摘自:黑客與極客

  前言

在過去的幾周時間里,我從多個方面對GSM的安全性進行了調查和研究,例如GSM通信協議中存在的漏洞。除此之外,我還對目前世界上應用最為廣泛的BTS軟件進行了安全審計。在這篇文章中,我將會給大家介紹一下我在這款開源產品中所發現的多個漏洞,這些漏洞將允許攻擊者入侵基站收發信臺(BTS),并遠程控制它的信號收發模塊。

背景知識

一個基站收發信臺(BTS)是由軟件和無線電設備組成的,它是智能手機連接GSM、UMTS、以及LTE網絡時必不可少的關鍵組件。BTS主要分為基帶單元、載頻單元和控制單元三部分。基帶單元主要用于話音和數據速率適配以及信道編碼等;載頻單元主要用于調制/解調與發射機/接收機間的耦合;控制單元則用于BTS的操作與維護。BTS中存儲編碼算法A5和密鑰Kc,用于解密接收到的密文形式的用戶數據和信令數據(包括解密)。

它相當于Wi-Fi網絡中的無線接入點,它負責管理Um接口的通信過程。Um接口是MS(MobileStation,移動臺)和BTS之間的接口,通過該接口,MS完成與網絡側的通信,完成分組數據傳送、移動性管理、會話管理、無線資源管理等多方面的功能。Um接口是GSM/GPRS/EDGE網絡中,MS與網絡之間的接口,也被稱為空中接口(AirInterface)。Um接口用于傳輸MS與網絡之間的信令信息和業務信息。具體如圖一所示:

  圖一:MS與BTS的連接

BTS的底層軟件實際上是一個信號收發器,而它就是無線硬件設備的直接接口。它主要負責頻率調諧,并處理GMSK(高斯最小移頻鍵控)數據的調制與解調。簡而言之,它主要負責的是將無線電波轉化成數字信號。BTS其余邏輯單元的通信和同步操作都是由圖二所示的三個UDP數據包負責處理的。

  圖二:信號收發模塊以及用來與BTS其余邏輯單元進行通信的三個UDP數據包

其如上圖所示,“ClockSocket”數據包主要負責進行時間同步;BTS會使用“CommandSocket”數據包來向信號收發器發送控制命令;最后,“DataSocket”數據包負責將GSM數據包從BTS通過無線電信號廣播出去,然后接收返回的響應信息。其中,信號收發器模塊中的“UDPSocket”類主要負責處理上述三個信道的通信過程。

我們的分析表明,目前大多數BTS軟件所使用的都是同一個(或者極其相似的)收發器代碼庫。因此,基本上這些BTS軟件都會受到相同漏洞的影響。惡意攻擊者可以利用這些漏洞來遠程控制信號收發器模塊,從而影響BTS的正常功能。

不僅如此,攻擊者還有可能向收發器模塊發送GSM數據脈沖,然后對移動用戶進行各種網絡攻擊,例如IMSI分離、加密降級、以及拒絕服務攻擊等等。

為了讓信號收發器模塊能夠接收并處理攻擊者發送的信息,發送至數據信道套接字的UDP數據包必須遵循下列格式:

當信號收發器模塊接收到了這些數據包之后,它會解碼這些數據包,然后使用GMSK來進行信號調制。最終,不同內容的信號脈沖將會被發送到與之相連的移動臺(MS)。

即便是下方列表中標注的產品只使用了GMS或者UMTS網絡,但是它們的信號收發器模塊(這是一個獨立組件)本身卻是基本相同的。所以我們推測,負責處理LTE連接的BTS軟件同樣也使用了類似的信號收發器代碼。

受影響產品

-YateBTS<= 5.0.0

-OpenBTS<= 4.0.0

-OpenBTS-UMTS<= 1.0.0

-Osmo-TRX/Osmo-BTS<= 0.1.10

-以及其他使用了相同信號收發器代碼的產品

相關廠商

-Legba股份有限公司(YateBTS)

-RangeNetworks(OpenBTS和OpenBTS-UMTS)

-OsmoCOM(Osmo-TRX和Osmo-BTS)

問題一:過度暴露的服務綁定

概述

這個漏洞存在于上述產品的網絡庫中,這個問題導致信號收發器的UDPsockets地址綁定到了0.0.0.0,但是這三個信號收發器的地址應該綁定到用戶設置的地址上(默認為127.0.0.1)。這也就意味著,攻擊者可以利用這些地址來與BTS系統進行連接,并從信號收發器中接收(發送)數據包。除此之外,訪問這些暴露了UDP網絡套接字的服務其安全性將無法得到保障,因為任何身份驗證機制都無法保證這些服務的安全。

  圖三:三個信號收發器的套接字地址全部綁定到了地址0.0.0.0

影響

攻擊者可以使用IP連接來發送UDP數據包,并獲取BTS的所有功能。這也就意味著,攻擊者可以實現遠程控制、GSM流量劫持、獲取用戶的通信數據、DoS拒絕服務攻擊,甚至還會發生更加糟糕的事情。

細節披露

我們可以在UDPSocket類的構造器中找到引起這個漏洞的根本原因。在源文件“CommonLibs/Sockets.cpp”中,你可以找到“UDPSocket::open”方法,而正是這個方法中的錯誤代碼才導致了這個漏洞的存在。值得注意的是,所有受影響的產品中都包含有這份源文件。下面這段代碼就是漏洞代碼:

從上面的代碼段中我們可以看到,系統將綁定的地址保存到了mDestination類的成員變量中,但是UDPSocket::open方法的實現方式卻是這樣的:

盡管UDPSocket類提供了一個構造參數來指定服務器所要綁定的IP地址,但是這部分數據卻被代碼忽略了。正如上圖第272行代碼所示,通信socket被綁定到了INADDR_ANY,然而并沒有使用mDestination地址變量。

問題二:基于棧的遠程緩沖區溢出

概述

攻擊者可以通過向設備的控制信道發送一個較大的UDP數據包來引起棧緩沖區的溢出。

影響

攻擊者可以實現遠程代碼執行(RCE)或者對設備發動拒絕服務(DoS)攻擊。

細節披露

控制信道是由源文件Transceiver.cpp中的Transceiver::driveControl方法控制的。這部分代碼如下所示:

注意代碼中數據包的緩存空間,這部分空間存在于方法棧中,其大小被定義為100字節(MAX_PACKET_LENGTH)。

接下來,我們對源文件Sockets.cpp中聲明的DatagramSocket::read方法(DatagramSocket類是UDPSocket類的父類)進行了分析,結果我們發現了下列信息:

我們可以看到,代碼讀取的是MAX_UDP_LENGTH所代表的長度,并非MAX_PACKET_LENGTH變量的值。而MAX_UDP_LENGTH的值是在Sockets.h源文件中定義的,如下圖所示:

因此,攻擊者只需要向信號收發器發送一個大小超過100字節的UDP數據包,就可以成功在目標設備上引起棧溢出。圖四顯示的是該漏洞所引發的錯誤調試信息:

  圖四:由于UDP數據包過大所導致的數據包切分錯誤

問題三:未經身份驗證的遠程控制

概述

控制信道并沒有引入任何形式的身份驗證機制。再加上‘問題一’使得其部分信息暴露在了外部網絡中,所以惡意攻擊者就可以利用這個漏洞來遠程控制信號收發器模塊。

影響

攻擊者可以:

-通過關閉模塊來實現拒絕服務攻擊。

-通過修改無線電信號頻率來阻塞信號發送。

-通過“SETBSIC”命令遠程劫持BTS。

細節披露

控制信道使用源文件Transceiver.cpp中的Transceiver::driveControl方法來處理UDP協議。該協議暴露的部分功能包括:

-開啟或關閉TRX模塊:CMDPOWERON / CMD POWEROFF

-更改TRX的無線頻率:CMDRXTUNE frequency / CMD TXTUNE frequency

-設置GSM信號的驗證信息:CMDSETBSIC value

攻擊者只需要向服務器的5701端口發送一個簡單的UDP數據包,就可以遠程執行上面這些控制命令了。關于協議的完整內容可以在TRXManager/README.TRXManager文件中找到。

結論,緩解方案,以及建議

通過這篇文章,想必大家已經了解了這些代碼漏洞和身份驗證機制的缺乏將會如何影響上述的這些BTS產品了。而且不僅如此,攻擊者甚至還可以利用這些漏洞來發動大規模的網絡攻擊。

我們強烈建議廠商趕緊采取下列的緩解措施,以提升相應產品的安全性能:

1. 更新你的BTS軟件,如果收到了更新補丁推送,請盡快安裝補丁程序。

2. 將用于控制操作和數據轉換的socket地址綁定到本地接口(127.0.0.1)。

3. 防火墻:阻止流經端口5701(控制端口)和端口5702(數據端口)的所有外部網絡流量。

4. 引入身份驗證系統,以防止沒有權限的攻擊者通過BTS控制端口來登錄服務器或訪問網絡。

5. 修復代碼中的緩沖區大小問題。

6. 進行額外的代碼審計。

* 參考來源:ZIMPERIUMzLabs,本文由Alpha_h4ck編譯,轉載請注明來自FreeBuf(Freebuf.COM)

關鍵字:攻擊者數據包

本文摘自:黑客與極客

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 永福县| 信丰县| 抚顺市| 宣威市| 三亚市| 乡宁县| 北辰区| 桂林市| 慈溪市| 略阳县| 信阳市| 青冈县| 龙门县| 文安县| 左云县| 即墨市| 广南县| 康乐县| 山西省| 新乡市| 旌德县| 焦作市| 阳谷县| 安庆市| 大同县| 抚宁县| 金寨县| 武强县| 沐川县| 常宁市| 石台县| 鲜城| 阿鲁科尔沁旗| 台江县| 栾川县| 库尔勒市| 桃园市| 河东区| 牟定县| 三原县| 北京市|