1. 程式人生 > 實用技巧 >【原創】IOT滲透之抓包5法

【原創】IOT滲透之抓包5法

文章作者:[email protected]& qui3t
近期我們對一些智慧家電裝置進行了滲透測試,其中一個目標裝置是某公司的智慧插座產品。拿到產品後我們一般會進行下面的兩步操作:第一步裝置配網,即插座繫結;第二步通過APP實現智慧插座的遠端通電和斷電操作。

前面的操作都很順利,但當我們用Burpsuite設定代理到進行抓包分析時,發現基本抓不到什麼https和http包。經過一番頭腦風暴後,我們找到了抓不到包的原因,APP與裝置之間很可能使用了其他通訊協議進行通訊,遇到這種情況Burpsuite當然會蒙圈了。

針對物聯網裝置的抓包問題,我們對多種抓包方式進行了研究和整理,最終總結出以下五種方法,大家可以根據自己的實際情況選擇適合的方法。


1、通過Android模擬器進行抓包與重放
第一種方法是,在Android模擬器上安裝tcpdump,再使用科來網路分析系統進行抓包與重放。Android模擬器

  • tcpdump
  • 科來網路分析系統
  • Wireshark

android虛擬機器:
逍遙安卓android7.1
http://www.xyaz.cn///逍遙安卓官網下載
抓包工具:
tcpdump、科來網路分析系統12技術交流版和wireshark

http://www.strazzere.com/android/tcpdump
http://www.colasoft.com.cn/download/capsa.php

//android下安裝和使用tcpdump工具 
adb push tcpdump /storage/sdcard0/tcpdump 
//使用RE檔案管理器,將/system/bin/目錄設定為可讀寫
cp /storage/sdcard0/tcpdump /system/bin/tcpdump 
chmod 755 /system/bin/tcpdump
先啟動APP,再使用tcpdump進行抓包。
//執行tcpdump,將監聽的資料包存放在/sdcard/capture.pcap
tcpdump -p -vv -s 0 -w /sdcard/capture.pcap
//下載監聽的資料包capture.pcap到PC的當前目錄:
adb pull /sdcard/capture.pcap d:/

//開啟科來網路分析工具對抓到的封包進行分析和資料包重放。

//我們在路由器上可以獲得裝置的ip,在分析工程頁面,雙擊Android模擬器的ip進入資料包分析工程頁面。重點關注Android模擬器->智慧插座之間資料包,這些包就是對插座進行通斷電的操作。

//將所有的資料包選取後點右鍵-傳送資料包到資料包生成器。

//進入科來資料包生成器,將不相關的資料選取後刪除,然後選擇傳送全部,智慧插座馬上有反應了,快速的開關一次,資料包重放成功!

2、在路由器上進行抓包

第二種方法是在newifi3上刷Openwrt韌體,再安裝tcpdump進行抓包。

  • newwifi3+openwrt19.07
  • tcpdump
  • 科來網路分析系統
  • Wireshark

新路由3下刷入openwrt19.07韌體,前提是已經刷入了Breed Web系統:

(1)準備好openwrt19.07韌體

【2020.5.2更新】openwrt19.07.zip

韌體地址:https://72k.us/dir/26725770-38748144-c6a638密碼:973552

(2)開啟瀏覽器輸入 192.168.1.1,進入 Breed Web 恢復控制檯刷系統前只能通過有線連線的方式進行,因為進入 BreedWeb 恢復控制檯後,無線功能是沒有開啟的。

(3)進入 Breed Web 恢復控制檯後,先不要急著進行升級,先在控制檯點選恢復出廠設定。路由如果從一個系統刷入另一個系統,最好先恢復出廠設定,這樣也能保持在刷入系統之前是最初始狀態。

(4)恢復出廠設定後,不需要進行任何操作,會自動跳到 BreedWeb 恢復控制檯。然後在韌體前面打勾,再點選”瀏覽”,跳出韌體選擇視窗。

(5)韌體上傳完成後,到 Breed Web 恢復控制檯更新確認介面,點選更新。

//下面開始在openwrt下安裝tcpdump。輸入http://192.168.2.1進入路由的管理介面,先開啟ssh服務。

 //安裝tcpdump
ssh 192.168.2.1 22
mkdir /test2020
cd /test2020
opkg update
opkg install tcpdump
ifconfig -a
//測試tcpdump是否安裝成功
tcpdump -h 
先啟動APP,再使用tcpdump進行抓包。
//將監聽的資料包存放在/test2020/tmp1.pcap
tcpdump -i br-lan -U -c 300 -vvv -w tmp1.pcap
//下載監聽的資料包capture.pcap到PC的當前目錄
adb pull /test2020/tmp1.pcap d:/movie

接下來開啟科來網路分析工具對抓到的封包進行分析和資料包重放,與方法1中的步驟相同,不再贅述。


3、在win10上建立WiFi熱點

第三種方法是win10下建立WIFI熱點,使用科來和wireshark進行抓包。

//進入app,然後開啟科來網路分析工具對wifi熱點網絡卡進行抓包和重放。但經過測試,這種方法效果不是很好,會出現抓包不全的情況。

4、在Ubuntu上建立WIFI熱點+偽造證書
第四種方式是在ubuntu19.04下建立WIFI熱點,使用tcpdump進行抓包,再通過sslsplit偽造CA證書,實現SSL中間人攻擊。經過實際測試和幾種方法的對比,這種方法的抓包效果最好。

SSLSplit的主要原理是以中間人的身份將證書插入到客戶端和伺服器中間,從而截斷客戶端和伺服器之間的資料。之前我們大多數做的都是針對於80埠的欺騙,也就是說,只要是超越了80埠我們就會有點棘手:比如常用的443埠,比如465和587埠,這些都是通過SSL加密進行資料傳輸的,簡單的80埠監聽肯定是什麼都拿不到的。這個時候,就體現出SSL證書劫持的作用了。

  • 免驅動網絡卡
  • tcpdump
  • sslsplit
  • tcpreplay

WIFI熱點工具:
Ubuntu19.04系統自帶WIFI熱點管理軟體
USB外接kali免驅動網絡卡一塊:

https://detail.tmall.com/item.htm?id=536325692454&spm=a1z09.2.0.0.17d02e8dZgUaYd&_u=r23mu6944af
抓包工具:
tcpdump、sslsplit和tcpreplay
https://github.com/droe/sslsplit

//在ubuntu19.04下開啟WIFI熱點

開啟終端,輸入命令進行WIFI設定:nm-connection-editor

//ubuntu19.04下面安裝sslsplit。

工具簡介:

工具的主要原理是以中間人的身份將證書插入到客戶端和伺服器中間,從而截斷客戶端和伺服器之間的資料。之前我們大多數做的都是針對於80埠的欺騙,也就是說,只要是超越了80埠我們就會有點棘手:比如常用的443埠,比如465和587埠,這些都是通過SSL加密進行資料傳輸的,簡單的80埠監聽肯定是什麼都拿不到的。這個時候,就體現出SSL證書劫持的作用了。

SSLSplit的git地址:https://github.com/droe/sslsplit

git clone https://github.com/droe/sslsplit.git /opt/sslsplit

cd /opt/sslsplit

apt-get install libssl-dev libevent-dev

make

make install

//根據提示搜尋安裝相應版本:

apt install pkgconf

aptitude search libpcap*

apt-get install libpcap-dev

aptitude search libnet*

apt install libnet-dev

sslsplit -h //安裝成功後進行測試

cd /test2020

openssl genrsa -out ca.key 2048 //生成一個key檔案

//自簽名用生成的key生成公鑰證書:

openssl req -new -x509 -days 1096 -key ca.key -out ca.crt

echo 1 > /proc/sys/net/ipv4/ip_forward //開啟埠流量轉發

//用iptables進行流量轉發,需要把我們需要的埠進行轉發:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT--to-ports 8080

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT--to-ports 8443

iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT--to-ports 8443

iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT--to-ports 8443

iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT--to-ports 8443

iptables -t nat -A PREROUTING -p tcp --dport 995 -j REDIRECT--to-ports 8443

//檢視iptables策略:

iptables -t nat -L

  //啟動sslsplit進行SSL分離抓包,將資料包日誌儲存在/test2020/log目錄下面:

sslsplit -D -l connect.log -j /test2020 -S log/ -k ca.key -c ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080

 //先啟動APP,再使用tcpdump進行抓包,將監聽的資料包存放在/test2020/tmp1.pcap

cd /test2020

tcpdump -i wlxe84e0615571b -U -c 300 -vvv -w tmp1.pcap

 //ubuntu19.0.4下使用tcpreplay進行資料包重放:

apt install tcpreplay //安裝tcpreplay

tcpreplay -V //檢視安裝版本

cd /test2020

tcpreplay -i wlxe84e0615571b tmp1.pcap

5、資料流量重定向抓包

最後一種方法是,通過AP上面的DHCP SERVER功能。插座和APP應用在配網的時候,會提示輸入路由器WIFI接入點名稱和連線密碼,通過AP上面的DHCP SERVER功能,可以將插座與android app的閘道器地址設為攻擊機(ubuntu19.04)的IP地址,再使用tcpdump進行抓包,同時通過sslsplit偽造CA證書,實現SSL中間人攻擊。

  • 新3路由器 newifi3
  • tcpdump
  • 科來網路分析系統
  • wireshark
  • sslsplit

將插座與android app的閘道器地址設為攻擊機(ubuntu19.04)的IP地址。

對SSLSplit的設定與方法四中的步驟相同,在此不再重複。

啟動APP,再使用tcpdump進行抓包,將監聽的資料包存放在/test2020/tmp1.pcap。

cd /test2020 
tcpdump -i ens33 -U -c 300 -vvv -w tmp1.pcap

最後,開啟科來網路分析工具對抓到的封包進行分析和資料包重放。


總結
上面一共介紹了五種針對物聯網裝置的抓包方法,詳細介紹了具體的操作步驟。從抓包的位置看,可以歸納成為Android裝置端、路由端、WIFI熱點幾個角度;技巧方面包括Openwrt刷機、sslsplit偽造證書和DHCP SERVER功能等。希望可以幫助大家在今後的工作和研究中擴充套件一些關於抓包的思路。