- 資訊首頁(yè) > 網(wǎng)絡(luò )安全 >
- 怎么用Apache mod_rewrite模擬實(shí)現CIA Hive流量分發(fā)
這篇文章主要講解了“怎么用Apache mod_rewrite模擬實(shí)現CIA Hive流量分發(fā)”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“怎么用Apache mod_rewrite模擬實(shí)現CIA Hive流量分發(fā)”吧!
本文的復現場(chǎng)景源于2017年11月維基解密Vault 8文件曝光的CIA網(wǎng)絡(luò )武器庫之CIA Hive[1]工具。CIA Hive工具的主要功能是輔助CIA其他惡意軟件隱蔽控制、運行。
CIA Hive的整體結構可以分為四層,如圖 1 所示。
圖 1
具體關(guān)于CIA Hive各層對應詳細解析請參考[2],本次復現場(chǎng)景聚焦模擬實(shí)現并驗證隱藏(Blot)的流量分發(fā)功能——Blot Server根據不同來(lái)源把請求分發(fā)到事先設定好的不同服務(wù)器。即當Blot Server收到訪(fǎng)問(wèn)請求時(shí),Blot Server會(huì )基于對客戶(hù)端ssl/' target='_blank'>證書(shū)驗證結果進(jìn)行流量分發(fā)。若SSL驗證該訪(fǎng)問(wèn)非法,Blot會(huì )將流量分發(fā)給cover server,返回一個(gè)正常的網(wǎng)頁(yè)。若Blot 接收到帶有有效證書(shū)的流量(只有受控主機會(huì )發(fā)送帶有有效證書(shū)的流量)則將此流量轉發(fā)給Honeycomb,從而實(shí)現隱蔽通信和控制。
本文主要從技術(shù)角度出發(fā),嘗試使用Apache的mod_rewrite模塊實(shí)現其流量分發(fā)功能,完成與CIA Hive的Blot Server相同的功能。
2.1.1什么是mod_rewrite?
mod_rewrite是apache的一個(gè)模塊,安裝apache環(huán)境默認安裝此模塊,但通常默認不啟用,需要手動(dòng)啟用。該模塊是基于一定規則實(shí)時(shí)重寫(xiě)URL請求的引擎。此模塊可以操作URL的所有部分,在服務(wù)器級(httpd.conf)和目錄級(.htaccess)的配置都有效。
2.1.2 mod_rewrite實(shí)現流量分發(fā)思路
通過(guò)手動(dòng)啟用rewrite模塊,進(jìn)入apache配置文件apache2.conf,開(kāi)啟.htaccess的目錄級配置,打開(kāi)AllowOverride,最后在.htaccess文件中配置規則來(lái)實(shí)現流量分發(fā)。具體配置規則及配置技巧可參考https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond和 https://bluescreenofjeff.com/tags。
2.2.1 數字證書(shū)
數字證書(shū)是一種網(wǎng)絡(luò )身份證明文件,同時(shí)還包含有公鑰。證書(shū)的真偽需要一個(gè)驗證方式,而驗證方需要認同這種驗證方式,以完成證書(shū)的頒發(fā)過(guò)程。一個(gè)https的站點(diǎn)需要和一個(gè)證書(shū)綁定,客戶(hù)端通過(guò)維護一個(gè)“根受信任機構列表”完成站點(diǎn)的可信識別過(guò)程,而客戶(hù)端是否信任這個(gè)站點(diǎn)的證書(shū)取決于客戶(hù)端程序是否導入了證書(shū)頒發(fā)者的根證書(shū)。目前,X.509證書(shū)是一種通用的證書(shū)格式,符合ITU-T X.509國際標準。
2.2.2X.509證書(shū)
通用證書(shū)格式X.509主要包含三個(gè)文件:key,csr,crt。各文件描述如下:
key文件——服務(wù)器上的私鑰文件,用于對發(fā)送給客戶(hù)端數據的加密,以及對從客戶(hù)端接收到數據的解密。
csr文件——證書(shū)簽名請求文件,用于提交給證書(shū)頒發(fā)機構(CA)對證書(shū)簽名。
crt文件——由證書(shū)頒發(fā)機構(CA)簽名后的證書(shū),或者是開(kāi)發(fā)者自簽名的證書(shū)、包含證書(shū)持有人的信息、持有人的公鑰、以及簽署者的簽名等信息。
注:本文以復現實(shí)驗為主,將采用HTTPS雙向認證。其中,雙向認證和單向認證原理類(lèi)似,區別在于除了客戶(hù)端需要認證服務(wù)端以外,增加了服務(wù)端對客戶(hù)端的認證。服務(wù)端在驗證客戶(hù)端證書(shū)后,根據其驗證結果可以提供不同的服務(wù)(如:驗證合法后才轉到特定服務(wù)鏈接)。具體可參考https://blog.csdn.net/duanbokan/article/details/50847612
最小化環(huán)境需求:win7虛擬機 * 1(客戶(hù)端驗證,測試),ubuntu虛擬機 * 1(模擬Blot Server)
注:為避免報錯,建議在root賬戶(hù)下進(jìn)行實(shí)驗。
3.1.1 在ubuntu 16.04上安裝apache2和openssl
apt-getinstallapache2 apt-getinstallopenssl
3.1.2 啟用Apache SSL模塊
a2enmodssl
3.1.3 啟用Apache mod_rewrite模塊
a2enmodrewrite
3.1.4 自簽名證書(shū)生成
證書(shū)使用openssl生成,具體生成過(guò)程請參考偽造HTTPS證書(shū)[3]和合天在線(xiàn)實(shí)現-HTTPS證書(shū)偽造[4]。最終本次實(shí)驗使用https雙向認證,即需要生成用于服務(wù)端和客戶(hù)端驗證的證書(shū)文件和對應的兩對公私鑰文件。
3.2 Apache下配置https雙向認證步驟
3.2.1證書(shū)準備(均在ubuntu環(huán)境下使用openssl產(chǎn)生)
以下為快速生成步驟及命令,詳細講解請參考[3],[4]。
(1) 服務(wù)端認證所需證書(shū)
生成2048位的RSA密鑰 .key 文件
openssl genrsa -out ciahive.com.key
生成證書(shū)簽名請求 .csr 文件
openssl req -new -key ciahive.com.key -out ciahive.com.csr
注:需要根據提示依次填入配置信息,Common Name項需要和域名項對應(即ciahive.com)。
生成自簽名證書(shū) .crt 文件
openssl x509 -req -days 36500 -in ciahive.com.csr -signkey ciahive.com.key -out ciahive.com.crt
(2) 客戶(hù)端認證所需證書(shū)
步驟與(1)中步驟類(lèi)似,以下為快捷命令:
openssl req -new -SHA256 -newkey rsa:2048 -nodes -keyout client.key -out client.csr -subj "/C=CN/ST=Shanghai/L=Shanghai/O=11/OU=22/CN=client" openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.crt openssl pkcs12 -export -cacerts -inkey client.key -in client.crt -out client.p12
(3) 最終備用證書(shū)列表如圖2:
圖 2
3.2.2配置HTTPS雙向認證
(1) 確認開(kāi)啟Apache SSL模塊。
a2enmod ssl
(2) 編輯SSL配置文件
vim /etc/apache2/sites-enabled/default-ssl.conf
在打開(kāi)的文件編輯頁(yè)面指定(服務(wù)器認證)的私鑰文件和簽名證書(shū)的路徑。
SSLEngine on
SSLCertificateFile /XX/XX/XX/ciahive.com.crt
SSLcertificateKeyFile
/xx/xx/xx/ciahive.com.key
開(kāi)啟客戶(hù)端認證,并指定用于客戶(hù)端證書(shū)的路徑
SSLCACertificateFile /xx/xx/xx/client.crt
SSLVerifyClient require
SSLVerifyDepth 10
(3) 啟用Apache默認的SSL虛擬主機
a2ensite default-ssl
(4) 重啟Apache服務(wù)
service apache2 restart
(5) 客戶(hù)端配置
1)、修改客戶(hù)端的Hosts文件
由于實(shí)驗域名ciahive.com并未實(shí)際注冊,因此需要通過(guò)本地hosts文件(windows系統下的hosts文件路徑為:C:\Windows\System32\Drivers\etc\hosts)進(jìn)行解析。在hosts文件中(修改需要管理員權限)加入Apache服務(wù)器的ip及對應的域名ciahive.com。如圖3.
圖 3
2)、客戶(hù)端安裝服務(wù)器的自簽名證書(shū)ciahive.com.crt為受信任的根證書(shū)頒發(fā)機構,安裝結果如圖4。
圖 4
3)、向客戶(hù)端添加特定證書(shū)client.p12文件,用于服務(wù)器驗證客戶(hù)端。安裝結果如圖5。
圖 5
3.2.3測試https雙向認證配置
通過(guò)訪(fǎng)問(wèn)https://ciahive.com來(lái)測試https雙向認證配置是否成功。以下為簡(jiǎn)易驗證方法。
(1) 通過(guò)未配置ciahive.com.crt證書(shū)的客戶(hù)端1訪(fǎng)問(wèn)https://ciahive.com,應該是不安全連接被攔截。如圖6。
圖 6
(2) 若客戶(hù)端只安裝了證書(shū)ciahive.com.crt,缺少client.p12證書(shū)的客戶(hù)端訪(fǎng)問(wèn)會(huì )直接連接失敗,結果如圖7。
圖 7
(3) 使用已完成兩個(gè)證書(shū)安裝的客戶(hù)端2訪(fǎng)問(wèn)https://ciahive.com,會(huì )首先提示進(jìn)行客戶(hù)端證書(shū)選擇,如圖 8。
圖 8
(4) 確認使用client.p12作為客戶(hù)端證書(shū)后,與https://ciahive.com建立安全鏈接。成功頁(yè)面如圖 9。
圖 9
(5) 訪(fǎng)問(wèn)https://ciahive.com出現如圖 9的安全連接頁(yè)面后,表示https雙向認證配置成功。
3.3.1配置Apache啟用mod_rewrite
(1) 開(kāi)啟Apache mod_rewrite模塊
a2enmod rewrite
(2) 編輯/etc/apache2/apache2.conf文件,開(kāi)啟支持 .htaccess文件——用于編輯轉發(fā)規則。定位到如下位置:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
將AllowOverride None更改為AllowOverride All。
(3) 創(chuàng )建并編輯 .htaccess文件,文件保存路徑為:/var/www/html/。編寫(xiě)測試規則。
1)、測試規則示例——將1.html重定向到2.html
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule 1.html 2.html
</IfModule>
2)、建立1.html空文件,在2.html里寫(xiě)入內容:
<html>
<body>
Test is successful!
</body>
</html>
(4) 重啟apache服務(wù),測試網(wǎng)頁(yè)https://ciahive.com/1.html,若返回頁(yè)面為“Test is successful!”則測試通過(guò)。
3.3.2編輯規則,實(shí)現流量分發(fā)功能
具體的配置規則可以按需編輯,關(guān)于 .htaccess 編寫(xiě)相關(guān)詳細技巧請參考[5]和[6]。
注:本次實(shí)驗環(huán)境受限,僅僅使用兩臺虛擬主機進(jìn)行實(shí)驗,特編寫(xiě)以下規則對CIA Hive的轉發(fā)思想進(jìn)行最簡(jiǎn)單的模擬。
具體的.htaccess模擬轉發(fā)規則如下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} ^/0.html
#訪(fǎng)問(wèn)0.html轉換為強制https訪(fǎng)問(wèn),且需要對客戶(hù)端進(jìn)行認證。
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]
#由于以配置https雙認證,則只有被感染主機才擁有合法證書(shū)。
#認證通過(guò)后進(jìn)行重定向到payload地址(可以本地或其他遠程主機),即類(lèi)比CIA Hive中的Honey Server
RewriteRule 0.html https://ciahive.com/.payload/remotepayload/payload1.html [L]
</IfModule>
3.3.3實(shí)際測試
(1) 模擬的正常主機(無(wú)證書(shū))
1)、訪(fǎng)問(wèn)其他頁(yè)面(除ciahive.com/0.html外所有ciahive.com及各目錄文件)均正常。參照圖10。
圖 10
2)、訪(fǎng)問(wèn)ciahive.com/0.html時(shí)被強制使用https訪(fǎng)問(wèn),由于未獲得合法證書(shū)將提示連接失敗。參照圖11。
圖 11
(2)、被感染主機(已被安裝ciahive.com.crt和client.p12兩個(gè)證書(shū))
1)、訪(fǎng)問(wèn)其他頁(yè)面同正常主機。
2)、訪(fǎng)問(wèn)ciahive.com/0.html時(shí)被強制使用https訪(fǎng)問(wèn)。將提示選擇客戶(hù)端證書(shū)確認(實(shí)際攻擊場(chǎng)景可以設計為默認,即不彈窗提示)后連接被重定向到https://ciahive.com/.payload/remotepayload/payload1.html頁(yè)面(模擬Honey Server)。參照圖12 。
圖 12
(1) 深入理解X.509證書(shū)鏈和HTTPS雙向認證原理。
(2) Apache及re_write模塊參數正確配置。
(3) 理解CIA Hive流量轉發(fā)過(guò)程,尤其是隱蔽服務(wù)器的功能。
(4) .htaccess中轉發(fā)規則的實(shí)現。
(1) 本次復現實(shí)驗對于理解CIA Hive框架有很大幫助時(shí),同時(shí)在A(yíng)pache+openssl環(huán)境搭建及其過(guò)程中遇到的各種問(wèn)題,當問(wèn)題逐一被解決就形成了對整個(gè)流程的清晰認識。
(2) 需要特別注意 X.509證書(shū)鏈及其基本原理。同時(shí)實(shí)驗中采用的HTTPS的雙向認證在公共站點(diǎn)基本不會(huì )開(kāi)啟,因此攻擊者如果采用此類(lèi)少數人關(guān)注的技術(shù)點(diǎn)實(shí)現攻擊目的是很難被發(fā)現的。
(3) 本次復現只在基礎學(xué)習理解上進(jìn)行了最簡(jiǎn)單的功能實(shí)現,在.htaccess文件的轉發(fā)規則的設計和整各實(shí)驗設計上都還有很大的提升空間。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站