網路空間搜尋引擎

網路空間搜尋引擎(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"

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:Apacheor services.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 語法,需透過多條件模擬(如分開查詢後合併結果)。
  • 範例
    • 搜尋台灣的 Apache 伺服器(非 443 端口):
      • product:Apache country:TW -port:443
    • 搜尋端口 80 或 8080(模擬 OR):
      • 分別查詢 port:80 country:TWport:8080 country:TW,然後手動合併結果。
2. ZoomEye
  • 語法
    • AND:空格或 + 表示 AND,例如 port:80 country:TW+port:80 +country:TW
    • NOT:使用 -,例如 -port:443(排除端口 443)。
    • OR:使用 |,例如 port:80 | port:8080(查找端口 80 或 8080 的設備)。
  • 範例
    • 搜尋台灣的 Apache 伺服器(非 443 端口):
      • app:Apache country:TW -port:443
    • 搜尋端口 80 或 8080 的 HTTP 服務:
      • port:80 | port:8080 app:Apache
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
  • 範例
    • 搜尋台灣的 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
4. FOFA
  • 語法
    • AND:使用 &&,例如 port="80" && country="TW"
    • NOT:使用 !,例如 !port="443"
    • OR:使用 ||,例如 port="80" || port="8080"
  • 範例
    • 搜尋台灣的 Apache 伺服器(非 443 端口):
      • app="Apache" && country="TW" && !port="443"
    • 搜尋端口 80 或 8080 的 HTTP 服務:
      • port="80" || port="8080" && app="Apache"

其他範例:搜尋台灣的 HTTP 服務(端口 80 或 8080,且非 HTTPS)

  • Shodan: port:80 country:TW -port:443port: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支援,透過 beforeafter 過濾器限定資料更新時間。
  • 語法
    • 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)。
  • 搜尋昨天(2025-09-02)範例
    • 無直接語法,建議使用 API 查詢,例如設定 time 參數為 2025-09-02(需付費)。
    • 範例(假設 API 支援):port:80 time:2025-09-02(需確認 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

  • 是否支援時間搜尋:支援,透過 beforeafter 過濾器限定資料更新時間。
  • 語法
    • 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 頁面

  1. 標題搜尋:查找title包含login的頁面
  2. 網頁內容搜尋:查找網頁 HTML 或響應中包含 “login” 的頁面。
  3. URL 路徑搜尋:查找包含 “login” 的 URL 路徑(如 /login)。
  4. 響應頭或指紋:根據伺服器響應頭或特定應用指紋識別 login 頁面。
  5. 關鍵字搜尋:直接搜尋與 “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 登錄頁)或重定向場景。