0×00 前言php
現代智能路由器是目前物聯網發展鏈條上一個不可或缺的重要組成部分,搞清楚其架構設計對未來設計物聯網有深遠的影響,固然爲更安全的設計物聯網架構起到關鍵做用。本文將針對智能路由器的表明「極路由」的安全設計架構進行詳細的分析。前端
現代智能路由器表明:極路由 HiWiFi OS,說它智能主要表如今能夠經過手機App遠程管理家中的路由器。mysql
根據公開資料,能夠大體瞭解HiWiFi 整個系統架構。ios
那麼,咱們須要分析目標:web
因爲鏈接公有云和手機App的都是HiWiFi路由器,因此對其固件的分析是很是有必要的。固然服務器端的OpenAPI&SDK也是研究的重點。算法
1. HiWiFi 路由固件ROM分析 2. HiWiFi OpenAPI &SDK服務器端分析 3. HiWiFi Android App 分析 (下期分解)
0×01 分析思路及實踐sql
1. HiWiFi 路由固件ROM分析(Reverse Engineering ROM)數據庫
解壓極路由固件json
測試環境:Kali Linux binwalk、squashfs-toolsapi
因爲極路由固件是經過SSL直接推送給用戶購買的路由器文件系統中,而且HiWiFi是運行在用戶態的程序,SSH沒法開啓,因此,須要從其餘渠道得到固件。
HiWiFi固件因爲HiWiFi底層是開源的OpenWRT,因此到OpenWRT中文網去尋求資源,由於官方固件不開放下載。http://downloads.openwrt.org.cn/PandoraBox/HiWiFi_1S_HD/stable/
Binwalk 自動提取文件系統失敗。
0x12314E Squashfs filesystem, little endian, version 4.0, compression:lzma (non-standard type definition)
沒法解開squashfs文件系統,由於不是標準的lzma壓縮打包算法。
使用
hexdump -C install.img >you.out
先看看文件頭描述。
沒什麼頭緒,那就要看源代碼了。
在沒有源代碼的狀況下怎麼辦?使用通用解包工具嘗試:
(1)tar xvf install.img 最終失敗 (2)看到xz 算法。那麼,可使用squashfs工具試試。用squashfs-tools 中的 unsquashfs -f install.img (先安裝apt-get install squashfs-tools) 成功。
能夠說這是個設計缺陷,怎麼可使用通用工具解開文件系統。(kali 2.0 要本身編譯安裝squashfs-tools,還要添加lzma補丁等,有點麻煩。)
安全建議:本身開發一個壓縮解壓包的工具,哪怕在通用工具里加點salt,而後在配合RSA非對稱祕鑰解密驗證。
進入系統 分析系統
安全小提示:進入/etc/shadow 找到root密碼(Linux中的密碼用兩種加密算法加密:DES和MD5,查看你的/etc/shadow文件, 密碼欄以$1$開頭的是用MD5算法加密的。)
root:$1$IjJSZYnP$14XuZ/eoGldE8Qz2BXkyO.:15797:0:99999:7::: daemon:*:0:0:99999:7::: ftp:*:0:0:99999:7::: network:*:0:0:99999:7::: nobody:*:0:0:99999:7:::
我想罵人了,root的密碼是admin
要想了解極路由是如何設計其系統的,能夠查看其lua腳本,若是想更深刻可以使用IDA Pro反編譯*.so動態連接庫文件等系統文件。
爲了更好的分析其系統架構,我使用virtualbox 搭建一個支持x86平臺openWRT 經過文件對比,瞭解HiWiFi有哪些庫 lua是廠商開發的,從分析Uhttpd能夠看出,加入了json的解析,提升支持和雲端還有手機App通信的便捷性。
因爲時間的關係,沒作太多分析,你們能夠盡情發揮。
可是又碰到了一個很難破解的問題,極路由廠商開發的lua文件被加密了。
我想到的方法就是動態調試HiWiFi OS,那麼須要搭建可MIPS的虛擬環境(QEMU),而後使用IDA Pro去調試。這個下期再說。
2. HiWiFi SDK OpenAPI分析
我想從兩個方向下手分析
(1)手機App和 HiWiFi Cloud 之間的通信 (2)HiWiFi 路由器和HiWiFi Cloud之間的通信
(1)手機App和 HiWiFi Cloud 之間的通信
測試環境:win七、Fiddler
經過Fiddler代理 抓手機App的包
發現手機App和HiWiFi cloud 通信涉及到4個域名
https://app.hiwifi.com https://m.hiwifi.com https://openapi.hiwifi.com https://client.openapi.hiwifi.com
前端使用nigix架構web服務器,後臺使用php開發語言。數據庫估計是NoSQL,前期爲mysql。
百萬用戶使用SSL鏈接,仍是能承受的起的(另外提醒一下:WVS掃描後發現SSL2.0版本過低,要換成 SSL3.0)。
咱們就分析一個API。
POST https://app.hiwifi.com/mobile.php?m=yun&a=ExchangeDeviceInfo&ios_client_ver=504000602 HTTP/1.1 Host: app.hiwifi.com Accept: */* Client-type: ios Proxy-Connection: keep-alive App-src: hiwifi Accept-Language: zh-Hans;q=1, en;q=0.9 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded Client-ver: 504000602 User-Agent: HiWiFiKoala-REL/504000602 (iPhone; iOS 8.4.1; Scale/2.00) Connection: keep-alive Content-Length: 857 Cookie: __uuid=tjBy+FV/UaGolDRJHKvIAg==; TK=l6DSEEDWm4S17V-xgSv_qpIPxLInuE3AtW6FHPAJ3Q rid=98150&source=%5B%0A%20%20%7B%0A%20%20%20%20%22device_name%22%20%3A%20%22L-106989-A%22%2C%0A%20%20%20%20%22device_mac%22%20%3A%20%228C705AC50CF4%22%0A%20%20%7D%2C%0A%20%20%7B%0A%20%20%20%20%22device_name%22%20%3A%20%22MiBOX1S-3196dc7cb902ca41%22%2C%0A%20%20%20%20%22device_mac%22%20%3A%20%22983B16E2E252%22%0A%20%20%7D%2C%0A%20%20%7B%0A%20%20%20%20%22device_name%22%20%3A%20%22lyyer-iPhone%22%2C%0A%20%20%20%20%22device_mac%22%20%3A%20%22A85B786254C0%22%0A%20%20%7D%2C%0A%20%20%7B%0A%20%20%20%20%22device_name%22%20%3A%20%22%E5%B0%8F%E7%B1%B3%E7%9B%92%E5%AD%903-%E9%87%8C%E5%B1%8B%22%2C%0A%20%20%20%20%22device_mac%22%20%3A%20%226CFAA74B34B6%22%0A%20%20%7D%2C%0A%20%20%7B%0A%20%20%20%20%22device_name%22%20%3A%20%22Xiaomeng%22%2C%0A%20%20%20%20%22device_mac%22%20%3A%20%220C74C2837241%22%0A%20%20%7D%0A%5D&token=l6DSEEDWm4S17V-xgSv_qpIPxLInuE3AtW6FHPAJ3Q
使用fiddler 文本嚮導 URLDecode 能夠解析數據。哥,你也別太相信HTTPS,路由器傳輸的數據都在裸奔。
(2)HiWiFi 路由器和HiWiFi Cloud之間的通信
這個要考慮一下了,HiWiFi路由器和HiWiFi之間的通信,難道要跑到公網sniffer?NO。只有分析lua或者so源碼了。可是目前源碼大部分加密,尚未想好思路。
0×02 總結
HiWiFi系統整體來講安全設計考慮充分,本地文件系統使用加密存儲,減小了逆向的可能。手機App和HiWiFi Cloud都是SSL通信,增長了網絡層面中間人攻擊難度。固然有更多的安全設計(例如:token設計等),本文因爲時間關係,就先分析到這。