有一題的情境是要掃一個網站之前,先弄清楚這次掃描會碰到哪些東西、哪些網址應該排除在外,問該用哪一種掃描。
我選了 credentialed scan,我想說掃深一點總沒錯。
結果正解是 discovery scan。
一開始在我的印象中,掃描分類裡面的credentialed、non-credentialed、discovery、agent-based、active、passive,這幾個詞在腦海裡就叫"掃描分類"。
但它們的差別,其實在不同的層面。
Credentialed 跟 non-credentialed,差在有沒有給掃描器一組帳密。
給了帳密,掃描器可以直接登進主機,Windows 走 SMB、WMI 那一套,Linux 走 SSH,讀的是這台機器裡面實際裝了哪些軟體、版本幾號、補丁上到哪、設定長怎樣。
沒給帳密,掃描器只能站在外面,連連看哪些 port 開著、服務回了什麼 banner,再拿版本號去對已知弱點。banner 是什麼 可以見Day04 ,這裡就不重複,簡單來說它是服務自己報的,不一定準。
差別在於看得多深。
Discovery scan 是在找弱點之前的盤點。這個網段有哪些主機活著、各自開了哪些 port、這個網站底下有哪些路徑。它還沒有要去判斷哪裡有洞,只是先把地圖畫出來。
掃的時候有沒有帶帳密,跟它是不是 discovery 沒有關係。
Agent-based 跟 agentless,差在掃描器放在哪。
agentless 是一台中央的掃描工具,透過網路去掃目標,前提是它連得到,中間的防火牆要開給它過。
agent-based 是每台機器上裝一支小程式,自己檢查自己,再把結果回報回去。像筆電常常不在公司、IP 一直換,或是不想為了掃描開一堆規則,agent 就方便很多。但是像工控那類 OT 設備,基本上是沒辦法裝agent的。
Internal 跟 external,差在從哪裡掃。從外面網際網路掃進來,看到的大概就是實際攻擊者一開始看得到的東西;從內網掃,看到的是攻擊者已經進來之後能碰到的東西。
Active 跟 passive 參考Day04,簡單來說差別在於有沒有碰觸到目標。
| 這組詞 | 我的理解 |
|---|---|
| credentialed/non-credentialed | 掃描工具有沒有憑證,有憑證才看的深 |
| discovery | 先盤點範圍 |
| agent-based/agentless | 設備上有沒有裝agent |
| internal/external | 從內網掃,還是從外面掃進來 |
| active/passive | 有沒有對目標送封包 |
排成表之後就看得出來,一次掃描可以同時是 agentless、credentialed、internal、active,這幾格互相不衝突。
回到那題,它要的是盤點、範圍,答案自然是discovery scan。
這個沒有一個固定的數字,我的理解大概跟兩件事有關。
基本上第一點圍繞在法規遵循、SLA之類的關鍵字。第一個是法規怎麼要求。像處理信用卡資料的環境,PCI DSS 要求內部跟外部弱點掃描至少每三個月各做一次,有重大變更之後也要再掃。第二個就是簽約的廠商約定多久要掃一次。
另一個是這台機器有多重要。對外開放的、放敏感資料的,重要性高、風險高這類就值得掃。
另一種題目是想要「更快」發現網路上冒出來的陌生設備,比如說掃瞄有沒有Rogue AP這件事。我看過的題目問怎麼縮短偵測時間,我選週掃改成日掃,但還是在等下一輪,這類要的是就是持續監控(continuous monitoring)。
掃描時段也要挑。人都下班了不代表系統是閒的,要看的是系統實際負載最低的時候,不是辦公室最安靜的時候,也許這時候你的備份主機可能正在跑備份。
弱點掃描是會對目標送一大堆請求的,對 production 全開,有兩個問題。
頻寬跟負載
如果一次掃幾百台主機,你的掃描工具以毫秒級的速度丟一大堆封包出去,頻寬不足可能就會造成壅塞
再來是負載,是有些脆弱的服務真的會被戳掛。老印表機、工控設備、某些很舊的應用程式,被掃一輪就當掉也不是不可能,所以這類設備要考慮換個方式掃,可能可以改用 passive 的方式看。
掃完之後,結果要拿去對資產清單。清單上有但沒掃到的,可能是掃描範圍設漏了;掃到了但清單上沒有的,就是有機器沒登記,有種可能就是shadow IT,他不在資產清單上,很可能也沒在你的update清單上。
最後是雲端,必須說實話我對於雲端知識有限,所以基本上以下都是整理我寫過的題目以及跟AI討論得出的。
IaaS 上自己開的 VM 大多可以自己掃,但要照供應商的規定來,像 AWS 就有一份公開的政策,列出哪些服務不用事先申請就能測、哪些行為不准做(像 DoS 類的測試)。
SaaS 就不一樣了,底層整個是供應商的,客戶通常不能自己拿掃描器去掃。這時候能做的是跟供應商要第三方稽核報告,像 SOC 2、ISO 27001,再加上合約裡的資安條款。換個掃描工具、找別人來掃,其實都還是在想辦法掃別人家的東西,服務模式本身就決定了這件事做不做得到。
這方面的理解可以依照IaaS=>PaaS=>SaaS供應哪些環境來看,IaaS可能從hypervisor、VM、OS、application都是你自己的,那掃這些比較沒毛病,但SaaS他已經按照你的需求整個都由供應商提供,所以環境基本上都是供應商的,這時候能不能掃、哪些可以掃可能就得問問供應商了
Nessus Essentials 是免費的,自己在家做lab可以試試。
如果有環境可以測試的話,掃個一兩台VM,第一次不給帳密,第二次給一組能登入的帳號,看看兩份報告的筆數跟內容差多少。給帳密那次看得到的東西,照理來說資訊應該會更準確、更豐富。
給掃描器的那組帳號,建議開一個專用的,權限夠用就好,不要直接把自己的管理員帳密填進去,掃完也記得那組密碼要收好,不然就disable掉吧。
再次強調只掃自己的機器。沒授權去掃別人,這就牽扯到法律問題,絕對不要在未經授權下去掃別人家的機器。