原文地址:Red-Team-Infrastructure-Wiki
譯者:MyKings
- 設計注意事項 (Design Considerations)
- 功能分離 (Functional Segregation)
- 使用轉向器 (Using Redirectors)
- 設計舉例 (Sample Design)
- 更多資源 (Further Resources)
- 域名 (Domains)
- 分類和黑名單檢查資源列表 (Categorization and Blacklist Checking Resources)
- 釣魚 (Phishing)
- 基於 Web 的釣魚 (Easy Web-Based Phishing)
- Cobalt Strike 釣魚 (Cobalt Strike Phishing)
- 網絡釣魚框架 (Phishing Frameworks)
- 轉向器 (Redirectors)
- SMTP 協議 (SMTP)
- Sendmail 軟件 (Sendmail)
- 移除之前的服務器頭 (Remove previous server headers)
- 配置一個通用地址 (Configure a catch-all address)
- Postfix 軟件 (Postfix)
- Sendmail 軟件 (Sendmail)
- DNS 協議 (DNS)
- socat 之 DNS (socat for DNS)
- iptables 之 DNS (iptables for DNS)
- HTTP[S] 協議 (HTTP[S])
- socat 與 mod_rewrite (socat vs mod_rewrite)
- socat 之 HTTP (socat for HTTP)
- iptables 之 HTTP (iptables for HTTP)
- ssh 之 HTTP (ssh for HTTP)
- Payloads 和 Web 重定向 (Payloads and Web Redirection)
- C2 重定向 (C2 Redirection)
- C2 使用 HTTPS 重定向 (C2 with HTTPS)
- 其他 Apache mod_rewrite 資源 (Other Apache mod_rewrite Resources)
- 修改 C2 流量 (Modifying C2 Traffic)
- Cobalt Strike
- Empire
- 第三方 C2 頻道 ([Third-Party C2 Channels)
- Domain Fronting 技術 (Domain Fronting)
- Domain Fronting 更多參考 (Further Resources on Domain Fronting)
- PaaS 重定向 (PaaS Redirectors)
- 其他第三方 C2 (Other Third-Party C2)
- 隱蔽基礎設施 (Obscuring Infrastructure)
- 保護基礎設施 (Securing Infrastructure)
- 自動部署 (Automating Deployments)
- 提示&建議 (General Tips)
- 感謝列表 (Thanks to Contributors)
一、設計注意事項
1.1 功能分離
在設計紅隊的網絡基礎設施架構時,要考慮到否能夠提供長期(數周、數月、數年)和穩定的響應服務,這要根據功能來拆分每個資產服務,這一點非常重要。當網絡對抗中的資產服務被(藍隊)發現時,將會造成對方的警覺。 而功能分離的好處是當紅隊的網絡釣魚電子郵件評估系統被識別出來時,紅隊只需要重新創建一個新的SMTP
服務器和Payload
主機即可,而不是重新搭建整套網絡的基礎設施。
在不同資產(服務器)上分離這些功能:
- SMTP 釣魚
- 釣魚使用的 Payloads
- 長期的 C2(Command and Control)
- 短期的 C2(Command and Control)
每次社工活動都可能需要這些功能,由於紅隊具有主動出擊的特性,所以每一次活動都需要重新部署一套新的基礎設施(功能資產模塊化)。
1.2 使用轉向器
為了進一步提高系統彈性和隱蔽性,每個後端資產(即團隊服務器)都應該在其前面放置一個轉向器(redirector)。 這樣的目的是保證目標和我們的後端服務器之間間接的建立連接。 這種方式有兩種好處:1.是能夠解耦各個功能資產服務;2.是能夠達到隱蔽效果。當某一個資產服務被藍隊發現時,無需部署整套後端服務,便可進行遷移會話、重連接後端的未焚毀的資產等。
常見的轉向器(redirector)類型:
- SMTP
- Payloads
- Web 流量
- C2 (HTTP[S]、DNS、等)
每個轉向器(redirector)類型都有多個最適合不同場景的實現選項。 這些選項將在本文的轉向器部分進一步詳細討論。 這裡的轉向器(redirector)可以是VPS
主機、專用服務器、甚至是在 PaaS
上運行的應用程序。
1.3 設計舉例
下面這個樣例,使用了功能分離和轉向器(redirector)的設計思路。其中LT DNS C2
代表長期的 DNS C2 服務; ST DNS C2
代表短期的 DNS C2 服務;ST HTTP C2
代表短期的 HTTP C2 服務。
Infrastructure for Ongoing Red Team Operations – Raphael Mudge
Advanced Threat Tactics (2 of 9): Infrastructure – Raphael Mudge
Cloud-based Redirectors for Distributed Hacking – Raphael Mudge
6 Red Team Infrastructure Tips – Alex Rymdeko-Harvey (@killswitch-gui)
How to Build a C2 Infrastructure with Digital Ocean – Part 1 – Lee Kagan (@invokethreatguy)
Automated Red Team Infrastructure Deployment with Terraform – Part 1 – Rasta Mouse (@_RastaMouse)
二、域名
根據目標所使用的產品及其構造,來選擇具有迷惑性的域名至關重要。 由於,選擇一個適用於你目標的域名是非常繁瑣和“無規矩”可尋的。OSINT(開源情報收集)可以更好的幫助推測管理所需要的資源,這個很重要(開源情報的重要與便利性)。 慶幸的是域名商也需要知道域名的狀態與資產信息,並且他們提供了一些查詢接口,這也會我們創建了一些便利的條件。
expireddomains.net 是一個收集最近過期或已丟棄域名的引擎。 它提供了搜索和高級過濾,例如:到期時間、反向鏈接數量、archive.org快照數量、SimilarWeb 分數。 使用 SimilarWeb 網站,我們可以註冊預先使用的域,這些域將與目標域名的年份相同,會使它看起來與我們的目標域類似,使他融入我們的目標網絡來迷惑對手。
Removing Headers from Postfix setup
配置一個通用地址
這會將會把收到的任何電子郵件轉發到*@phishdomain.com
到選定的電子郵件地址。這對於收到任何響應或反彈到釣魚郵件非常有用。
echo PHISH-DOMAIN >> /etc/mail/local-host-names
在/etc/mail/sendmail.mc
的//Mailer Definitions//
(結尾處)之前添加以下行:
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
將以下行添加到/etc/mail/virtusertable
結尾:
@phishdomain.com external-relay-address
注意:這兩個字段應該以製表符(/t)分隔
4.1.2 Postfix 軟件
Postfix
提供了一個更容易替代Sendmail
而且提供了更好的兼容性。 Postfix
還為Dovecot
提供全面的IMAP
支持。這使得測試人員能夠實時地與對原始消息做出響應的釣魚攻擊目標相對應,而不是依靠全部通訊地址,並且必須使用釣魚工具創建新消息。
Julian Catrambone’s(@n0pe_sled)提供了一個設置Postfix
郵件服務器進行網絡釣魚的完整指南Mail Servers Made Easy。
4.2 DNS 協議
4.2.2 iptables 之 DNS
iptables
轉發DNS
規則已被發現可與Cobalt Strike
配合使用。 貌似socat
暫時還處理不了這類流量的問題(NAT穿透)。
下面是一個DNS
轉向器規則集示例:
iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination <IP-GOES-HERE>:53
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -I FORWARD -j ACCEPT
iptables -P FORWARD ACCEPT
sysctl net.ipv4.ip_forward=1
另外,將“FORWARD”鏈策略更改為“ACCEPT”。
DNS重定向也可以在NAT後面完成
有時候可能需要在內部網絡上託管C2
服務器。 使用iptables
、socat
和反向SSH
隧道的組合,我們可以通過以下方式實現這一點。
要在服務器上自動設置Apache
的mod_rewrite
重定向器,請查看 Julain Catrambone’s(@ n0pe_sled) 博客文章Mod_Rewrite Automatic Setup 和 accompanying tool。
4.3.6 C2 重定向
重定向 C2 流量的意圖有兩方面:隱藏後端服務器;蒙蔽相關的調查者,讓他們以為這是個合法網站。 通過使用Apache
的mod_rewrite
和自定義C2配置文件或其他代理(比如使用Flask),我們可以高效的過濾出來自調查 C2 的真實流量。
- Cobalt Strike HTTP C2 Redirectors with Apache mod_rewrite – Jeff Dimmock
- Securing your Empire C2 with Apache mod_rewrite – Gabriel Mathenge (@_theVIVI)
- Expand Your Horizon Red Team – Modern SAAS C2 – Alex Rymdeko-Harvey (@killswitch-gui)
- Hybrid Cobalt Strike Redirectors – Zach Grace (@ztgrace) and @m0ther_
C2 使用 HTTPS 重定向
基於上述 “C2重定向”,另一種方法是可以在重定向服務器使用Apache
的SSL
代理引擎來接受入站SSL
請求,並將這些請求代理到HTTPS
反向偵聽器上。 整個階段使用加密,你可以根據需要在轉向器上轉發SSL
證書。
假如你已經使用了LetsEncrypt(aka CertBot),為了使你的mod_rewrite
規則能夠工作,你需要在“/etc/apache2/sites-available/000-default-le-ssl.conf” 安裝配置你的證書。 另外,要啟用SSL ProxyPass
引擎,相關配置如下:
# Enable the Proxy Engine
SSLProxyEngine On
# Tell the Proxy Engine where to forward your requests
ProxyPass / https://DESTINATION_C2_URL:443/
ProxyPassReverse / https://DESTINATION_C2_URL:443/
# Disable Cert checking, useful if you're using a self-signed cert
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
4.3.7 其他 Apache mod_rewrite 資源
- Automating Apache mod_rewrite and Cobalt Strike Profiles
- mod-rewrite-cheatsheet.com
- Official Apache 2.4 mod_rewrite Documentation
- Apache mod_rewrite Introduction
- An In-Depth Guide to mod_rewrite for Apache
- Mod_Rewrite/.htaccess Syntax Checker
五、修改 C2 流量
5.1 Cobalt Strike
Cobalt Strike
通過Malleable C2
配置文件修改其流量。 配置文件提供了高度可定製的選項,用於修改服務器的C2
流量在線路上的形式。 Malleable C2
配置文件可增加強事件響應的規避,使用的合法內部應用程序冒充已知對手或偽裝目標。
- Malleable C2 Profiles – GitHub
- Malleable Command and Control Documentation – cobaltstrike.com
- Cobalt Strike 2.0 – Malleable Command and Control – Raphael Mudge
- Cobalt Strike 3.6 – A Path for Privilege Escalation – Raphael Mudge
- A Brave New World: Malleable C2 – Will Schroeder (@harmj0y)
- How to Write Malleable C2 Profiles for Cobalt Strike – Jeff Dimmock
5.2 Empire
Empire
可以用使用Communication Profile
定製配置,它可以提供對 URI、User-Agent、Header定製選項。 profile 文件由每個由管道符(|)分隔元素,並使用listeners
上下文菜單中的set DefaultProfile
進行設置。
以下是一個示例 Profile:
"/CWoNaJLBo/VTNeWw11212/|Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.1)|Accept:image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*|Accept-Language:en-en"
DefaultProfile
的值可以通過Empire
的初始化之前修改/setup/setup_database.py
來設置。除通過Communication Profile
之外,你可以考慮按照Joe Vest’s(@joevest)發布的步驟定製Empire
服務器的 URI、服務器頭和默認網頁內容Empire – Modifying Server C2 Indicators。
- Default Empire Communication Profiles (in Empire GitHub repo)
- How to Make Communication Profiles for Empire – Jeff Dimmock
六、第三方 C2 頻道
自己創建一個可信的合法化的 Web 服務用於C2
,這需要你有足夠的相關知識儲備,而且使用的技術越來越複雜,運維管理的時間也越來越高。這裡介紹一種利用第三方服務Domain Fronting
進行C2
重定向。
6.1 Domain Fronting
Domain Fronting
是一種被審查制度規避服務和應用程序用於通過合法和高度信任的域進行流量傳輸的技術。 支持Domain Fronting
的熱門服務包括Google App Engine、Amazon CloudFront和Microsoft Azure。 簡而言之,流量使用受信任的服務提供商的DNS
和SNI
名稱。拿 Google 舉一個例子,當邊緣服務器接收到流量時(例如:位於gmail.com)數據將被轉發到數據包的主機頭中指定的原始服務器(例如:phish.appspot.com),根據服務提供商的不同,原始服務器會直接將流量轉發到指定的域,這裡可以是我們的(C2)服務器或者使用代理應用來執行最終跳轉。
八、保護基礎設施
攻擊基礎架構也可能會受到與任何其他聯網主機相同的攻擊,並且由於正在使用的數據和連接到目標環境中,這些都被視為高度敏感的。
在2016年,遠程代碼執行漏洞被披露在最常見的攻擊工具上:
- 2016 Metasploit RCE Static Key Deserialization
- 2017 Metasploit Meterpreter Dir Traversal Bugs
- Empire Fails – Will Schroeder
- Cobalt Strike 3.5.1 Important Security Update – Raphael Mudge
iptables
應該用於過濾不需要的流量並限制所需基礎架構模塊之間的流量。 例如,如果Cobalt Strike
服務器僅將資產提供給Apache
轉向器,那麼iptables
規則應該只允許來自轉向器源IP
的 80 端口。 這對於任何運維管理都尤為重要,如SSH
或Cobalt Strike
的默認端口50050 還要考慮阻止非目標國家 IP。 作為替代,請考慮使用由 VPS 提供商提供的管理程序防火牆。 如:Digital Ocean提供可以保護一個或多個資產的 Cloud Firewalls雲防護。
chattr
可以在團隊服務器上使用,以防止修改cron
目錄。 使用chattr
你可以限制任何用戶(包括root)在修改文件之前刪除chattr
屬性。
SSH
應僅限於公鑰認證,並配置為使用受限權限的用戶進行初始登錄。 為了增加安全性,請考慮將雙因子驗證添加到 SSH。
更新升級
定期更新系統升級漏洞補丁也是非常重要的。
當然,這份清單並不詳盡,你可以做什麼來保護團隊服務器。 可參考下面的常見強化實踐:
- Red Hat Enterprise Linux 6 Security Guide
- Debian Documentation on Hardening
- Securing Debian Manual
- 20 Linux Server Hardening Security Tips – nixCraft
- SANS Linux Security Checklists
- Docker Your Command & Control (C2) – Alex Rymdeko-Harvey (@killswitch_gui)
特定的加固資源
網上有許多可用的資源來討論基礎設施的安全配置和設計。 並非每種設計考慮都適合每種攻擊基礎架構,但了解可用選項和其他測試人員正在做什麼很有用。
以下是其中一些資源:
- Responsible Red Teams – Tim MalcomVetter (@malcomvetter)
- Safe Red Team Infrastructure – Tim MalcomVetter (@malcomvetter)
- Red Team Infrastructure – AWS Encrypted EBS – @_rastamouse
九、自動部署
本文所講的紅隊基礎設施建設,真正建設時這需要耗費大量的時間來設計和實施。 而自動化可用於大大縮短部署時間,使你能夠在更短的時間內部署更複雜的設置。
查看有關攻擊基礎架構自動化的這些資源:
- Automated Red Team Infrastructure Deployment with Terraform – Part 1 – @_RastaMouse
- Automated Red Team Infrastructure Deployment with Terraform – Part 2 – @_RastaMouse
- Mod_Rewrite Automatic Setup – Julian Catrambone (@n0pe_sled)
- Automated Empire Infrastructure – Jeremy Johnson (@beyondnegative)
- RTOps: Automating Redirector Deployment With Ansible – Kevin Dick
- Automating Gophish Releases With Ansible and Docker – Jordan Wright (@jw_sec)
- Red Baron GitHub Repo – Marcello (@byt3bl33d3r)
- Automating Apache mod_rewrite and Cobalt Strike Malleable C2 for Intelligent Redirection – Joe Vest (@joevest)
十、提示&建議
-
記錄一切 – 運行複雜的紅色團隊基礎設施意味着許多移動部件, 務必記錄每項資產的功能以及其流量的發送位置。
-
在不同服務提供商和地區之間分割資產 –
基礎設施資產應分佈在多個服務提供商和地理區域。 藍隊成員可能會針對被確認為主動攻擊的提供商提高監控門檻,甚至可能徹底阻止給定的服務提供商。 注意:如果跨邊界發送加密或敏感數據,請記住國際隱私法。 -
不要過度設計 – 人們很容易對先進技術感到興奮,並想把一切都應用到目標上。 如果你正在模擬特定的敵對威脅,只能假扮利用真正的威脅使用的技術或技能。 如果你的紅隊會長期攻擊同一目標,在你的評估中應該考慮“簡單”的通過更先進的諜報工作。 紅隊應該循序漸進的推動藍隊向前發展,而不是將所有火力開到最大來攻擊藍隊,這可能會打垮藍隊並延緩藍隊學習與向前發展的進程。
-
監控日誌 – 在整個參與過程中應監視所有日誌:SMTP日誌、Apache日誌、socat轉向器上的tcpdump、iptables日誌(特定於流量轉發或目標過濾)、weblogs、Cobalt Strike/Empire/MSF日誌。 將日誌轉發到日誌服務器,例如rsyslog,以便於監控。 操作員終端數據保留可能會在操作過程中用於檢查歷史命令的使用情況。 @Killswitch_GUI 創建了一個名為 lTerm 的易於使用的程序,它將所有 bash 終端命令記錄到一個中心位置。 Log all terminal output with lTerm
-
設置高價值事件告警 – 配置攻擊基礎架構以生成高價值事件的警報,例如新的 C2 會話或憑證捕獲匹配。 實現警報的一種流行方式是通過聊天平台的API,比如 Slack,查看以下關於 Slack 警報的相關文章: Slack Shell Bot – Russel Van Tuyl (@Ne0nd0g), Slack Notifications for Cobalt Strike – Andrew Chiles (@AndrewChiles), Slack Bots for Trolls and Work – Jeff Dimmock (@bluscreenfojeff)
-
指紋事件響應 – 如果可能的話,在評估開始前嘗試被動或主動地指定 IR 操作。 例如,向目標發送平庸的網絡釣魚電子郵件(使用不相關的基礎架構)並監視基礎架構收到的流量。 IR 團隊調查可以披露關於團隊如何運作以及他們使用何種基礎架構的大量信息。 如果這可以在評估之前確定,則可以對其進行過濾或直接重定向。
感謝列表
感謝所有以下人員(按字母順序排列),他們貢獻了包括此文中的工具、提示或鏈接,還有人感謝任何編寫本維基引用的工具或帖子的人!
- @andrewchiles – Andrew Chiles
- @armitagehacker – Raphael Mudge
- @beyondnegative – Jeremy Johnson
- @bspence7337
- @domchell – Dominic Chell
- @jivoi – EK
- @joevest – Joe Vest
- @killswitch_gui – Alex Rymdeko-Harvey
- @ne0nd0g – Russel Van Tuyl
- @n0pe_sled – Julian Catrambone
- @_RastaMouse
- @tifkin_ – Lee Christensen
- @Und3rf10w – Jonathan Echavarria
- @vysecurity – Vincent Yiu
- @xorrior – Chris Ross
转载请注明:IAMCOOL » 紅隊網絡基礎設施建設