網(wǎng)安全入門指南:從智能設(shè)備漏洞到IoT滲透測(cè)試完全實(shí)戰(zhàn))
“智能攝像頭怎么被黑的”“IoT設(shè)備為什么這么脆弱”“怎么對(duì)IoT設(shè)備做滲透測(cè)試”隨著萬(wàn)物互聯(lián)的推進(jìn)從智能音箱到工業(yè)傳感器IoT設(shè)備已經(jīng)無(wú)處不在。但I(xiàn)oT安全卻遠(yuǎn)遠(yuǎn)落后于傳統(tǒng)網(wǎng)絡(luò)安全——硬編碼密碼、不更新的固件、明文通信這些問(wèn)題在IoT領(lǐng)域比比皆是。著名的Mirai僵尸網(wǎng)絡(luò)就是利用默認(rèn)密碼控制了數(shù)十萬(wàn)臺(tái)IoT設(shè)備發(fā)動(dòng)了當(dāng)時(shí)最大規(guī)模的DDoS攻擊。而像智能汽車、醫(yī)療設(shè)備被攻擊的案例更是觸目驚心。我第一次做IoT滲透是對(duì)一個(gè)智能攝像頭通過(guò)固件提取發(fā)現(xiàn)了硬編碼的管理員密碼直接登錄了后臺(tái)。整個(gè)過(guò)程不到30分鐘讓我意識(shí)到IoT安全問(wèn)題的嚴(yán)重性。今天我把物聯(lián)網(wǎng)安全的完整知識(shí)整理出來(lái)IoT架構(gòu)、固件分析、協(xié)議安全、常見漏洞、滲透測(cè)試方法、防護(hù)方案??赐赀@篇你對(duì)IoT安全會(huì)有一個(gè)系統(tǒng)化認(rèn)知。?? 注意本文僅用于安全教育和授權(quán)測(cè)試嚴(yán)禁用于非法用途。一、IoT基礎(chǔ)架構(gòu)IoT四層架構(gòu)層級(jí)說(shuō)明安全關(guān)注點(diǎn)感知層傳感器、執(zhí)行器物理篡改、固件漏洞網(wǎng)絡(luò)層通信協(xié)議Wi-Fi/Zigbee/藍(lán)牙通信竊聽、中間人攻擊平臺(tái)層云平臺(tái)、數(shù)據(jù)處理API安全、數(shù)據(jù)庫(kù)安全應(yīng)用層手機(jī)App、Web管理端App安全、認(rèn)證授權(quán)IoT設(shè)備典型結(jié)構(gòu)┌─────────────────────────────────┐ │ 手機(jī)App / Web管理端 │ ├─────────────────────────────────┤ │ 云平臺(tái) / API │ ├─────────────────────────────────┤ │ 通信模塊(WiFi/BT/Zigbee) │ ├─────────────────────────────────┤ │ 主控芯片(MCU/SoC) │ ├─────────────────────────────────┤ │ 傳感器 / 執(zhí)行器 / 外設(shè) │ └─────────────────────────────────┘常見IoT硬件接口接口用途安全關(guān)注UART調(diào)試串口可獲取ShellJTAG芯片調(diào)試可讀取固件SPIFlash存儲(chǔ)可提取固件I2C芯片間通信可嗅探數(shù)據(jù)USB數(shù)據(jù)傳輸可注入惡意數(shù)據(jù)二、固件分析固件獲取方法方法說(shuō)明工具官網(wǎng)下載廠商提供下載瀏覽器OTA抓包攔截空中升級(jí)Burp Suite硬件提取從Flash芯片讀取編程器串口提取通過(guò)UART下載串口工具固件提取工具# binwalk - 固件分析神器# 安裝sudoaptinstallbinwalk# 分析固件結(jié)構(gòu)binwalk firmware.bin# 提取固件內(nèi)容binwalk-efirmware.bin# 遞歸提取binwalk-eMfirmware.bin# 查看提取結(jié)果ls-la_firmware.bin.extracted/固件文件系統(tǒng)分析# 提取后通常得到squashfs文件系統(tǒng)# 掛載查看sudomount-oloop _firmware.bin.extracted/squashfs-root /mnt/firmware# 查找敏感文件find/mnt/firmware-name*.conf-o-name*.cfgfind/mnt/firmware-nameshadow-o-namepasswd# 查找硬編碼憑據(jù)grep-rnpassword\|admin\|root\|passwd/mnt/firmware/etc/grep-rntelnet\|ssh\|ftp/mnt/firmware/etc/# 查找Web服務(wù)find/mnt/firmware-name*.cgi-o-name*.php-o-name*.aspfind/mnt/firmware-path*/www/*-o-path*/htdocs/*# 查找啟動(dòng)腳本cat/mnt/firmware/etc/init.d/rcScat/mnt/firmware/etc/inittab固件模擬運(yùn)行# FirmAE - 自動(dòng)化固件模擬gitclone https://github.com/pr0v3r/FirmAE.gitcdFirmAE ./init.sh# 模擬運(yùn)行固件./run.sh-rfirmware.bin# 使用 fatransfer# 如果模擬成功可通過(guò)Web訪問(wèn)設(shè)備管理界面# 通常是 http://192.168.0.1 或 http://192.168.1.1常見固件漏洞漏洞類型說(shuō)明示例硬編碼密碼固件中包含默認(rèn)憑據(jù)admin/admin后門賬戶隱藏的管理賬戶telnnetd后臺(tái)命令注入Web接口執(zhí)行系統(tǒng)命令ping參數(shù)注入越權(quán)訪問(wèn)無(wú)認(rèn)證訪問(wèn)管理功能/admin無(wú)認(rèn)證明文通信不使用加密HTTP/Telnet過(guò)時(shí)組件舊版含漏洞的庫(kù)busybox舊版三、IoT通信協(xié)議安全常見IoT協(xié)議對(duì)比協(xié)議頻段范圍安全特性Wi-Fi2.4/5GHz100mWPA2/3加密藍(lán)牙(BLE)2.4GHz10-100m配對(duì)加密Zigbee2.4GHz100mAES-128Z-Wave900MHz100mS0/S2加密LoRaSub-GHz數(shù)kmAES-128MQTTTCP互聯(lián)網(wǎng)TLS/用戶名密碼CoAPUDP互聯(lián)網(wǎng)DTLSZigbee安全# 安裝 KillerBee - Zigbee安全測(cè)試工具pip3installkillerbee# 掃描Zigbee網(wǎng)絡(luò)zbid# 捕獲Zigbee流量zbdump-wcapture.pcap-i/dev/ttyUSB0# 分析流量zbwireshark capture.pcap# 常見攻擊# 1. 密鑰嗅探抓取加入時(shí)的密鑰交換# 2. 重放攻擊重放加密數(shù)據(jù)# 3. 密鑰破解如果使用了默認(rèn)密鑰藍(lán)牙BLE安全# 安裝 BlueZ 工具sudoaptinstallbluez# 掃描BLE設(shè)備hcitool lescan# 使用 bettercap 進(jìn)行BLE分析sudobettercap-interfacehci0ble.recon onble.show# 使用 gatttool 連接設(shè)備gatttool-bAA:BB:CC:DD:EE:FF-I[AA:BB:CC:DD:EE:FF][LE]connect[AA:BB:CC:DD:EE:FF][LE]primary[AA:BB:CC:DD:EE:FF][LE]characteristics[AA:BB:CC:DD:EE:FF][LE]char-read-hnd 0x0001# 常見BLE漏洞# 1. 無(wú)認(rèn)證直接連接# 2. 明文特征值傳輸# 3. 可寫特征值無(wú)鑒權(quán)# 4. 藍(lán)牙PIN可爆破MQTT安全importpaho.mqtt.clientasmqttdeftest_mqtt_security():測(cè)試MQTT Broker安全性clientmqtt.Client()# 1. 測(cè)試匿名訪問(wèn)try:client.connect(192.168.1.100,1883,60)client.loop_start()# 訂閱所有主題client.subscribe(#)defon_message(client,userdata,msg):print(f[] 主題:{msg.topic})print(f 消息:{msg.payload.decode(utf-8,errorsignore)})client.on_messageon_messageimporttime time.sleep(10)print([!] MQTT Broker允許匿名訪問(wèn)!)exceptExceptionase:print(f[-] 匿名訪問(wèn)失敗:{e})finally:client.disconnect()# 常見MQTT安全問(wèn)題# 1. 默認(rèn)端口1883無(wú)加密# 2. 允許匿名訂閱# 3. 默認(rèn)密碼弱口令# 4. 主題未做權(quán)限控制test_mqtt_security()四、IoT常見漏洞與攻擊1. 默認(rèn)憑據(jù)設(shè)備類型常見默認(rèn)用戶名常見默認(rèn)密碼路由器adminadmin/password攝像頭adminadmin/123456DVR/NVRadminadmin/000000打印機(jī)adminadmin/無(wú)密碼IoT網(wǎng)關(guān)rootroot/admin2. 命令注入# 攝像頭Web接口命令注入示例# 原始請(qǐng)求GET /cgi-bin/ping.cgi?ip192.168.1.1 HTTP/1.1# 注入測(cè)試GET /cgi-bin/ping.cgi?ip192.168.1.1;idHTTP/1.1 GET /cgi-bin/ping.cgi?ip192.168.1.1|idHTTP/1.1 GET /cgi-bin/ping.cgi?ip192.168.1.1idHTTP/1.1 GET /cgi-bin/ping.cgi?ip192.168.1.1$(id)HTTP/1.13. 固件后門# 在固件中查找后門# 1. 查找隱藏的telnet/ssh服務(wù)grep-rntelnetd\|sshd\|busybox/firmware/etc/init.d/# 2. 查找硬編碼后門密碼strings firmware.bin|grep-ipassword\|backdoor\|debug# 3. 查找調(diào)試接口grep-rndebug\|test\|backdoor/firmware/www/4. UPnP漏洞# 使用 miranda - UPnP工具sudoaptinstallmiranda mirandasettarget192.168.1.1scan# 查看暴露的服務(wù)hostinfohostlist# 常見UPnP風(fēng)險(xiǎn)# 1. 端口映射暴露內(nèi)網(wǎng)# 2. SOAP注入# 3. 遠(yuǎn)程代碼執(zhí)行五、IoT滲透測(cè)試流程完整測(cè)試流程1. 信息收集 → 2. 攻擊面分析 → 3. 固件分析 → 4. 網(wǎng)絡(luò)測(cè)試 → 5. 硬件測(cè)試 → 6. 無(wú)線測(cè)試 → 7. 應(yīng)用測(cè)試 → 8. 報(bào)告攻擊面分析攻擊面測(cè)試內(nèi)容工具Web管理界面OWASP Top 10Burp Suite固件硬編碼/后門binwalk網(wǎng)絡(luò)服務(wù)端口/漏洞Nmap硬件接口UART/JTAG萬(wàn)用表/編程器無(wú)線通信藍(lán)牙/Zigbeebettercap云API接口安全Postman手機(jī)App逆向/通信Frida/JADX網(wǎng)絡(luò)服務(wù)掃描# Nmap全端口掃描nmap -p--sV-sC192.168.1.1# 常見IoT端口# 23 - Telnet很多設(shè)備仍開放# 80 - Web管理# 443 - Web管理(HTTPS)# 1883 - MQTT# 5683 - CoAP# 8883 - MQTT over TLS# 631 - IPP打印# 1900 - UPnP/SSDP# 7547 - TR-069(CWMP)硬件滲透# 1. UART串口調(diào)試# 使用USB-TTL模塊連接# TX-RX, RX-TX, GND-GND# 波特率常見9600, 115200# 連接串口sudoaptinstallminicom minicom-b115200-D/dev/ttyUSB0# 如果有Shell提示符直接獲取了設(shè)備控制權(quán)# 2. JTAG調(diào)試# 使用JTAGulator或Bus Pirate# 查找JTAG接口TCK/TMS/TDI/TDO# 連接后可讀取/寫入Flash# 3. SPI Flash提取# 使用編程器如CH341A# 夾住Flash芯片讀取固件# 使用flashromsudoflashrom--readfirmware.bin--programmerch341a_spi六、IoT安全防護(hù)方案安全設(shè)計(jì)原則原則說(shuō)明安全設(shè)計(jì)從設(shè)計(jì)階段考慮安全最小權(quán)限設(shè)備只擁有必要權(quán)限縱深防御多層安全防護(hù)通信加密全鏈路加密可更新性支持OTA安全更新密碼安全無(wú)默認(rèn)密碼強(qiáng)制修改供應(yīng)鏈安全第三方組件安全固件安全加固加固項(xiàng)說(shuō)明去除硬編碼密碼不在固件中存儲(chǔ)憑據(jù)關(guān)閉調(diào)試接口生產(chǎn)環(huán)境禁用UART/JTAG使用安全啟動(dòng)簽名驗(yàn)證固件文件系統(tǒng)加密保護(hù)敏感數(shù)據(jù)移除后門賬戶清理調(diào)試賬戶組件更新使用最新版busybox等通信安全協(xié)議安全措施Wi-FiWPA3加密隱藏SSID藍(lán)牙藍(lán)牙5.0安全配對(duì)ZigbeeAES-128非默認(rèn)密鑰MQTTTLS加密認(rèn)證授權(quán)HTTP使用HTTPSTelnet禁用改用SSHIoT安全Checklist檢查項(xiàng)是否完成無(wú)默認(rèn)密碼?固件無(wú)硬編碼憑據(jù)?通信全鏈路加密?禁用調(diào)試接口?OTA更新簽名驗(yàn)證?輸入驗(yàn)證與過(guò)濾?最小權(quán)限原則?定期安全更新?云API認(rèn)證授權(quán)?供應(yīng)鏈安全管理?七、IoT安全工具箱工具功能平臺(tái)binwalk固件分析Linuxfirmware-mod-kit固件修改LinuxFirmAE固件模擬LinuxQEMU固件模擬運(yùn)行跨平臺(tái)Nmap網(wǎng)絡(luò)掃描跨平臺(tái)Burp SuiteWeb接口測(cè)試跨平臺(tái)bettercap藍(lán)牙/ZigbeeLinuxKillerBeeZigbee安全LinuxJTAGulatorJTAG調(diào)試硬件Bus Pirate硬件接口硬件flashromSPI Flash讀寫LinuxFrida動(dòng)態(tài)分析跨平臺(tái)學(xué)習(xí)資源物聯(lián)網(wǎng)安全是網(wǎng)絡(luò)安全中一個(gè)快速發(fā)展且充滿機(jī)會(huì)的領(lǐng)域。與傳統(tǒng)Web安全不同IoT安全涉及硬件、固件、通信協(xié)議、云端等多個(gè)層面需要更全面的技術(shù)能力。從固件提取到串口調(diào)試從藍(lán)牙嗅探到MQTT測(cè)試IoT安全的每個(gè)環(huán)節(jié)都充滿挑戰(zhàn)和發(fā)現(xiàn)。隨著智能設(shè)備的普及IoT安全人才的需求只會(huì)越來(lái)越大。如果你對(duì)物聯(lián)網(wǎng)安全和IoT滲透測(cè)試感興趣想系統(tǒng)學(xué)習(xí)更多知識(shí)——包括固件逆向、硬件黑客、無(wú)線安全、云平臺(tái)安全、CTF實(shí)戰(zhàn)等——可以參考下面整理的完整學(xué)習(xí)資料包。內(nèi)容涵蓋從零基礎(chǔ)到實(shí)戰(zhàn)進(jìn)階200節(jié)視頻課程配套工具和靶場(chǎng)環(huán)境涵蓋攻防對(duì)抗全生命周期。這些東西我都可以免費(fèi)分享給大家需要的可以點(diǎn)這里自取:網(wǎng)安入門到進(jìn)階資源總結(jié)IoT安全的核心要點(diǎn)維度關(guān)鍵點(diǎn)固件去硬編碼、關(guān)后門、支持更新通信全鏈路加密、認(rèn)證硬件禁用調(diào)試接口、安全啟動(dòng)云端API認(rèn)證授權(quán)、數(shù)據(jù)保護(hù)應(yīng)用App安全、輸入驗(yàn)證 IoT安全的關(guān)鍵在于安全設(shè)計(jì)——從產(chǎn)品設(shè)計(jì)之初就把安全考慮進(jìn)去而不是事后打補(bǔ)丁?!?