1.暗黑谷歌的由來(lái)
有這么一款搜索引擎傍药,它一刻不停的在尋找著所有和互聯(lián)網(wǎng)關(guān)聯(lián)的PLC磺平、攝像頭、紅綠燈拐辽、打印機(jī)拣挪、路由器、交換機(jī)俱诸、服務(wù)器菠劝、數(shù)據(jù)庫(kù)等等各種軟硬件服務(wù)設(shè)施。
它就是shodan睁搭,那么shodan到底是什么呢赶诊?怎么會(huì)有如此大的魔力?首先园骆,Shodan 是一個(gè)搜索引擎舔痪,但它與 Google 這種搜索網(wǎng)址的搜索引擎不同,Shodan不是在網(wǎng)上搜索網(wǎng)址锌唾,而是直接進(jìn)入互聯(lián)網(wǎng)探索其背后的信息辙喂。
Shodan真正值得注意的能力就是能找到幾乎所有和互聯(lián)網(wǎng)相關(guān)聯(lián)的東西。其中最受歡迎的搜索內(nèi)容是:webcam鸠珠,linksys巍耗,cisco,netgear渐排,SCADA等等炬太。
配合其組合參數(shù),可以做到以下功能:
- 批量搜索現(xiàn)有漏洞主機(jī)
- 統(tǒng)計(jì)感染某木馬的主機(jī)數(shù)量
- 批量掃描登錄入口驯耻,并使用弱口令字典進(jìn)行爆破
- 批量抓取shell
- 使用自己的0day打遍天下
寫這篇文章是希望能夠?qū)⑦@款工具的用途亲族、使用方法炒考、利用技巧進(jìn)行實(shí)戰(zhàn)應(yīng)用。以便使用Shodan搜索引擎進(jìn)行相關(guān)搜索霎迫,并利用Shodan的API編寫Python腳本斋枢,進(jìn)行批量掃描,將技術(shù)應(yīng)用到滲透測(cè)試和安全攻防中知给,最大限度做好安全防御瓤帚。
2.Shodan的工作原理
Shodan每隔一段時(shí)間就會(huì)對(duì)全球大約8億主機(jī)進(jìn)行掃描,通過(guò)對(duì)返回Banner信息的處理涩赢,識(shí)別特定主機(jī)戈次,并進(jìn)行分類儲(chǔ)存。為了避免因政治筒扒、技術(shù)等原因?qū)е碌膾呙栊畔⒄`差(比如某墻或某些老美服務(wù)商對(duì)大陸羊毛黨的屏蔽等)怯邪,Shodan的掃描主機(jī)至少遍布在全球的8個(gè)國(guó)家和地區(qū)。
當(dāng)我們發(fā)出一條搜索請(qǐng)求花墩,其背后的邏輯是這樣的
那Banner是什么呢悬秉?
在探測(cè)端口時(shí)數(shù)據(jù)包里存在Banner信息
HTTP/1.1 200 OK
Server: nginx/1.16.0
Date: Sat, 18 May 2019 06:56:30 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
這是一個(gè)普通的HTTP Banner,可以從上獲知服務(wù)端使用的是1.16.0版本的nginx冰蘑。
西門子S7-300工控協(xié)議的Banner:
Reserved for operating system:
Serial number of memory card: SD D45C6213
Location designation of a module:
Module type: CPU 315-2 PN/DP
PLC name: S7-300 station_1
Plant identification:
OEM ID of a module:
Module name: Vestas V27 AS+PITCH
Serial number of module: 18382
其中能獲取更多的信息和泌。
Shodan的Banner處理機(jī)制比較復(fù)雜,我們這里只需要知道探測(cè)端口是來(lái)往的數(shù)據(jù)包中包含Banner懂缕,并包含了主機(jī)的部分信息即可允跑。
3.Shodan的查詢指南
基本查詢
Shodan的參數(shù)有很多,這里只介紹簡(jiǎn)單幾種搪柑。
hostname:"主機(jī)或域名" 如 hostname:"google''
port:"端口或服務(wù)" 如 port:"80"
ip : "ip地址" 如 ip : "114.114.114.114"
net:"IP地址或子網(wǎng)"如 net:"111.112.113.110.0/24"
vuln :指定漏洞的cve如 vuln:CVE-2015-8869
但是這個(gè)命令最好搭配起來(lái)使用聋丝,如 country:CN vuln:CVE-2018-0610
os :"操作系統(tǒng)" 如 os:"debian"
isp:"ISP供應(yīng)商" 如 isp:"China Telecom"
product:"操作系統(tǒng)/軟件/平臺(tái)" 如 product:"nginx"
version:"軟件版本" 如 version:"1.16.0"
geo:"經(jīng)緯度" 如 geo:"38°53.707′,77°02.182"
country`:"國(guó)家" 如 country:"China"
city:"城市" 如 city:"shanghai"
org:"組織或公司" 如org:"google"
before/after:"日/月/年" 如 before:"11/05/2019" after:"11/05/2019"
asn : "自治系統(tǒng)號(hào)碼" 如 asn:"TS1826"
關(guān)聯(lián)查詢
搜索上海開(kāi)放8080端口的主機(jī)
Apache city:"shanghai" port:"8080"
搜索IP段為23.238.20.0/24的所有l(wèi)inux主機(jī)
os:"linux" net:"23.238.20.0/24"
Shodan參數(shù)還有很多,前提是注冊(cè)或付費(fèi)用戶:
更多信息使用時(shí)可以查看中文說(shuō)明手冊(cè),可點(diǎ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)表惶岭,這是天天要寫文檔兄弟的一大好幫手笆偃酢;
4.命令行下的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
本文以debian為例症革,安裝完后我們先看下幫助信息:
root@debian:~# 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)IP
parse 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
初始化命令行工具鸯旁。
root@debian:~# shodan init [API_Key] #請(qǐng)使用自己賬號(hào)的API Key
Successfully initialized
count
返回查詢的結(jié)果數(shù)量噪矛。
root@debian:~# shodan count nginx 1.16.0
81840
download
將搜索結(jié)果下載到一個(gè)文件中,文件中的每一行都是 JSON 格式存儲(chǔ)的目標(biāo) banner 信息羡亩。默認(rèn)情況下摩疑,該命令只會(huì)下載10條結(jié)果危融,如果想下載更多結(jié)果需要增加 --limit
參數(shù)畏铆。
root@debian:~# shodan download nginx 1.16.0 --limit 100
Search query: 1.16.0
Total number of results: 82058
Query credits left: 0
Output file: nginx.json.gz
[###---------------------------------] 10% 00:00:31
Notice: fewer results were saved than requested
Saved 100 results into file nginx.json.gz
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)和組織名稱:
root@debian:~# shodan parse --fields ip_str,port,org --separator , nginx.json.gz
23.239.25.203,80,Linode
85.209.0.11,80,
93.119.176.67,80,0 7 I N T E R N E T . R O
149.202.169.98,80,OVH SAS
138.68.232.31,80,Digital Ocean
195.70.4.97,80,DFI Service SA
47.101.70.248,80,Hangzhou Alibaba Advertising Co.,Ltd.
42.159.196.244,80,Shanghai Blue Cloud Technology Co.,Ltd
142.4.17.163,80,Unified Layer
80.69.173.48,80,UpCloud Cloud Servers
39.100.85.208,80,Hangzhou Alibaba Advertising Co.,Ltd.
156.67.92.27,80,NETRONIK sp. z o.o.
193.112.97.173,80,Tencent cloud computing
47.107.139.162,80,Hangzhou Alibaba Advertising Co.,Ltd.
129.121.192.115,8080,Nexcess.net L.L.C.
162.144.69.141,80,Unified Layer
164.138.216.162,80,SuperHosting.BG Ltd.
......................................... #此處省略N行。
host
查看指定主機(jī)的相關(guān)信息抱完,如地理位置信息贼陶,開(kāi)放端口,甚至是否存在某些漏洞等信息巧娱。
root@debian:~# shodan host 42.159.196.244
42.159.196.244
City: Shanghai
Country: China
Organization: Shanghai Blue Cloud Technology Co.,Ltd
Updated: 2019-05-18T08:13:44.814290
Number of open ports: 2
Vulnerabilities: CVE-2018-15919 CVE-2017-15906
Ports:
22/tcp OpenSSH (7.4)
80/tcp nginx (1.16.0)
search
直接將查詢結(jié)果展示在命令行中碉怔,默認(rèn)情況下只顯示IP、端口號(hào)禁添、主機(jī)名和HTTP數(shù)據(jù)撮胧。當(dāng)然我們也可以通過(guò)使用 –fields 來(lái)自定義顯示內(nèi)容,例如老翘,我們只顯示IP芹啥、端口號(hào)、組織名稱和主機(jī)名:
root@debian:~# shodan search --fields ip_str,port,org,hostnames nginx 1.16.0
162.144.138.155 80 Unified Layer server.vitaathletics.com
85.209.0.11 80
162.144.196.17 80 Unified Layer server.yen.hlv.mybluehost.me
138.68.232.31 80 Digital Ocean nexo-host.com.ve
212.22.64.245 80 LLC Quadronet timri.ru
38.143.213.84 80 Cogent Communications
212.33.243.127 80 JSC ER-Telecom Holding 212x33x243x127.static-business.perm.ertelecom.ru
64.247.179.214 80 SoftwareWorks Group useast33.myserverhosts.com
120.31.140.112 81 FoShan RuiJiang Science and Tech ns1.eflydns.net;ns2.eflydns.net
80.69.173.48 80 UpCloud Cloud Servers 80-69-173-48.fi-hel1.upcloud.host
85.209.0.76 80
156.67.92.27 80 NETRONIK sp. z o.o.
162.144.201.223 80 Unified Layer server.formacolorytextura.com
193.112.97.173 80 Tencent cloud computing
47.110.78.125 80 Hangzhou Alibaba Advertising Co.,Ltd.
129.121.192.115 8080 Nexcess.net L.L.C. ip-129-121-192-115.local
......................................... #此處省略N行铺峭。
5.代碼中使用 Shodan 庫(kù)
上面介紹了 shodan
庫(kù)的用法墓怀,這里描述下如何在python代碼中使用 shodan
庫(kù),首先需要初始化連接 API卫键,代碼如下:
import shodan
SHODAN_API_KEY = "API_Key"
api = shodan.Shodan(SHODAN_API_KEY)
隨后傀履,我們就可以搜索數(shù)據(jù)了,示例代碼片如下:
try:
# 搜索 Shodan
results = 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ù)啤呼。
至此卧秘,暗黑谷歌的料理介紹完畢,如果有付費(fèi)的Shodan Membership用戶就可以好好的Happy了官扣。與之相似的料理就是Tor瀏覽器翅敌,這是一個(gè)無(wú)痕瀏覽的神器。
Tor瀏覽器的工作原理就是將你的ip跳到一連串的的代理上惕蹄,比如:把你的ip地址先從美國(guó)跳到加拿大再跳到荷蘭蚯涮、日本、德國(guó)卖陵、俄羅斯遭顶。。泪蔫。棒旗。。下載鏈接:https://www.torproject.org/download/
其中所有的數(shù)據(jù)全部都是經(jīng)過(guò)加密處理撩荣,目的就是為了掩藏真正訪問(wèn)者的ip铣揉,防止被訪問(wèn)者的追蹤。有興趣的可以自行研究下餐曹,這里不再過(guò)多描述逛拱,綜上內(nèi)容純屬攻防和白帽子技術(shù)愛(ài)好。知己知彼台猴,方能百戰(zhàn)不殆朽合。
加油吧,少年饱狂!未來(lái)的某一天曹步,白帽子大牛中你可能也是其中之一。
原文鏈接:https://www.sresz.cn/safetynews/10.html