這篇文章主要講解了“怎么用Apache mod_rewrite模擬實現(xiàn)CIA Hive流量分發(fā)”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用Apache mod_rewrite模擬實現(xiàn)CIA Hive流量分發(fā)”吧!
秀山土家族苗族網(wǎng)站建設公司成都創(chuàng)新互聯(lián),秀山土家族苗族網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為秀山土家族苗族成百上千提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的秀山土家族苗族做網(wǎng)站的公司定做!
本文的復現(xiàn)場景源于2017年11月維基解密Vault 8文件曝光的CIA網(wǎng)絡武器庫之CIA Hive[1]工具。CIA Hive工具的主要功能是輔助CIA其他惡意軟件隱蔽控制、運行。
CIA Hive的整體結(jié)構(gòu)可以分為四層,如圖 1 所示。
圖 1
具體關于CIA Hive各層對應詳細解析請參考[2],本次復現(xiàn)場景聚焦模擬實現(xiàn)并驗證隱藏服務器(Blot)的流量分發(fā)功能——Blot Server根據(jù)不同來源把請求分發(fā)到事先設定好的不同服務器。即當Blot Server收到訪問請求時,Blot Server會基于對客戶端證書驗證結(jié)果進行流量分發(fā)。若SSL驗證該訪問非法,Blot會將流量分發(fā)給cover server,返回一個正常的網(wǎng)頁。若Blot 接收到帶有有效證書的流量(只有受控主機會發(fā)送帶有有效證書的流量)則將此流量轉(zhuǎn)發(fā)給Honeycomb,從而實現(xiàn)隱蔽通信和控制。
本文主要從技術(shù)角度出發(fā),嘗試使用Apache的mod_rewrite模塊實現(xiàn)其流量分發(fā)功能,完成與CIA Hive的Blot Server相同的功能。
2.1.1什么是mod_rewrite?
mod_rewrite是apache的一個模塊,安裝apache環(huán)境默認安裝此模塊,但通常默認不啟用,需要手動啟用。該模塊是基于一定規(guī)則實時重寫URL請求的引擎。此模塊可以操作URL的所有部分,在服務器級(httpd.conf)和目錄級(.htaccess)的配置都有效。
2.1.2 mod_rewrite實現(xiàn)流量分發(fā)思路
通過手動啟用rewrite模塊,進入apache配置文件apache2.conf,開啟.htaccess的目錄級配置,打開AllowOverride,最后在.htaccess文件中配置規(guī)則來實現(xiàn)流量分發(fā)。具體配置規(guī)則及配置技巧可參考https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond和 https://bluescreenofjeff.com/tags。
2.2.1 數(shù)字證書
數(shù)字證書是一種網(wǎng)絡身份證明文件,同時還包含有公鑰。證書的真?zhèn)涡枰粋€驗證方式,而驗證方需要認同這種驗證方式,以完成證書的頒發(fā)過程。一個https的站點需要和一個證書綁定,客戶端通過維護一個“根受信任機構(gòu)列表”完成站點的可信識別過程,而客戶端是否信任這個站點的證書取決于客戶端程序是否導入了證書頒發(fā)者的根證書。目前,X.509證書是一種通用的證書格式,符合ITU-T X.509國際標準。
2.2.2X.509證書
通用證書格式X.509主要包含三個文件:key,csr,crt。各文件描述如下:
key文件——服務器上的私鑰文件,用于對發(fā)送給客戶端數(shù)據(jù)的加密,以及對從客戶端接收到數(shù)據(jù)的解密。
csr文件——證書簽名請求文件,用于提交給證書頒發(fā)機構(gòu)(CA)對證書簽名。
crt文件——由證書頒發(fā)機構(gòu)(CA)簽名后的證書,或者是開發(fā)者自簽名的證書、包含證書持有人的信息、持有人的公鑰、以及簽署者的簽名等信息。
注:本文以復現(xiàn)實驗為主,將采用HTTPS雙向認證。其中,雙向認證和單向認證原理類似,區(qū)別在于除了客戶端需要認證服務端以外,增加了服務端對客戶端的認證。服務端在驗證客戶端證書后,根據(jù)其驗證結(jié)果可以提供不同的服務(如:驗證合法后才轉(zhuǎn)到特定服務鏈接)。具體可參考https://blog.csdn.net/duanbokan/article/details/50847612
最小化環(huán)境需求:win7虛擬機 * 1(客戶端驗證,測試),ubuntu虛擬機 * 1(模擬Blot Server)
注:為避免報錯,建議在root賬戶下進行實驗。
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 自簽名證書生成
證書使用openssl生成,具體生成過程請參考偽造HTTPS證書[3]和合天在線實現(xiàn)-HTTPS證書偽造[4]。最終本次實驗使用https雙向認證,即需要生成用于服務端和客戶端驗證的證書文件和對應的兩對公私鑰文件。
3.2 Apache下配置https雙向認證步驟
3.2.1證書準備(均在ubuntu環(huán)境下使用openssl產(chǎn)生)
以下為快速生成步驟及命令,詳細講解請參考[3],[4]。
(1) 服務端認證所需證書
生成2048位的RSA密鑰 .key 文件
openssl genrsa -out ciahive.com.key
生成證書簽名請求 .csr 文件
openssl req -new -key ciahive.com.key -out ciahive.com.csr
注:需要根據(jù)提示依次填入配置信息,Common Name項需要和域名項對應(即ciahive.com)。
生成自簽名證書 .crt 文件
openssl x509 -req -days 36500 -in ciahive.com.csr -signkey ciahive.com.key -out ciahive.com.crt
(2) 客戶端認證所需證書
步驟與(1)中步驟類似,以下為快捷命令:
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) 最終備用證書列表如圖2:
圖 2
3.2.2配置HTTPS雙向認證
(1) 確認開啟Apache SSL模塊。
a2enmod ssl
(2) 編輯SSL配置文件
vim /etc/apache2/sites-enabled/default-ssl.conf
在打開的文件編輯頁面指定(服務器認證)的私鑰文件和簽名證書的路徑。
SSLEngine on
SSLCertificateFile /XX/XX/XX/ciahive.com.crt
SSLcertificateKeyFile
/xx/xx/xx/ciahive.com.key
開啟客戶端認證,并指定用于客戶端證書的路徑
SSLCACertificateFile /xx/xx/xx/client.crt
SSLVerifyClient require
SSLVerifyDepth 10
(3) 啟用Apache默認的SSL虛擬主機
a2ensite default-ssl
(4) 重啟Apache服務
service apache2 restart
(5) 客戶端配置
1)、修改客戶端的Hosts文件
由于實驗域名ciahive.com并未實際注冊,因此需要通過本地hosts文件(windows系統(tǒng)下的hosts文件路徑為:C:\Windows\System32\Drivers\etc\hosts)進行解析。在hosts文件中(修改需要管理員權(quán)限)加入Apache服務器的ip及對應的域名ciahive.com。如圖3.
圖 3
2)、客戶端安裝服務器的自簽名證書ciahive.com.crt為受信任的根證書頒發(fā)機構(gòu),安裝結(jié)果如圖4。
圖 4
3)、向客戶端添加特定證書client.p12文件,用于服務器驗證客戶端。安裝結(jié)果如圖5。
圖 5
3.2.3測試https雙向認證配置
通過訪問https://ciahive.com來測試https雙向認證配置是否成功。以下為簡易驗證方法。
(1) 通過未配置ciahive.com.crt證書的客戶端1訪問https://ciahive.com,應該是不安全連接被攔截。如圖6。
圖 6
(2) 若客戶端只安裝了證書ciahive.com.crt,缺少client.p12證書的客戶端訪問會直接連接失敗,結(jié)果如圖7。
圖 7
(3) 使用已完成兩個證書安裝的客戶端2訪問https://ciahive.com,會首先提示進行客戶端證書選擇,如圖 8。
圖 8
(4) 確認使用client.p12作為客戶端證書后,與https://ciahive.com建立安全鏈接。成功頁面如圖 9。
圖 9
(5) 訪問https://ciahive.com出現(xiàn)如圖 9的安全連接頁面后,表示https雙向認證配置成功。
3.3.1配置Apache啟用mod_rewrite
(1) 開啟Apache mod_rewrite模塊
a2enmod rewrite
(2) 編輯/etc/apache2/apache2.conf文件,開啟支持 .htaccess文件——用于編輯轉(zhuǎn)發(fā)規(guī)則。定位到如下位置:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
將AllowOverride None更改為AllowOverride All。
(3) 創(chuàng)建并編輯 .htaccess文件,文件保存路徑為:/var/www/html/。編寫測試規(guī)則。
1)、測試規(guī)則示例——將1.html重定向到2.html
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule 1.html 2.html
</IfModule>
2)、建立1.html空文件,在2.html里寫入內(nèi)容:
<html>
<body>
Test is successful!
</body>
</html>
(4) 重啟apache服務,測試網(wǎng)頁https://ciahive.com/1.html,若返回頁面為“Test is successful!”則測試通過。
3.3.2編輯規(guī)則,實現(xiàn)流量分發(fā)功能
具體的配置規(guī)則可以按需編輯,關于 .htaccess 編寫相關詳細技巧請參考[5]和[6]。
注:本次實驗環(huán)境受限,僅僅使用兩臺虛擬主機進行實驗,特編寫以下規(guī)則對CIA Hive的轉(zhuǎn)發(fā)思想進行最簡單的模擬。
具體的.htaccess模擬轉(zhuǎn)發(fā)規(guī)則如下:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} ^/0.html
#訪問0.html轉(zhuǎn)換為強制https訪問,且需要對客戶端進行認證。
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]
#由于以配置https雙認證,則只有被感染主機才擁有合法證書。
#認證通過后進行重定向到payload地址(可以本地或其他遠程主機),即類比CIA Hive中的Honey Server
RewriteRule 0.html https://ciahive.com/.payload/remotepayload/payload1.html [L]
</IfModule>
3.3.3實際測試
(1) 模擬的正常主機(無證書)
1)、訪問其他頁面(除ciahive.com/0.html外所有ciahive.com及各目錄文件)均正常。參照圖10。
圖 10
2)、訪問ciahive.com/0.html時被強制使用https訪問,由于未獲得合法證書將提示連接失敗。參照圖11。
圖 11
(2)、被感染主機(已被安裝ciahive.com.crt和client.p12兩個證書)
1)、訪問其他頁面同正常主機。
2)、訪問ciahive.com/0.html時被強制使用https訪問。將提示選擇客戶端證書確認(實際攻擊場景可以設計為默認,即不彈窗提示)后連接被重定向到https://ciahive.com/.payload/remotepayload/payload1.html頁面(模擬Honey Server)。參照圖12 。
圖 12
(1) 深入理解X.509證書鏈和HTTPS雙向認證原理。
(2) Apache及re_write模塊參數(shù)正確配置。
(3) 理解CIA Hive流量轉(zhuǎn)發(fā)過程,尤其是隱蔽服務器的功能。
(4) .htaccess中轉(zhuǎn)發(fā)規(guī)則的實現(xiàn)。
(1) 本次復現(xiàn)實驗對于理解CIA Hive框架有很大幫助時,同時在Apache+openssl環(huán)境搭建及其過程中遇到的各種問題,當問題逐一被解決就形成了對整個流程的清晰認識。
(2) 需要特別注意 X.509證書鏈及其基本原理。同時實驗中采用的HTTPS的雙向認證在公共站點基本不會開啟,因此攻擊者如果采用此類少數(shù)人關注的技術(shù)點實現(xiàn)攻擊目的是很難被發(fā)現(xiàn)的。
(3) 本次復現(xiàn)只在基礎學習理解上進行了最簡單的功能實現(xiàn),在.htaccess文件的轉(zhuǎn)發(fā)規(guī)則的設計和整各實驗設計上都還有很大的提升空間。
感謝各位的閱讀,以上就是“怎么用Apache mod_rewrite模擬實現(xiàn)CIA Hive流量分發(fā)”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對怎么用Apache mod_rewrite模擬實現(xiàn)CIA Hive流量分發(fā)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!
文章名稱:怎么用Apachemod_rewrite模擬實現(xiàn)CIAHive流量分發(fā)
文章起源:http://m.rwnh.cn/article18/jdiggp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、App開發(fā)、App設計、關鍵詞優(yōu)化、網(wǎng)站設計公司、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)