[轉帖]揭祕VxWorks——直擊物聯網安全罩門

gjden發表於2016-05-01
揭祕VxWorks——直擊物聯網安全罩門

一遍不錯的文章,轉過來分享給大家,原文連結見文末,歡迎大家討論。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
VxWorks是美國風河(WindRiver)公司於1983年設計開發的一種嵌入式實時作業系統(RTOS),是嵌入式開發環境的關鍵組成部分。良好的持續發展能力、高效能的核心以及友好的使用者開發環境,在嵌入式實時作業系統領域佔據一席之地。
VxWorks支援幾乎所有現代市場上的嵌入式CPU,包括x86系列、MIPS、 PowerPC、Freescale ColdFire、Intel i960、SPARC、SH-4、ARM,StrongARM以及xScale CPU。它以其良好的可靠性和卓越的實時性被廣泛地應用在通訊、軍事、航空、航天等高精尖技術及實時性要求極高的領域中,如衛星通訊、軍事演習、彈道制導、飛機導航等。在美國的F-16、F/A-18戰鬥機、B-2隱形轟炸機和愛國者導彈上,甚至連一些火星探測器,如1997年7月登陸的火星探測器,2008年5月登陸的鳳凰號,和2012年8月登陸的好奇號也都使用到了VxWorks。——摘自《維基百科》
https://zh.wikipedia.org/wiki/VxWorks
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
正因為VxWorks作業系統的開放性、模組化和可擴充套件性的系統結構特徵以及能在多執行緒、多工的系統環境中達到高實時要求的PLC控制要求,在保證實時性的同時,實現多點位、複雜功能的PLC系統控制目標,因此被廣泛用於物聯網嵌入式裝置及工業控制領域。西門子、施耐德的多款PLC裝置軟體搭載在VxWorks系統上執行。
來看下CVE公佈的VxWorks相關漏洞:
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
對於一款被廣泛應用的作業系統,CVE漏洞能控制在這個數量可以說安全做得已經挺好了。最新的7.0系統又做出了很多針對安全的功能,更是提出了應用程式加密這樣的安全模式,任何一個系統應用在執行前需要做雜湊驗證,這樣能極大程度減少惡意軟體和木馬的植入對於系統帶來的威脅。
難道說搭載風河VxWorks系統的嵌入式裝置真的就無懈可擊了?我要告訴你,在系統以及網路層我們還是能做很多事情的。
先來簡單瞭解下該系統。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
這是我在Vmware上執行的基於Pentium架構的VxWorks 5.5.1版本系統,雖然不是最新版本,但用於瞭解系統的工作方式,做一些基本的測試已經足夠了,而且本身大部分載入VxWorks系統的裝置也並不是最新的,低於此版本的裝置也不在少數。
在虛擬機器上執行VxWorks5.5系統並通過tornado軟體進行除錯總的過程需要如下幾步:
編譯網路卡驅動
修改系統配置檔案
編譯bootrom並載入到啟動磁碟
編譯VxWorks映象
用FTP把系統映象傳到虛擬機器裡
配置target server來除錯系統以及應用
如果對於嵌入式系統沒有基礎那麼這幾步還是挑戰很大,因此網上能找到已經編譯好的針對vmware的系統映象以及VxWorks BSP檔案。這極大得降低了研究的門檻,我們只需要進行相應的配置再通過系統專門的整合開發環境tornado 2.2就可以展開對於VxWorks系統的入門級研究。當然這只是入門級研究環境,對於熟悉系統工作原理和網路棧已經可以滿足,但是如果要研究系統底層安全性如溢位、shellcode那就需要真實的系統以及針對性的指令架構。
另外推薦兩款搭載VxWorks系統的裝置,也可以針對真實的裝置進行研究。第一款為經典的思科Linsys54g路由器,這款路由出廠內建VxWorks5.5系統,很多對於韌體的逆向都是從這款路由的韌體入手的,通過接入板子串列埠可以拿到系統boot shell,但我在嘗試時系統執行不到VxWorks shell,會報一個網路配置的錯誤,有興趣的朋友可以一起研究下,如果知道怎麼解決可以和我聯絡。另外一款裝置是華為的UAP2105 UMTS是一款家庭使用的小型蜂窩基站。這款裝置在2015Blackhat上被爆出多個漏洞,可以通過JTAG介面拿到VxWorks shell,並且可以通過遠端除錯埠進行訪問。
在做了如上準備工作後,我們就可以開始對於VxWorks系統的安全性進行探祕了。
我們先來直觀的感受下這個系統,來看下VxWorks系統的shell,這是可用的基本命令,和我們熟悉的Linux Bash區別還是很大的。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
其中還包括輸入輸出、除錯、檔案系統、網路等一些具體的命令。我們注意到這個系統的shell具有一些針對於任務(task)的操作命令以及可以修改記憶體的命令,可以說許可權是相當大的。看下當前任務狀態,我們就可以感受到實時作業系統的特點了。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
有興趣可以去自己瞭解,這裡不做詳細介紹。
我們來用nmap做下埠掃描,結果如下:
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
可以看到系統支援了多種標準網路協議進行通訊,我們主要來針對wdbrpc除錯埠進行hack。
什麼是Wdbrpc?
wdbrpc是VxWorks的遠端除錯埠,以UDP方式進行通訊,埠號為17185。協議基於sun-rpc。該服務主要用於支援系統遠端通過整合開發環境Tornado互動。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
通過Tornado開發環境軟體可以進行應用程式程式碼編寫、上傳到裝置、遠端除錯、rom燒錄等一系列功能。支援通過wdbrpc、wdbpipe、wdbserial等不同的連線互動方式。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
Vxworks系統將一起與硬體相關的模組都放在BSP庫中。BSP庫是硬體與軟體的介面,處理硬體的初始化、中斷處理與產生、硬體時鐘與定時管理、區域性和匯流排記憶體空間的對映、記憶體大小定義等等。能夠自行啟動目標裝置、初始化目標裝置,能夠與host通訊下載系統核心,將系統許可權交由Vxworks核心來呼叫應用程式等功能。
因此該通訊埠許可權十分大,然後並沒有身份認證與傳輸加密機制。該通訊介面為遠端攻擊裝置提供了無限可能。
通過以上簡單瞭解,我們需要深入瞭解wdbrpc通訊協議,然而網上並沒有官方詳細的協議說明,只有在風河開發文件中簡單涉及一些協議說明。
Rapid7曾在2010年8月發表部落格《Shiny Old VxWorks Vulnerabilities》其中說明了wdbrpc埠的問題並且給出了當時的統計報告以及4個metasploit攻擊模組。因此我們可以從模組入手進行分析。
https://community.rapid7.com/community/metasploit/blog/2010/08/02/shiny-old-vxworks-vulnerabilities
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
包括wdbrpc_version、wdbrpc_bootline、wdbrpc_reboot、wdbrpc_memory_dump。分別提供遠端獲取系統版本號資訊、獲取bootline資訊、遠端重啟系統以及遠端dump記憶體。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
通過對虛擬機器遠端裝置進行嘗試,可以看到我們能從wdbrpc埠上輕鬆獲取到系統版本號以及bootline啟動配置資訊。通過wireshark我們在仔細看下協議過程。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
可以看到協議內容並無加密,但是wireshark也不能解析該協議,因此攻擊手段也將受限,wdbrpc提供的功能很多並且許可權很大,但目前也只能通過這四個攻擊模組進行攻擊。初步嘗試還發現獲取系統版本號可以直接通過重放進行攻擊,然而要是獲取bootline資訊或遠端dump記憶體並不能簡單的重放,協議的互動過程還是具備初始化等步驟。因此我們還是需要進一步深入瞭解該協議。
Vxworks開發文件上有如下對於wdbrpc協議請求和響應的說明:
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
這是一個請求資料包的格式,其中20位元組IP頭,8位元組UDP頭,40位元組wdbrpc頭,其中包含WDBPROG為4位元組固定為0x55555555、WDBVERS為4位元組(0x00000001)以及RPC呼叫編碼。XDR stream為呼叫引數資訊。
RPC請求資料頭具體如下:
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
RPC請求引數wrapper部分具體如下:
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
建立連線的通訊過程為,host首先給target傳送一個Connect請求,收到回應包後,即可傳送Fanc_call資料包。Connect請求的Procedure欄位為0x00000001,data欄位需要填充具體的呼叫引數為0x00000002,0x00000000,0x00000000。
遠端記憶體讀取的通訊過程為,在建立連線的基礎上傳送以0x0000000A為Procedure、以offset/length/params為具體引數的data,即可收到相應記憶體地址上的資料。具體內容可

以通過閱讀原始碼瞭解${WIND_BASE}/share/src/agents/wdb/wdb.h
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
http://www.codeforge.cn/read/82844/wdb.h__html
今後會在Github上公佈關於VxWorks系統攻擊的python原始碼,敬請期待。
https//github.com/ameng929/VxworksHack
當我們具備了wdbrpc協議的基礎,我們就可以通過該協議對Vxworks系統裝置進行遠端攻擊了。列舉幾種簡單的攻擊方式:
一、篡改bootline繞過登入驗證
首先看下ARM架構下的系統記憶體佈局:
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
其中0x0700到0x0800地址之間存放Bootline配置資訊。如果系統架構為x86那麼對應地址將從0x1200開始。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
我們可以通過wdbrpc遠端修改記憶體地址資料令其以0x20方式啟動,這樣就可以繞過登入認證通過ftp或telnet訪問系統。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
二、Dump記憶體資料從中抓取登入密碼
以一個遠端昆騰PLC為例,通過wdbrpc協議dump全部記憶體空間資料。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
10分鐘後就拿到了遠端裝置約15M左右的完整記憶體資料。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
可以看到ppc架構指定位置上的bootline資訊,再通過string命令抓取記憶體檔案中的字串資料。
再通過這樣一個正則就輕鬆的找到了記憶體中的所有ftp、telnet登入密碼:
cat strings.memory.dmp |grep -n "[RSbcdeyz9Q]\{9\}"

[轉帖]揭祕VxWorks——直擊物聯網安全罩門
具體為什麼正則要這樣寫以及這個hash密碼如何利用,請看我之前的文章《邪惡的0x4321》。
現在可以回答之前文章的問題了,0x4321即為wdbrpc的埠號17185的16進位制格式。
下面交給Z-one大神 (⊙.⊙)
以下是全球暴漏在IPv4公網上的17185埠統計分析:
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
http://plcscan.org/lab/census/vxworks/
通過Zmap呼叫wdbrpc-scan指令碼掃描全網暴漏埠IP數約5萬+,其中3.4萬能讀取到系統資訊和bootline資訊。
數量按國家分佈Top10:
中國:                   7861
美國:                   5283
巴西:                   3056
義大利:                 1025
日本:                   823
俄羅斯:                 647
墨西哥:                 505
哈薩克:             486
澳大利亞:               481
印度:                   448
數量按VxWorks系統版本號統計:
VxWorks5.5.1      15601
VxWorks5.4.2      6583
VxWorks5.4        5410
VxWorks5.4.2      5254
VxWorks5.5        899
VxWorks            654
VxWorks5.3.1      236
數量按裝置資訊統計Top10:
Telogy Networks GG30E Reference Board            3674
TI TNETV1050 Communication Processor             3360
Motorola MPC82xx ADS - HIP7                      2626
IP-ADSL DSLAM (MPC860/855T)                      1972
HUAWEI ET&IAD                                   1796
MPC8245Board: EDSL , Map B (CHRP)                1678
PowerPC 875,  133MHZ                           1553
Mips 4KEc                                        1239
MGCB                                           912
Intel IXP425 - IXDP425 BE                   887
其中受影響的PLC模組型號:
羅克韋爾Rockwell Automation 1756-ENBT韌體版本為3.2.6、3.6.1及其他
西門子Siemens CP 1604、Siemens CP 1616
施耐德Schneider Electric 昆騰部分乙太網模組
另外通過Shodan和Zoomeye搜尋“vxworks”Dork的數量對比:
知道創宇-ZoomEye:
FTP              77,123
Telnet           10,795
SNMP             133
Shodan:
FTP              26,212
SNMP             17,261
Telnet           4,735
以下的資料由Z-one提供,未經允許不得引用。
[轉帖]揭祕VxWorks——直擊物聯網安全罩門
搞物聯網安全的黑闊們又可以瘋狂了。

原文連結:http://chuansong.me/n/1864339
上傳的附件:

相關文章