網路空間搜尋引擎(Cybersecurity Search Engine)是一類專門用於掃描和索引公開聯網設備、服務和資產的工具,廣泛應用於網路安全研究、資產管理與漏洞發現。這些引擎透過掃描網際網路上的 IP 位址、端口、協議、網頁內容等,收集設備指紋(如伺服器類型、作業系統、應用版本)並提供查詢功能,幫助用戶識別暴露的資產、潛在漏洞或特定服務。常見功能包括關鍵字搜尋、過濾條件(如端口、國家)、邏輯運算與漏洞搜尋。常見的有Shodan、ZoomEye、Censys 和 FOFA等。
關鍵字搜尋
功能說明:透過關鍵字查找設備、服務或應用。
- 範例:搜尋網路攝影機:
- Shodan: webcam
- ZoomEye: webcam
- Censys: webcam
- FOFA: webcam
 
依國家/地區搜尋
用於將搜尋範圍限縮到特定地理位置,通常使用 ISO 國家代碼(例如台灣為 TW)。
- Shodan: country:TW
- ZoomEye: country:TW
- Censys: location.country_code:TW
- Fofa: country="TW"
依 Port 號碼搜尋
這是所有空間搜尋引擎最基礎的功能,用於尋找開啟特定 Port 的設備。
- Shodan: port:80
- ZoomEye: port:80
- Censys: services.port:80
- Fofa: port="80"
作業系統
- Shodan: os:"Windows"
- ZoomEye: os:Windows
- Censys: operating_system.product:Windows
- FOFA: os="Windows"
搜尋域名
- 功能說明:查找與特定域名相關的設備或服務。
- Shodan: hostname:example.com
- ZoomEye: domain="example.com"
- Censys: dns.names:example.com
- FOFA: domain="example.com"
 
- Shodan: 
IP搜尋
- Shodan: ip:192.168.1.1
- ZoomEye: ip=192.168.1.1
- Censys: ip:192.168.1.1
- FOFA: ip="192.168.1.1"
依軟體/服務名稱搜尋
用於尋找特定軟體、服務或產品的類型與版本,對於尋找已知漏洞的系統特別有用。
- Shodan: product:"Apache"
- ZoomEye: app:"Apache"
- Censys: services.software.vendor:Apacheorservices.software.product:Apache
- Fofa: app="Apache"或server="Apache"
弱點搜尋
- Shodan: vuln:CVE-2021-44228付費版
- ZoomEye: vul.cve=CVE-2021-44228付費版
- Censys: cve:"CVE-2021-44228"
- FOFA: vuln:CVE-2021-44228
邏輯運算功能
- 功能說明:透過 AND(與)、OR(或)、NOT(非)等邏輯運算符,組合關鍵字、過濾條件或其他搜尋參數,實現複雜查詢。
- 常見用途:例如,查找特定端口且位於某國家的設備,或排除特定條件。
1. Shodan
- 語法:
- AND:空格表示 AND,例如 port:80 country:TW(查找端口 80 且在台灣的設備)。
- NOT:使用 -,例如-port:443(排除端口 443 的結果)。
- OR:不支援直接 OR 語法,需透過多條件模擬(如分開查詢後合併結果)。
 
- AND:空格表示 AND,例如 
- 範例:
- 搜尋台灣的 Apache 伺服器(非 443 端口):
- product:Apache country:TW -port:443
 
- 搜尋端口 80 或 8080(模擬 OR):
- 分別查詢 port:80 country:TW和port:8080 country:TW,然後手動合併結果。
 
- 分別查詢 
 
- 搜尋台灣的 Apache 伺服器(非 443 端口):
2. ZoomEye
- 語法:
- AND:空格或 +表示 AND,例如port:80 country:TW或+port:80 +country:TW。
- NOT:使用 -,例如-port:443(排除端口 443)。
- OR:使用 |,例如port:80 | port:8080(查找端口 80 或 8080 的設備)。
 
- AND:空格或 
- 範例:
- 搜尋台灣的 Apache 伺服器(非 443 端口):
- app:Apache country:TW -port:443
 
- 搜尋端口 80 或 8080 的 HTTP 服務:
- port:80 | port:8080 app:Apache
 
 
- 搜尋台灣的 Apache 伺服器(非 443 端口):
3. Censys
- 語法:
- AND:使用 AND,例如services.port:80 AND location.country_code:TW。
- NOT:使用 NOT,例如NOT services.port:443。
- OR:使用 OR,例如services.port:80 OR services.port:8080。
 
- AND:使用 
- 範例:
- 搜尋台灣的 Apache 伺服器(非 443 端口):
- services.software.product:Apache AND location.country_code:TW NOT services.port:443
 
- 搜尋端口 80 或 8080 的 HTTP 服務:
- services.port:80 OR services.port:8080 AND services.software.product:Apache
 
 
- 搜尋台灣的 Apache 伺服器(非 443 端口):
4. FOFA
- 語法:
- AND:使用 &&,例如port="80" && country="TW"。
- NOT:使用 !,例如!port="443"。
- OR:使用 ||,例如port="80" || port="8080"。
 
- AND:使用 
- 範例:
- 搜尋台灣的 Apache 伺服器(非 443 端口):
- app="Apache" && country="TW" && !port="443"
 
- 搜尋端口 80 或 8080 的 HTTP 服務:
- port="80" || port="8080" && app="Apache"
 
 
- 搜尋台灣的 Apache 伺服器(非 443 端口):
其他範例:搜尋台灣的 HTTP 服務(端口 80 或 8080,且非 HTTPS)
- Shodan: port:80 country:TW -port:443或port:8080 country:TW -port:443(分開查詢)
- ZoomEye: (port:80 | port:8080) -port:443 country:TW
- Censys: (services.port:80 OR services.port:8080) AND NOT services.port:443 AND location.country_code:TW
- FOFA: (port="80" || port="8080") && !port="443" && country="TW"
注意事項
- Shodan:缺乏直接 OR 語法,複雜查詢需分步執行;免費版限制搜尋次數。
- ZoomEye:支援 OR 且語法簡單,適合快速查詢;部分功能需付費。
- Censys:語法結構化,適合進階用戶,但免費版功能受限。
- FOFA:語法直觀,支援中文,OR 和 AND 使用符號明確;需註冊使用完整功能。
- 括號使用:ZoomEye、Censys 和 FOFA 支援括號 ( )來組織複雜邏輯,Shodan 不支援。
- 合法性:使用邏輯運算時,確保查詢目的合法,遵守當地法律法規。
時間搜尋
- 目的:根據資料收集或更新的時間範圍過濾搜尋結果,例如查找某一天的設備或服務資料。
- 限制:由於網路空間搜尋引擎的資料更新頻率與掃描策略不同,精確到某一天的搜尋可能受限,需檢查各引擎是否支援具體日期查詢。
各引擎時間搜尋語法
1. Shodan
- 是否支援時間搜尋:只有API支援,透過 before和after過濾器限定資料更新時間。
- 語法:
- before:dd-mm-yy:搜尋指定日期前的資料。
- after:dd-mm-yy:搜尋指定日期後的資料。
- 日期格式為 dd-mm-yy(日-月-年)。
 
- 搜尋指定日期(2025-09-02)範例:
- 範例:port:80 after:01-09-25 before:03-09-25(搜尋0902更新的 HTTP 服務)。
 
- 範例:
- 注意:
- Shodan 不支援精確到單一天的語法,需用日期範圍模擬。
- 免費版可能限制結果數量,精確時間搜尋需付費帳戶。
 
2. ZoomEye
- 是否支援時間搜尋:需透過 API 或進階功能
- 語法:
- API 可使用 time參數,但格式與可用性需參考官方文件(https://www.zoomeye.org/doc)。
 
- API 可使用 
- 搜尋昨天(2025-09-02)範例:
- 無直接語法,建議使用 API 查詢,例如設定 time參數為2025-09-02(需付費)。
- 範例(假設 API 支援):port:80 time:2025-09-02(需確認 API 文件)。
 
- 無直接語法,建議使用 API 查詢,例如設定 
- 注意:
- ZoomEye 的時間搜尋功能較弱,免費版幾乎無法實現精確日期查詢。
 
3. Censys
- 是否支援時間搜尋:支援,透過 last_updated_at欄位精確過濾資料更新時間。
- 語法:
- last_updated_at:[yyyy-mm-dd TO yyyy-mm-dd]:指定日期範圍。
- 可精確到單日或更細時間(視資料粒度)。
 
- 搜尋指定日期(2025-09-02)範例:
- 範例:services.port:80 AND last_updated_at:[2025-09-02 TO 2025-09-02](搜尋 2025-09-02 更新的 HTTP 服務)。
 
- 範例:
- 注意:
- Censys 支援結構化查詢,時間搜尋精確度高,但免費版限制結果數量。
- 需使用正確的日期格式(ISO 8601,如 yyyy-mm-dd)。
 
4. FOFA
- 是否支援時間搜尋:支援,透過 before和after過濾器限定資料更新時間。
- 語法:
- before="yyyy-mm-dd":搜尋指定日期前的資料。
- after="yyyy-mm-dd":搜尋指定日期後的資料。
 
- 搜尋指定日期(2025-09-02)範例:
- 範例:port="80" && after="2025-09-01" && before="2025-09-03"(搜尋 2025-09-02 更新的 HTTP 服務)。
 
- 範例:
- 注意:
- FOFA 支援精確日期範圍,語法直觀,適合中文用戶。
- 免費版限制查詢次數,進階功能需付費。
 
範例:搜尋指定日期(2025-09-02)更新的 HTTP 服務
- Shodan: (無直接語法,需 API 支援,例如port:80 after:01-09-25 before:03-09-25)
- ZoomEye: (無直接語法,需 API 支援,例如 port:80 time:2025-09-02)
- Censys: services.port:80 AND updated_at:[2025-09-02 TO 2025-09-02]
- FOFA: port="80" && after="2025-09-01" && before="2025-09-03"
搜尋 Login 頁面
- 標題搜尋:查找title包含login的頁面
- 網頁內容搜尋:查找網頁 HTML 或響應中包含 “login” 的頁面。
- URL 路徑搜尋:查找包含 “login” 的 URL 路徑(如 /login)。
- 響應頭或指紋:根據伺服器響應頭或特定應用指紋識別 login 頁面。
- 關鍵字搜尋:直接搜尋與 “login” 相關的關鍵字(可能包含非標題內容)。
關鍵字搜尋
功能說明:直接用 “login” 作為關鍵字,搜尋所有相關內容(可能包括標題、HTML、URL 等)。
- Shodan: login- 範例:login port:80(搜尋 HTTP 服務中包含 “login” 的頁面)
 
- 範例:
- ZoomEye: login- 範例:login port:80(搜尋 HTTP 服務中包含 “login”)
 
- 範例:
- Censys: login- 範例:login AND services.port:80(搜尋 HTTP 服務中包含 “login”)
 
- 範例:
- FOFA: login- 範例:login && port="80"(搜尋 HTTP 服務中包含 “login”)
 
- 範例:
- 注意:關鍵字搜尋結果較廣泛,建議搭配端口或國家等條件精準化。
title搜尋
功能說明:查找網頁標題或內容包含 “login” 的網站,通常用於發現登錄頁面或管理介面。
- Shodan: http.title:”login”
- ZoomEye: title:”login”
- Censys: services.http.response.html_title:”login”
- FOFA: title=”login”
網頁內容搜尋
功能說明:搜尋網頁 HTML 或響應內容中包含 “login” 的頁面,可能包括表單、按鈕或其他元素。
- Shodan: http.html:login
- ZoomEye: +login
- Censys: services.http.response.body:login
- FOFA: response="login"
- 注意:ZoomEye 使用 +表示關鍵字包含,FOFA 的response針對 HTTP 響應。
URL 路徑搜尋
功能說明:查找 URL 路徑中包含 “login” 的頁面(如 /login、/signin)。
- Shodan: 不支援直接 URL 路徑搜尋,需用 http.html:login間接模擬。
- ZoomEye: url:/login
- Censys: services.http.request.uri:/login
- FOFA: request="/login"
- 注意:Shodan 在此功能較弱,建議結合其他條件。
響應頭header搜尋
功能說明:根據伺服器響應頭識別 login 頁面。
- Shodan: header:login
- ZoomEye:  header:login
- Censys: services.http.response.headers.value.headers:login
- FOFA: header="login"
- 注意:此方式適用於特定應用(如 WordPress 登錄頁)或重定向場景。