【胖猴小玩鬧】智能門鎖與網關: 海康螢石智能門鎖的網關分析(三)

2021-02-21 嘶吼專業版

系列文章請點擊文末「閱讀原文」查看

1.簡介

本篇是關於海康螢石智能網關分析的第3篇,在上一篇中,我們完成了固件編輯和重打包工作。在我們自己修改的固件中,海康螢石的智能網關上電啟動之後會運行telnetd,此後我們只要通過telnet遠程連接網關即可使用shell,不需要再連接不穩定的串口了。

繼續上一篇的內容,我們從本篇開始分析智能網關裡面的關鍵應用,研究一下智能網關到底與伺服器通信了什麼內容。

2. 程序逆向分析

2.1 預處理

在海康螢石智能網關中執行ps指令,查看所有正在運行的程序,通過簡單的排除法,就可以確定我們要分析主程序是:』/dav/davinci』(達文西?達文西?),如下圖所示:

圖2-1 固件中運行的所有進程

通過逆向分析davinci程序,我們可以發現該程序是有運行日誌的,只是把不重要的日誌屏蔽了(debug、verbose等),只輸出了較為嚴重的日誌內容(fatal、error等)。那麼我們修改幾條指令,使其跳過對日誌嚴重程度的判斷,如下圖:

圖2-2 patch日誌輸出代碼

除了輸出日誌的函數需要patch之外,還有另一個函數也需要做一些調整。davinci在啟動之後,初始化了一個線程操作看門狗,該線程會不斷向/dev/watchdog進行寫操作。如果一段時間內/dev/watchdog沒有收到任何數據,那麼整個設備就會重啟。由於我們計劃調試davinci程序,如果在調試過程中,觸發斷點導致看門狗線程掛起,那麼整個系統就會重啟。為此,我們先把該線程patch掉,然後再弄一個寫入/dev/watchdog的小腳本,用以專門餵狗防止重啟。相關位置的代碼截圖如下:

圖2-2 patch watchdog相關代碼

餵狗的小腳本內容如下:

圖2-3 餵狗小腳本

相信腳本內容一眼就能夠看懂,所以我們不做太多的解釋了。此外,還有個guard.sh也是用於檢測davinci程序是否運行的,但它不影響我們的操作,所以就不討論該腳本了,有興趣的讀者可以去看看。

完成上述操作之後,就可以把被patch的davinci上傳至海康螢石的智能網關,此處我們不再採用燒錄固件的方法,因為過於麻煩。通過翻閱該設備的文件系統,可以在設備中發現tftp程序,這是一個使用tftp協議傳輸文件的程序,可以用它從tftpd伺服器上傳或下載文件。我們使用從這個連結下載到的tftpd程序:http://tftpd32.jounin.net/tftpd64_download.html,運行後,調整tftpd伺服器的文件目錄和監聽網卡,如下圖:

圖2-4 配置tftpd程序

上圖中,被patch的davinci程序就在紅框標識的目錄中。然後在智能網關設備中使用tftp程序獲取相關文件即可,相關命令截圖如下:

圖2-5 使用tftp下載文件

待相關文件下載到海康螢石的設備中之後,就可以運行FeedWatchdog.sh腳本開始餵狗,然後終止原本的davinci進程,接著刪除/home/pidfile文件,該文件相當於互斥體,用於控制davinci僅運行了一次,最後啟動我們自己的davinci_1進程,相關命令如下:

圖2-6 啟動patch之後的davinci進程

待程序運行一段時間之後,就可以查看程序的運行日誌,然後通過日誌分析程序的各種行為。

2.2 日誌分析

待程序運行一段時間之後,就會在『/applog/devlog』目錄下生成日誌文件,每個文件500KB左右,如下圖所示:

圖2-7 程序運行時生成的日誌

用tftp程序將日誌取回,然後打開程序日誌,在日誌中搜索litedev.ys7.com,這個地址是智能網關上電之後第一個訪問的地址,我們在本專題第9篇,也就是分析海康螢石智能網關的第一篇中介紹過。搜索結果如下圖:

圖2-8 與litedev.ys7.com有關的日誌

上圖中,我們可以看到由litedev.ys7.com解析而來的ip地址:115.231.107.14,這與我們用wireshark抓包時得到的結果是相同的。

繼續翻看日誌,在距離圖2-8不遠的地方,可以看到另一條日誌,看起來像是與海康螢石MQTT伺服器相關的日誌內容,截圖如下:

圖2-9 與MQTT伺服器有關的日誌

從圖中,我們可以看到另一個ip地址:101.71.30.172,該地址同樣與我們wireshark抓包的結果吻合。MQTT通信協議是構建於TCP/IP協議之上的一種輕量級通信協議,經常出現在IoT設備系統中設備端與雲端的通信過程中。

結合這兩條日誌內容和wireshark的抓包結果,我們可以進一步確認設備的工作流程:與litedev.ys7.com通信,獲取了MQTT伺服器的地址;然後與MQTT伺服器通信,實現設備的邏輯功能。

在圖2-8和圖2-9中,我們分別用紅框標識了一個關鍵字符串。在海康螢石智能網關的文件系統中,二進位搜索其中一個字符串「lbs_connect」,確認該字符串出現在libmicrokernel.so.1中。用IDA加載該so文件,可以發現此動態連結庫中,有一個函數名字即為lbs_connect,查找該函數的交叉引用,可以看到有多處代碼調用了此函數,我們隨便找一處點開看下,如下圖所示:

圖2-10 調用lbs_connect函數

可以看到在lbs_connect函數返回成功之後,就會調用send_authentication_i函數。這個函數看起來就是加密和認證相關的函數。

3. 程序調試

找到了關鍵點之後,就需要進一步分析這些函數的功能和作用了。在本專題之前的文章中,我們都是純靜態分析,所以在本篇中,我們就不再單純地進行靜態分析,而是想辦法調試一下這個程序。

對於嵌入式Linux作業系統,我們通常選用gdb和gdbserver作為調試工具。gdb是一個應用非常廣泛的調試器,在以後的文章中也會反覆出現,其全稱是GNU Project Debugger,其官網是https://www.gnu.org/software/gdb/;gdbserver是gdb的一部分,常用於解決交叉編譯環境下的遠程調試問題。我們可以直接在設備上使用gdb進行本地調試,但gdb程序體積比較大,而且直接在設備上運行gdb會有很多不方便的地方,所以我們選擇通過gdbserver進行遠程調試。為了完成調試工作,我們首先需要一個可以運行在海康螢石智能網關設備上的gdbserver程序。

在此前關於海康螢石智能網關分析的第二篇文章中,我們下載了MT7688 SDK相關的資料。在進一步翻閱相關的資料之後,我們發現官方MT7688開發板是內置了gdbserver程序。因此,我們下載了官方提供的固件包,並用binwalk提取了固件內容,最後找到了gdbserver程序。但此gdbserver程序運行之後沒有任何輸出,推測是官方定製了gdbserver的代碼,導致我們無法使用該程序調試,截圖如下:

圖3-1 官方gdbserver無法使用

所以,就只能去找一找有沒有其他可以正常運行在海康螢石智能網關中的gdbserver程序了,畢竟自己編譯一個有點太麻煩了。幸運的是,在rapid7官方github帳戶上有一些已經編譯好的gdbserver程序,連結如下:https://github.com/rapid7/embedded-tools/tree/master/binaries/gdbserver, 我們選擇下載mipsle版本的gdbserver。截圖如下:

圖3-2 rapid7官方github頁面中的embedded-tools倉庫

下載完畢之後,通過tftp下載至海康螢石智能網關的設備中,並嘗試執行此程序。截圖如下:

圖3-3 執行gdbserver.mipsle程序

程序沒有報錯,看來是可以順利執行的。接下來就用此程序開始調試吧。

首先,使用 gdbserver啟動davinci。如果直接用 gdbserver附加davinci進程,很可能會錯過davinci程序與伺服器通信的認證過程。所以我們直接使用gdbserver啟動程序,這樣一來,在遠程調試器連接之前,davinci程序將處於掛起狀態。命令如下:

圖3-4 通過gdbserver啟動程序

此時,gdbserver就開始監聽23946埠,等待遠程調試器的連接。

接下來,我們可以選擇gdb或IDA作為遠程調試器連接gdbserver。IDA提供圖形界面,可以幫助我們理解程序的邏輯;但gdb要更穩定,可以有效避免IDA調試時出現的奇怪錯誤。我們這裡直接選擇gdb作為遠程調試器,在後續的文章中會有介紹用IDA作為調試器的例子。

由於我們需要調試的是MIPS指令集的程序,而gdb默認情況下,僅支持調試與當前環境採用相同指令集的程序(i386),所以我們需要安裝可以調試MIPS指令集的gdb程序。安裝方法比較簡單,直接輸入sudo apt install gdb-multiarch即可。還可以給gdb程序加一個pwndbg插件,用於輔助我們的調試工作,該插件的官方地址是:https://github.com/pwndbg/pwndbg,只需要下載下來,然後運行./setup.sh即可。此插件並非必需品,但是推薦裝上。

完成gdb的配置工作之後,就可以使用gdb連接gdbserver開始遠程調試了。gdb的調試命令非常多,可以直接搜索到很多整理好的常用命令,在這裡,我們就遇見什麼指令就解釋什麼指令吧。運行gdb-multiarch,截圖如下:

圖3-5 運行gdb-multiarch程序

上圖中,我們分別設置architecture為MIPS,讀取davinci的符號文件,在main函數設置斷點,並連接遠程的gdbserver,關鍵位置已用綠框圈出。然後,我們用快捷鍵c(continue),讓程序開始執行,截圖如下:

圖3-6 程序運行到main時中斷

上圖中,紅框部分表示觸發了main函數中的斷點。此時,我們加載libmicrokernel.so.1的符號文件,同樣用file命令,就不截圖了。然後,我們在lbs_connect函數下個斷點,並繼續執行程序,如下圖:

圖3-7 在lbs_connect函數下斷點

稍等片刻,就會看到程序斷在lbs_connect函數中,等待我們的調試命令,截圖如下:

圖3-8 程序命中lbs_connect斷點

從圖中可以看到,程序是從lbs_redirect調用過來的,可以在外層函數下斷點,繼續調試,幫助我們理解程序的邏輯,但是本篇內容先到此為止。

4. 小結

從本篇起,我們開始分析海康螢石智能網關的固件程序。在我們的分析過程中,程序的日誌給我們提供了很多幫助。藉助日誌的輸出內容,我們很快定位到了通信加密相關的代碼。接著為了進一步研究設備是如何認證和加密的,我們嘗試使用gdb和gdbserver調試固件中的程序。關於進一步的分析內容將在下一篇分析中展開討論。

作者:Yimi Hu & Light @ PwnMonkeyLabs

相關焦點

  • 老小區升級智能門鎖,出門再也不用慌,智能門鎖選購指南
    而要解決上述問題,指紋鎖或者智能門鎖是最好的解決辦法。雖然智能門鎖這兩年的發展如火如荼,但其實會發現普及率並不是很高,特別是老小區,還基本是普通門鎖的狀態。和很多朋友聊起這個事,為什麼不裝把指紋鎖?【品牌選擇】從目前可選擇的智能門鎖來看,主要分為三大陣營:一、傳統門鎖品牌;二、網際網路品牌;三、跨界品牌。
  • 飛比榮獲2019鎖博會年度智能門鎖「孔明獎」—— 生態獎
    深圳市物聯傳媒有限公司、全國智標委智能門鎖標準工作組、鎖聯、中國鎖博會組委會聯合舉辦的2019年中國國際智能門鎖博覽會(以下簡稱「鎖博會」)在深圳會展中心成功召開。聚集了國內外智能門鎖行業的專家和企業,旨在深入探討解智能門鎖的發展現狀,共同分析智能門鎖行業的發展局勢。同時,讓全社會都有機會了解門鎖優秀企業以及門鎖優秀應用案例。聯網鎖是未來智能門鎖的大方向,而聯網可以通過很多種技術方式實現,Zigbee技術就是其中最為常見的一種。
  • 智喔喔---性價比最高的智能門鎖,聯網領域的一匹黑馬!
    而智能門鎖相對於傳統門鎖,更為適合老年人及兒童使用,避免傳統的丟失鑰匙等行為。因此97%的家庭都存在從機械鎖更新為智能鎖的需求,加之每年新增住房數仍將保持相對較高的活力。從國內市場來看,智能門鎖滲透率較低,潛在市場巨大,智能門鎖市場目前正是一片藍海。
  • 小米智能門鎖 E評測:六種解鎖方式暢享智能家居生活
    鎖的誕生可以追溯到公元前3000年,在中國仰韶文化遺址中,就發掘出裝在木結構框架建築上的木鎖,在東漢時期,鐵製三簧鎖的技術已具有相當高的水平。現如今,智能門鎖正逐漸取代傳統門鎖,走入千家萬戶中。鎖作為保衛家中安全的第一道防線,選擇什麼樣的鎖才能真正安全是廣大消費者最為關心的事。
  • 居家安全你絕對不能忽視的問題:智能安防產品推薦
    小米智能門鎖Pro 智能門鎖從去年開始受到了消費者們的追捧,一時間很多家電廠商都開始發布自己的智能門鎖產品。不僅有網際網路品牌,甚至一些老牌科技廠商也在布局IoT布局時,將智能門鎖定位為整屋智能家居的起點,雖然在今年也曾曝出過一些品牌的智能門鎖存在安全隱患的問題,但是隨著後續的更新,這些技術上的問題也都迎刃而解,所以智能門鎖迎來了再一次的熱賣。今天介紹的這款小米智能門鎖Pro,是小米生態的最新產品,它除了擁有智能門鎖的全部功能以外,還囊括了智能貓眼、智能門鈴等全新功能。
  • 小米推出米家智能多模網關:支持Apple HomeKit,售價129元
    IT之家12月11日消息 日前,小米宣布推出米家智能多模網關,支持Zigbee、Wi-Fi、藍牙&藍牙Mesh等三種無線通訊協議,售價129元,將於12月12日0點開售。小米米家智能多模網關內置WiFi雙天線,採用2×2 MIMO無線技術,官方表示在空曠環境測試下傳輸距離最高可達200米。
  • 智能門鎖選購指南
    2015年,國內智能門鎖銷量為200萬套;2016年飆漲75%,總體銷量超350萬套;2017年,國內智能門鎖銷量怒破800萬套,較2016年翻了一番;2018年上半年,國內智能門鎖產銷量達830萬多套。據智能門鎖白皮書相關數據統計,截止至2018年6月底,我國智能門鎖品牌已經超過3500家,生產企業目前掌握的數量超過1500家,造就百億級別的藍海市場。
  • 糖紙眾測丨歐瑞博智能門鎖 S2:精緻的外表,智能的「芯」
    現如今智能門鎖已經逐漸普及,身邊的同事、朋友但凡是新房或新裝修,都會選擇智能門鎖,最帶來最直觀的體驗就是不需要攜帶鑰匙,指紋、密碼輕鬆搞定。恰好最近換了新居,雖然是出租房,但也想體驗一把智能門鎖,這次有幸獲得糖紙眾測的瑞博智能門鎖 S2 黑武士的體驗機會,對這款產品充滿了期待。
  • 化繁為簡,無縫連接|小米米家智能多模網關&光照傳感器體驗
    溫溼度、煙霧、天然氣傳感器,以及Aqara品牌的傳感器、魔方控制器、開關、插座、窗簾電機、LED燈泡、智能門鎖等設備都屬於Zigbee子設備。目前在售的米家全系智能門鎖、電子溫溼度計Pro、飛利浦藍牙夜燈、藍牙溫溼度計、花花草草監測儀、鹿客和櫸樹品牌的部分智能門鎖、以及黑加手環等產品都屬於BLE子設備。由於功耗、成本、安全等角度的考慮,通常BLE子設備本身並不集成WiFi模塊,所以也無法直接獨立連接到路由器及外網,同樣需要藉助藍牙網關設備才能實現。
  • 智喔喔智能門鎖:解鎖5G時代智能家居新生態
    隨著國家5G智能的逐漸普及,智能家居產品可以解決互聯互通問題,打破壁壘,為消費者帶來更加美好的智能生活。而智能門鎖作為智能家居產品中重要的一環,智能門鎖市場的日益火爆,主要得益於產品本身給消費者的生活帶來的便利。
  • 小米智能門鎖 E 體驗:加量不加價,可能是新屋的第一把智能門鎖
    智能門鎖在今天已經很常見,短租公寓、辦公室、甚至一些人家裡都能看到它,在過去三四年裡,智能門鎖已經從過去的「沒電開門」、「容易被解」的形象逐漸變得「可靠」和「方便」。而隨著這一產物被人們接納,市場也在逐步擴充,一些廠商也開始賦予智能門鎖更聰明的功能,比如 IoT 物聯,這是目前智能門鎖等智能家居產品的一大方向。
  • 分享| 物聯網全景動態圖譜2.0——智能門鎖企業匯總
    人機互動的智能化變革改變了人們的生活方式,智能家居、智能安防、智慧交通、智慧城市的風起雲湧,使智能生活理念逐漸進入到人們的生活中。 在智能家居和智能安防系統中,智能門鎖有著獨特的應用場景與集成空間。2016年中國智能門鎖零售市場正式爆發,進而帶動中國智能門鎖進入快速發展時期。預計到2020年,中國智能門鎖銷量將突破3200萬套。
  • 1699 小米全自動智能門鎖發布 支持米家homekit
    9月22日上午,小米正式發布了旗下首款全自動智能門鎖,售價1799元,目前享受預付訂金100元抵200元活動,到手僅需1699元。之前小米系的鹿客就發布了全自動門鎖S30,而此次也是小米首次發布全自動智能門鎖。
  • 飛比科技與阿里雲深度合作:發布安全雲鎖網關
    ,進一步加強了產品的可靠性和安全保障,助力智能門鎖產業在行業中的應用落地。作為國內率先通過Zigbee3.0認證的企業之一,飛比以符合國際標準的Zigbee模塊及網關中間件,為全球數百家照明、安防、電工、智能門鎖及窗簾廠家提供產品智能化升級方案,同時為數十家智能家居雲平臺及系統整合廠家提供設備對接服務,目前已是國內外多家大型知名品牌的Zigbee標準產品供應商。
  • 16款熱門主流智能門鎖橫評:誰能夠真正守護你的家門
    二、橫評匯總三、智能門鎖推薦榜單寫在最後  參與本次參與評測的16款智能門鎖型號與基礎數據  網際網路智能門鎖則即便是支持APP報警,但米家、鹿客、雲米需要額外購買藍牙網關,這無疑是增加了用戶的使用成本,需要扣分。  用戶對智能門鎖的一個擔心點是沒電了怎麼辦,本次橫評測試的16款智能門鎖有15款均支持移動電源應急充電開鎖,不支持應急充電開鎖的三星SHP-DP728則內置9V方塊備用電池,所以在續航時間上大家不必擔心會沒電。
  • 小米智能門鎖 E 體驗:「加量不加價」,可能是新屋的第一把智能門鎖
    而隨著這一產物被人們接納,市場也在逐步擴充,一些廠商也開始賦予智能門鎖更聰明的功能,比如 IoT 物聯,這是目前智能門鎖等智能家居產品的一大方向。為何是「E」?小米在 2018 年推出了小米米家智能門鎖,之後又在 2019 年用「青春版」將智能門鎖的門檻降到千元內。如今上架的小米智能門鎖 E,可以看做是米家智能門鎖青春版的迭代,它基於前者增強了鎖芯和防撬鎖,外觀也有較明顯的變化,但價格依然還是 999 元。
  • 中科易安聯網智能門鎖參展湖南省高職高專教育信息化研討會
    為全面貫徹落實黨的十九屆五中全會精神,推進湖南省高職高專教育信息化「十四五」規劃編制工作,科學制定教育信息化「十四五」規劃,提升高職高專院校教育信息化建設質量,湖南網絡教育協會於2020年12月11日在長沙商貿旅遊職業技術學院召開「湖南省高職高專教育信息化「十四五」規劃編制研討會」,中科易安無線聯網智能門鎖盛裝出席
  • 小米智能門鎖E正式發布:支持Apple HomeKit 眾籌價899元
    5月27日,小米智能門鎖系列推出了全新門鎖單品-小米智能門鎖E。小米智能門鎖E主打國內千元檔位內市場,價格更加親民,同時兼具高安全性,可謂「國名門鎖」之後又一經典力作。小米智能門鎖E售價999元,小米商城眾籌價899元,包含一次安裝服務。
  • 四款好評度高智能門鎖推薦 不僅僅只是好用那麼簡單
    來源:天極網隨著人們生活水平的不斷提升,年輕用戶們更加傾向於智能化家居,比如將家裡的普通門鎖換成智能門鎖。智能門鎖方便快捷,可以幫助人們解決總是忘帶鑰匙的煩惱,深得人心。但有調查顯示,儘管小區安全、社區安全進一步的提高,小偷破門入室的案例不斷減少,還是有大部分用戶對智能門鎖的安全性持保留態度。那麼,什麼樣子的智能門鎖才算是足夠安全的呢?答案很簡單,能夠滿足用戶安全訴求,開關門方便,遇到小偷及時為用戶反饋預警,擁有較好的使用體驗。這兩者兼具就可以稱之為一把好用的智能門鎖。
  • 8000萬人次用過的智能門鎖果加,發布會推出重磅新品!
    2019年5月28日下午,火河科技&果加舉辦了一場品牌升級戰略發布會,在發布會上火河科技CEO段方華發布全新產品線M系列智能門鎖M2,定價1699。