Shodan新手入坑指南
*本文原創(chuàng)作者:xiaix,本文屬FreeBuf原創(chuàng)獎(jiǎng)勵(lì)計(jì)劃,未經(jīng)許可禁止轉(zhuǎn)載
親們~黑五 Shodan Membership 只要5刀,你剁手了沒(méi)?
什么是 Shodan?
首先,Shodan 是一個(gè)搜索引擎,但它與 Google 這種搜索網(wǎng)址的搜索引擎不同,Shodan 是用來(lái)搜索網(wǎng)絡(luò)空間中在線設(shè)備的,你可以通過(guò) Shodan 搜索指定的設(shè)備,或者搜索特定類型的設(shè)備,其中 Shodan 上最受歡迎的搜索內(nèi)容是:webcam,linksys,cisco,netgear,SCADA等等。
那么 Shodan 是怎么工作的呢?Shodan 通過(guò)掃描全網(wǎng)設(shè)備并抓取解析各個(gè)設(shè)備返回的 banner 信息,通過(guò)了解這些信息 Shodan 就能得知網(wǎng)絡(luò)中哪一種 Web 服務(wù)器是最受歡迎的,或是網(wǎng)絡(luò)中到底存在多少可匿名登錄的 FTP 服務(wù)器。(現(xiàn)在也可以看到shodan也加入了新工具)
基本用法
這里就像是用 Google 一樣,在主頁(yè)的搜索框中輸入想要搜索的內(nèi)容即可,例如下面我搜索 “SSH”:
上圖的搜索結(jié)果包含兩個(gè)部分,左側(cè)是大量的匯總數(shù)據(jù)包括:
- Results map – 搜索結(jié)果展示地圖
- Top services (Ports) – 使用最多的服務(wù)/端口
- Top organizations (ISPs) – 使用最多的組織/ISP
- Top operating systems – 使用最多的操作系統(tǒng)
- Top products (Software name) – 使用最多的產(chǎn)品/軟件名稱
隨后,在中間的主頁(yè)面我們可以看到包含如下的搜索結(jié)果:
- IP 地址
- 主機(jī)名
- ISP
- 該條目的收錄收錄時(shí)間
- 該主機(jī)位于的國(guó)家
- Banner 信息
想要了解每個(gè)條目的具體信息,只需要點(diǎn)擊每個(gè)條目下方的 details 按鈕即可。此時(shí),URL 會(huì)變成這種格式?https://www.shodan.io/host/[IP],所以我們也可以通過(guò)直接訪問(wèn)指定的 IP 來(lái)查看詳細(xì)信息。
上圖中我們可以從頂部在地圖中看到主機(jī)的物理地址,從左側(cè)了解到主機(jī)的相關(guān)信息,右側(cè)則包含目標(biāo)主機(jī)的端口列表及其詳細(xì)信息。
使用搜索過(guò)濾
如果像前面單純只使用關(guān)鍵字直接進(jìn)行搜索,搜索結(jié)果可能不盡人意,那么此時(shí)我們就需要使用一些特定的命令對(duì)搜索結(jié)果進(jìn)行過(guò)濾,常見(jiàn)用的過(guò)濾命令如下所示:
- hostname:搜索指定的主機(jī)或域名,例如?hostname:"google"
- port:搜索指定的端口或服務(wù),例如?port:"21"
- country:搜索指定的國(guó)家,例如?country:"CN"
- city:搜索指定的城市,例如?city:"Hefei"
- org:搜索指定的組織或公司,例如?org:"google"
- isp:搜索指定的ISP供應(yīng)商,例如?isp:"China Telecom"
- product:搜索指定的操作系統(tǒng)/軟件/平臺(tái),例如?product:"Apache httpd"
- version:搜索指定的軟件版本,例如?version:"1.6.2"
- geo:搜索指定的地理位置,參數(shù)為經(jīng)緯度,例如?geo:"31.8639, 117.2808"
- before/after:搜索指定收錄時(shí)間前后的數(shù)據(jù),格式為dd-mm-yy,例如?before:"11-11-15"
- net:搜索指定的IP地址或子網(wǎng),例如?net:"210.45.240.0/24"
搜索實(shí)例
查找位于合肥的 Apache 服務(wù)器:
apache city:"Hefei"查找位于國(guó)內(nèi)的 Nginx 服務(wù)器:
nginx country:"CN"查找 GWS(Google Web Server) 服務(wù)器:
"Server: gws" hostname:"google"查找指定網(wǎng)段的華為設(shè)備:
huawei net:"61.191.146.0/24"如上通過(guò)在基本關(guān)鍵字后增加指定的過(guò)濾關(guān)鍵字,能快速的幫助發(fā)現(xiàn)我們感興趣的內(nèi)容。當(dāng)然,還有更快速更有意思的方法,那就是點(diǎn)擊 Shodan 搜索欄右側(cè)的 “Explore” 按鈕,就會(huì)得到很多別人分享的搜索語(yǔ)法,你問(wèn)我別人分享的語(yǔ)法有什么好玩的?那咱們就隨便來(lái)看看吧:
咱們隨便選取一個(gè)名為“NetSureveillance Web”的用戶分享語(yǔ)法,從下面的描述信息我們基本就能得知這就是一個(gè)弱密碼的漏洞,為了方便測(cè)試讓我們把語(yǔ)法在增加一個(gè)國(guó)家的過(guò)濾信息,最終語(yǔ)法如下:
Server: uc-httpd 1.0.0 200 OK Country:"CN"現(xiàn)在讓我們隨便選取一個(gè)頁(yè)面進(jìn)去輸入,使用admin賬號(hào)和空密碼就能順利進(jìn)入了:)
其他功能
Shodan 不僅可以查找網(wǎng)絡(luò)設(shè)備,它還具有其他相當(dāng)不錯(cuò)的功能。
Exploits:每次查詢完后,點(diǎn)擊頁(yè)面上的 “Exploits” 按鈕,Shodan 就會(huì)幫我們查找針對(duì)不同平臺(tái)、不同類型可利用的 exploits。當(dāng)然也可以通過(guò)直接訪問(wèn)網(wǎng)址來(lái)自行搜索:https://exploits.shodan.io/welcome;
地圖:每次查詢完后,點(diǎn)擊頁(yè)面上的 “Maps” 按鈕,Shodan 會(huì)將查詢結(jié)果可視化的展示在地圖當(dāng)中;
報(bào)表:每次查詢完后,點(diǎn)擊頁(yè)面上的 “Create Report” 按鈕,Shodan 就會(huì)幫我們生成一份精美的報(bào)表,這是天天要寫(xiě)文檔兄弟的一大好幫手啊;
命令行下使用 Shodan
Shodan?是由官方提供的 Python 庫(kù)的,項(xiàng)目位于:https://github.com/achillean/shodan-python
安裝
pip install shodan或者
git clone https://github.com/achillean/shodan-python.git && cd shodan-python python setup.py install安裝完后我們先看下幫助信息:
? ~ shodan -h Usage: shodan [OPTIONS] COMMAND [ARGS]... Options:-h, --help Show this message and exit. Commands:alert Manage the network alerts for your account # 管理賬戶的網(wǎng)絡(luò)提示convert Convert the given input data file into a... # 轉(zhuǎn)換輸入文件count Returns the number of results for a search # 返回查詢結(jié)果數(shù)量download Download search results and save them in a... # 下載查詢結(jié)果到文件honeyscore Check whether the IP is a honeypot or not. # 檢查 IP 是否為蜜罐host View all available information for an IP... # 顯示一個(gè) IP 所有可用的詳細(xì)信息info Shows general information about your account # 顯示賬戶的一般信息init Initialize the Shodan command-line # 初始化命令行myip Print your external IP address # 輸出用戶當(dāng)前公網(wǎng)IPparse Extract information out of compressed JSON... # 解析提取壓縮的JSON信息,即使用download下載的數(shù)據(jù)scan Scan an IP/ netblock using Shodan. # 使用 Shodan 掃描一個(gè)IP或者網(wǎng)段search Search the Shodan database # 查詢 Shodan 數(shù)據(jù)庫(kù)stats Provide summary information about a search... # 提供搜索結(jié)果的概要信息stream Stream data in real-time. # 實(shí)時(shí)顯示流數(shù)據(jù)常用示例
init
初始化命令行工具。
? ~ shodan init [API_Key] Successfully initializedcount
返回查詢的結(jié)果數(shù)量。
? ~ shodan count microsoft iis 6.0 575862download
將搜索結(jié)果下載到一個(gè)文件中,文件中的每一行都是 JSON 格式存儲(chǔ)的目標(biāo) banner 信息。默認(rèn)情況下,該命令只會(huì)下載1000條結(jié)果,如果想下載更多結(jié)果需要增加?--limit?參數(shù)。
parse
我們可以使用 parse 來(lái)解析之前下載數(shù)據(jù),它可以幫助我們過(guò)濾出自己感興趣的內(nèi)容,也可以用來(lái)將下載的數(shù)據(jù)格式從 JSON 轉(zhuǎn)換成 CSV 等等其他格式,當(dāng)然更可以用作傳遞給其他處理腳本的管道。例如,我們想將上面下載的數(shù)據(jù)以CSV格式輸出IP地址、端口號(hào)和組織名稱:
? ~ shodan parse --fields ip_str,port,org --separator , microsoft-data.json.gzhost
查看指定主機(jī)的相關(guān)信息,如地理位置信息,開(kāi)放端口,甚至是否存在某些漏洞等信息。
search
直接將查詢結(jié)果展示在命令行中,默認(rèn)情況下只顯示IP、端口號(hào)、主機(jī)名和HTTP數(shù)據(jù)。當(dāng)然我們也可以通過(guò)使用 –fields 來(lái)自定義顯示內(nèi)容,例如,我們只顯示IP、端口號(hào)、組織名稱和主機(jī)名:
? ~ shodan search --fields ip_str,port,org,hostnames microsoft iis 6.0代碼中使用 Shodan 庫(kù)
還是使用上一節(jié)講到的?shodan?庫(kù),安裝方式這里不在闡述了。同樣的,在使用?shodan?庫(kù)之前需要初始化連接 API,代碼如下:
import shodan SHODAN_API_KEY = "API_Key" api = shodan.Shodan(SHODAN_API_KEY)隨后,我們就可以搜索數(shù)據(jù)了,示例代碼片如下:
try:# 搜索 Shodanresults = api.search('apache')# 顯示結(jié)果print 'Results found: %s' % results['total']for result in results['matches']:print result['ip_str'] except shodan.APIError, e:print 'Error: %s' % e這里?Shodan.search()?會(huì)返回類似如下格式的 JSON 數(shù)據(jù):
{'total': 8669969,'matches': [{'data': 'HTTP/1.0 200 OK\r\nDate: Mon, 08 Nov 2010 05:09:59 GMT\r\nSer...','hostnames': ['pl4t1n.de'],'ip': 3579573318,'ip_str': '89.110.147.239','os': 'FreeBSD 4.4','port': 80,'timestamp': '2014-01-15T05:49:56.283713'},...] }常用 Shodan 庫(kù)函數(shù)
- shodan.Shodan(key)?:初始化連接API
- Shodan.count(query, facets=None):返回查詢結(jié)果數(shù)量
- Shodan.host(ip, history=False):返回一個(gè)IP的詳細(xì)信息
- Shodan.ports():返回Shodan可查詢的端口號(hào)
- Shodan.protocols():返回Shodan可查詢的協(xié)議
- Shodan.services():返回Shodan可查詢的服務(wù)
- Shodan.queries(page=1, sort='timestamp', order='desc'):查詢其他用戶分享的查詢規(guī)則
- Shodan.scan(ips, force=False):使用Shodan進(jìn)行掃描,ips可以為字符或字典類型
- Shodan.search(query, page=1, limit=None, offset=None, facets=None, minify=True):查詢Shodan數(shù)據(jù)
至此,本文基本告于段落,買了 Shodan Membership 的各位朋友們可以好好的去 Happy 啦。
*本文原創(chuàng)作者:xiaix,本文屬FreeBuf原創(chuàng)獎(jiǎng)勵(lì)計(jì)劃,未經(jīng)許可禁止轉(zhuǎn)載
總結(jié)
以上是生活随笔為你收集整理的Shodan新手入坑指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DUMP文件分析4:栈溢出
- 下一篇: x64 结构体系下的内存寻址