最近網絡空間檢索平臺雨後春筍般湧現,本篇文章以一個使用者的視角來做一下對比
語法
目前網絡上比較知名的網絡空間檢索平臺有白帽匯的 fofa、360的 quake、知道創宇的 zoomeye、安恆的 sumap、奇安信的 hunter、以及國外的 shodan
簡單對比下語法上的差異,當然,不一定準確,也不一定就是我下面列出的字段名稱,各家對於字段名稱可能有些差異
公共
首先是大家都共有的字段搜索,
字段名稱 | 字段說明 |
---|---|
title | 網站標題 |
body | 正文,或者說響應體 |
cert | 證書內容 |
ip | ip或ip段 |
port | 端口 |
protocol | 協議 |
server | http headers裏面的Server字段 |
base_protocol | 傳輸層協議 |
os | 系統 |
asn | 自治域號碼 |
status_code | web狀態碼 |
icon_hash | 圖標hash |
region | 地區 |
app | 應用指紋 |
時間
shodan 並沒有針對採集時間的 before 和 after 語法,國內各家貌似都有針對採集時間的查詢
域名
shodan 並沒有針對ip關聯的域名做語法,國內各家貌似都有針對域名的查詢
ipv6
根據幾家的說明文檔來看,除了hunter,其他家都有提供ipv6的資產查詢,不過現階段用得較少
hostname
除了 sumap 和 hunter,其他家都有提供對於rDNS的查詢(即hostname字段),不過該功能也用得少
證書細化
證書內容其實就是一個文本內容,各家在針對這個文本的解析上有多有少,目前看起來在這一塊shadon和quake是做得最細緻的
fofa
quake
shodan
zoomeye
sumap
hunter
大家要是想自己在命令行解析推薦一個工具 cfssl-certinfo,大概可以解析出的內容如下
cfssl-certinfo -cert kubernetes.pem
{
"subject": {
"common_name": "kubernetes",
"country": "CN",
"organization": "k8s",
"organizational_unit": "System",
"locality": "BeiJing",
"province": "BeiJing",
"names": [
"CN",
"BeiJing",
"BeiJing",
"k8s",
"System",
"kubernetes"
]
},
"issuer": {
"common_name": "kubernetes",
"country": "CN",
"organization": "k8s",
"organizational_unit": "System",
"locality": "BeiJing",
"province": "BeiJing",
"names": [
"CN",
"BeiJing",
"BeiJing",
"k8s",
"System",
"kubernetes"
]
},
"serial_number": "243750511260095960201836502027625859126538784827",
"sans": [
"",
"",
"kubernetes",
"kubernetes.default",
"kubernetes.default.svc",
"kubernetes.default.svc.cluster",
"kubernetes.default.svc.cluster.local",
"127.0.0.1"
],
"not_before": "2017-12-23T10:27:00Z",
"not_after": "2018-12-23T10:27:00Z",
"sigalg": "SHA256WithRSA",
"authority_key_id": "6E:45:FB:5F:1F:73:87:3E:C3:C:54:AB:74:95:2A:FB:44:E0:9B:D8",
"subject_key_id": "62:EA:5A:DC:13:C4:5F:D5:EC:DB:13:77:DA:E1:90:1F:C9:4B:10:14",
"pem": "-----BEGIN CERTIFICATE-----\nMIIEcTCCA1mgAwIBAgIUKrImpH2fsSHYOsDcp3FzPmYT0DswDQYJKoZIhvcNAQEL\nBQAwZTELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0JlaUppbmcxEDAOBgNVBAcTB0Jl\naUppbmcxDDAKBgNVBAoTA2s4czEPMA0GA1UECxMGU3lzdGVtMRMwEQYDVQQDEwpr\ndWJlcm5ldGVzMB4XDTE3MTIyMzEwMjcwMFoXDTE4MTIyMzEwMjcwMFowZTELMAkG\nA1UEBhMCQ04xEDAOBgNVBAgTB0JlaUppbmcxEDAOBgNVBAcTB0JlaUppbmcxDDAK\nBgNVBAoTA2s4czEPMA0GA1UECxMGU3lzdGVtMRMwEQYDVQQDEwprdWJlcm5ldGVz\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp9OWY14XEX7WtXMVKqrq\naWdIw/EQgwNNmQmI7LcnEmggK5XTv84/mhzEiDGtz9LZ0Xw5IPVP2emPKOJE0N9p\nKRAV2sMS1U7FJKOIuasKk2sa5QstWhNPjDdS+jNSvaFvT3MAWg50LfD6/wWAnSiV\n4r9kA9ff+d8QhgavZvSX19KCkerP0Yjjn2ujD6kNtHOanFcA8i74UF8oM3qHOo1T\nFglHx+ZD0D6BV5aCQdTyWo9QwBExPC6AGbUydAIewxwCefPz0IalPXvZo9AS05dt\nEX6cTvP+hC3RQxBfp0EVHD/UPV/n+YDspx0/oYexMrFn2MFVkTXLp64QUc0Z7MQe\nGwIDAQABo4IBFzCCARMwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUF\nBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRi6lrcE8Rf1ezb\nE3fa4ZAfyUsQFDAfBgNVHSMEGDAWgBRuRftfH3OHPsMMVKt0lSr7ROCb2DCBkwYD\nVR0RBIGLMIGIggCCAIIKa3ViZXJuZXRlc4ISa3ViZXJuZXRlcy5kZWZhdWx0ghZr\ndWJlcm5ldGVzLmRlZmF1bHQuc3Zjgh5rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNs\ndXN0ZXKCJGt1YmVybmV0ZXMuZGVmYXVsdC5zdmMuY2x1c3Rlci5sb2NhbIcEfwAA\nATANBgkqhkiG9w0BAQsFAAOCAQEALL0sJDq2dGGN8leHcUc2+Sgy9MIQPzXSNhug\nPJaamIpZBwAvP6yD/fEACapNciY4iMleoy/f8L98BzlVHTDchxV8TwGfX3TgeAlq\n8C6/qagmhgFDi0mjv3cnoLp3mj3mFE47UuQ1L4uIZEztbZfPjCGdpRyA/4Dw1RjQ\nDB41hGBVTQ4sbFbTNtQMYz5lxD23I7UuXyBeQ2WFLYdMtuld01iQ1vu0Hh0jYvie\nYyKtlbrpnvOIFvTx2qLB78Qv0427QjxjjyC5bJqQZS42T7X4ynXiaQ8OB5mMAVP/\nzKCnlTMlt+d4M7wv+CU6/klPVQasF8D52Ykvu8mPEHshelk/CA==\n-----END CERTIFICATE-----\n"
}
漏洞
支持對暴露漏洞進行搜索的貌似只有 shodan 和 sumap
網站備案
國內除了 zoomeye,基本都有對備案有簡單的支持
可以對備案號進行搜索,當然,sumap更加細化了該功能
而 hunter 則是擴展了該功能,做了更多關聯工作
應用協議細化
比較了幾家來看的話,做的最好的是quake,針對協議方面做了很多細化,其他各家基本只是針對http做了細化(比如header,header中的server字段,web圖標,http正文等等),shodan也做了一些協議的細緻化提取,但是沒有quake多
quake不僅對http做了細化,還對ftp、rsync、ssh、upnp、snmp、docker、dns、elastic、hive、mongodb、ethernetip、modbus、s7、smb等做了細緻化的內容提取,其中rsync和mongo還做了是否未授權的指紋提取
RDP截圖,這個功能我也不知道在什麼場景能用到,目前來看支持的有fofa、quake、shodan、sumap,其他家不支持,其中quake還對截圖進行了ocr文字提取
附加語法
上面提到了一些我們搜索常見常用的語法,下面來說一下各家一些特色的東西
fofa
fofa中有個功能是 fid
,能夠針對網站生成唯一的特徵id;通過對相同的fid進行聚合,來實現用戶的查詢需求;最終解決未知資產發現、自動聚類網站、資產指紋擴充等需求),常見需求:通過同一套業務系統定位到所有使用這套系統的網站
fofa還針對web網頁中的js做了處理 js_name
和 js_md5
,可以針對js做一些搜索,可以想到的場景比如某個供應鏈公司的幾套產品,會用自己內部的某個公有js,那麼可以通過該js聚類出來
fofa裏面還有 is_fraud
和 is_honeypot
,is_fraud
用來排除仿冒/欺詐數據,is_honeypot
用來
排除蜜罐數據,對於一些hvv場景下的紅隊攻擊比較有用
quake
quake對於應用識別也做了一些歸類,可以根據應用屬於什麼類別,或者屬於那一層,以及生產廠家等等來做查詢,具體可以查看下圖
quake對ip的運營商和單位做了一些歸類,可以查看IP歸屬的運營商和單位,查詢ip單位這個功能如果做得準確的話會大大方便紅隊
shodan
shodan對一些雲服務做了額外識別
zoomeye
zoomeye提供了一個 dig
查詢,但是我確實不清楚這個是幹嘛的,看起來像是跟蹤路由解析的每一跳,但我測試了以下,就 baidu.com
和 google.com
結果多點,其他的域名基本查不到,本人暫不清楚這個過濾語法的功能和目的
sumap
除了上面提到的漏洞和備案,sumap對於一些網站做了內容識別然後分了類,但是並未提供更多選項和樣例,針對一些政府打擊非法網站可能會比較有用
hunter
hunter比較特別的功能就是備案了,上面也有提到,hunter有根據網頁的備案號將資產和備案信息關聯起來,可以通過備案信息來搜索資產,這個功能對於國內紅隊和hvv場景比較有用,或者做一些行業資產評估
界面和功能
爲什麼把功能單獨拆出來呢,因爲有些東西可能並沒有以語法形式提供,但是在頁面上能看到,所以我把它歸到了界面功能上
首先是聚合分析,這是每一家都有的,下面說一下各家的特色功能
shodan
shodan提供了給定資產掃描的功能
zoomeye
zoomeye可以針對特定語法進行訂閱,然後它會提供一個週期內的資產變化
zoomeye提供了惡意ip標記功能
quake
quake針對相似的網站圖標做了聚合
quake也可以像fofa一樣排除蜜罐,不過是在頁面上提供的,也可以排除cdn
sumap
sumap提供了三個不同於其他家的聚合功能,分別是whois聚合分析,dns解析聚合分析,以及根據根資產做的暴露面分析
同時sumap提供了一個漏洞收集頁面,可以直接點選漏洞進行產品梳理,這個比shodan要方便
同時對漏洞做了一些聚合,這裏就不截圖了
hunter
hunter做了一個比較人性化的設計,就是語法關鍵詞提示,輸入 p
,就會出現一個語法推薦,出現所有包含 p
的語法關鍵詞,類似於ide裏面的只能提示,下面接着的就是大家都有的指紋提示了
做得還有個比較人性化的一點是,自動幫你選了想要的狀態碼和資產類別
此外對於登錄頁有額外的標籤提示
hunter針對各家的搜索語法都有一定的兼容性
數據更新週期
- shodan更新週期爲一週(來源: https://help.shodan.io/the-basics/on-demand-scanning)
- hunter 7天更新國內資產;30天更新海外資產(來源: https://hunter.qianxin.com/home/helpCenter)
其他家的未見到說明
收費體系
綜合來看,對於重度使用者(指那些需要使用api自動化的人),fofa是最實惠的,買斷制,只對單次導出數量有限制,對導出總量沒有限制。
其他家各種收費體系,基本都是每月給你一定量的免費查詢額(按照每條或者每頁),付費可以增加查詢額,總體上來說就是對於每月查詢總量做了限制
個人總結
因爲工作上偶爾接觸紅隊,所以會更偏向於國內資產的探測,所以以下的均是國內的網絡空間檢索網站
目前來看,hunter除了體驗上的優化外,比較吸引人的是備案關聯信息的查詢,這個對於國內的一些應用場景很適用
quake的資產分類做得是這些中做得最好的
關於漏洞搜索,sumap比較合適
如果想要資產監控,可能zoomeye更合適(或者是賬號等級的原因,其他平臺未見到)