高清视频在线观看免费播放器-伊人日本-色九月综合-18禁止看的免费污网站-免费观看性行为视频的网站-天天碰天天操-久久精品国产欧美日韩99热-中文字幕在线视频不卡-国产偷人妻精品一区二区在线-国内精品久-伊人影院在线看-密臀av一区-久久综合五月丁香久久激情-福利一区福利二区-gg国产精品国内免费观看-国产精品 高清 尿 小便 嘘嘘

當前位置: 首頁 >綜合 > 正文

記一次RTEMS系統的固件解密-環球快看點

2023-06-07 08:10:20 來源:FreeBuf.COM
1、前言

近期翻閱之前的工作,發現在考勤機系列的安全研究里,有一篇很早就整理好但是沒發出來的文章,考慮到相關設備的漏洞已經提交了快兩年了,想必該修復的也修復了,設備可能都已經不再生產了。這篇文章我們主要聊一下這個設備的分析過程,著重描述一下這個設備的固件解密。

2、IoT設備啟動概述

IoT設備的安全分析中,分析人員的主要工作是分析設備的邏輯功能及其代碼實現,從而挖掘設備中的漏洞。大多數分析工作是從解析固件開始的,如果這一步就不順利的話,后續可能會更加麻煩。不巧的是,這次的設備在起步階段就很曲折:固件被加密了,并不能直接開始分析。

在此我們再簡單總結一下那些常見IoT設備的啟動流程,如下圖所示:


(資料圖片僅供參考)

圖2-1 IoT設備大致的啟動流程

上圖大致可以分為4個階段:

(1)首先,芯片上電后首先運行的是boot rom,執行完畢后會跳轉到bootloader,如果設備啟用了固件簽名,那么此處會對固件進行校驗;

(2)然后,bootloader的作用類似于PC啟動過程的引導,主要功能就是為操作系統的運行做準備工作,在復雜的設備中,bootloader會進一步分成多個階段;

(3)此時,操作系統就開始接管對MCU的控制,上圖中把操作系統和app分成了兩個部分,是為了對標PC方便大家理解,實際上在有些設備里跑的操作系統和app是混合在一起的,甚至可能沒有操作系統;

(4)最后,各個app被加載運行,開始執行設備的邏輯功能,此處往往是我們想要著重分析的地方。

上圖中,bootloader、kernel和app這三個階段的代碼通常是由開發者編寫并燒錄到Flash中的,我們所說的固件指的就是這部分內容。請將此圖放在腦海中,后續所有工作都將以此圖為模板展開分析和敘述。

PS:本次分享討論的是固件可以提取但是無法分析的情況,一些由于讀保護機制導致固件不被提取的情況,暫不在本篇的討論范疇中。

3、情況簡介

通過熱風槍可以取下Flash芯片,然后通過編程器可以拿到Flash中的固件,這些基本功各位一定已經非常熟悉了,這里就不再贅述。固件文件包含一個FAT12格式的文件系統,可以通過7z工具直接提取出文件系統中的所有內容,提取內容截圖如下:

圖3-1 固件文件系統內容

顯而易見,上圖中的App文件夾中肯定包含了這款門禁考勤機的主程序。不過,事情肯定沒有那么順利,該文件夾內只有一個文件是可以解析的ELF格式,其他文件均不可解析,僅存在可解析文件叫main.bin,用IDA加載之后,內容看起來也有些過于簡單,截圖如下:

圖3-2 main.bin程序內容

上圖中,雖然函數符號都還在,可以大概推斷出函數的作用,但是函數看起來很古怪,比如RT_CreateProcess函數內容是下圖中的樣子:

圖3-3 RT_CreateProcess函數內容

上圖中的gFuncEntryKern看起來有點像虛表指針,指向一個函數地址表,而這個指針在程序啟動時被賦值。

程序main.bin很短,很快就逆完了,看起來最后創建了一個新的進程,但除了main.bin程序之外,其他程序全都無法解析。即便是main.bin自身,看起來也不太正常,很多函數只有跳轉stub,缺少實質內容,看起來像是PC中加了保護導入表的殼。那么,接下來還是從頭開始啃一下這個設備固件吧。

4、kernel分析與解密

按照圖2-1所示,我們決定先看看bootloader,在解壓獲得的完整文件系統中,可以看到Product.ini文件,從里面能夠找到設備的分區表,如下圖所示:

圖4-1固件分區表

我們此前解壓縮得到的FAT12文件系統即為0x20000偏移處,順便吐槽一下binwalk,為啥binwalk識別不出FAT12文件系統,因為太古老了嗎?

結合設備上電后串口的輸出字符串,可以推斷出0x20000之前的固件內容即為程序的bootloader,接下來用IDA載入bootloader部分代碼進行分析,并結合串口的輸出日志,可以定位到關鍵位置,如下圖:

圖4-2 bootloader加載kernel文件的過程

上圖中,我們根據串口打印出來的字符串來定位程序的關鍵位置,找到了kernel文件其實就是rootfs中的Rtbio_3760_R4502文件,且串口打印出來的信息包含了kernel的加載基址和入口地址,根據這些信息,可以分析kernel文件了。

使用IDA加載kernel文件之后,IDA導航條如下圖所示:

圖4-3 直接解析Rtbio文件時的IDA導航條

可以看到此時kernel只被解析出了一小部分,絕大多數內容都是unexplored狀態,實際上這部分內容還是處于加密或壓縮狀態。由于執行流程已經離開bootloader而進入kernel階段,那么kernel代碼肯定是自解密或自解壓的,這很正常,一般情況下linux kernel都是自解壓的,但我們沒辦法直接解壓就很奇怪。通過逆向分析,可以在入口點附近看到多處異或解密代碼,如下圖所示:

圖4-4 異或解密代碼

上圖中,0x79E1即為異或解密使用的密鑰,類似上圖中的異或解密代碼在多個位置都有出現,原來再自解壓之前還有一步自解密過程,所以沒法直接解壓。

耐心分析這些已經解析的代碼,可以將kernel的啟動流程整理為下圖所示內容:

圖4-5 kernel文件的解密過程分析

可以看到,kernel既包含自解密部分,也包含自解壓部分。將我們在PC端脫殼的經驗用到此處,待程序完成自解密和自解壓之后,dump完整的內存,就可以獲得可以逆向閱讀的kernel二進制文件。

然而我們并沒有找到設備調試接口,寫脫機解密腳本又太繁瑣,最終選擇用QEMU加載kernel,運行其自解密和自解壓代碼,待所有工作完畢之后dump內存。最后,用ida加載dump下來的內核文件,就可以看到很多代碼和明文的字符串,如下圖:

圖4-6 載入并分析dump kernel

在眾多字符串中,我們還注意到了一個版權信息,如下圖:

圖4-7 版權信息字符串

上圖中的版權信息表明此固件可能使用了RTEMS系統。該系統一款開源的RTOS系統,在github上就可以找到源碼,代碼參考鏈接:https://github.com/RTEMS/rtems。

與我們此前分析云丁鹿客智能門鎖那篇很類似,當確定了固件使用的操作系統,那么逆向工作就變得相對簡單,畢竟有源碼可以參考。通過對比源碼,我們可以分辨出大量函數,如open、close、read等。查找這些函數的交叉引用,我們發現了一張很大的函數表,如下圖右側所示:

圖4-8 導出函數表

上圖左側中,我們展示了第3章main.bin的幾個函數調用,并與右側kernel中的函數表相互對應。還記得gFuncEntryKern指針嗎?看起來這個指針所指向的函數表就是上圖右側中的函數表。到此,依靠這張函數表,我們就可以正常分析main.bin程序中的所有函數了。

到此,bootloader和kernel部分可以告一段落了,在開始分析APP之前,還有一點需要提一下,與傳統PC操作系統不同的是,該設備并不存在用戶態和內核態,kernel和app處于相同的特權級別,所以兩者之間可以直接相互調用,不需要上下文的切換。

5、app分析與解密

在這個設備固件中,除了kernel需要解密解壓之外,大部分app也是需要解密解壓的。除main.bin之外的程序,我們都無法用IDA直接分析,就是因為這些程序尚未解密解壓,而解密解壓的關鍵就在RT_UnzipFile函數中,將該函數的關鍵位置截圖如下:

圖5-1 RT_UnzipFile函數的代碼片段

上圖中可以看到read、xor、write等幾個關鍵點,進一步分析可以判定RT_UnzipFile函數同樣包含解密和解壓這兩個過程,異或密鑰也沒有變化,同樣是0x79E1。

根據以上結論我們可以寫一個用于解密和解壓每個bin文件的腳本,將這些文件恢復成可以分析的ELF格式。通過腳本,我們將Root_00.bin解密解壓,root_00.bin就是main.bin在執行最后創建的新進程,用IDA載入解密解壓后的ELF文件,截圖如下:

圖5-2 通過IDA載入解密后的Root_00.bin文件

可以看到,Root_00.bin已經可以分析了。至此,我們已經完全理解了這個設備和固件,可以隨意分析其中的文件了。

6、固件程序的編寫

門禁考勤機作為一個企業的門戶,往往承擔了保衛企業的任務,如果門禁考勤機自身變成了打入企業內網的潛伏者,想必是件很搞笑的事情。當我們發現了門禁考勤機的漏洞,想植入后門時,就可以來閱讀一下這第6章的內容。

雖然與開發傳統的Linux程序比較類似,但由于我們沒有與之匹配的SDK,而只能選擇公版ARM編譯器,所以在開發過程中,需要額外注意兩點:

(1)系統調用。通過逆向分析被解密解壓的多個固件程序,我們可以確定程序是沒有導入表的,系統調用是通過gFuncEntryKern和gFuncEntryLibc等幾個指針實現。由于我們沒有官方SDK,這就導致沒辦法像常規正向開發一樣進行各種系統調用,但是按照shellcode開發思路,直接寫匯編肯定是沒問題的,最終結果如下圖所示:

圖6-1 模擬系統調用

上圖中,我們參考IDA的逆向代碼用匯編實現socket、bind等系統調用,具體的邏輯功能代碼還是可以照常用C來編寫。

(2)生成文件格式。通過查看其他已經解密解壓的多個固件程序,我們可以確定ELF文件是relocatable格式,而不是executable格式的,如下圖所示:

圖6-2 查看main.bin文件格式

因此,使用gcc編譯程序時,需要指定-c參數,用于生成僅編譯和匯編的文件;同時,使用ld鏈接程序時,指定-r參數,用于生成relocatable文件。

完成以上工作后,將編譯的程序,按照第三章的分析做好壓縮、加密處理后,并通過某些方式植入設備中,設備上電后即可看到程序開始執行,tcp回連nc監聽的42240端口,如下圖:

圖6-3 反彈socket通信的進程

上圖中,我們以發送hello world字符串來說明問題。

當然,我們也可以修改固件中已有的文件,例如開機界面的圖片,更多內容我們這里不再展示。

圖6-4 修改考勤機開機界面

7、總結

本篇我們著重討論了一款固件加密的門禁考勤機設備,并借鑒PC端app脫殼的技巧,解密解壓了固件中的kernel以及app。其實,本篇分享的固件加密只是各種加密方式的一小類,更常見的情況應該是固件文件完整加密,如果以后有機會我們也會分享那些完整加密的情況,感興趣的可以等我們后續的分享。

標簽:

返回頂部
高清视频在线观看免费播放器-伊人日本-色九月综合-18禁止看的免费污网站-免费观看性行为视频的网站-天天碰天天操-久久精品国产欧美日韩99热-中文字幕在线视频不卡-国产偷人妻精品一区二区在线-国内精品久-伊人影院在线看-密臀av一区-久久综合五月丁香久久激情-福利一区福利二区-gg国产精品国内免费观看-国产精品 高清 尿 小便 嘘嘘
  • <cite id="ecweg"><pre id="ecweg"></pre></cite>
    <rt id="ecweg"><acronym id="ecweg"></acronym></rt>
  • <rt id="ecweg"></rt>
    色哺乳xxxxhd奶水米仓惠香| 人人妻人人澡人人爽欧美一区 | 色撸撸在线观看| 免费看一级大黄情大片| 在线无限看免费粉色视频| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 天天久久综合网| 亚洲一区二区三区四区五区xx| 肉大捧一出免费观看网站在线播放| 91色国产在线| 久久综合久久色| 国产日韩一区二区在线观看| 日韩精品在线中文字幕| 亚洲一区二区三区四区精品| 亚洲一区二区三区四区五区xx| 国产成人黄色片| 青青青青草视频| 日本阿v视频在线观看| 日本美女久久久| 黄色a级在线观看| 手机在线观看日韩av| 岛国毛片在线播放| 男人午夜视频在线观看| 久久久久久久久久一区二区| 亚洲天堂国产视频| 视频免费1区二区三区| www.日本xxxx| 欧美精品性生活| 色播五月激情五月| 免费一区二区三区在线观看| 亚洲最大成人在线观看| 超碰在线播放91| 国产精品久久a| 午夜精品免费看| 久久久无码中文字幕久...| 精品91一区二区三区| 警花观音坐莲激情销魂小说| 精品一区二区成人免费视频| 日韩 欧美 视频| 女人喷潮完整视频| 中文字幕国内自拍| 999热精品视频| 久久艹国产精品| 欧美视频免费播放| 久久精品国产露脸对白| 天天干天天色天天爽| 免费无遮挡无码永久视频| 91看片就是不一样| 久久出品必属精品| 蜜臀av色欲a片无码精品一区| 久久国产色av免费观看| 日本免费在线视频观看| 男人靠女人免费视频网站| 中文字幕第38页| www.18av.com| 午夜精品久久久久久久99热影院| 九九久久九九久久| 91视频最新入口| 欧美 日韩 国产 在线观看| 国产3p露脸普通话对白| 国产精品久久久毛片| 日韩人妻无码精品久久久不卡| 精品久久久久久久无码| 妞干网视频在线观看| 九九热精品在线播放| 精品国产一区二区三区无码| 免费一级特黄录像| 黄色大片在线免费看| 手机精品视频在线| 国产精品免费成人| 大陆极品少妇内射aaaaa| 国产福利在线免费| 国产一区二区视频免费在线观看| 国产日韩欧美大片| 免费看污污网站| 免费无码av片在线观看| 亚洲国产一二三精品无码| 中文字幕国产高清| 亚洲第一中文av| 一本久道中文无码字幕av| 国产a级片网站| 成人av在线播放观看| 欧美成人乱码一二三四区免费| 成人免费视频久久| 国产男女无遮挡| 国产不卡一区二区视频| 免费在线精品视频| 日本特级黄色大片| 欧美大片久久久| 国产成人美女视频| 三日本三级少妇三级99| 婷婷中文字幕在线观看| 三级av免费看| 日韩精品福利片午夜免费观看| 午夜影院免费版| 吴梦梦av在线| 97超碰国产精品| 欧美国产视频一区| 分分操这里只有精品| a级黄色一级片| 国产无套内射久久久国产| 日韩免费毛片视频| 亚洲乱码国产一区三区| 亚洲精品自拍网| 亚洲天堂av一区二区三区| 午夜在线视频免费观看| 日韩视频 中文字幕| 亚洲精品蜜桃久久久久久| 久久久999免费视频| 国产男女无遮挡| 精品亚洲视频在线| 国产一级做a爰片久久毛片男| 九九爱精品视频| 亚洲精品手机在线观看| 在线视频一二三区| 自慰无码一区二区三区| www.色偷偷.com| 老司机午夜网站| 免费av网址在线| 手机在线视频你懂的| 日本网站免费在线观看| 视频免费1区二区三区| 欧美日韩视频免费| 欧美三级午夜理伦三级| 日本美女视频一区| 久操网在线观看| 久久出品必属精品| 一本大道熟女人妻中文字幕在线| 8x8x成人免费视频| 日本中文字幕网址| 成年人三级黄色片| 99色精品视频| 粉嫩av一区二区三区天美传媒 | 欧美不卡在线播放| 国产一区二区在线观看免费视频| 无码av天堂一区二区三区| 一本一道久久a久久综合蜜桃| 毛片在线播放视频| 日本丰满少妇黄大片在线观看| 欧美激情精品久久久久久小说| 偷拍盗摄高潮叫床对白清晰| 男人操女人免费| 日韩一级免费看| 法国空姐在线观看免费| 国产三级三级三级看三级| 久久这里只有精品18| 国产精品自在自线| 国产精品一区二区小说| 97超碰青青草| 草b视频在线观看| 亚洲爆乳无码精品aaa片蜜桃| 亚洲一级片网站| 男女啪啪网站视频| 最近免费中文字幕中文高清百度| www.射射射| 蜜臀av无码一区二区三区| 欧美另类videos| 精品国产三级a∨在线| 亚洲色图欧美自拍| 欧美精品色视频| 亚洲第一页在线视频| 国产精品久久久久久久99| 婷婷激情5月天| 日韩成人av免费| 午夜免费一级片| 二级片在线观看| 成人在线观看毛片| 国产女教师bbwbbwbbw| 日本老太婆做爰视频| 天堂а√在线中文在线| 日韩网站在线免费观看| 男女啪啪免费视频网站| 欧美亚洲国产成人| 久久精品一区二| 69久久久久久| 老司机av福利| 日韩精品一区二区免费| 成人在线免费观看av| 欧美韩国日本在线| 91视频这里只有精品| 超碰在线免费观看97| 日本人体一区二区| 国产a级片免费观看| 亚洲成人天堂网| 蜜桃网站在线观看| 欧美污视频网站| 手机av在线网| 久久精品无码中文字幕| 92看片淫黄大片一级| 亚洲天堂伊人网| 久操网在线观看| 日本不卡一区二区在线观看| 国产在线xxxx| 校园春色 亚洲色图| 国产精品视频网站在线观看| 漂亮人妻被中出中文字幕| 成人手机视频在线| 999在线观看视频| 精产国品一二三区| 37pao成人国产永久免费视频|