文章作者:pt007@vip.sina.com & qui3t
本文是TCP/UDP http&https&websocks等全端口抓包與證書替換后抓包,沒有8年以上經驗的人看不懂.
近期我們對一些智能家電設備進行了滲透測試,其中一個目標設備是某公司的智能插座產品。拿到產品后我們一般會進行下面的兩步操作:第一步設備配網,即插座綁定;第二步通過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進行抓包。
- 科來網絡分析系統
- Wireshark
- WIFI熱點工具 http://www.360.cn/wifi/qa.html
//進入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功能等。希望可以幫助大家在今后的工作和研究中擴展一些關於抓包的思路。