Microsoft Sentinel 威脅獵捕操作指南:從查詢語法到實戰分析步驟

Published on: | Last updated:

重點一句話

說真的,其實你不用買超貴的資安設備,光是用 Azure 內建的 Microsoft Sentinel,就能自己動手,像個偵探一樣,把那些試圖偷偷闖進你家主機的駭客給揪出來。

我還真的抓到了…從巴西來的攻擊?

這件事說來有趣。我本來只是想做個實驗,看看威脅獵捕 (Threat Hunting) 到底是什麼感覺。所以我就在 Azure 上開了一台 VM,你知道的,就是虛擬機,然後故意把它的防火牆之類的都設定得超鬆散,基本上就是大門敞開,歡迎光臨的狀態。

然後,我就故意用錯的帳號密碼去登入它,想看看日誌(log)會不會乖乖記錄下來。一開始都還在預期之內,Event Viewer 裡面確實有看到我亂打的帳號,像「ThisIsFAKE」之類的,證明 log 有在運作。

但…事情從我把這些 log 全部接到 Microsoft Sentinel 之後開始變得不一樣。我只是放著讓那台 VM 跑了一天,隔天回來一看,我的老天,警示(Alerts)跳個沒完。一開始我還以為是我自己測試時搞的,結果仔細一看,完全不是。

一堆陌生的 IP 位址,前仆後繼地嘗試用「Administrator」、「admin」這種萬年預設帳號來登入我的 VM。這就是典型的暴力破解攻擊啊。我隨手挑了一個看起來最執著、試了超多次的 IP,拿去查了一下…結果,你猜怎麼著?它居然是從巴西來的!

我人在台灣,主機在 Azure 的東亞機房,結果一個來自巴西的 IP 拼了命想登進來。這感覺超現實的,但也證明了,只要你的主機連上網路,不論在哪,你就是全球駭客的潛在目標。也讓我瞬間明白,學會看懂這些 log、自己做威脅獵捕,到底有多重要。

攻擊視覺化:從巴西到我主機的連線
攻擊視覺化:從巴西到我主機的連線

怎麼做?重現我的「駭客釣魚」實驗場

好,故事說完了,來講講到底要怎麼搭出這個環境。我自己是覺得,親手做過一遍,遠比看十篇文章還有用。過程有點瑣碎,但跟著做,你也能蓋出自己的靶機,親眼看看網路世界有多「熱鬧」。

基本上,整個流程就是:蓋一台超脆弱的 VM → 把它的 Log 接到 Sentinel → 用 KQL 語法開始抓鬼。

步驟一:蓋一間「沒鎖門」的房子 (Azure VM)

你需要一個 Azure 帳號,用免費試用版給的點數就綽綽有餘了。進到 Azure Portal 之後,直接搜尋「Virtual Machine」。

  1. 建立 VM:就…一直按下一步。不過在「Networking」那邊要停一下。我們要建立一個新的網路安全性群組 (NSG),然後把規則改成「Any source, Any destination」。對,你沒看錯,就是讓任何人、從任何地方都可以連進來。這在真實世界是自殺行為,但在我們的實驗裡,這叫「誘餌」。
  2. 關閉 VM 內部防火牆:用遠端桌面 (RDP) 連進你剛剛建立好的 VM。進去之後,找到「Windows Defender Firewall with Advanced Security」,然後把 Domain、Private、Public 這三個設定檔的防火牆狀態全部設成「Off」。把它扒光就對了。

做到這一步,你的 VM 基本上就是在網路上裸奔了。這超危險,所以千萬記得,這台 VM 裡面不要放任何重要資料。

步驟二:裝上監視器 (Log Analytics & Sentinel)

光有房子沒用,你得有監視器才知道誰進來了。在 Azure 裡,我們的監視器組合就是 Log Analytics Workspace 跟 Microsoft Sentinel。

  1. 建立 Log Analytics Workspace:這東西你可以把它想像成一個超大的硬碟,專門用來存放所有 log。在 Azure Portal 搜尋「Log Analytics Workspace」,然後建立一個新的。地點選哪沒差,但最好跟你 VM 同一個區域,速度會快一點。
  2. 建立 Microsoft Sentinel 實例:Sentinel 就是我們的大腦,負責分析這些 log。搜尋「Microsoft Sentinel」,建立一個新的實例,然後把它「附加」到你剛剛建立的那個 Log Analytics Workspace 上面。這樣它才知道要去哪裡讀資料。

步驟三:把監視器線路接起來

房子蓋好了,監視器也裝了,現在要把兩邊連起來。

這一步最繞,但很重要。你要進到 Sentinel 的「Content hub」,搜尋並安裝「Windows Security Events」。安裝完之後,到「Data connectors」頁面,找到「Windows Security Events via AMA」,點進去設定。

它會請你建立一個「Data Collection Rule」(資料收集規則)。你就照著步驟,選擇你要收集「All Security Events」(所有安全性事件),然後把規則套用到你那台裸奔的 VM 上。按下建立後,等個幾分鐘,你的 VM 產生的所有安全性 log 就會開始源源不絕地流進 Sentinel 了。

KQL 查詢介面:在 Log 海中尋找線索
KQL 查詢介面:在 Log 海中尋找線索

開始抓鬼:我的 KQL 常用查詢語法

好了,前置作業完成。現在才是最好玩的地方。進到你的 Log Analytics Workspace,點開「Logs」,你會看到一個像命令列的視窗。這就是我們跟 log 對話的地方,用的語言叫做 Kusto Query Language,簡稱 KQL。

它看起來很嚇人,但說穿了,就是一套過濾跟篩選資料的語法。我自己是覺得,你不用背,但至少要理解幾個關鍵的查詢邏輯。

第一個必查:登入失敗 (Event ID 4625)

這是威脅獵捕的起手式。Event ID 4625 就是 Windows 記錄「有人登入失敗」的代號。任何暴力破解、猜密碼的行為,都會留下這個足跡。

SecurityEvent
 | where EventID == 4625
 | where AccountType == "User"
 | project TimeGenerated, Account, IpAddress, TargetAccount
 | order by TimeGenerated desc

簡單翻譯一下這段咒語:

  • `SecurityEvent`:告訴 KQL 我們要在「安全性事件」這張大表裡面找。
  • `where EventID == 4625`:篩選出所有登入失敗的事件。
  • `where AccountType == "User"`:過濾掉一些系統帳號的雜訊,我們只關心「真人」帳號的登入。
  • `project ...`:只顯示我們感興趣的欄位:什麼時候發生的 (TimeGenerated)、誰試的 (Account)、從哪個 IP (IpAddress)、他想登入哪個帳號 (TargetAccount)。
  • `order by ... desc`:把最新的結果排在最上面。

光是這一個查詢,你就能看到所有試圖闖進你家的不速之客了。當你看到一堆來自你根本不認識的國家的 IP,試圖用 "admin" 登入,那種感覺真的很…嗯,很刺激。

不同事件 ID 告訴你的不同故事

當然,只看 4625 是不夠的。一個完整的偵探故事需要更多線索。下面這張表是我自己整理的,在做威脅獵捕時,我會交互比對這幾個事件 ID,拼湊出完整的攻擊鏈。

事件 ID (Event ID) 它在說什麼故事? (口語解釋) 我會怎麼用它?
4625 有人在敲門,但拿錯鑰匙了。這就是抓賊的關鍵證據! 第一步先看這個。如果短時間內有一大堆,八成就是被自動化工具掃描了。
4624 門開了,有人成功進來了。這是「好人」或「已經得手的壞人」的紀錄。 拿來跟 4625 比對。如果一個可疑 IP 在失敗 N 次後,突然成功了,那事情就大條了。
4634 有人離開,把門帶上了。這是正常登出的紀錄。 如果只有登入(4624)卻沒有對應的登出紀錄,或登入時間超長,這也很可疑。
4648 有人用「管理員權限」在做事。這就像拿到了萬能鑰匙。 一旦有可疑帳號成功登入,我就會立刻查他有沒有觸發這個事件,看他是不是想搞破壞。

風險與應變:光抓到還不夠

OK,透過 KQL 你抓到一堆可疑 IP 了,然後呢?然後才是真正考驗的開始。

我自己是覺得,威脅獵捕的重點不在於抓到「多少」,而在於抓到之後「怎麼辦」。你可以設定一個自訂警示規則 (Custom Alert Rule),例如「同一個 IP 在 10 分鐘內登入失敗超過 20 次,就立刻發通知給我」。這樣就不用一直手動查。

再來,對於那些已經確認是惡意的 IP,最直接的做法就是在你的防火牆(NSG)上,直接把它的 IP 或整個國家的 IP 段給封鎖掉。雖然攻擊者可以換 IP,但至少能擋掉一大部分懶惰的自動化攻擊。

說到這個,我就想到美國的 CISA (網路安全與基礎設施安全局) 就常常發布一些關於 RDP 弱點的通報,他們會提供很多技術細節跟建議的防禦策略。不過呢,這點跟我們在台灣看到的情況很不一樣,比如說,台灣電腦網路危機處理暨協調中心 (TWCERT/CC) 的公告,除了技術建議,通常會更強調「通報流程」跟「協調應變」。

這也提醒我,技術上封鎖 IP 是一回事,但如果你是企業,遵循在地的通報規範,讓主管機關掌握威脅情資,可能同等重要。這不是技術問題,而是治理跟合規的問題了。

概念圖:從虛擬機到 Sentinel 的資料流
概念圖:從虛擬機到 Sentinel 的資料流

反例與誤解釐清

最後,我想講幾個我剛開始玩的時候常搞混的點。

  1. 誤解一:警報越多越好?
    錯。警報疲乏是真的。一開始我設定「只要有登入失敗就通知我」,結果手機響個沒完。後來才學到,重點是設定「有意義的」閾值,比如前面說的「10 分鐘內失敗 20 次」,才能篩掉雜訊,專注在真正的威脅上。
  2. 誤解二:封鎖 IP 就天下太平了?
    很遺憾,不是。專業的攻擊者會用代理伺服器、殭屍網路,IP 一直換。封鎖 IP 只是基本功。更進階的獵捕,是要去分析攻擊者的「行為模式」,例如他們喜歡用什麼工具、在什麼時間活動、嘗試什麼帳號名稱。從 IP 追蹤進階到行為追蹤,才是更深一層的功夫。
  3. 誤解三:只有 Windows 需要擔心?
    這次實驗我們是用 Windows VM,所以都看 Windows Security Event。但真實世界裡,你的 Linux 主機、你的防火牆、你的網站伺服器…全都在產生 log。一個好的 SIEM 平台,就是要能把這些「異質」的 log 全部收進來做關聯分析。今天的故事,只是個開端而已。

我自己是覺得,Threat Hunting 有點像釣魚,也像解謎。你需要耐心,需要對工具的熟悉,還需要一點點直覺。從茫茫 log 大海中,找到那條不對勁的魚,那種成就感,說真的,還蠻酷的。

現在你已經知道基本的方法了,換你試試看了。你覺得在你的環境中,第一個最該監控的「可疑行為」會是什麼?是登入失敗,還是檔案的異常讀取?在下面分享一下你的想法吧!

Related to this topic:

Comments

  1. profile
    Guest 2025-08-16 Reply
    哇!這篇好猛喔,感覺像是資安小白的超級入門指南。尤其是KQL語法那段超級吸引我,最近剛學資訊安全,對威脅狩獵這塊很有興趣,想更深入了解!
  2. profile
    Guest 2025-08-14 Reply
    哇,這看起來是超級實用的資安學習指南!不過,在全球資安威脅日益複雜的今天,你們是怎麼設計這麼實戰的教學內容?對於初學者來說會不會有點太hardcore?
  3. profile
    Guest 2025-08-14 Reply
    欸不是啦,這種資安教學真的有用嗎?感覺好像很複雜耶,一般人能看得懂嘛?難道不是只有資安專業人士才能理解這些東西?誰能保證這些步驟真的有效?
  4. profile
    Guest 2025-06-29 Reply
    欸,小孩,你最近在研究什麼奇怪的資安東西?這篇看起來好像很專業耶,不會是想要當駭客吧?不過學習新技術也不錯啦,可以跟我分享一下嗎?
  5. profile
    Guest 2025-06-20 Reply
    感覺這份教學有點危險耶!雖然說是學習目的,但是教大家如何製造漏洞聽起來很容易被有心人士濫用。不曉得作者有沒有考慮過倫理和法律風險呢?
  6. profile
    Guest 2025-06-18 Reply
    哇,這篇資安教學好像很專業耶!我家小孩對電腦安全很感興趣,你覺得國中生可以學嗎?聽起來好像很複雜,不過看起來很有趣的樣子,是不是?
  7. profile
    Guest 2025-05-09 Reply
    這篇文章的內容看起來很全面,但在實際應用中,這些步驟真的能達到預期的防護效果嗎?特別是針對一些新興威脅,不知道是否有更多具體案例可以分享呢?