標籤:image 環境變數 class list 網路攝影機 busybox end close 本地
年前買了個雄邁網路攝影機,對家裡進行安防監控,該網路攝影機其實就是個安裝了linux系統的嵌入式裝置,到手後,對於其未預設開啟telnet服務感到很是不爽,所以打算hack之最簡單的辦法其實是ttl連上去後開啟,其次就是下載韌體後直接更改韌體,在啟動指令碼裡增加啟動telnetd的語句後刷進去,但是因為是新買的,不想失去保修,而且也想趁機多研究學習下,所以只考慮有沒有遠程開啟的辦法 從韌體開始下手,先去官網下載該網路攝影機的最新韌體下載完後本地解壓,查看了下busybox的定義列表,確實有telnetd,並且/bin下面也建立了telnetd的別名,也就是說是支援telnet服務的,只是沒開啟而已在韌體檔案中搜尋了下telnet的配置,也沒找到相關配置,此路不太可行 從官方客服下手,在花言巧語之下,找官方要到了telnet開啟工具opentelnet,輸入目標裝置ip後就能遠程開啟裝置的telnet服務但是該工具有幾個限制1.只可以臨時開啟telnet,網路攝影機重啟後就得重新開啟2.該工具使用必須輸入一個一次性的超級密碼,而這個密碼得找客服才能算出來3.該工具會檢測輸入ip地址,只能對內網裝置使用超級密碼這個比較簡單,簡單研究下後就破解掉了,內網使用也簡單,本地做個連接埠映射也繞過了只是暫時對telnet的臨時開啟沒辦法,每次重啟再去開telnet也麻煩啊所以開始研究永久開啟telnet的辦法永久開啟有兩種途徑1.就和臨時開啟telnet一樣,系統本身支援永久開啟的命令2.系統沒有支援永久開啟的命令,但是可以將telnetd加到啟動指令碼裡去,達到系統啟動時自動啟動telnet服務的目的 先對工具抓包,發現是和網路攝影機的9530連接埠進行通訊,發送了OpenTelnet:OpenOnce的命令給網路攝影機然後telnet登陸上網路攝影機,使用命令netstat -ap查看是誰在用9530這個連接埠
# netstat -apActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:34567 0.0.0.0:* LISTEN 1190/Sofiatcp 0 0 0.0.0.0:554 0.0.0.0:* LISTEN 1190/Sofiatcp 0 0 0.0.0.0:www 0.0.0.0:* LISTEN 1190/Sofiatcp 0 0 0.0.0.0:telnet 0.0.0.0:* LISTEN 1169/telnetdtcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 1190/Sofiatcp 0 0 0.0.0.0:9530 0.0.0.0:* LISTEN 1165/dvrHelper
dvrHelper
這是個啥玩意呢?
因為網路攝影機的busybox裡命令殘缺不全,在裡面找東西和分析都麻煩的很,所以還是在本地韌體裡分析吧。
在韌體檔案夾裡搜尋到dvrHelper,發現是dvrbox的連結,然後尋找dvrbox中的文本
除了找到OpenTelnet:OpenOnce之外,還找到了OpenTelnet:Forever
顧名思義,難不成這個語句就是永久開啟telnet的語句?
將之前的opentelnet工具改改,把發送的命令由OpenOnce改成OpenTelnet:Forever
執行後重啟網路攝影機,telnet服務還是沒啟動,shit,看來是弄錯了什麼東西,或者系統根本不支援telnet的永久開啟?此路已經不通,掉轉方向繼續進行研究 開始尋找系統的可寫目錄,僅找到以下三個/mnt/mtd/utils/var/tmp其中/utils是記憶體系統,重啟後會清空,所以不是此目錄/var/tmp也是臨時檔案夾,重啟會刪除,所以也不是此目錄本來試圖修改/etc/init.d檔案夾下的rcS檔案,做到開機啟動telnetd但是該檔案是唯讀,研究許久都沒發現修改該檔案或者其子過程的辦法/mnt/mtd呢? 研究半天/mnt/mtd,也是毫無頭緒,改倒是可以改,但是沒法添加到啟動項中去不過也可能是使用檔案作為設定檔,啟動檢測到檔案存在時則執行telnetd,否則不執行,這點只能從韌體中找答案仍然是研究dvrbox檔案
#strings dvrbox |grep telnettelnetctrlLIBDVR : Get telnetctrl Fialed, telnetctrl=1macGuarder: Open telnetd Forever killall telnetdmacGuarder: Close telnetd Forever
難道telnetctrl就是該配置參數名?
使用telnetctrl在韌體檔案夾下全域搜尋發現僅在armbenv中再次提到了該參數那armbenv是個什麼呢?執行armbenv命令,提示使用-r參數列印環境資訊繼續執行armbenv -r根據結果以及個人的猜測,我認為armbenv是設定系統啟動環境變數用的另外其有一個-s參數,可以設定param,要不試試?執行以下命令 armbenv -s telnetctrl 1提示成功再執行armbenv -r發現telnetctrl已經存在重啟直接telnet成功! 備忘1.armbenv工具應該是讀寫uboot配置的工具,所以在檔案系統裡當然找不到對應的配置記錄了2.telnet的帳號密碼擷取其實很簡單,把韌體解壓後,查看romfs-x.cramfs\etc\passwd檔案,裡面有加密後的密碼串,把密碼串在搜尋引擎裡面搜下,就找到了對應的密碼雄邁這款網路攝影機的帳號密碼是 root xmhdipc
雄邁網路攝影機遠程開啟telnet研究