白話物聯網安全(二):物聯網的安全檢測
第一章《什么是物聯網的信息安全》,我們講了什么物聯網,包含了哪幾方面的東西,物聯網的信息安全會涉及到什么,第二章我們從一個IOT漏洞自動化利用工具AutoSploit講起,講到我們該如何檢測我們常見的物聯網存在的安全問題。
我們這次說安全檢測,從業務層先開始,然后降到感知層,然后提到網絡層的授權和安全策略,所以先介紹下工具AutoSploit,AutoSploit基于 Python2.7的腳本,使用 Shodan.io API 自動收集目標,Metasploit模塊有助于實施遠程代碼執行,并獲得逆向 TCP/Shells 或者Metasploit 對話(官方介紹,實際上用Shodan的API免費的只有那幾頁)。
GitHub地址:https://github.com/NullArray/AutoSploit
我們先安裝一下,搞一個測試:
安裝環境:kail2.0、Python 2.7
安裝步驟:
1:下載文件 git clone https://github.com/NullArray/AutoSploit.git
2:執行install.sh 安裝
3:因為AutoSploit安裝需要python的庫文件支持,該文件已經寫好了,在目錄下的requirentx.txt文件,直接pip安裝即可。
4:安裝完了我們直接執行 python autosploit.py。
5:開始做選擇題,一般直接選第一個。
6:選擇收集主機,選擇自己需要的關鍵詞。
7:然后收集一會,選擇6,利用MSF模塊進行收集信息。
上面就是這個工具安裝和使用方法,為什么我們要把這個工具AutoSploit單獨拉出來說,是因為他把常見的IOT的漏洞從MSF中拉了出來,提供了285常見的容易利用的插件,咱們來說說IOT的安全檢測,最基礎要檢查什么東西。
AutoSploit的285個MSF插件包括259個exp,26個輔助插件,其中259個exp包括了61個windows插件,61個Linux插件,96個multi插件,37個unix插件,4個其他類型插件。從分類上來講,主要集中在業務系統產生漏洞(中間件,應用本身,數據庫),主要產生在http/https協議上。
那么我們整理清楚了,對業務層來說,容易利用并且能構成重大危害的安全問題,又回歸到我們常說的業務系統安全問題(主要依據2017年CNVD收錄IOT設備漏洞權限繞過、拒絕服務、信息泄露、跨站、命令執行、緩沖區溢出、SQL注入、弱口令、設計缺陷等漏洞),對這一層次來說,掃描器,監控預警等等利用測試方法解決常見的直接利用的安全問題的方法都已經很成熟了,商用掃描器,開源掃描器一般都能檢查測試,同理可推,我們作為安全運維的大致內容如下,我找了張思維導圖:
那么對于物聯網來說,僅僅檢測了業務層的東西是遠遠不夠的,那么我們還要對網絡層和感知層進行安全檢測,這時候就不得提及一下物聯網的安全架構,宏觀角度(涉及范圍廣,涵蓋全部物聯網體系)上來說,分為了四個大塊:
- 認證 (Authentication):提供驗證物聯網實體的標識信息并用于驗證。
- 授權 (Authorization):控制設備在整個網絡結構中的訪問授權。
- 強制性的安全策略 (Network Enforced Policy):包括在基礎架構上安全地route并傳輸端點流量的所有元素,無論是控制層面、管理層面還是實際數據流量中的,再次基礎上運用合適的安全策略。
- 安全分析:可見性與可控性 (Secure Analytics: Visibility and Control):安全分析層確定了所有元素(端點和網絡基礎設施,包括數據中心)可能參與的服務,提供遙感勘測,實現可見性并最終控制物聯網生態系統。
我們現在是從外向里看,現階段在應用層解決的問題,其實是屬于在微觀角度上解決了IOT在業務層部分安全分析的事情,現在要說清楚感知層和網絡層安全檢測,首先要做的,就是檢測認證,因為物聯網的末端設備認證更多依靠射頻識別(RFID)、共享密鑰、X.509證書、端點的MAC地址或某種類型的基于不可變硬件的可信root,加上極少數的人為認證(如用戶名、密碼、令牌或生物特征),我們在做檢測的時候,先確定末端設備的身份信息是否在單一授權的情況下可以進行訪問,是否開放身份信息,身份信息是否可以偽造,身份信息是否足夠強壯。 感知層除了單一設備認證面臨的問題,感知層還有一個很頭疼的特點:數量巨大,并且普遍存在移動性。這就導致了一個大問題,資產梳理(資產追蹤和管理)成為了卡在對感知層安全檢測的第一道門檻。
那我們做一個簡單的設計,根據物聯網接入設備的要求,先梳理資產(公網的直接找指紋用AutoSploit去跑),在對資產進行管理。
那么IOT感知層的如何整理資產和檢測,我們用一個簡單的流程圖完成了思路,核心的IOT漏洞的規則庫,海康威視IP攝像機權限繞過CVE2017-7921,CVE-2017-7923為例,代碼文件如下:
- if (description)
- {
- script_oid("1.3.6.1.4.1.25623.1.0.140373");
- script_version("$Revision: 7182 $");
- script_tag(name: "last_modification", value: "$Date: 2017-09-19 07:44:15 +0200 (Tue, 19 Sep 2017) $");
- script_tag(name: "creation_date", value: "2017-09-18 11:41:11 +0700 (Mon, 18 Sep 2017)");
- script_tag(name: "cvss_base", value: "7.5");
- script_tag(name: "cvss_base_vector", value: "AV:N/AC:L/Au:N/C:P/I:P/A:P");
- script_cve_id("CVE-2017-7921", "CVE-2017-7923");
- script_tag(name: "qod_type", value: "exploit");
- script_tag(name: "solution_type", value: "VendorFix");
- script_name("Hikvision IP Cameras Multiple Vulnerabilities");
- script_category(ACT_GATHER_INFO);
- script_copyright("This script is Copyright (C) 2017 Greenbone Networks GmbH");
- script_family("Web application abuses");
- script_dependencies("gb_get_http_banner.nasl");
- script_mandatory_keys("App-webs/banner");
- script_require_ports("Services/www", 443);
- script_tag(name: "summary", value: "Multiple Hikvision IP cameras are prone to multiple vulnerabilities.");
- script_tag(name: "vuldetect", value: "Sends a crafted HTTP GET request and checks the response.");
- script_tag(name: "insight", value: "Multiple Hikvision IP cameras are prone to multiple vulnerabilities:
- - Improper authentication vulnerability (CVE-2017-7921)
- - Password in configuration file (CVE-2017-7923)");
- script_tag(name: "impact", value: "Successful exploitation of these vulnerabilities could lead to a malicious
- attacker escalating his or her privileges or assuming the identity of an authenticated user and obtaining
- sensitive data.");
- script_tag(name: "affected", value: "Hikvision reports that the following cameras and versions are affected:
- - DS-2CD2xx2F-I Series: V5.2.0 build 140721 to V5.4.0 build 160530
- - DS-2CD2xx0F-I Series: V5.2.0 build 140721 to V5.4.0 Build 160401
- - DS-2CD2xx2FWD Series: V5.3.1 build 150410 to V5.4.4 Build 161125
- - DS-2CD4x2xFWD Series: V5.2.0 build 140721 to V5.4.0 Build 160414
- - DS-2CD4xx5 Series: V5.2.0 build 140721 to V5.4.0 Build 160421
- - DS-2DFx Series: V5.2.0 build 140805 to V5.4.5 Build 160928
- - DS-2CD63xx Series: V5.0.9 build 140305 to V5.3.5 Build 160106");
- script_tag(name: "solution", value: "See the referenced advisory for a solution.");
- script_xref(name: "URL", value: "https://ics-cert.us-cert.gov/advisories/ICSA-17-124-01");
- script_xref(name: "URL", value: "http://www.hikvision.com/us/about_10807.html");
- script_xref(name: "URL", value: "http://seclists.org/fulldisclosure/2017/Sep/23");
- exit(0);
- }
- include("http_func.inc");
- include("http_keepalive.inc");
- port = get_http_port(default: 443);
- url = '/Security/users?auth=YWRtaW46MTEK';
- if (http_vuln_check(port: port, url: url, pattern: "<UserList version", check_header: TRUE,
- extra_check: "<userName>")) {
- report = "It was possible to obtain a list of device users at: " +
- report_vuln_url(port: port, url: url, url_only: TRUE);
- security_message(port: port, data: report);
- exit(0);
- }
- exit(99);
一個簡單的漏洞檢測的規則文件就這樣成型了。
那么繼續進行檢測,接下來檢測網絡層,網絡層在安全設計里面牽扯到授權和強制性的安全策略,也就是我們在網絡層的面臨的核心安全問題是沒有一個授權標準,沒有通用的通信協議,安不安全就靠廠商的良心了。
網絡層我們要檢測的主要是網絡設備本身的安全性,傳輸過程中的信任鏈及安全策略。
網絡設備本身安全性這個現階段掃描器很多,買一個或者網上找一個破解版的掃描器都能夠滿足需求。
傳輸過程中的信任鏈及安全策略只能一條一條去查了,沒有好的工具,不同級別和層次的要求不同,這里就一一列舉了。
現階段市面上我暫時沒找到針對IoT設備的自動化安全測試工具(成熟的各種功能都有的掃描器)結合我對檢測的理解寫了白話物聯網第二篇文章,白話三我們談談基于現狀,我們怎么構架我們的物聯網防御體系。