跳轉到

翻譯聲明

本頁中文內容由 Anthropic Claude 自動翻譯,可能有不精確或不通順之處。如有疑義,請以英文原文為準(可用頁面上方的語言切換查看);也歡迎至 GitHub 指正或送出 Pull Request。

安全維運 / 事件應變

偵測

一份精選的 awesome threat detection 威脅偵測資源清單

工具

  • IDS
  • 入侵偵測系統(Intrusion Detection System,以特徵碼為基礎(例如 snort)或以行為為基礎)。
  • Snort/Suricata 規則撰寫
  • 主機型入侵偵測系統(Host-based Intrusion Detection System,例如 OSSEC)
  • SIEM
  • 系統資訊與事件管理(System Information and Event Management)
  • Honey pots(蜜罐)
  • Canary tokens
  • 假的內部服務/網頁伺服器,可以檢視流量,觀察攻擊者的嘗試行為
  • 產生訊號的東西
  • Honeypots、snort
  • 分類彙整訊號的東西
  • SIEM
  • 會警示人員的東西
  • 對彙整後的記錄檔進行自動分類、機器學習
  • 通知與分析人員的疲勞問題
  • 讓人容易判斷警示是否為真正入侵的系統
  • 範例
  • Splunk
  • Arcsight
  • Qradar
  • Darktrace
  • Tcpdump
  • Wireshark

異常/行為型偵測

IDS 會學習出一個「正常」行為的模型,接著就能偵測出偏離正常太遠的情況——例如被存取的異常 URL、使用者特定的登入時間/慣常的工作時段、平常會存取的檔案。

也可以尋找攻擊者可能會特別做的事(例如 HISTFILE 相關指令、存取 /proc)。

如果有人已經進入網路內部——若某項動作可能可疑,就針對該使用者提高記錄檔的詳盡程度。

防火牆規則

  • 暴力破解(用大量失敗的嘗試來登入)
  • 偵測連接埠掃描(可以尋找有 TCP SYN 封包卻沒有後續 SYN ACK 的情況/半連線)
  • 防毒軟體的通知
  • 大量的上傳流量

該檢視的記錄檔

  • 對可疑網域的 DNS 查詢
  • HTTP 標頭可能包含奇怪的資訊
  • 檔案的中繼資料(metadata,例如檔案作者)(比較偏鑑識?)。
  • 流量的量
  • 流量的模式
  • 執行記錄

關於攻擊者該知道的事

  • 緩慢的攻擊比較難偵測
  • 攻擊者可以偽造看起來像其他類型攻擊的封包,刻意製造大量雜訊。
  • 攻擊者可以偽造送出封包的 IP 位址,但可以檢查封包的 TTL 與反向查詢的 TTL,來找出被偽造的位址。
  • 把 IP 與實體位置相互關聯(通常很困難而且往往不準確)

入侵指標(Indicator of Compromise,IOC)?

入侵指標(通常會在組織/團體之間共享)。

你會如何運用 IoC 來協助調查?

IoC(入侵指標)——檔案雜湊、惡意 IP/網域、URL、登錄機碼、mutex、檔名——用來偵測並界定事件的範圍。你會掃過記錄檔、EDR 與網路資料尋找相符項目,以確認發生了入侵、辨識出哪些主機受影響,並建立時間軸;同樣這些指標也會餵給偵測規則(SIEM/IDS)以在再次發生時攔截。IoC 通常會在組織之間共享(例如透過威脅情資來源/STIX),讓其他人也能狩獵相同的活動。

特徵碼

主機型特徵碼

  • 例如登錄檔的變更、被建立或修改的檔案

  • 在惡意程式樣本中發現、且出現在主機所安裝二進位檔中的字串(/防毒)

網路型特徵碼

  • 例如檢查 DNS 記錄,看是否有嘗試聯繫 C2(command and control,命令與控制)伺服器的情況

OSINT

什麼是 OSINT?

開源情報(Open-Source Intelligence)——從公開可得的來源(搜尋引擎、WHOIS/DNS、憑證透明度記錄、社群媒體、程式碼儲存庫、外洩的憑證資料集、Shodan/Censys)蒐集並分析資訊,以在不直接接觸目標系統的情況下勾勒出目標的樣貌。

你會怎麼運用它?

在偵察階段,用來在進行主動測試之前描繪出組織的足跡——列舉網域/子網域、IP 範圍、員工姓名與電子郵件(用於釣魚)、所使用的技術、暴露在外的服務與檔案,以及外洩的憑證。在防禦上,同樣的技巧能揭露攻擊者已經能看到你的哪些資訊,讓你得以縮減那些暴露面。

有沒有什麼工具會拿來協助你?

  • dig
  • Censys
  • Shodan
  • Whois

事件管理

  • 隱私事件 vs 資訊安全事件
  • 知道何時該與法務、使用者、經理、主管溝通
  • 從頭到尾跑過一個情境,你會如何……

  • 處理事件的良好實務

  • 如何委派工作
  • 誰負責什麼角色
  • 溝通如何管理 + 溝通的方法
  • 何時該停止攻擊
  • 理解驚動攻擊者的風險
  • 攻擊者可能用來清理/隱藏其攻擊的方式
  • 何時/如何通知高階管理層(管理其期望)
  • 用來指派優先順序的指標(例如要發生什麼事,你才會提高某案件的優先度)

    • 若有可用的 playbook 就加以運用
  • 需要知道與理解的重要事項

  • 警示的類型、它們是如何被觸發的
  • 找出根本原因
  • 理解攻擊的各個階段(例如 cyber-kill chain)
  • 症狀 vs 原因
  • 第一性原理 vs 深入的系統知識(為何兩者都很有用)
  • 建立事件的時間軸
  • 理解為何你應該假設對方出於善意,以及如何與人合作而非對立。
    • 預防未來再度發生相同根本原因的事件
  • 應變模型
    • SANS 的 PICERL(Preparation、Identification、Containment、Eradication、Recovery、Lessons learned)
    • Google 的 IMAG(Incident Management At Google)

數位鑑識

  • 證據的揮發性(網路 vs 記憶體 vs 磁碟)

  • 網路鑑識

  • DNS 記錄檔/被動式 DNS(passive DNS)
  • Netflow
  • 取樣率

  • 磁碟鑑識

  • 磁碟映像
  • 檔案系統(NTFS / ext2/3/4 / AFPS)
  • 記錄檔(Windows event logs、Unix 系統記錄、應用程式記錄)
  • 資料復原(carving)
  • 工具
  • plaso / log2timeline
  • FTK imager
  • encase

  • 記憶體鑑識

  • 記憶體擷取(footprint、smear、hiberfiles)
  • 虛擬記憶體 vs 實體記憶體
  • 可執行檔的生命週期
  • 記憶體結構
  • 核心空間(kernel space) vs 使用者空間(user space)
  • 工具
  • Volatility
  • Google Rapid Response (GRR) / Rekall
  • WinDbg

  • 行動裝置鑑識

    • 對裝置越獄(Jailbreaking),及其影響
    • 行動裝置鑑識與電腦鑑識的差異
    • Android vs. iPhone
  • 反鑑識(Anti forensics)

    • 惡意程式如何嘗試隱藏自己?
    • Timestomping(時間戳竄改)
  • 監管鏈(Chain of custody)

  • 交接記錄

你在網路中發現了一個運作中的 c2 通道,你會怎麼做?

依循事件應變流程,並且不要過早驚動攻擊者。先界定範圍——辨識受影響的主機、C2 的網域/IP,以及它是如何進來的——同時擷取揮發性證據(記憶體、網路封包擷取)以供鑑識。接著遏制(隔離受影響的主機,在防火牆/DNS/proxy 封鎖 C2)、根除(移除惡意程式、關閉初始入侵管道、輪換遭到入侵的憑證),以及復原(還原乾淨的系統並加以驗證)。最後以事後檢討(post-mortem)與新的偵測機制作結。要刻意拿捏遏制的時機,因為太早切斷 C2 可能會警示到攻擊者,使其升級行動或摧毀證據。

你如何跟上最新的資安新聞?

跟我聊聊過去六個月內某些近期的弱點,以及它們為何引起你的注意。

盡可能詳細地描述:當你在瀏覽器網址列輸入 google 並按下 enter 時,會發生什麼事

圖片來源 @manekinekko

攻擊者在網路中橫向移動的一些常見方式有哪些?(愚蠢的說法:在網路中向東/向西移動)

憑證重複使用/竊取(傾印出的雜湊、pass-the-hash / pass-the-ticket、快取的憑證)、遠端存取協定(RDP、SSH、SMB/PsExec、WMI、WinRM)、利用內部服務的弱點、濫用 Active Directory(Kerberoasting、token/ticket 竊取),以及透過已遭入侵的主機進行跳板。偵測仰賴於察覺異常的內部驗證與東西向(east-west)流量模式。

你熟悉 ATT&CK 嗎?稍微跟我介紹一下它。

https://attack.mitre.org/

什麼算是一項調查?

一種花費時間與/或心力,試圖找出更多資訊、答案或某樣東西的行為。

資安事件(event) vs 資安事故(incident)有什麼差別?

event 是任何與資安相關而發生的事情;incident 則是可能對資產造成損害或製造風險的 event。

你如何用 Python 撰寫記錄檔解析器與/或以指令碼語言撰寫工具?

讀取記錄檔,用字串操作或正規表示式(re 模組)擷取欄位,並將其正規化為結構化的紀錄(dict,或 csv/json 輸出)以便過濾、計數與關聯分析。典型的建構要素:逐行迭代、用 re.search/re.findall 比對模式(IP、時間戳、狀態碼)、用 collections.Counter/defaultdict 做彙總、用 datetime 建立時間軸。對於大型檔案,逐行串流讀取而非把全部載入記憶體,並把結果餵給 SIEM 或警示邏輯。

什麼是 DevOps?它為什麼有用?

DevOps 是一種將軟體開發部分與技術維運部分結合起來的方法論。它讓交付軟體、修正錯誤以及提供更新,對開發者與維運者雙方都更容易也更快速。

描述你對 DevOps 理念與工具集(Ansible、Terraform、Jenkins 等)的熟悉程度

什麼是 Jenkins?為什麼要用它?什麼時候用它?怎麼用它?它如何幫助公司?

Jenkins 是一套開源的自動化伺服器,主要用於 CI/CD。它會監看版本控制,並透過可設定的 pipeline 自動建置、測試與部署程式碼。團隊用它來及早發現整合問題、把發布標準化並加速、去除人工部署的步驟。從資安角度來看,它也是你接上自動化掃描(SAST/DAST/相依套件檢查)的地方——而且因為它常常持有憑證且能部署到正式環境,它本身就是需要被保護的高價值資產。

什麼是 Ansible?為什麼要用它?什麼時候用它?怎麼用它?它如何幫助公司?

Ansible 是一套開源的組態管理與自動化工具。它使用宣告式的 YAML「playbook」,透過 SSH 設定伺服器、安裝軟體並協調部署,且目標主機上不需要安裝任何 agent。它用來大規模進行一致、可重複、具冪等性(idempotent)的基礎架構變更——包含在許多主機上一致地套用的資安強化與修補程式部署。

你如何自動化任務?

找出重複性、定義明確的工作,將其寫成指令碼(Python/Bash/PowerShell),並依排程(cron)或依事件(webhook、CI pipeline、SOAR playbook)觸發它。在安全維運中,常見的例子有記錄檔解析與警示、對指標的加值與分類、排程掃描,以及用 Ansible 這類工具做組態管理——並且一律搭配記錄與錯誤處理,讓自動化維持可稽核。

什麼是調查方法論?

調查方法論是一套框架或指引,在調查過程中給你指示、或為你指出你該做什麼的方向。

描述我會做什麼、我會用什麼工具

範例:

  • 第一步
  • 判定嚴重性
  • CVSS Common Vulnerability Scoring System(通用弱點評分系統)
  • 評估
    • 發生了什麼事?
    • 何時?
    • 如何?
    • 你做了什麼?
    • 你何時注意到的?
    • 建立時間軸
    • 症狀是什麼?
    • 有多少人受影響?
    • 影響/損失/衝擊是什麼?
    • 做某某動作(關閉 X 系統)的衝擊是什麼?
  • 第二步
  • 若是攸關生死的事件 > 先把活著的人移到安全處
  • 檢視記錄檔
  • 蒐集記錄檔
  • 阻止事件擴散(遏制/隔離/關機)
  • 衝擊分析/損害分析
  • 第三步
  • 開始調查
  • 蒐集記錄檔
    • 防火牆、IDS/IPS、Web 應用程式、網頁伺服器、伺服器記錄檔
    • 容器 > docker engine 記錄、K8s 記錄
  • 蒐集任何可取得的資料
  • 分析記錄檔
    • 你會做什麼?
    • 若用 SIEM,說出這些工具
    • Splunk、Alienvault、Snort、Elastic Search
    • 運用 SIEM,做記錄檔的關聯分析
    • 建立事件鏈
    • 找出 Who What When Why How 的答案

若發現了一個可疑的網路安全事件,而你被指派去調查:

  • 你首先會做什麼?
  • 視事件的嚴重性而定,我會選擇隔離系統,或開始蒐集我需要的資訊。
  • 你會需要做什麼?
  • 我會需要通知適當的負責人員、在必要時提高事件的嚴重性等級、記錄每一件事及其發生的時間。
  • 你需要什麼資訊?
  • 如果可能,我會盡量蒐集我能取得的每一項資訊。若辦不到,我至少會試著取得來自 IDS 或 SIEM 等安全裝置的記錄檔,並確保它們都有正確的時間戳。
  • 你的調查計畫是什麼?
  • 我會依循我在 CISSP 學到的事件應變程序,也就是通知、升級、回報、系統隔離、鑑識分析、證據處理
  • 你需要跟誰談?
  • 安全維運團隊的經理、事件發生所在系統的經理,以及在必要時的法律顧問
  • 問:我是為誰工作?
  • 系統擁有者,以及所有受影響的人
  • 你應該呈現什麼結果?
  • 每件事發生時間的時間軸、以及它們彼此如何相關,並在可能時提供一份關於衝擊可能為何的簡要資訊
  • 已採取了什麼行動、如何預防事情再度發生、找出根本原因以修正問題
  • 一項調查會花多久?
  • 這取決於事件的規模與複雜度
  • 取決於許多因素、以及我有多少資源
  • 你如何判斷它是否為一個真正的事件?
  • 這會依攻擊者所做的所有動作、連同我們蒐集到的所有資訊來評估,基本上會憑經驗來判定
  • IoC / IoA(Indicator of Compromise / Indicator of Attack,入侵指標/攻擊指標)
  • 藉由翻查記錄檔與 SIEM 來尋找指標/證據
  • 你如何判定一個事件中所發生的事件鏈?
  • 藉由在我們蒐集到的資訊中找出某些相關的部分,例如相同的來源 IP 可能表示兩個事件是由同一個使用者所為。
  • 在我們蒐集到的記錄檔中尋找證據
  • 你會用哪些開源工具來調查一個事件?
  • 我可能會用一套 SIEM,它能匯集來自不同來源的記錄檔並將資訊視覺化,能夠協助我們找出不同記錄檔來源之間的關聯
  • System internals(給 Windows 用)
  • Process explorer
  • TCP Viewer,檢視開啟的連接埠與活動
  • Image dump,用沙箱還原映像並進行調查
  • 你可能會寫、或你曾經寫過哪些指令碼來協助你調查一個事件?
  • 我會寫一些能辨識某些惡意活動並通知我的指令碼,例如它可能會找出某個一秒內送出超過 10 次請求的來源 IP。
  • 你何時會認為調查已經完成?
  • 當我們找到當初進行這項調查的原因所對應的答案時,或當調查的成本超過了得知這項調查結果之價值時。
  • 當預算時間用完時
  • 若我們無法再往前推進 > 找不到任何證據,可以結案或轉交第三方調查
  • 當調查完成時你會做什麼?
  • 記錄一切,並確保予以保存,以便未來若發生類似事件時可供參考
  • 你如何辨識攻擊指標並建立有效的監控與警示?
  • 找出攻擊的根本原因,看看是否有任何只會在此類攻擊中出現的特徵,在辨識出攻擊指標後,我會看看能否建立防火牆規則或過濾條件,以留意未來發生的類似事件
  • 什麼是攻擊指標?舉幾個例子……
  • 惡意程式的雜湊、已知的惡意來源 IP、未經授權的存取嘗試
  • 你會為事後檢討/經驗教訓報告(post-mortem / lessons learned Report)做什麼?
  • 我會看看有沒有什麼是我們能做來協助預防類似事件再度發生的,一些例子像是防火牆規則、甚至是政策與指引。
  • 根本原因是什麼

通常會有壓力要在很緊的時間內調查一個疑似嚴重的資安事件,如果你一開始只有有限的資訊,但被要求在 2 天內完成這項分析,

  • 你會計畫在這 2 天做什麼?
  • 我會試著設定一些目標、列出需要完成的任務,然後排定優先順序,並從最重要的任務開始。
  • 你會計畫在這 2 天交付什麼?
  • 我會希望至少能提供事件的一個大致樣貌,也包含一些未來可以做哪些後續工作的方向
  • 如果你一開始沒有足夠的資訊怎麼辦?
  • 我會向其他人尋求協助,看看我們能否蒐集到某些也許能提供我們一個不同視角、讓我們得以著手的資訊
  • 如果你無法在 2 天內完成報告怎麼辦?
  • 我會提供一份關於我已經做了什麼、以及目前正在做什麼的報告,同時持續進行調查
  • 在期限到之前你會多常提供進度更新?
  • 我會在任何目標達成或任務完成時提供更新
  • 你會需要什麼資源?
  • 我會需要所有與事件相關的系統與裝置、帶有時間戳的記錄檔,我也可能需要來自該系統工程師的協助,他們對系統以及那樣的事件可能如何發生有更深入的了解。

你如何對資產(例如伺服器、工作站、網路設備、儲存裝置與應用程式)進行深入的弱點評估與資訊系統稽核?

  • 方法論是什麼?
  • 你需要什麼資訊才能開始評估?
  • 你用什麼工具來進行弱點評估?
  • 在開始一項弱點評估之前,你需要詢問/界定的關鍵項目有哪些?
  • 依你之見,什麼算是一個弱點?
  • 如果你發現一個弱點,卻不確定它是否可被利用,你會怎麼做?
  • 滲透測試(penetration testing)與弱點評估(Vulnerability Assessment)的差別是什麼?
  • 一份弱點評估報告中你應該納入什麼?
  • 範例
  • 提問:
  • 範圍是什麼?
  • 你要我評估什麼?
  • 你希望我何時進行測試?日期?時間?
  • 這是正式(live)系統還是測試系統?
  • 有備份嗎?
  • 黑箱?灰箱?白箱?
  • 交戰規則(Rule of engagement)?
  • 我可以進行某某攻擊嗎?
  • 報告範例
  • 執行摘要(Executive summary)
    • 我做了什麼
    • 我何時開始/結束
    • 評估的範圍
    • 我執行了哪些測試
    • 我發現了什麼
    • 我所發現事項的嚴重性
  • 方法論
    • 我是怎麼做的
    • 我用了哪些工具
  • 弱點
    • 弱點的描述
    • 我發現了什麼
    • 如何重現此問題(包含所有步驟)
    • 如果你無法重現它,它就不是一個問題
    • 實際的風險/實際的衝擊