互聯(lián)網(wǎng)上最可怕的搜索引擎
大家好,我是寶器!
今天周末,給大家分享一個(gè)搜索引擎:Shodan。在百度百科里被給出了這么一句話介紹:Shodan是互聯(lián)網(wǎng)上最可怕的搜索引擎。
為什么呢?與谷歌、百度等搜索引擎爬取網(wǎng)頁(yè)信息不同,Shodan爬取的是互聯(lián)網(wǎng)上所有設(shè)備的IP地址及其端口號(hào)。
而隨著智能家電的普及,家家戶戶都有許多電器連接到互聯(lián)網(wǎng),這些設(shè)備存在被入侵的可能性,這是十分危險(xiǎn)的。
說(shuō)了這么多,給大家體驗(yàn)下shodan,讓你們有更切身的理解。打開 shodan.io,在搜索框輸入 Hikvision-Webs :

你會(huì)搜素到這個(gè)品牌的攝像頭設(shè)備遍及全球的IP及其暴露的端口號(hào):

可以看到,這臺(tái)機(jī)器暴露了17、80、111、995、3128、5000、6000、20547端口,黑客可以根據(jù)這些端口進(jìn)行針對(duì)性的攻擊。
不過(guò)也不需要過(guò)于擔(dān)心,如果你的服務(wù)不存在漏洞,一般是無(wú)法攻入的。但有些端口號(hào)會(huì)暴露攝像頭的web管理端,如下:

那么黑客可能可以用暴力破解的方式,強(qiáng)行進(jìn)入攝像頭后臺(tái)管理端,獲取到實(shí)時(shí)的錄像。
謹(jǐn)記這會(huì)侵犯別人的隱私權(quán),是違法的行為,我們是遵紀(jì)守法的好公民所以知道它的原理和危害就足夠。我們的目的是運(yùn)用技術(shù)保護(hù)好個(gè)人隱私,如非必要不將攝像頭接入互聯(lián)網(wǎng),一定要接入的話,不能使用容易被破解的弱口令。
Shodan Web端非常好用,但如果我們有從 Python 搜索的需求怎么辦?
沒(méi)關(guān)系,Shodan 官方也提供了 Python SDK 包,下面就來(lái)講講這個(gè) SDK 包的使用。
1.準(zhǔn)備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上。
請(qǐng)選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install shodan2.注冊(cè)賬號(hào)獲取API
使用 Shodan 必須注冊(cè)賬號(hào),注冊(cè)網(wǎng)址:https://account.shodan.io/register

輸入完相關(guān)信息,點(diǎn)擊 CREATE 會(huì)跳轉(zhuǎn)到個(gè)人賬戶頁(yè):

此時(shí) API Key 會(huì)顯示你的API秘鑰,請(qǐng)記錄這個(gè)秘鑰,后續(xù)會(huì)使用到這個(gè)秘鑰去請(qǐng)求接口。
3.Shodan 基本調(diào)用
Shodan 本質(zhì)上就是一個(gè)搜索引擎,你只需要輸入搜索的關(guān)鍵詞:
# 公眾號(hào):Python 實(shí)用寶典
# 2021-05-04
from shodan import Shodan
api = Shodan('你的API KEY')
def search_shodan(keyword):
# 調(diào)用搜索接口
result = api.search(keyword)
# 顯示所有IP
for service in result['matches']:
print(service['ip_str'])
search_shodan("Hikvision-Webs")結(jié)果如下:

可惜的是,普通API只能像這樣搜索關(guān)鍵字,無(wú)法使用過(guò)濾條件如: Hikvision-Webs country:"US" 搜索美國(guó)境內(nèi)的所有 Hikvision 網(wǎng)站管理端。
如果你想要使用過(guò)濾條件,Shodan 需要你升級(jí)API權(quán)限:

挺貴的,不過(guò)還好是一次性支付,永久使用。
4. Shodan 高級(jí)使用
Shodan 的用處當(dāng)然不僅僅是在黑客攻防中,它還能用于統(tǒng)計(jì)。如果你想要了解哪些國(guó)家的使用這款攝像頭的數(shù)量最多,可以使用 Facets 特性。
# 公眾號(hào):Python 實(shí)用寶典
# 2021-05-04
from shodan import Shodan
api = Shodan('你的API KEY')
def try_facets(query):
FACETS = [
'org',
'domain',
'port',
'asn',
('country', 3),
]
FACET_TITLES = {
'org': 'Top 5 Organizations',
'domain': 'Top 5 Domains',
'port': 'Top 5 Ports',
'asn': 'Top 5 Autonomous Systems',
'country': 'Top 3 Countries',
}
try:
# 使用 count() 方法可以不需要升級(jí)API,且比 search 方法更快。
result = api.count(query, facets=FACETS)
print('Shodan Summary Information')
print('Query: %s' % query)
print('Total Results: %s\n' % result['total'])
# 顯示每個(gè)要素的摘要
for facet in result['facets']:
print(FACET_TITLES[facet])
for term in result['facets'][facet]:
print('%s: %s' % (term['value'], term['count']))
except Exception as e:
print('Error: %s' % e)
try_facets("Hikvision-Webs")得到結(jié)果如下:

從 Top 3 Countries 中可以看到,這款攝像頭使用數(shù)量排名前三的國(guó)家分別是:美國(guó)、日本和德國(guó)。
沒(méi)想到吧,Shodan 居然還能用于產(chǎn)品分析。同樣地原理,如果你把關(guān)鍵詞改為 apache ,你可以知道目前哪些國(guó)家使用apache服務(wù)器數(shù)量最多,最普遍被使用的版本號(hào)是什么。
簡(jiǎn)而言之,Shodan 是一個(gè)非常強(qiáng)大的搜索引擎,它在好人手里,能被發(fā)揮出巨大的潛能。如果 Shodan 落入壞人之手的話,那真是一個(gè)可怕的東西。
為了避免受到不必要的攻擊,請(qǐng)大家及時(shí)檢查所有聯(lián)網(wǎng)設(shè)備的管理端的密碼,如果有使用默認(rèn)密碼及弱口令,立即進(jìn)行密碼的更改,以保證服務(wù)的安全。
本文所有源代碼:
鏈接:https://share.weiyun.com/SsLo6RMr 密碼:gefaw3

推薦閱讀
歡迎長(zhǎng)按掃碼關(guān)注「數(shù)據(jù)管道」
