網路空間搜尋引擎(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:Apache
orservices.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 登錄頁)或重定向場景。