freeBuf
主站

分類

漏洞 工具 極客 Web安全 系統安全 網絡安全 無線安全 設備/客戶端安全 數據安全 安全管理 企業安全 工控安全

特色

頭條 人物志 活動 視頻 觀點 招聘 報告 資訊 區塊鏈安全 標準與合規 容器安全 公開課

官方公眾號企業安全新浪微博

FreeBuf.COM網絡安全行業門戶,每日發布專業的安全資訊、技術剖析。

FreeBuf+小程序

FreeBuf+小程序

內網安全攻擊模擬和異常檢測規則實戰 金幣
2020-06-17 20:39:23

【活動預告】內網安全攻擊模擬和異常檢測規則實戰

【分享嘉賓】陳然

【嘉賓簡介】陳然(b0b@c),任職于某安全公司網絡安全部,負責內部安全異常檢測規則,包括內網滲透、威脅情報、攻擊模擬、攻擊特征提取、檢測規則工程化,目前致力于在安全運營框架下,構建基于ATT&CK模型的實戰攻擊模擬和檢測能力。

【活動時間】5月15日周五晚上19:00-20:00,60分鐘。

【活動形式】嘉賓通過文字形式,在“金融業企業安全建設實踐”、“企業安全建設實踐2群”微信群內就“內網安全攻擊模擬和異常檢測規則實戰”話題直播分享(約四十分鐘),之后是互動提問和回答(約二十分鐘)。

請大家安排好時間,準備好問題,積極參與。

提示:本文有7492字,閱讀大概需要35分鐘

----------------------------------------------------------------

以下是實錄:

大家好,我是陳然,目前在公司網絡安全部負責Threat hunting團隊,很高興有機會和大家分享。

隨著現在國家越來越重視信息安全,大型的“護碗”越來越多,也越來越逼近實戰,企業或者相關的組織機構也對這種實戰化的安全對抗越來越重視。

我們建立起內部安全的安全運營體系架構后,安全事件經歷頂峰后再次跌落到一個低谷。原因也很簡單,隨著我們發現了一些基礎的安全問題后,該補漏洞就補漏洞,該限制訪問就限制訪問,該處罰違規就處罰違規,基礎的一些安全攻擊已經被我們發現和攔截了。

但是我們真的安全了嗎?

最近兩年我們開始在內部進行常態化安全紅藍對抗,紅隊有我們專門承擔攻擊任務的安服團隊,也有我們內部安全的模擬攻擊隊(虛擬紅隊),前者更多是全階段攻擊模擬:偵查范圍、定位目標、設計攻擊方案、實施攻擊、達成目的;后者更多是分階段攻擊模擬:模擬某一個或者某幾個具體的TTPs,比如測試T1075– Pass the Hash的橫向移動在目標機器上正常執行。通過不斷的真實對抗,我們還是發現了很多問題,我們的網絡與信息系統依然面臨著不少風險,也存在著一些問題。

不得不說,攻擊隊師傅們的手法非常精妙啊,例如代碼審計出應用0day、權限維持框架工具重寫、各類白利用內存執行繞安全工具等等,思路也是清奇:從地下車庫或者角落里翻窗進入大樓啊,買一箱子零食繞保安進入公司、發郵件控終端耐心摸清上下游再脫域拿域管賬戶... 我們也是在一次次抵抗中不斷復盤總結,吸取經驗教訓。

我們的安全運營的監控體系在提升了覆蓋率和正常率之后,卻遇到了發現能力瓶頸,有價值的安全事件越來越少,為什么?經過思考,我們得出答案:

我們的監控體系在對抗一些高水平的攻擊手段上,現有的一些規則是不夠的。
陳然

我們安裝了WAF,網站日志也接進來了,怎么進入內網的?

答:釣魚進來的??!

  • 我們在員工電腦上進來是普通用戶,搞不了事情???

答:人家用白利用的提權方法!

  • 什么我們的EDR沒有監控到對方提取憑據,為什么?

答:人家直接在內存DUMP的!

  • 安裝了卡巴斯基,專治內存攻擊手法的,沒攔???

答:底層DLL和驅動已經被替換了!

  • 怎么一條日志沒有?

答:日志進程被Hook了??!

當攻擊技術能力超越你的防御檢測設備檢測能力的時候,整體安全能力就被限制了。所以需要提高我們對攻擊的了解程度,研究攻擊的原理,模擬攻擊的進行,提煉出檢測規則,去切實提高實戰對抗的能力。

談到攻擊,首先我們想到的是啥?對,沒錯,就是ATT&CK這個矩陣圖,但是這個東西真的太全了,太完整了,太復雜了。所以我們需要模仿ATT&CK建設一個自己的作戰地圖。根據我們自己的資產的現狀,結合我們自己滲透的經驗,加上和大家一起頭腦風暴,我們構建了自己的作戰地圖。

我會發一下作戰地圖的圖片,給大家一點點時間,看一下,可能比較長,后面有興趣的可以慢慢看。(圖片過大無法上傳公眾號,鏈接:https://pan.baidu.com/s/1YiKfuN-YiktMDaHAWUg3WA 密碼:u71w)

從滲透的階段來講,大概可以分為一下幾個階段

v2-78f0be4d27438428e5db640395c88870_720w

由于現在網絡邊界的檢測大家都很重視,WAF或者IPS/IDS一類的設備也很多,在縮小攻擊面這件事上大家也都很努力的去做,所以邊界攻擊的檢測相對是充足的,缺乏的是在突破邊界后的檢測能力,于是我們重點選取了以下幾個階段,進行攻堅。

初期我們做了這幾個領域:

  • 權限提升
  • 權限維持
  • 憑據竊取
  • 橫向移動

在這幾個領域舉幾個例子:

1、權限提升

我們來看看MSF的Meterpreter中的GetSystem,我們知道這個命令可以用來提權,但是為什么呢,怎么檢測呢?

v2-bff91159c2ffe56aa716390b10090d2a_720w

  • 可以看到GetSystem的基本原理流程,GetSystem創建一個新的Windows服務,并將其設置為連接命名管道時以SYSTEM身份運行。
  • GetSystem生成一個進程,該進程會創建一個命名管道并等待來自上述服務的連接。
  • Windows服務啟動,連接到命名管道。
  • 上面生成的進程接收連接,并調用ImpersonateNamedPipeClient,這樣就會為SYSTEM用戶創建一個模擬令牌。

然后,我們只需用新收集的SYSTEM模擬令牌生成cmd.exe,這樣,我們就獲得了一個具有SYSTEM權限的進程。

當然,這里涉及到一個Windows用戶模擬的概念:Windows操作系統允許一個進程模擬另一個用戶的安全上下文,安全上下文當初當然包括權限。例如FTP賬戶啟動的FTP服務進程可以模擬用戶USERA的權限去訪問一個文件夾,提供讀寫功能等。

https://docs.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-impersonatenamedpipeclient?redirectedfrom=MSDN

v2-7830c90d2b2454a684d647f255e6dbb1_720w

于是我們知道這個提權的關鍵點在于管道PIPE,慶幸的是,經過測試我們可以找到相關的特征,于是規則也就可以做出來了。

v2-5eb67bc4330d09d7d5bf5f85961037f4_720w

2、BypassUAC

這個我們是根據MSF的源代碼進行一些分析,我們可以很輕松的在Rapid7的GitHub賬號上找到開源的MSF的1代碼。

v2-c12c6f30c10e1ab23b917f346942886b_720w

我們隨機提取一個Injection的例子,我們再來看看他的描述

v2-3a4d6058e143d0858e7910d36548963f_720w

這里用到了Windows下的內存對抗技術,反射性DLL注入,什么是反射性DLL注入呢?

我們先來說說進程注入,注入惡意Payload:

  • OpenProcess 可以打開目標進程
  • VirtualAllocEx 在目標進程中分配一塊內存區域
  • WriteProcessMemory 在剛剛分配的內存區域中寫入惡意的Payload

以上3個函數可以實現Payload的注入,這些都是Windows的一些API。

再來看看反射DLL注入(這個DLL可以是本地的,也可以是網絡的):

  • 使用RWX權限打開目標進程(OpenProcess),并為該DLL分配足夠大的內存(VirtualAllocEx)。
  • 將DLL復制到分配的內存空間(WriteProcessMemory)。
  • 計算DLL中用于執行反射加載的導出的內存偏移量(GetReflectiveLoaderOffset)。
  • 調用CreateRemoteThread(或類似的未公開的API函數RtlCreateUserThread)在遠程進程中開始執行,使用反射加載函數的偏移地址作為入口點。
  • 反射加載函數使用適當的CPU寄存器查找目標進程的進程環境塊(PEB),并使用它查找內存中的地址kernel32.dll以及任何其他所需的庫。
  • 解析的KERNEL32出口目錄中找到所需的API功能,如內存地址LoadLibraryA,GetProcAddress和VirtualAlloc。
  • 使用這些函數,然后正確加載DLL(本身)到內存中,并調用它的入口點,DllMain。

所以我們需要使用EDR 去Hook這些關鍵的函數,然后利用獲取到進行注入的源進程名、目標進程名去判斷,有大廠背書簽名的,自己注自己的(比如Google的Chrome)的暫且放過,剩下的就可以去排查排查。

當然,這樣也有問題,如果簽名被盜用怎么辦?如果大廠軟件程序被感染怎么辦?這就需要依賴其他規則去檢測這幾方面的問題了。

v2-72065178069291f51641eb975054e52d_720w

然后我們說下權限維持中的例子。

3、Windows Library-MS持久化

這個東西的典型例子是我的文檔,他不是一個文件夾,本質是就是這樣一個XML文件。

v2-b5b2b77030d91204b0005e85a416241e_720w

這個利用過程如圖:

v2-39613dd936553c739df0164adf1ba992_720w

我們可以添加一個CLSID,里面有一個URI 寫到XML里面。

v2-e8476490d004d0612e32f8cd24b1ebe6_720w

根據這個URL的位置改成自己惡意程序注冊的那個就可以了,下次用戶打開這個XML對應的路徑就可以引起你的后門上線。

這個注冊是要在注冊表里生成新的鍵值的,所以還是要監控注冊表。

4.憑據竊取。

大家都知道一個很常用的叫做Mimikatz的憑據提取工具,大部分殺軟對這個程序都是查殺的。

但是如果對方使用的是PowerShell版本的 VBS版本/JS版本/C#版本的Mimikatz,還有多少能查殺呢?

如果對方并沒有上傳Mimikatz,而是直接任務管理器轉存了lsass.exe的內存,Dump下來,在攻擊者本地上跑Mimikatz,那是不是我們就無能為力了?

大家如果是Windows機器,可以打開任務管理器,找到lsass.exe進程,右鍵都會有一個轉儲功能。會生成一個文件,攻擊者拖回去,就可以拿到賬號對應的密碼或者密碼的Hash值。

為了應對這個問題,我們是這么解決的:

監控所有針對lsass.exe進行Dump行為的程序,當然或者Winlogon這個進程,因為這兩個進程都是存儲Windows憑據的地方,尤其是lsass.exe。

然后去日志里面收集所有有過相關操作的進程名稱,經過篩選后設計了一個白名單,凡是在白名單中的進程Dump Lsass進程的內存,我們就忽略,否則就報警。

這樣無論你是什么編程語言修改后的Mimikatz,或者哪怕你不是Mimikatz,你是Kekeo、Rubeus、ProcDump等等,只要你嘗試讀取關鍵進程的內存,我們都會告警。

再舉一個橫行移動的例子吧,說個簡單些的PsExec,利用一些網絡流量特征、注冊表特征,可以輕松的獲取特征。

PsExec本質上是一個MSRPC調用的過程,例如psexec.exe \\xxxxxx xxxxx

Psexec 首先向EPM服務也就是135端口發起一個查詢,查詢到SCMR ncacn_ip_tcp用到的Endpoint ,會獲取到一個端口,然后連接這個端口進行BIND,調用這個端口的開放的接口函數,創建遠程的服務,或者執行一些命令獲取結果。這個過程勢必要要改動注冊表。

v2-f1d24f51100e483f0e8b7ee37d8ace42_720w

我們進行繞過測試,在客戶端把PsExec改成中文且去掉了文件屬性,我們還客戶化了目標服務名稱,發現目標服務的文件屬性還是會有原來的屬性,而且注冊表的關鍵字不受影響。

特征很明顯。此外由于這個網絡通信近乎于明文,在流量上檢測,也是很可行的一種方法。

但是這類工具有很多新的演變,例如smbexec.py等,使用了SMB3.0協議后,很多通信內容進行了加密,在流量側進行檢測,就難度很大了。

我們總結一下,雖然攻擊技術各有各的實現原理,但終歸還是利用操作系統自己設計機制的一些脆弱性,從攻擊檢測的角度來講,我們還是要把檢測點更加貼近這些機制的,而不僅是使用一些進程信息、網絡連接信息這些相對容易被篡改的地方,例如:

  • 監控一些重點注冊表項,尤其是關于注冊COM組件的地方和一些關于服務啟動過程中會帶起的一些進程的地方(俗稱白利用)。
  • Hook一些關鍵的系統API調用,例如在ALSR場景下導出具體函數或者模塊地址的API,以及那些和注入相關的API。
  • 關注一些重點進程及其相關服務的異動,例如lsass.exe的Dump行為等等、或者一些高權限進程或服務對管道的連接。

順便提一句,最近比較火的pipePotato提權,也利用了管道方面的技術,管道檢測可以作為參考。當然,對于由于漏洞引起的一些攻擊行為,修復漏洞是最好的防御手段。

由于時間所限,不能分享每一個技術點的檢測方式,但基本思路都是類似的,實戰攻擊-提煉異常特征-制定規則-工程化。

期待與大家多多交流,共同進步,謝謝大家。


提問環節

Q:感謝分享,都是精華。有個疑問請指教,對于API、注冊表等的一些Hook、監控,殺毒軟件應該可以實現一部分吧,殺軟覆蓋可能不全。

A:殺軟、主防、HIDS都可以實現一些,不過可能沒辦法自己添加規則,很全的目前還比較少見。

---------------------------------------------------------------

Q:你們是到了內核層么?天擎EDR+ Sysmon(有用么) ?

A:Hook了一些內核函數吧。

---------------------------------------------------------------

Q:感謝,還想請教您前面提到的類似“我安裝了卡巴斯基,專治內存攻擊手法的,沒攔???答:底層DLL和驅動已經被替換了!”如何解決的?

A:本質上是動lsass.exe,我們現在把所有動lsass.exe的進程全部提取出來,去對照白名單。

---------------------------------------------------------------

Q:域特有的規則集呢?比如不從終端拿Hash密碼,DCSync Dump。

A:基于流量的NTA的設備可以直接檢測DCSync,內部也是這么用的。

---------------------------------------------------------------

Q:大佬再問一個問題,你們Win建模的維度有哪些哦?1. 進程 2. Win事件日志3. 網絡流量(本機 NIDS)4.注冊表等?

A:這些事都包括的,還有服務、管道、如果后面發現了更多的,就繼續完善。

--------------------------------------------------------------

Q1:ATT&CK攻擊模型描述的有些范,各家理解都不一樣。

A1:所以一開始我們弄了一個自己的地圖

Q2:那就是大家追求的指標不是覆蓋率,那是啥?可測評的覆蓋率?

A2:我看到里面還有音頻視頻攻擊,可能和不少企業的業務都不相關,所以這種覆蓋率沒必要追求吧,優先搞和自己相關的。

---------------------------------------------------------------

Q:發現一個現象 ATT&CK攻擊模型大家聊的大部分都是Windows Linux說的很少,現在企業部署的應用80%都是Linux承載 搞的這個事就成了噱頭了 不解決實際問題

A:也有很多公司線上業務少,辦公網占比可能比較大。

補充:實戰對抗時,Windows被突破的比較多。不是Linux多就是問題的關鍵點。被暴打被撕開的點,除了遠程RCE,就是終端。

---------------------------------------------------------------

Q:感覺大部分還是依靠攻擊的行為來分析,但是這個東西對于大部分企業來說維護有點困難啊,變形也很多!之外有沒有可其他方式呢?還有一個就是現在中小企業Linux居多這塊有好點檢測規則之類的東西嘛

A:Linux多用在機房吧,這邊主要還是針對辦公內網等進行的一些,Linux其實思路也差不多,通過攻擊復現的方式查找思路,Liunx的日志比Windows好很多,其實相對更容易些。

補充:其實剛才陳然也講到很多,攻擊要分析到原理層。像是我們針對Lsass的權限申請或者內存讀取,達到了以不變應萬變的憑據提取攻擊。無論是怎么樣的憑據提取攻擊,原理到最后都是要讀這個Lsass認證進程的內存。監控到這個核心行為就好。

---------------------------------------------------------------

Q:陳總,好。在分配的內存區域中寫入惡意的Payload,是否需要具備一定的前置條件?

A:需要讀寫權限,對應進程內存的讀寫權限。但是如果沒有對應進程的讀寫權限,也有辦法,可以開一個線程執行你上傳的Payload。但是只殺要有創建進程、線程的權限。

---------------------------------------------------------------

Q:陳總,請問您關于日常運營告警數量級是怎么樣的,另外,有沒有技巧來快速判斷。

A:單條數量級一般是有要求的,比如每天不能超過10條或者20條,當然也需要根據告警對應的攻擊造成的影響和后果判斷,總量肯定是考慮團隊承受程度。

---------------------------------------------------------------

Q:在護碗行動中利用終端攻擊的比例大概有多少?

A:比例不好說,但概率是100%,一方面是正面打線上系統,另一方面就是打終端然后打域控等核心拿內網。

---------------------------------------------------------------

Q:我也有這個感覺,案例十分精彩,但是一下子深入到了某一個漏洞,在補丁尚未出來之前,那真的就是靠行為,攻擊隊的技術能力超過檢測能力的時候確實就發現不了,而企業有比較大的概率無法超過攻擊隊,比如說即使是紅藍對抗成熟的企業,肯定也有沒掌握和不曾被發現的手法,難道就做不了防御了么?顯然不是的,再以金融為例,也可能會以白名單進程、白名單網絡、黑名單行為等等彌補措施來護碗,在這個方面,陳師傅有沒有嘗試過在某個漏洞之上一層,想過這樣的痛點或者建議,就是即使攻擊隊掌握了0day,攻擊手法沒有被發現,只要做到了某些層面,也能發現和應急。

A1:規則不可能解決所有攻擊,比如PTH就很難,但是異常行為模型可以,你的ip不是這個賬號,你今天認證了這個賬號就有問題,需要互補。

打內網的目的并不一定是為了打域控,攻擊的本質是信息收集、分析和關聯,而傳統內網里的敏感信息最多。打內網的話找數據更能得利,還不易被發現,只是說護碗而言終端分太低了,和域控這種核心相差幾百倍。

我們有一點惡意行為的監測,思路不大一樣,倒不是去監測未知的攻擊手法,而是做了些行為分析。攻擊者通過位置手段控制了一個終端,他總要干些壞事啊,在內網Wiki搜密碼,在內網IM搜密碼,用自己賬號試著登陸些公司內部IT系統。假如這個用戶在非常用時間非常用地點 非常用IP段登陸系統,或者短時間大量風險行為,我們也有模型告警。

打內網的目的并不一定是為了打域控,攻擊的本質是信息收集、分析和關聯,而傳統內網里的敏感信息最多。


企業安全建設,離不開“守望相助”。金融業企業安全建設微信群,入群方式:請加以下微信為好友,備注:姓名-公司-負責領域。銷售從業人員暫時不邀請入群,不保證每位申請者入群,敬請諒解。

掃一掃,加入企業安全建設實踐群

v2-0fe4397a7aad0c88a3b917bfd29f904c_720w

未能加入“企業安全建設實踐群”的朋友,可以加入知識星球,查閱每周實踐群討論話題和發言記錄。

知識星球:金融企業安全建設實踐

https://t.zsxq.com/EuFyjAm (二維碼自動識別)

附注:

  • 聶君,信息安全從業人員,十余年金融行業信息安全從業經歷,默默無聞。好讀書,不求甚解。性格開朗,愛好足球。
  • 本訂閱號文章是個人對工作生活的一些體驗和經歷分享,站在不同角度和立場解讀會有偏差,見仁見智,不求正確統一,但求真、善、美。

本文作者:, 轉載請注明來自FreeBuf.COM

# 內網安全檢測
被以下專輯收錄,發現更多精彩內容
+ 收入我的專輯
評論 按熱度排序

登錄/注冊后在FreeBuf發布內容哦

相關推薦
  • 0 文章數
  • 0 評論數
  • 0 關注者
登錄 / 注冊后在FreeBuf發布內容哦
收入專輯
四月天小说网