甲方安全建設的一些思路和思考
本文主要是介紹一下筆者對於甲方安全能力建設的一些經驗,心得和零散的思考。需要特別強調的是不同企業的實際情況不盡相同,本文僅供參考,不具普遍意義。
0x01 Red Teaming
),但是最終目的都是為甲方輸出檢驗企業的Detection和Response的能力,找到防禦弱點進而優化防禦系統和流程。
我們不禁要思考一下,到底什麼樣的企業才真的需要Red Team?當然,輸出安全能力和服務的乙方不在討論範圍內,因為其最終是為了服務和支援甲方。根據我的觀察和發現,目前大部分人很容易把Red Team和Penetration Testing弄混或者乾脆混為一談。其實二者有共同點但也有本質上的不同,簡單做個比喻就是忍者(隱祕,快速,準確,一擊即中)和海盜(強壯,貪婪,可以剛正面,一波高地)的區別,各有側重和優劣,但側重點不同,比如,Red Team類似忍者,側重於精心準備(如:社會工程學等)收集資訊進而繞過現有的防禦體系(類似於APT)來檢驗防禦和檢測能力;而Penetration Testing則如同海盜,側重於儘可能多地發現應用,系統,網路,裝置等的漏洞,並利用其發現更深層或者複雜的漏洞從而來評估風險。所以,答案顯而易見,一個企業只有擁有了基本的防禦和檢測的能力,並需要持續檢測和改善這種能力時,Red Team就是很好地選擇了。
那麼,什麼樣的Red Team才算合格和有效呢?如前面所說,Red Team如同忍者去做暗殺,既然暗殺那麼就需要一個詳細的計劃,如:目標是什麼(暗殺對方頭目),手段是什麼(前期偵查對方大本營,守衛佈局,對方頭目的日常習慣和出現的場所,會不會功夫等),如何去執行(選擇某個夜黑風高的晚上,眾人都準備或者已經睡覺的時候,摸進對方大本營,提前隱藏在對方頭目習慣出現的場所,等待其出現,再一刀斃命)。對應到Red Team就是,
1)設定好這次行動目的是模擬偷取公司的客戶資料;
2)提前做好偵檢視看公司都可能有哪些人會碰到這類資料,有哪些防禦檢測方式(如:反病毒,入侵檢測,流量分析);
3)針對可能接觸資料的人員做定向釣魚攻擊或者面對面的社工,安裝專門製作的繞殺軟的工具,利用常見的社交或者雲端儲存網站來做C2,等待時機控制機器,獲取必要的使用者憑證,盜取客戶資料,銷燬痕跡,最終走人。
因此,一個合格的Red Team,需要具備模擬攻擊者入侵的各種能力,手段以及假想的目的。想要具備這種能力的一個最簡單有效的方法,就是從現有的真實世界裡發生的APT攻擊活動中抽取TTP來模擬真實的threat actors,分類並總結他們曾今採用的手段,方法,技術和工具,然後加以優化和改進,最終結合每個Red Team活動的假想目的來模擬不同APT組織對於公司的入侵,以此來檢測已有的防禦和響應體系是否有效。
0x02 Blue Teaming
我們在說Blue Team時,通常是指在一個企業裡負責入侵檢測和應急響應的團隊的統稱,一般情況下(尤其是規模較大的企業)會至少細分為以下幾個團隊:
- Threat Hunting (入侵檢測):主要負責根據已知威脅的TTP(如APT活動)和根據常見入侵活動的行為特徵(如批量埠掃描,同一系統賬戶的短時多次嘗試登入,office軟體程序的可疑子程序的派生等等)來開發入侵檢測規則,或者利用機器學習,深度學習等更高階的資料探勘技術來研究和分析威脅特徵;
- Incident Response (應急響應):主要負責處理和調查企業的安全事件(如:外部應用系統被入侵,內網主機被入侵,以及由Threat Hunting的規則觸發的各類入侵報警等)以及從真實的安全事件中來分析和提取自產的IOC/">IOC以及最新的威脅特徵;
- Vulnerability Management (漏洞管理):主要負責對企業所有資產(包括應用和原始碼)的持續漏洞掃描,追蹤,修復以及管理;
- Threat Intelligence (威脅情報):主要負責追蹤和分析外部已知APT活動,地下黑市和深網或暗網裡的各種威脅情報資訊,並加以分類總結成TTP以及IOC提供給其他團隊加以利用和深層分析(如前面提到的Threat Hunting,以及Red Team)。
而且這些子團隊都不是獨立工作的,其之間都是相互配合和支援的。我們可以舉個常見的例子來加以解釋一下,比如threat hunting可能會通過已知的規則發現了一個可能的入侵行為;接著incident response迅速跟進進行流量、日誌或者取證的分析發現了之前未被識別的威脅特徵;然後threat hunting基於該特徵開發最新的檢測規則,threat intelligence以此進行情報梳理和比對並最終發現這是某個最近比較活躍的APT組織的活動,隨後蒐集相關TTP反饋給threat hunting;最後,vulnerability management團隊掃描企業所有可能存在弱點和受影響資產,追蹤和修復。
綜上可見,Blue Team不是gank選手,而是講究的團隊合作和相互配合的團戰協作,合理的利用和集合各個子團隊的優勢便可以大大提高入侵檢測的準確性和應急響應的快速性。
0x03 應急響應
在開始之前,先談談我個人理解的應急響應是什麼?顧名思義就是對企業發生的安全事件作出快速應對和及時響應從而減少由於安全事件造成的影響。
一般情況下,任何安全事件的應急響應都可以分為以下幾個階段:
1)Assessment (評估):主要是初步梳理安全事件產生的原因和評估潛在影響範圍;
2)Containment (控制):這個階段主要是快速找到止損/減輕方案(或者是臨時應對措施)將事件影響儘可能控制在最小範圍內;
3)Eradication (消除):這個階段是要找到安全事件產生的根本原因並提出和實施根治方案;
4)Recovery (恢復):主要是確保所有受影響的系統或者服務完全恢復到安全狀態;
5)Review (總結和審查):這是每個應急響應的最後階段主要是總結和梳理安全事件處理和響應的整個時間線和應對方案,學習和審查安全事件產生的根本原因並生成知識庫以便以後遇到同類安全事件可以快速地找到處理和應對的方法。
為了便於大家更好地理解怎麼運用以上這些步驟來幫助我們做好應急響應,以下我以一個企業經常會碰到的釣魚郵件為案例。比如,我們的企業員工上報了一封釣魚郵件,那麼作為應急響應團隊應該怎麼做?我們都知道釣魚郵件是入侵者(APT組織)攻擊大型企業的最直接有效的方法。當我們的應急響應人員遇到這樣的攻擊試圖時,
第一步,我們要初步分析釣魚郵件的攻擊方法,通常有:
- Credential Harvesting :設定一個偽造的郵箱或者系統登入介面(如傳送一個誘餌連結或者在郵件裡嵌入一個html頁面)來盜取有效的使用者名稱和密碼;
- Malware :一般包括兩種方式,一是通過附件直接傳送惡意檔案,二是通過傳送連結來誘騙使用者點選下載惡意檔案。初步分析了攻擊方法,我們就需要評估影響,比如,哪些人收到了該郵件,哪些人可能訪問了惡意連結,哪些人下載了惡意檔案,哪些人執行了惡意檔案,哪些資料可能受到影響等等;
第二步,實施控制措施或者減輕方案,如針對通過連結來偷取使用者名稱和密碼或者下載第一階段的惡意檔案的域名我們可以實施DNS sinkhole(詳情可以參照:https://en.m.wikipedia.org/wiki/DNS_sinkhole),對於利用附件直接傳送惡意檔案的情況我們可以通過靜態或者動態沙箱(例如cuckoo,virustotal等)來分析惡意檔案的行為並抽取IOC(可能是後續階段C2的域名或者IP,亦或者是執行的子命令)實施DNS sinkhole,防火牆IP黑名單,或者終端防安全防護軟體新增行為識別特徵或者檔案hash黑名單等等措施;
第三步,當惡意行為被有效控制後,我們便需要實施清除活動,如:清除所有收到的惡意郵件,對訪問過惡意連結並且可能潛在洩露過使用者名稱和密碼的使用者進行賬號重置,對於下載執行過惡意檔案或者訪問過後續階段的域名或者IP的使用者電腦進行重灌等等;
第四步,這個階段我們需要確保我們在第三步中的所有清除活動按照預期完成,並且所有使用者和系統恢復正常使用;
第五步,當一切恢復正常,我們需要對這次的釣魚郵件事件做覆盤分析,如:為什麼我們的郵件安全閘道器沒有檢測到和攔截這個釣魚郵件?為什麼我們的員工會點選這些釣魚郵件?我們的防禦和檢測的漏洞在哪?下次再發生類似事件我們應該怎麼辦?等這些問題都找到對應的答案了我們則需要錄入應急響應知識庫以備後用。
綜上,一個有效的應急響應是需要一個相對完整的流程來保證,如此一來便可以保證應急時不慌亂有條理且快速有效。
0x04 內網入侵檢測與防禦
本章節將依據我個人的一些工作經驗和思考分別從平臺搭建,工具配置,入侵調查與分析三個方面來聊聊企業的內網入侵檢測和防禦的建設思路。
一、平臺篇
通常來說,一個企業要想做好內網檢測和防禦,首先要解決的問題就是感知能力,這就好比是人的五官要可以感知到周遭環境的變化,那麼反映到安全平臺上我們就需要一個統一的日誌收集和分析平臺。那麼需要收集哪些日誌呢?是所有的都收集嗎?還是有選擇性地收集?又如何來確定優先順序呢?其實日誌的收集切忌盲目全收,否則就會浪費了大量的人力物力財力到頭來蒐集了一堆日誌卻不知道如何使用。最好是結合應用場景來制定優先順序,循序漸進。舉個例子,比如當我們的一個應用場景是檢測辦公網中的入侵行為,我們需要解決的核心問題其實就是誰在什麼時間什麼機器上運行了什麼程序做了什麼操作。分解一下這個問題,首先我們需要有日誌能幫我們定位每個內網使用者,如:DHCP,DNS,Kerberos Tickets(AD認證),Windows Event Logs,Antivirus等;接著我們想要知道什麼時間什麼機器上運行了什麼,如:主機程序樹和網路連線日誌(即:Event Tracing for Windows)等;最後我們需要知道做了什麼操作(網路行為等),如:網路裝置出口流量,Web閘道器日誌(HTTP流量),IDS日誌,WiFi日誌,郵件閘道器日誌等等。這樣,我們就能有針對性地收集我們當下最需要的日誌並可以利用這種方法來逐步擴大日誌收集的種類。
有了統一的日誌收集平臺,接下來我們便需要一個持續的威脅檢測平臺其主要作用就是編寫各種檢測規則和機器學習模型來對所有收集到的日誌進行匹配檢查以保證之前的已知威脅不會被忽略。
接著,我們需要一個IOC檢測平臺,其主要作用是用來對外部情報資訊或者內部自產的情報資訊進行實時匹配和報警以確保當前所有的已知威脅能被檢測出來。
最後,我們還需要一個內部威脅追蹤和記錄平臺,其主要作用是用於流程化和規範化地記錄和總結所有以往發生的入侵事件的調查過程和分析結果以便於日後查詢和關聯分析。
總之,安全平臺建設是企業內網入侵檢測和防禦的基礎,只有搭建了這些基礎平臺,才能談後續的工具配置和入侵分析與調查。
二、工具篇
在上一篇中我們聊到安全平臺建設是企業內網入侵檢測和防禦的基礎,在這個基礎之上今天我們來聊聊工具配置。簡而言之,就是有了感知能力,需要哪些工具來幫助我們分析和調查入侵,所謂工欲善其事必先利其器。
一般來說,最常見的入侵內網的手法就是釣魚郵件和社工,而其中以釣魚郵件最為典型,因此做好釣魚郵件的防範是最為簡單有效的防禦內網入侵的方法。我之前曾提到過釣魚郵件的常見手法,
- 傳送連結模擬郵箱或者內部系統登陸介面收集企業員工的賬號密碼;
- 傳送連結誘導員工點選下載惡意的office文件;
- 直接傳送惡意的office文件或者PE檔案或者惡意程式的壓縮包作為附件並誘導員工開啟。
針對以上幾種手法,我們至少準備以下幾類工具來輔助分析。
第一類,域名與IP檢測工具:
- https://centralops.net/co/DomainDossier.aspx?dom_whois=1&net_whois=1&dom_dns=1
- https://www.threatcrowd.org/
- https://www.threatminer.org/
- https://www.virustotal.com/en/
- https://www.talosintelligence.com/
- https://login.opendns.com/
- https://www.alexa.com/siteinfo
- https://x.threatbook.cn/en
- https://checkphish.ai/domain/avfisher.win
第二類,URL檢測工具:
- https://urlscan.io/
- https://sitecheck.sucuri.net/results/pool.cortins.tk
- https://quttera.com/
- https://www.virustotal.com/en/
- https://checkphish.ai/
第三類,TOR節點檢測工具:
- https://www.dan.me.uk/torcheck
- https://exonerator.torproject.org/
- https://ipduh.com/ip/tor-exit/
- https://torstatus.blutmagie.de/
第四類,線上惡意程式或文件檢測工具:
- https://www.virustotal.com/en/
- https://malwr.com/
- http://camas.comodo.com/
- https://x.threatbook.cn/en
- https://www.reverse.it/
- http://www.threatexpert.com/submit.aspx
- https://www.vicheck.ca/
- https://virusshare.com/
- https://malshare.com/
- https://github.com/ytisf/theZoo
第五類,動態惡意程式或文件分析工具:
- Cuckoo: https://github.com/cuckoosandbox/cuckoo
- Regshot: https://sourceforge.net/projects/regshot/
- Process Hacker: http://processhacker.sourceforge.net/
- Process Monitor: https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx
- ProcDOT: https://www.cert.at/downloads/software/procdot_en.html
- WinDump: https://www.winpcap.org/windump/
- Graphviz: http://www.graphviz.org/Download..php
- Capture-BAT: https://www.honeynet.org/node/315 (x86 environment only)
- Fakenet: https://sourceforge.net/projects/fakenet/
- Wireshark: https://www.wireshark.org/#download
第六類,郵件檢測工具:
- http://spf.myisp.ch/
第七類,Google搜尋,這也是最簡單暴力但卻十分有效的工具之一。
在分析內網入侵時合理地使用以上這些工具往往會有事半功倍的效果。另外,作為一個入侵分析和響應工程師切忌在沒有網路隔離的情況下在辦公電腦上直接訪問可疑連結或者分析惡意樣本檔案。
三、分析篇
在前兩篇中,我們分別談到了企業內網入侵檢測和防禦所需要的安全平臺建設和工具配置,有了這些基礎我們便來聊聊如何運用這些已有的平臺和工具來分析真實的內網入侵事件。
為了更好的說明這個問題,我將仍以最常見的利用釣魚郵件入侵企業員工電腦並進而入侵內網為例來說明如何分析這類的入侵事件。為了能夠檢測和分析這類入侵事件,我們需要有能力獲得最原始的釣魚郵件,這就需要我們從至少以下幾個途徑來獲取:
- 企業員工主動提交可疑的釣魚郵件,這就需要員工具備一定的安全意識(安全意識培訓的重要性),以及統一的可疑郵件提交平臺(需要開發成本)
- 郵件安全閘道器,如:Ironport,FireEye Email Security等
- IOC檢測平臺,及時檢測已知的惡意域名或者IP,可疑的發件人,惡意附件等
當我們拿到了原始的釣魚郵件,首先需要確保將其轉化成EML文字格式(可用工具https://github.com/mvz/msgconvert ),接著,我們至少需要從以下幾個方面來分析:
1)原始郵件頭,包括:From, envelope-from, SPF, client-ip等
1.1)可以通過dig命令,如:dig -t txt baidu.com,來檢查郵件是否被spoof了
1.2)對比From和envelope-from是否一致,也是應該判斷是否為惡意郵件的有效方法
2)原始郵件正文,包括:域名/IP,URL,附件等
2.1)域名/IP和URL的分析可以使用工具篇 裡提到的相應工具來分析,判斷是否存在multi-stage C&C
2.2)附件的分析也可以使用工具篇 裡提到的線上/本地惡意程式分析沙箱或者自行逆向分析,進而瞭解惡意程式的執行邏輯以及對應的IOC(域名,URL,檔案,登錄檔鍵值,執行的系統命令等)
2.3)利用日誌分析平臺,查詢惡意域名的DNS或者HTTP(S)流量日誌,結合主機EDR(Endpoint Detection and Response)終端日誌將DNS請求關聯到相應的主機程序,如:ETW for Windows,BCC/eBPF for Linux等
2.4)查詢觸發惡意域名的DNS請求的主機程序的整個程序樹,分析malware完整的執行鏈,例如:outlook.exe -> winword.exe -> cmd.exe -> powershell.exe
2.5)查詢所有觸發了上述執行鏈的受感染主機,並重復2.4)的步驟直到沒有新的執行鏈被發現為止
在分析完了以上這些,我們就可以新增對應的防禦和檢測措施了,例如:
1)通過應急響應 章節中提到的DNS Sinkhole來阻斷所有惡意域名的DNS請求
2)確保終端反病毒程式可以檢測並清理每個階段的惡意檔案
3)新增防火牆規則來阻止內網主機對惡意IP地址的訪問
4)隔離重灌已經感染的主機進行
5)重置受感染內網使用者的登入憑證
6)刪除所有企業使用者收到的來自同一惡意傳送者的郵件
7)將分析得出的IOC新增到IOC檢測平臺
8)依據已發現的Malware執行鏈新增新的入侵檢測規則
至此,我已簡單地介紹了一個相對完整的針對利用釣魚郵件入侵企業員工電腦並進而入侵內網的入侵事件的分析和防禦的方法與流程。