白話物聯(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)的安全檢測
 - 白話物聯(lián)網(wǎng)安全(三):IoT設備的安全防御
 - 白話物聯(lián)網(wǎng)安全(四):泛在電力物聯(lián)網(wǎng)
 
前提回顧
第一章《什么是物聯(lián)網(wǎng)的信息安全”》,我們講了什么物聯(lián)網(wǎng),包含了哪幾方面的東西,物聯(lián)網(wǎng)的信息安全會涉及到什么,第二章《物聯(lián)網(wǎng)的安全檢測》,我們從一個IoT漏洞自動化利用工具AutoSploit講起,講到我們該如何檢測我們常見的物聯(lián)網(wǎng)存在的安全問題。第三章《IoT設備的安全防御》,我們從三個方向去談了IoT設備的安全,物理,近場和遠程,和現(xiàn)在市場上缺少的物聯(lián)網(wǎng)安全防御體系。第四章,我們探討一個概念性的話題,泛在物聯(lián)網(wǎng),在這個基礎上我們在試試站在甲方爸爸的角度上談一談泛在物聯(lián)網(wǎng)的安全怎么做。
第五章,站在公網(wǎng)的數(shù)據(jù)角度上我們來看看現(xiàn)在的IoT安全。
正文:公網(wǎng)數(shù)據(jù)下的IoT
分析IoT數(shù)據(jù)之前,先簡單說近期的一個安全事件,2020年1月底,APT228組織爆出來50萬被攻擊IP地址,交換機,路由器,物聯(lián)網(wǎng)設備都有,國內(nèi)國外都有,地址賬號密碼,擼了一份回來后,共16個txt文件,14M的文件,嘖嘖嘖,14M的txt文件。
圖:消息信息

圖:泄露數(shù)據(jù)

圖:部分數(shù)據(jù)截圖
(互聯(lián)網(wǎng)分析很多了,我這就不給各位大佬獻丑了)
工欲善其事必先利其器,我們的先來看看現(xiàn)在主流的IoT設備包含的品類,在各大檢索數(shù)據(jù)平臺上,我發(fā)現(xiàn)物聯(lián)網(wǎng)設備指紋共有1161條(數(shù)據(jù)來自互聯(lián)網(wǎng),不是完全包含現(xiàn)有指紋信息),粗略統(tǒng)計了一下,國內(nèi)和國外的指紋比例如下圖:

在這個基礎上,國內(nèi)的指紋信息我拿過來分析了一下,發(fā)現(xiàn)了非常有意思的一個事情,現(xiàn)在物聯(lián)網(wǎng)平臺不僅集中在交通,物流,農(nóng)業(yè),運營商,工控,家居,還在電梯,消防,建筑,地質,氣象,畜牧,醫(yī)藥等等,甚至于義務商城都有一個自己的物聯(lián)網(wǎng)感控平臺,在我們生活的方方面面,其實已經(jīng)被整個物聯(lián)網(wǎng)包圍著,出門的電梯,快遞的盒子,運送的蔬菜,晚餐里面的燉排骨,都夾著物聯(lián)網(wǎng)的應急,樹立了一下,國內(nèi)的指紋的信息分布見下圖:

說完了指紋上面的事情,我們分析下物聯(lián)網(wǎng)設備在公網(wǎng)的開放情況,不可否認,絕大部分的物聯(lián)網(wǎng)設備其實都是內(nèi)網(wǎng)環(huán)境,內(nèi)網(wǎng)系統(tǒng),公網(wǎng)上暴漏出來的甚少,比例甚至不到1%,基于有限的公網(wǎng)數(shù)據(jù),咱們其實可以得出來一些簡單的結論,比如國家分布啊,端口,協(xié)議等等,現(xiàn)在能找到的數(shù)據(jù)為3,608,647條,美國最多,共計有683,415條,下來是中國,英國,法國,德國等等

通過分析,發(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等等,結合剛才我們說到的案例,其實物聯(lián)網(wǎng)設備的安全,還沒等提到挖掘漏洞,就已經(jīng)被弱口令搞完了,隨便試了試,真的是一大堆,說句心里話,起碼改改12345這個密碼,舉個例子如下:

寫到這突然發(fā)現(xiàn)搞一個簡單的小腳本就可以實現(xiàn)批量的IoT弱口令探測,增加一個任意ip地址生成的腳本,然后探測存活(設計不合理,大佬輕噴),然后把地址扔給Hydra,在corntab設置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)
 
最后放一個rapid7發(fā)出來的一些指紋信息和弱口令,大佬們想自己寫一個小腳本玩可以直接扔進去
- "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"]
 - }
 
















 
 
 





 
 
 
 