原文(binary defense):
https://www.binarydefense.com/white-papers/a-threat-hunters-checklist/
https://www.binarydefense.com/intro-to-threat-hunting/
名詞說明
| 英文 | 中文 | 備注 |
|---|---|---|
| threat hunting | 威脅狩獵 | 數世咨詢叫“威脅捕捉”,綠盟、安天叫“威脅捕獲”,天御叫“威脅獵殺”,也有叫“威脅狩獵”“威脅追蹤”的,這里統一叫“威脅狩獵”,如果以后統一了,再改 |
| threat hunter | 威脅獵人 | |
| check-list | 檢查清單 | |
| kill chain | 殺傷鏈 | 也有叫“攻擊鏈” |
本文講介紹威脅狩獵的概念、入門方法和必備知識,
什么是威脅狩獵
威脅狩獵是一種主動的、定期執行的安全任務,去發現未被檢測到的攻擊和系統入侵,通過對多種資料源(網路流量、服務器日志、終端日志中的行程樹和行為等)進行搜索,去查找例外行為或者攻擊技術留下的蹤跡,這不同于查找被用于已知攻擊的特定IP、域名或檔案哈希(威脅情報的IOC),威脅捕獲側重于發現隱藏在系統中的攻擊模式(攻擊者留下的蹤跡),
起步的建議
學習復雜的新技能,可以設定一個個的小目標,通過完成小目標獲得的快樂,來幫助自己前進,學習威脅捕獲也是這樣,從一兩個輸入開始,將每個新的資料源視為學習中的挑戰,這樣不會被海量的資料所淹沒,無所適從,
威脅捕獲的意義
為公司設計安全流程時,可以從攻擊者的角度入手,如果要攻擊公司的計算機系統,而不被發現,該怎么辦?這意味著所有的防御系統都是攻擊者所要克服的障礙,
作為防御方,要給攻擊者制造更多的障礙,設定探針和陷阱(蜜罐、蜜標及其他欺騙技術),盡早的在殺傷鏈中檢測到,并在遭受重大損失之前將其阻斷,保住關鍵基礎設施,
威脅捕獲的目標是能夠自動化的阻斷常見威脅,
防守方的建議
- 為了避免密碼泄露后被攻擊者利用,建議使用多因子驗證(MFA),
- 建議劃分網路,重要服務器、資料庫不能與員工作業站在同一網路,不同部門的設備也需要分開,所有設備都不能與處于公網的服務器在同一網路,
- 需要將這些設備都視作潛在威脅,初始的入侵點可能是員工作業站,也可能是一臺回應網路請求的服務器,
- 需要進行有效的郵件掃描和威脅檢測,因為很多威脅都是通過電子郵件傳遞的,
- 強制公司內部所有設備都是用公司的DNS服務器,并通過web代理來檢測所有http請求,因為很多惡意后門RAT通過DNS和http請求與CC服務端通信,
- 使用SSH和SFTP連接外部服務器,阻止少數員工的特殊需求,阻止其他不必要的網路連接,
- 不要假設埠上運行的總是被默認協議,有些惡意軟體通過53、80、443埠發送HTTP請求或者自定協議,
- 保持軟體更新,及時打補丁,優先修補可遠程執行或繞過身份驗證的高危漏洞
- 開啟防火墻,增加攻擊者橫向移動的難度,
開始增強檢測能力
安全團隊需要具備了最基本的控制能力,來阻斷威脅,盡量減少惡意軟體的影響,使作業變得高效,最終能夠發現針對性的攻擊,
如果沒達到這一步,安全團隊將疲于應對不斷發起的攻擊,忽視了攻擊細節,但不要阻止在建立安全控制的程序中開始進行威脅捕獲,早期發現的非針對性攻擊,也會幫助安全團隊連接安全控制最薄弱的地方,確定后面實施程序中的優先級,
清單:威脅捕獲需要收集什么
下面是推薦搜集的資訊:
1、終端事件日志
- 行程開始和結束事件
- 行程的命令列引數
- 行程加載的模塊(ddl)細節
- 每一個可執行檔案及加載模塊的哈希
- 每一個行程的數字簽名(可能會缺失)和版本資訊
- 行程輸出的檔案
- 行程所創建和寫入的注冊表的鍵值
- 行程的DNS查詢和網路通信
- 安全事件,包括登陸、登出,識別遠程主機
- web瀏覽歷史
2、網路事件日志
- 網路流(netflow)資料,指網路連接的元資料,非內容
- 監測到的網路協議
- 從網路中抽取的可執行檔案
3、服務器事件日志
- DNS查詢和回應日志(所有型別,包括TXT記錄)
- HTTP代理查詢和回應的元資料
- 防火墻日志(包括允許和阻斷的連接)
- DHCP日志(包含內網IP和主機名)
- 域控制器的權限認證日志
- 郵件日志,包括收發郵件的元資料
終端日志
最有價值的資料是收集作業站和服務器之間的記錄,包括攻擊者如何訪問系統,企圖從系統中獲取什么內容,這是因為攻擊者無論通過代理訪問還是加密流量,他們都必須再作業站或服務器上操作,來達到他們的目的
Sysmon
Sysmon 是微軟提供的一款收集終端日志的免費工具,屬于Windows Sysinternals工具集的一部分,Sysmon覆寫了很多重要日志,但不會記錄每一種型別,
下載地址:https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon
Sysmon V11與2020年4月發布,具有一些新的特性,例如DNS日志收集,保存洗掉或覆寫的檔案副本,對于很多惡意軟體,會洗掉其安裝檔案,,如果能夠恢復這些檔案對分析會很有幫助,
配置Sysmon
使用sysmon的第一件事就是創建組態檔,來指定需要收集的日志,你可能會想,“我使用默認配置,或者收集所有內容,忽略我不需要的”,但這是不對的,如果啟用了所有功能,大量詳細的資訊會讓你不知措辭,最好的方法是精心設計組態檔,從收集少量的日志型別開始,再逐步的添加新日志型別,
創建組態檔時,可以參考這些內容:
Swift On Security Sysmon配置示例:
https://github.com/SwiftOnSecurity/sysmon-config
Olaf Hartong Sysmon配置模塊庫(支持ATT&CK):
https://github.com/olafhartong/sysmon-modular
TrustedSec公司的Sysmon配置向導
https://github.com/trustedsec/SysmonCommunityGuide
通過對Swift On Security 配置示例的學習,你會快速了解過濾器的重要性,排除了對威脅狩獵無用的普通日志,不需要再被大量的噪聲日志所打擾,
Sysmon收集的日志,可以通過Event Viewer去查看(位于Applications and Services Logs/Microsoft/Windows/Sysmon/Operational),為了便于搜索多個終端的日志,需要將終端日志匯集起來,
可以參考微軟windows事件轉發指南:https://social.technet.microsoft.com/wiki/contents/articles/33895.windows-event-forwarding-survival-guide.aspx
也有其他的解決方案,例如Graylog, Splunk, and ELK (Elasticsearch-Logstash-Kibana), 也有用于威脅狩獵的開源專案HELK(https://www.confluent.io/blog/sysmon-security-event-processing-real-time-ksql-helk/)
終端日志能告訴我們什么
分析師收集終端日志之后,可以回答很多重要的問題,來幫助發現威脅,
隨著威脅主體所用技術的發展,分析師的檢查清單也需要隨之改變,一些長期有效的問題如下:
- 是否有Office行程(EXCEL.EXE,WINWORD.EXE)產生例外子行程,包括regsvr32.exe、rundll32.exe、powershell.exe、wscript.exe、cscript.exe等,
- 是否有行程從一個罕見目錄加載與系統庫相同名稱的dll,或者加載未簽名的dll?
- regsvr32.exe是否創建了PowerShell行程?
- 是否有系統工具在執行之前被復制到新檔案夾(特別是用戶組態檔下的檔案夾)或重命名?
- wscript.exe是否運行JScript檔案?
- 創建了哪些新的計劃任務?
通過回答這些問題,分析師可能發現,一些正常的合法的行程或腳本也可能會進行惡意活動,
總結來說,分析師首先收集待分析的日志,然后根據理解的威脅去查找攻擊行為,并且根據理解的正常行為去過濾那些誤報,最后仔細檢查剩下的告警,判斷是否為攻擊,
注冊表中創建和寫入的值
在注冊表中可以發現大量惡意軟體的痕跡,由于注冊表上的正常互動太多,對注冊表所有活動的監控不太可行,可以通過Process Monitor(微軟的工具,https://docs.microsoft.com/en-us/sysinternals/downloads/procmon ),觀察其所記錄的事件,大多數是注冊表事件,但如果要分析一種特定技術,可以通過過濾來篩選需要監控的注冊表事件,
示例
Microsoft發布了針對Windows后臺列印程式特權提升漏洞CVE-2020-1048的補丁程式,該漏洞可以使惡意軟體持久訪問,通過在PowerShell中以非特權用戶身份運行下面的命令,然后將可執行檔案“列印”到新埠,
Add-PrinterPort -Name c:\windows\system32\ualapi.dll
為了檢測使用這項技術的攻擊者,需要在下面這個注冊表的鍵中搜索內容為檔案的列印機埠:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports
檢查注冊表值,查找對可執行檔案的參考,尤其是以.exe或.dll結尾的檔案名,
在注冊表中可以找到許多用于持久化的惡意軟體技術,甚至是存盤在注冊表值中經過編碼或加密的惡意二進制代碼,在注冊表中搜索鍵和值是支持威脅狩獵的一項關鍵能力,
注冊表分為系統注冊表和用戶注冊表,用戶注冊表存盤于用戶目錄下的“ntuser.dat”檔案中,只有當用戶登錄時才會被加載,需要注意的是,收集有關注冊表寫入事件的事件資訊,存盤起來用于搜索,而不是在終端注冊表中進行實時搜索,
命令列審計
記錄命令列的引數,可以更詳細的發現入侵的流程,利用系統內置的工具,例如wscript、cscript、PowerShell、certutil、rundll32,可以繞過很多防護軟體,這些工具進行惡意活動的唯一跡象,來自于其命令列引數,通過修改windows組策略可以保存命令列引數,這項設定默認是禁用的,開啟方法如下:
啟動行程創建審計:Computer Configuration > Policies > Window Settings > Security Settings > Advanced Audit > Configuration > Detailed Tracking
啟動“Include command line in process creation events”策略:Administrative Templates\System\Audit Process Creation
參考:https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing
登錄登出事件
從Windows安全事件日志中獲取本地機器賬戶登陸登出日志,不需要做特殊的設定,將這些日志上傳到日志服務器,以免被攻擊者擦除或修改,
瀏覽記錄
在公司策略允許的情況下,瀏覽記錄將從web瀏覽器中匯出,上傳到日志服務器,搜索下載的zip、exe、vbs、jse、ps1或其他檔案,可能會發現惡意軟體安裝的第二個階段,
BrowsingHistoryView 是一款匯出瀏覽器記錄的軟體:
https://www.nirsoft.net/utils/browsing_history_view.html
網路日志
實踐中,惡意軟體和遠程操作的威脅主體都是通過網路進行通信的,網路流量監測室威脅狩獵的關鍵步驟,但流量數量大,通常是加密的,并且本質是私有的,這些因素使得獲得全部流量并詳細的審查變得困難,
網路流(netflow)
分析師從連接本身的元資料開始分析,比如哪些IP地址在什么時候與其他IP地址通信,使用什么埠上,傳輸了多少資料,哪一方發起連接,連接持續了多長時間,這種資料稱為netflow,網路工程師通過netflow來對判斷網路的狀況,但對于威脅狩獵,分析師還需要獲取網路流量的資訊,
沒有內容的元資料,似乎沒什么價值,但分析網路通信的模式,可以發現很多有趣的事情,比如內部作業站或服務器在很長的時間內,以固定的時間間隔,向外發出請求,對某些軟體來說,這種“心跳包”是正常的,但也有可能是某種C2的受控端,
小實驗:
1、統計外連數量最多的10個內網IP到外網IP的串列,
2、統計發送與接收位元組數之比最大的10個內網IP到外網IP的串列,對作業站來說,接收位元組數大約是發送的10倍,
3、統計連接時間最長的10個內網IP到外網IP的串列,
對于串列中的IP,排除正常的“例外”,剩下的例外通常很值得研究,
在Netflow中查到作業站之間的連接,除了員工在作業站上運行檔案共享服務,一般來講作業站之間不應有SMB連接,攻擊者進入內網后,通常會使用被盜憑證進行橫向移動,
還需要檢查連接到外網IP例外埠的連接,例如:
- 53埠的出站連接(需排除公司的DNS服務器),正常情況是連接公司的DNS服務器
- 445埠的出站連接,檢查SMB連接是否需要外連
- 22埠的連接,檢查某些部門或者小組與服務器連接情況
- 無法識別的埠,
如果已經收集了一些netflow資料,可以挖掘其中的一些模式,例如一臺接收和發送數量相同的計算機,很可能設為了代理或者中繼,這種內部代理通常被攻擊者實作攻擊的橫向移動,
檢測流量中的威脅
目前很多專案對網路流量中的內容進行分析,分析師可以利用這些專案來輔助分析,
開源軟體Zeek(以前叫Bro)可以檢測埠的網路協議、決議DNS請求和回應,檢測流量中的可執行檔案,發現罕見的網路流量,識別有用的網路模式,Zeek不存盤網路流量,只是生成日志資訊,可以匯入資料庫中,Zeek是一個對網路流量監測和分類的工具,但不是入侵檢測和防御工具,
另一個開源專案RITA使用Zeek輸出的日志來檢測網路中的惡意行為,可以和Zeek搭配使用,
Suricata是一種開源工具,可以檢測網路流量,并產生告警并阻斷(需設為“intrusion prevention”),也可以自行撰寫規則,來檢測特定威脅,例如下面這條Suricata規則,可以檢測CVE-2020-11651漏洞(SaltStack 權限繞過)的利用
alert tcp any any -> any 4506 (msg:”ET EXPLOIT Possible Saltstack Authentication Bypass CVE-2020-11651 M1”; flow:established,to_server; content:”_prep_auth_info”; reference:url,labs.f-secure.com/advisories/saltstack-authorization-bypass; reference:cve,2020-11651; classtype:attempted-admin; sid:2030071; rev:1; metadata:affected_product Linux, attack_target Server,deployment Perimeter, signature_severity Major, created_at 2020_05_01, updated_at 2020_05_01;)
一些開源專案和商業情報feed集成在一起,可以較好的檢測惡意軟體的通信模式,而不需要特定的IOC,可以避免更換IP、域名之類的問題
Zeek: https://zeek.org/
RITA: https://www.blackhillsinfosec.com/projects/rita/
Surricata: https://suricata-ids.org/
Open Source Suricata rules: https://rules.emergingthreats.net/open/suricata/rules/
服務器日志
大多數服務器會將其處理的請求保存下來,生成日志,有時,默認配置不足以支撐安全檢測或者威脅狩獵,需要修改配置,
常見的日志如下:
1、DNS的查詢和回應日志(所有型別,特別是TXT記錄);
2、HTTP代理查詢記錄和回應的元資料;
3、防火墻日志(包含允許和阻斷的);
4、DHCP日志(將內網IP和主機名關聯);
5、域控制器的權限認證日志
6、郵件日志,包括收發郵件的元資料,
DNS日志
假設組織內的網路限制只能使用指定DNS服務器,并且禁止DNS over TLS和DNS over HTTPS,以及外部的DNS查詢,那么對DNS日志進行分析,可能發現一些潛在威脅,
通過域名注冊資訊(whois記錄)來豐富DNS查詢記錄,可以發現那些剛注冊的域名,不在Alexa top 1M 的域名,由隨機字符組成的域名,以及可疑注冊機構注冊的域名,例如domains4bitcoins.com(name server/NS 記錄匹配*.bitcoin-dns.hosting),
某些惡意軟體使用DNS請求和回應作為通信信道來傳輸命令(甚至是第二階段的惡意軟體下載),通常來說,惡意軟體使用的是DNS TXT型別,這允許服務端的回應包含上百位元組,搜索罕見的模式,例如一個內網主機像一個可疑域名的成百上千的子域名發送DNS請求,或者回應包含很長的base64編碼的資訊,
HTTP web 代理日志
很多惡意軟體通過隱藏在正常流量中的HTTP協議與CC服務器通信,雖然請求看上去很正常,但通過對大量POST請求的分析,可以檢測到例外模式,除非用戶大量上傳圖片,或者發送大檔案,一般不會有頻繁的HTTP POST請求,一旦確定由惡意軟體通過HTTP請求通信,可以在代理日志中進行檢索,通過正則運算式是一個比較好的方法,惡意軟體的請求包含一定的隨機性,但隨機的部分也包含著某種規律,
防火墻日志
防火墻中的事件可以顯示連接被阻斷還是被允許,有時會觀察到一些被阻斷很多次的IP,還有通過各種方式連接,仍被阻斷的IP,這些噪聲可能是由于互聯網中埠掃描造成的,使用外部威脅情報可以快速的過濾掉這些噪聲,以便快速對日志進行分析,一旦確定了可疑IP地址,則需要在防火墻日志中檢索,來查看通信時間、目標內部主機、埠等內容,有的惡意軟體會在請求時加入隨機性,這種隨機也會存在某種規律,使用正則運算式通常可以匹配,
DHCP日志
動態主機配置協議(DHCP)日志對于威脅狩獵的意義不是很大,但是一旦發現存在可疑流量(尤其是很久以前的流量),將某個內部IP地址系結到特定主機,則可以對主機進行檢查,
域控制器權限日志
除了來自端點安全事件的本地身份驗證日志外,在域控制器權限日志中搜索帳戶的例外模式也很有用, 例如:在一天中的特殊時間(周末或假日)進行身份驗證;或者從該員工所在的世界各地的IP地址進行遠程身份驗證,即使是一家國際大公司,也不太可能檢測到來自世界兩個不同地方的員工登錄,
郵件服務器日志
由于大多數威脅都是通過電子郵件到達,通過搜索接收的電子郵件記錄以查找來自可疑外部發件人的訊息(包含指向可疑網站的鏈接)或具有不尋常附件(例如包含腳本檔案(.vbs 、. jse等)或可執行檔案, 在大多數情況下,最好的解決方案是使用電子郵件威脅掃描、威脅情報和過濾功能來阻斷威脅,對于檢測到的釣魚郵件,或者員工主動上報的釣魚郵件,快速掃描可以更有效的阻斷威脅,
其他日志
每個組織的架構不同,也會有一些特色日志,例如Web服務器的HTTP訪問和錯誤日志,VPN的日志等,對于定制開發的應用程式,通常也會有日志輸出,
蜜罐
除了所有被動的事件日志記錄之外,進行威脅狩獵的最佳資訊來源還在于網路內部部署的蜜罐,攻擊者與蜜罐的任何互動都應該觸發警報,并讓分析人員快速進行調查以確定誰在探索網路,
結論
對于威脅狩獵,最好的方法是從一小部分資訊源中收集少量日志,從小規模開始,建立查詢能力和威脅狩獵技能,然后開始增加可搜索原始資訊的數量和種類, 在不知不覺中,將非常熟悉環境中的“正常”狀態,以至于任何攻擊者都將很難融入并逃避,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/186550.html
標籤:其他
