智能攝像頭安全分析及案例參考
通過對(duì)智能攝像頭的網(wǎng)絡(luò)結(jié)構(gòu)和設(shè)備特性進(jìn)行分析,總結(jié)了智能攝像頭常見的幾種受威脅方式,并結(jié)合實(shí)際案例進(jìn)行全面的安全分析。由于自己也是剛開始接觸這方面知識(shí),所以涉及的內(nèi)容都比較淺顯,大佬無視即可。
智能攝像頭介紹
傳統(tǒng)攝像頭,一般指傳統(tǒng)的只能存儲(chǔ)監(jiān)控畫面的老實(shí)攝像頭,如需及時(shí)發(fā)現(xiàn)畫面中的異常,需長時(shí)間回看畫面,比如之前一些警匪片中出現(xiàn)的幾個(gè)人端著泡面守著電腦回滾監(jiān)控視頻。
而智能攝像頭之所以稱之為“智能”,就是由于智能攝像頭可主動(dòng)捕捉異常畫面并自動(dòng)發(fā)送警報(bào),大大降低了用戶精力的投入,方便、簡單。智能攝像頭的核心為物聯(lián)網(wǎng)及云應(yīng)用雙劍合璧,缺一不可:要想實(shí)現(xiàn)即時(shí)且隨時(shí)隨地的監(jiān)控,攝像頭需要可通過手機(jī)app與手機(jī)相連,點(diǎn)開便可查看攝像頭即時(shí)拍攝的畫面;同時(shí),當(dāng)拍攝畫面出現(xiàn)異常動(dòng)態(tài)或聲響時(shí),攝像頭除了可自動(dòng)捕捉異常并啟動(dòng)云錄像并自動(dòng)上傳,還可通過短信或手機(jī)app向用戶發(fā)送警報(bào)信息,從而實(shí)現(xiàn)全天候智能監(jiān)控。
智能攝像頭網(wǎng)絡(luò)結(jié)構(gòu)
目前市面上的智能攝像頭都包含了云端、手機(jī)端、攝像頭設(shè)備端三部分。
- 攝像頭設(shè)備終端:主要存放設(shè)備密碼、與云端交互的信息、協(xié)議相關(guān)信息;
- 手機(jī)端:通過藍(lán)牙、wifi等方式管理智能設(shè)備、用戶注冊(cè)、密碼修改、綁定設(shè)備、管理設(shè)備等;
- 云端:提供存儲(chǔ)空間進(jìn)行上傳的視頻存儲(chǔ)、對(duì)用戶進(jìn)行管理、對(duì)app進(jìn)行管理、提供api接口等。
智能攝像頭常見受威脅方法
根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)中的三個(gè)部分云端、手機(jī)端、攝像頭設(shè)備端以及通訊協(xié)議可分為四類攻擊方法(部分內(nèi)容參考了綠盟科技和白帽匯的物聯(lián)網(wǎng)安全分析報(bào)告)。
1. 針對(duì)攝像頭設(shè)備的威脅
- 針對(duì)物理設(shè)備的威脅:調(diào)試接口暴露、固件提取、設(shè)備序列號(hào)篡改、篡改存儲(chǔ)介質(zhì)、獲取普通用戶權(quán)限、權(quán)限提升等;
- 針對(duì)固件的威脅:獲取敏感數(shù)據(jù)、獲取硬編碼密碼、逆向加密算法、獲取敏感api接口、ftp或ssh等服務(wù)攻擊、固件降級(jí)等;
- 針對(duì)內(nèi)存的威脅:獲取內(nèi)存中的敏感數(shù)據(jù)(如用戶名、密碼等)、獲取加密Key等。
2. 針對(duì)手機(jī)端的威脅
針對(duì)手機(jī)端app的威脅相對(duì)比較常見,而結(jié)合攝像頭的特殊性,主要可以從以下幾個(gè)方面入手。
- 靜態(tài)反編譯:對(duì)APP進(jìn)行脫殼、使用反編譯工具獲取源碼、本地敏感數(shù)據(jù)存儲(chǔ)、logcat日志、webview風(fēng)險(xiǎn)測試等;
- 通信安全:中間人攻擊、訪問控制是否合理、數(shù)據(jù)加密強(qiáng)度等。
3. 針對(duì)云端的威脅
云服務(wù)端面臨的風(fēng)險(xiǎn)和常規(guī)的應(yīng)用服務(wù)器類似,簡單列舉幾個(gè)。
- web應(yīng)用安全:用戶注冊(cè)的各種問題、任意用戶注冊(cè)、用戶枚舉、驗(yàn)證碼缺陷、各種越權(quán)、密碼復(fù)雜度、單點(diǎn)登錄、密碼修改等等。
- 服務(wù)安全:針對(duì)服務(wù)器開放的各種服務(wù)存在的缺陷進(jìn)行攻擊,如ftp、ssh、mysql等各種弱口令,針對(duì)操作系統(tǒng)的各種Nday和0day等;
- 其他:各種C段、子域名等等,還可以先打入攝像頭公司內(nèi)部辦公網(wǎng)再覬覦服務(wù)器,DDOS打亂對(duì)方部署也是一種思路。
4. 針對(duì)協(xié)議的威脅
除了攝像頭設(shè)備、手機(jī)端、云服這三個(gè)重要節(jié)點(diǎn)外,三者之間的通訊安全也非常關(guān)鍵。
- APP與云端一般通過HTTP、HTTPS通信,分析中應(yīng)判斷通信流量是否加密,可否抓包劫持通信數(shù)據(jù);
- 設(shè)備與云端一般采用MQTT、XMPP、CoAP等協(xié)議通信,也會(huì)使用HTTP、HTTPS通信,部分廠家的設(shè)備會(huì)使用私有協(xié)議進(jìn)行通訊,例如京東、小米、broadlink等;
- APP與設(shè)備之間通信一般利用短距離無線網(wǎng)絡(luò)進(jìn)行通信,如ZigBee、Wi-Fi以及藍(lán)牙等。
攝像頭安全分析案例
1. 情況簡述
本案例是針對(duì)一互聯(lián)網(wǎng)小型攝像頭廠商,在測試前期已經(jīng)和相關(guān)負(fù)責(zé)人進(jìn)行了溝通并簽署了授權(quán)和保密協(xié)議等,在測試后已經(jīng)完全交付了測試結(jié)果,并在廠商整改后進(jìn)行了復(fù)測確保所有風(fēng)險(xiǎn)均已修復(fù)。在時(shí)隔一年半后,已經(jīng)確保該舊版攝像頭已經(jīng)基本退市,在征得廠商同意后才和大家分享一下本案例。由于部分加密算法和協(xié)議仍在使用,所以部分內(nèi)容進(jìn)行了脫敏和文字混淆。那時(shí)候也是剛開始接觸這方面知識(shí),所以涉及的內(nèi)容都比較淺顯,大佬勿噴。
本次分析主要包括攝像頭設(shè)備、服務(wù)云端、數(shù)據(jù)通信三個(gè)方面,另外還涉及到部分手機(jī)端APP、網(wǎng)站系統(tǒng)等。
2. 固件升級(jí)包可被逆向
通過對(duì)XX官網(wǎng)提供的固件升級(jí)程序進(jìn)行分析,發(fā)現(xiàn)大部分升級(jí)包均可被逆向出源文件,在固件包中可獲取ssh和ftp登錄賬號(hào)和密碼以及一些重要api接口和加密算法等,以ssh密碼獲取為例。
從其中下載了兩個(gè)固件包為例進(jìn)行測試,使用Binwalk對(duì)該固件進(jìn)行分析。
從上圖中可以看到固件中包含了LZMA壓縮的數(shù)據(jù)和Squashfs文件系統(tǒng)以及其他系統(tǒng)信息,但Binwalk直接提取數(shù)據(jù)失敗。
固件使用的是squashfs文件系統(tǒng),它是一套供Linux核心使用的GPL開源只讀壓縮文件系統(tǒng)。squashfs文件系統(tǒng)開始于0×40040, 大小為 4605584 字節(jié), 用dd命令提取該文件系統(tǒng),再用UnSquashfs對(duì)Squashfs文件系統(tǒng)進(jìn)行解包。
解壓出來的系統(tǒng)文件:
可以查看系統(tǒng)文件信息:
可直接查看系統(tǒng)passwd文件:
使用暴力破解工具john the ripper可輕易破解該密碼。
風(fēng)險(xiǎn)分析:
- 可根據(jù)passwd文檔破解默認(rèn)的攝像頭root密碼,通過該默認(rèn)密碼可直接登錄暴露在內(nèi)網(wǎng)中或互聯(lián)網(wǎng)上的攝像頭設(shè)備;
- 可根據(jù)系統(tǒng)內(nèi)的文件逆向密碼加密算法,破解攝像頭和云端的通信數(shù)據(jù)。
2. 加密算法可被逆向
通過對(duì)手機(jī)端APK的分析,發(fā)現(xiàn)雖然有的版本使用了加密和混淆,但通過解密和反編譯后,大部分APK可直接被逆向出源程序。
使用JD可將smali反編譯為java源碼,更為直觀的查看程序代碼。
隨后將lib目錄下的so文件進(jìn)行了逆向分析。
根據(jù)關(guān)鍵字定位到密碼加密算法幾個(gè)相關(guān)的函數(shù)。
由于逆向能力比較一般,于是又結(jié)合了上一節(jié)攝像頭固件解包出的/progs/bin目錄下的sctrl文件進(jìn)行逆向分析。
結(jié)合手機(jī)端APK和攝像頭固件中的文件反編譯分析,推導(dǎo)出了用戶密碼加密邏輯。用戶密碼使用了MD5(unix)+SALT的方式進(jìn)行加密,SALT使用了函數(shù)生成,但生成算法非常簡單。
根據(jù)加密算法編寫的解密算法如下:
使用該算法對(duì)密碼123456進(jìn)行加密:
該密文和用戶在手機(jī)端APK登錄時(shí)的加密后的密碼完全一致。
這也證明了通過逆向加密算法而推導(dǎo)出的解密算法是正確的。
風(fēng)險(xiǎn)分析:
- APK未進(jìn)行混淆、加殼或使用了較簡單的加殼保護(hù),很容易導(dǎo)致APK被反編譯、重打包等;
- 較弱的salt生成算法可通過反編譯還原出來解密算法,進(jìn)而使用程序模擬用戶登錄。
3. 用戶密碼可被批量破解
在用戶使用手機(jī)端登錄時(shí),對(duì)數(shù)據(jù)進(jìn)行抓包分析。
多次抓包分析后,可得到幾個(gè)關(guān)鍵TCP數(shù)據(jù)包。
根據(jù)前面逆向編寫出的解密算法,使用socket進(jìn)行數(shù)據(jù)發(fā)包測試:
可以模擬APK進(jìn)行用戶登錄,并能進(jìn)行其他操作。如獲取設(shè)備列表、添加設(shè)備、修改設(shè)備密碼等。
分析發(fā)現(xiàn),在用戶密碼正確和錯(cuò)誤時(shí),返回信息時(shí)不同的。
根據(jù)這種不同,可以設(shè)計(jì)字典對(duì)用戶和密碼進(jìn)行破解。編寫程序使用手機(jī)號(hào)字典進(jìn)行用戶枚舉測試,簡單測試后發(fā)現(xiàn)150多個(gè)手機(jī)號(hào)使用了123456做為手機(jī)端登錄密碼。
編寫程序?qū)κ謾C(jī)云端ID號(hào)進(jìn)行簡單的枚舉測試,經(jīng)過十分鐘測試便發(fā)現(xiàn)了在線且使用默認(rèn)設(shè)備密碼的手機(jī)云端ID號(hào)碼有二三百個(gè)。
風(fēng)險(xiǎn)分析:
- 云端對(duì)APK發(fā)送的數(shù)據(jù)沒有更多的校驗(yàn),導(dǎo)致可編寫程序批量破解用戶名和密碼,導(dǎo)致用戶身份失竊。
- 通過通信數(shù)據(jù)的分析,可有針對(duì)性的編寫程序進(jìn)行批量添加設(shè)備,進(jìn)行批量的破解設(shè)備密碼。
- 理論上講,使用該方法可遍歷所有的用戶、密碼和手機(jī)端設(shè)備。
4. 互聯(lián)網(wǎng)設(shè)備可被探測發(fā)現(xiàn)
通過對(duì)攝像頭設(shè)備的分析,發(fā)現(xiàn)攝像頭在正常工作時(shí)默認(rèn)開放了如下端口。
其中80端口為web管理端,11010為數(shù)據(jù)轉(zhuǎn)發(fā)端口。
而有些部署在互聯(lián)網(wǎng)上的XX攝像頭設(shè)備在開放一個(gè)web管理端外,也會(huì)開放11010端口進(jìn)行錄像機(jī)的管理。
使用zmap對(duì)全國IP進(jìn)行掃描,發(fā)現(xiàn)中國境內(nèi)IP開放了11010端口的服務(wù)器大約有3.5W個(gè)。
通過分析,在訪問web管理時(shí),服務(wù)器會(huì)返回如下信息,其中頭信息Server: thttpd/2.25b 29dec2003可作為指紋進(jìn)行攝像頭識(shí)別:
通過web指紋對(duì)開放了11010端口的IP進(jìn)行再次過濾,發(fā)現(xiàn)存在的主機(jī)有3800多個(gè)。
使用默認(rèn)密碼admin/123456對(duì)其中IP進(jìn)了訪問測試:
風(fēng)險(xiǎn)分析:
- 默認(rèn)的、有特殊性的端口很容易被識(shí)別,導(dǎo)致設(shè)備被暴露在互聯(lián)網(wǎng)上;
- 攝像頭默認(rèn)的弱口令比較方便用戶記憶和管理,但也會(huì)給用戶帶來信息泄露的極大威脅。
5. 設(shè)備可被未授權(quán)控制
在攝像頭聯(lián)網(wǎng)時(shí),對(duì)攝像頭和云端的通信數(shù)據(jù)進(jìn)行抓包分析,發(fā)現(xiàn)攝像頭會(huì)先請(qǐng)求手機(jī)端服務(wù)器IP地址。
得到服務(wù)器IP地址后,進(jìn)行數(shù)據(jù)傳輸測試。
在選擇好服務(wù)器后,隨后的音視頻的傳輸使用了UDP協(xié)議。
而通過幾次分析,發(fā)現(xiàn)在該數(shù)據(jù)流中攝像頭還會(huì)發(fā)送配置信息給云端服務(wù)器。
其中包括了云端ID號(hào)碼、端口、SMTP賬號(hào)、密碼等明文信息。在隨后的修改密碼測試時(shí),通過手機(jī)端APP修改設(shè)備密碼,發(fā)現(xiàn)了數(shù)據(jù)包格式為:
對(duì)data字符串進(jìn)行分析:6a7ea9b5c000004a31b1add1515c000000860000000600000014000000000000000000000061646d696e0000000000000000000000000000003132333435360000000000000000000000000000b9dcc0edd4b1d5cabba700000000000000000000000000000000000000000000發(fā)現(xiàn)6a7ea9b5c000004a31b1add1之后的字符為控制字段和密碼字段。編寫腳本模擬云端對(duì)設(shè)備進(jìn)行密碼修改。
可成功將密碼修改為123456789。隨后的測試中,發(fā)現(xiàn)還可以控制攝像頭重啟或關(guān)機(jī)。
風(fēng)險(xiǎn)分析:
- 音視頻流和控制數(shù)據(jù)流都使用了UDP進(jìn)行傳輸,很容易實(shí)現(xiàn)中間人攻擊,導(dǎo)致敏感信息泄露;
- 在監(jiān)聽到攝像頭的通信數(shù)據(jù)后,很容易偽造數(shù)據(jù)進(jìn)行攝像頭密碼修改、重啟設(shè)備、控制云臺(tái);
- 在攝像頭請(qǐng)求服務(wù)器IP地址的時(shí)候,發(fā)現(xiàn)系統(tǒng)使用了DNS解析域名,此時(shí)進(jìn)行DNS欺騙可輕易劫持?jǐn)z像頭,進(jìn)而對(duì)攝像頭進(jìn)行云臺(tái)控制、關(guān)機(jī)、固件升級(jí)等非法控制管理。
6. 多個(gè)web服務(wù)器存在漏洞
在對(duì)攝像頭進(jìn)行安全檢測的同時(shí),不可避免的接觸到web服務(wù)器,雖未進(jìn)行針對(duì)性的測試,但仍發(fā)現(xiàn)一些問題,在此僅列舉一二。
(1) 手機(jī)端官網(wǎng)存在s2-045命令執(zhí)行漏洞
測試中發(fā)現(xiàn)IP為X.X.X.X的服務(wù)器存在Struts2-045漏洞。 其中xxx.com和xx.xxx.com兩個(gè)域名解析到該服務(wù)器上,在其中一個(gè)服務(wù)器上存在struts2命令執(zhí)行漏洞。
http://xx.xxx.com/xxx.do?deviceGuid=xxx,使用POC程序可直接執(zhí)行系統(tǒng)命令。
執(zhí)行whomai,使用了root用戶。
查看shadow文件。
攻擊者可以利用該漏洞輕易在遠(yuǎn)程服務(wù)器上執(zhí)行任意系統(tǒng)命令,將會(huì)對(duì)受影響站點(diǎn)造成嚴(yán)重影響,引發(fā)數(shù)據(jù)泄露、網(wǎng)頁篡改、植入后門、成為肉雞等安全事件。
(2) 云端ID號(hào)碼可進(jìn)行枚舉
在攝像頭官網(wǎng)提供了一個(gè)云端ID號(hào)碼查詢的接口http://www.xxx.com/xxx/Support.jsp?id=S12923021
該接口可直接查詢所有的云端ID號(hào)碼,并顯示是否在線。
當(dāng)設(shè)備不存在時(shí),返回值rt=-1:
當(dāng)設(shè)備離線時(shí),返回rt=1,dsls=0;當(dāng)設(shè)備在線時(shí),rt=1,dsls=1.
根據(jù)返回值的不同即可進(jìn)行云端ID號(hào)碼的暴力枚舉,使用枚舉到的在線手機(jī)端設(shè)備,可使用默認(rèn)密碼嘗試添加查看。
管理后臺(tái)存在越權(quán)漏洞
在進(jìn)行APK測試時(shí),發(fā)現(xiàn)APK廣告管理平臺(tái)存在越權(quán)。訪問URL:http://xx.xxx.com/Service/AdsList.do可查看所有廣告信息。
通過該越權(quán)也可以輕易修改或刪除廣告信息,進(jìn)而影響所有APK接收到的廣告。另外一處經(jīng)銷商查詢接口處,也存在越權(quán)。訪問URL可直接查看所有供應(yīng)商信息。
(3) 多個(gè)數(shù)據(jù)庫使用了相同口令
通過struts2命令執(zhí)行獲取了一臺(tái)服務(wù)器的權(quán)限,得到了其中數(shù)據(jù)庫的密碼,后來發(fā)現(xiàn)該公司多個(gè)云服務(wù)器上的數(shù)據(jù)庫使用的都是相同密碼,包括最重要的用戶管理數(shù)據(jù)庫和云ID號(hào)碼管理數(shù)據(jù)庫,也包括了兩臺(tái)重要的視頻存儲(chǔ)集群設(shè)備。
風(fēng)險(xiǎn)分析:
- 相比攝像頭設(shè)備的漏洞,攻擊者可能更擅長從web服務(wù)器入手,服務(wù)器一旦出現(xiàn)問題,那么所有的用戶和設(shè)備信息都將受到威脅;
- 未授權(quán)訪問可能導(dǎo)致供應(yīng)商信息泄露、廣告被惡意篡改,甚至管理員密碼失竊等。
(4) 測試小結(jié)
通過測試,發(fā)現(xiàn)攝像頭、云端、APP之間的數(shù)據(jù)通信采用了一定的保護(hù)措施,但還是存在很多安全薄弱點(diǎn)。
- 算法可被逆向分析。私有算法的安全性取決于算法的不公開性,一旦算法邏輯可被逆向分析,那么在這之上建立的安全基礎(chǔ)都將不復(fù)存在。
- 身份校驗(yàn)存在缺陷。在使用自發(fā)包控制攝像頭或連通服務(wù)器時(shí),攝像頭和云端服務(wù)器沒有對(duì)控制數(shù)據(jù)進(jìn)行校驗(yàn),導(dǎo)致可直接響應(yīng)任意數(shù)據(jù)。
- WEB服務(wù)器存在的安全隱患較大。雖然本次測試并非針對(duì)web服務(wù)器,但測試中就已經(jīng)發(fā)現(xiàn)中高危漏洞七八個(gè)之多,如果進(jìn)行針對(duì)性web安全測試應(yīng)該會(huì)有更多的問題。而且web服務(wù)器中保存著更多的用戶數(shù)據(jù)和設(shè)備信息。
安全建議
- 平臺(tái)安全性:采用安全隔離方式,把專網(wǎng)與公網(wǎng)從物理上隔離開,這是最切實(shí)有效的安全措施,防止攝像頭在互聯(lián)網(wǎng)上的暴露;
- 應(yīng)有完善的授權(quán)機(jī)制,可以靈活地分配用戶可以查看的攝像機(jī)、可執(zhí)行的功能模塊,可執(zhí)行的具體功能等。因而用戶只能查看權(quán)限范圍內(nèi)的攝像機(jī)和執(zhí)行被授予的功能。
- 通信安全機(jī)制:在網(wǎng)絡(luò)通信時(shí),系統(tǒng)提供端到端(用戶端-系統(tǒng)平臺(tái)-設(shè)備固件)的SSL驗(yàn)證和數(shù)據(jù)加密。為防止視頻流被非法用戶截獲,可以對(duì)視頻文件進(jìn)行加密傳輸,一般可以采用對(duì)稱密鑰體系進(jìn)行加密,對(duì)每個(gè)視頻流采用不同的密鑰加密,只有有權(quán)觀看此視頻流的用戶才擁有此密鑰,可以對(duì)視頻流進(jìn)行解密,保障視頻傳輸?shù)陌踩浴?/li>
- 云服務(wù)器除了避免傳統(tǒng)web漏洞外,對(duì)云端服務(wù)器的視頻和文件進(jìn)行備份和加密存儲(chǔ),防止因?yàn)榉?wù)器被貢獻(xiàn)而導(dǎo)致用戶數(shù)據(jù)泄露。
- 手機(jī)APP應(yīng)該進(jìn)行安全加固和代碼混淆,防止app被逆向破解導(dǎo)致算法或業(yè)務(wù)邏輯泄露。