白話物聯(lián)網(wǎng)安全(二):物聯(lián)網(wǎng)的安全檢測
第一章《什么是物聯(lián)網(wǎng)的信息安全》,我們講了什么物聯(lián)網(wǎng),包含了哪幾方面的東西,物聯(lián)網(wǎng)的信息安全會(huì)涉及到什么,第二章我們從一個(gè)IOT漏洞自動(dòng)化利用工具AutoSploit講起,講到我們該如何檢測我們常見的物聯(lián)網(wǎng)存在的安全問題。
我們這次說安全檢測,從業(yè)務(wù)層先開始,然后降到感知層,然后提到網(wǎng)絡(luò)層的授權(quán)和安全策略,所以先介紹下工具AutoSploit,AutoSploit基于 Python2.7的腳本,使用 Shodan.io API 自動(dòng)收集目標(biāo),Metasploit模塊有助于實(shí)施遠(yuǎn)程代碼執(zhí)行,并獲得逆向 TCP/Shells 或者M(jìn)etasploit 對(duì)話(官方介紹,實(shí)際上用Shodan的API免費(fèi)的只有那幾頁)。
GitHub地址:https://github.com/NullArray/AutoSploit
我們先安裝一下,搞一個(gè)測試:
安裝環(huán)境:kail2.0、Python 2.7
安裝步驟:
1:下載文件 git clone https://github.com/NullArray/AutoSploit.git
2:執(zhí)行install.sh 安裝
3:因?yàn)锳utoSploit安裝需要python的庫文件支持,該文件已經(jīng)寫好了,在目錄下的requirentx.txt文件,直接pip安裝即可。
4:安裝完了我們直接執(zhí)行 python autosploit.py。
5:開始做選擇題,一般直接選第一個(gè)。
6:選擇收集主機(jī),選擇自己需要的關(guān)鍵詞。
7:然后收集一會(huì),選擇6,利用MSF模塊進(jìn)行收集信息。
上面就是這個(gè)工具安裝和使用方法,為什么我們要把這個(gè)工具AutoSploit單獨(dú)拉出來說,是因?yàn)樗殉R姷腎OT的漏洞從MSF中拉了出來,提供了285常見的容易利用的插件,咱們來說說IOT的安全檢測,最基礎(chǔ)要檢查什么東西。
AutoSploit的285個(gè)MSF插件包括259個(gè)exp,26個(gè)輔助插件,其中259個(gè)exp包括了61個(gè)windows插件,61個(gè)Linux插件,96個(gè)multi插件,37個(gè)unix插件,4個(gè)其他類型插件。從分類上來講,主要集中在業(yè)務(wù)系統(tǒng)產(chǎn)生漏洞(中間件,應(yīng)用本身,數(shù)據(jù)庫),主要產(chǎn)生在http/https協(xié)議上。
那么我們整理清楚了,對(duì)業(yè)務(wù)層來說,容易利用并且能構(gòu)成重大危害的安全問題,又回歸到我們常說的業(yè)務(wù)系統(tǒng)安全問題(主要依據(jù)2017年CNVD收錄IOT設(shè)備漏洞權(quán)限繞過、拒絕服務(wù)、信息泄露、跨站、命令執(zhí)行、緩沖區(qū)溢出、SQL注入、弱口令、設(shè)計(jì)缺陷等漏洞),對(duì)這一層次來說,掃描器,監(jiān)控預(yù)警等等利用測試方法解決常見的直接利用的安全問題的方法都已經(jīng)很成熟了,商用掃描器,開源掃描器一般都能檢查測試,同理可推,我們作為安全運(yùn)維的大致內(nèi)容如下,我找了張思維導(dǎo)圖:
那么對(duì)于物聯(lián)網(wǎng)來說,僅僅檢測了業(yè)務(wù)層的東西是遠(yuǎn)遠(yuǎn)不夠的,那么我們還要對(duì)網(wǎng)絡(luò)層和感知層進(jìn)行安全檢測,這時(shí)候就不得提及一下物聯(lián)網(wǎng)的安全架構(gòu),宏觀角度(涉及范圍廣,涵蓋全部物聯(lián)網(wǎng)體系)上來說,分為了四個(gè)大塊:
- 認(rèn)證 (Authentication):提供驗(yàn)證物聯(lián)網(wǎng)實(shí)體的標(biāo)識(shí)信息并用于驗(yàn)證。
- 授權(quán) (Authorization):控制設(shè)備在整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)中的訪問授權(quán)。
- 強(qiáng)制性的安全策略 (Network Enforced Policy):包括在基礎(chǔ)架構(gòu)上安全地route并傳輸端點(diǎn)流量的所有元素,無論是控制層面、管理層面還是實(shí)際數(shù)據(jù)流量中的,再次基礎(chǔ)上運(yùn)用合適的安全策略。
- 安全分析:可見性與可控性 (Secure Analytics: Visibility and Control):安全分析層確定了所有元素(端點(diǎn)和網(wǎng)絡(luò)基礎(chǔ)設(shè)施,包括數(shù)據(jù)中心)可能參與的服務(wù),提供遙感勘測,實(shí)現(xiàn)可見性并最終控制物聯(lián)網(wǎng)生態(tài)系統(tǒng)。
我們現(xiàn)在是從外向里看,現(xiàn)階段在應(yīng)用層解決的問題,其實(shí)是屬于在微觀角度上解決了IOT在業(yè)務(wù)層部分安全分析的事情,現(xiàn)在要說清楚感知層和網(wǎng)絡(luò)層安全檢測,首先要做的,就是檢測認(rèn)證,因?yàn)槲锫?lián)網(wǎng)的末端設(shè)備認(rèn)證更多依靠射頻識(shí)別(RFID)、共享密鑰、X.509證書、端點(diǎn)的MAC地址或某種類型的基于不可變硬件的可信root,加上極少數(shù)的人為認(rèn)證(如用戶名、密碼、令牌或生物特征),我們在做檢測的時(shí)候,先確定末端設(shè)備的身份信息是否在單一授權(quán)的情況下可以進(jìn)行訪問,是否開放身份信息,身份信息是否可以偽造,身份信息是否足夠強(qiáng)壯。 感知層除了單一設(shè)備認(rèn)證面臨的問題,感知層還有一個(gè)很頭疼的特點(diǎn):數(shù)量巨大,并且普遍存在移動(dòng)性。這就導(dǎo)致了一個(gè)大問題,資產(chǎn)梳理(資產(chǎn)追蹤和管理)成為了卡在對(duì)感知層安全檢測的第一道門檻。
那我們做一個(gè)簡單的設(shè)計(jì),根據(jù)物聯(lián)網(wǎng)接入設(shè)備的要求,先梳理資產(chǎn)(公網(wǎng)的直接找指紋用AutoSploit去跑),在對(duì)資產(chǎn)進(jìn)行管理。
那么IOT感知層的如何整理資產(chǎn)和檢測,我們用一個(gè)簡單的流程圖完成了思路,核心的IOT漏洞的規(guī)則庫,??低旾P攝像機(jī)權(quán)限繞過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);
一個(gè)簡單的漏洞檢測的規(guī)則文件就這樣成型了。
那么繼續(xù)進(jìn)行檢測,接下來檢測網(wǎng)絡(luò)層,網(wǎng)絡(luò)層在安全設(shè)計(jì)里面牽扯到授權(quán)和強(qiáng)制性的安全策略,也就是我們在網(wǎng)絡(luò)層的面臨的核心安全問題是沒有一個(gè)授權(quán)標(biāo)準(zhǔn),沒有通用的通信協(xié)議,安不安全就靠廠商的良心了。
網(wǎng)絡(luò)層我們要檢測的主要是網(wǎng)絡(luò)設(shè)備本身的安全性,傳輸過程中的信任鏈及安全策略。
網(wǎng)絡(luò)設(shè)備本身安全性這個(gè)現(xiàn)階段掃描器很多,買一個(gè)或者網(wǎng)上找一個(gè)破解版的掃描器都能夠滿足需求。
傳輸過程中的信任鏈及安全策略只能一條一條去查了,沒有好的工具,不同級(jí)別和層次的要求不同,這里就一一列舉了。
現(xiàn)階段市面上我暫時(shí)沒找到針對(duì)IoT設(shè)備的自動(dòng)化安全測試工具(成熟的各種功能都有的掃描器)結(jié)合我對(duì)檢測的理解寫了白話物聯(lián)網(wǎng)第二篇文章,白話三我們談?wù)劵诂F(xiàn)狀,我們怎么構(gòu)架我們的物聯(lián)網(wǎng)防御體系。