Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
KDStab — Комбинация BOF KillDefender и Backstab | Kitploit
Инструменты/GitHubGitHub/octoberfest7/kdstab
Оборонительные ИнструментыПовышение привилегийФреймворки для эксплойтовПост-эксплуатацияRed TeamingРазработка Полезной Нагрузки
GitHuboctoberfest7/kdstab

KDStab

Комбинация BOF KillDefender и Backstab

Репозиторий
170363 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

KDStab

6/28/2022: Microsoft выпустила патч, который предотвращает открытие дескриптора к токену MsMpEng.exe, поэтому часть KillDefender этого инструмента больше не работает. Backstab по-прежнему должен работать. Не уверен в ID патча, возможно, будет работать на старых незаплатированных системах. Проверено на Win10 21H2 и Win11.

Это реализация в формате Beacon Object File, объединяющая Backstab от Yaxser и KillDefender от pwn1sher для использования с Cobalt Strike.

image

Введение

KDStab — это инструмент пост-эксплуатации для подавления Windows Defender (теоретически может работать и с другими решениями, но не проверялось), чтобы другие инструменты пост-эксплуатации можно было использовать с меньшим страхом обнаружения. Для этого он использует Backstab и KillDefender, оба из которых вызываются при необходимости командой kdstab в Cobalt Strike.

KDStab успешно протестирован на x64 Windows 10, Windows 11 и Server 2019.

KDStab требует прав администратора или системы.

Основные функции:

  1. Определение уровня целостности процесса

  2. Лишение процесса привилегий и установка его целостности в Untrusted

  3. Завершение PPL-защищённого процесса

  4. Вывод списка дескрипторов PPL-защищённого процесса

  5. Закрытие определённого дескриптора PPL-защищённого процесса

Примеры

Проверка уровня целостности процесса

image

Лишение процесса привилегий и установка его токена в Untrusted

image

Результат команды /STRIP

image

Завершение PPL-защищённого процесса

image

Предыстория

Я наткнулся на KillDefender от pwn1sher вскоре после его выхода и подумал, что это потрясающе; помимо того, что он делает MsMpEng.exe (Defender) бесполезным, он оставляет процесс работающим, что кажется желательным с точки зрения OPSEC (плюс тот факт, что поведение службы WinDefend по умолчанию — перезапускать MsMpEng.exe при сбое — что пригодится позже).

Хотя ослепление Defender отлично подходит для работы, как профессионалы мы несём ответственность за восстановление активов клиента в исходное состояние; к тому же мы не хотим оставлять их системы уязвимыми для других злоумышленников только потому, что мы убили (или «убИли») Defender.

Проблема в том, что «восстановить» MsMpEng.exe до рабочего состояния сложно. KillDefender работает, лишая целевой процесс привилегий (SeDebugPrivilege и т.д.) и устанавливая целостность токена в Untrusted. Нельзя просто «повысить» токен до System и восстановить привилегии — процесс нужно убить и запустить новый экземпляр. Конечно, MsMpEng.exe также является процессом PsProtectedSignerAntimalware-Light, поэтому даже под System мы не можем просто завершить процесс. К сожалению, группа TrustedInstaller недавно была удалена из MsMpEng.exe (есть другие исследования на эту тему), что сделало неэффективным этот метод истинного уничтожения процесса MsMpEng.exe (или службы WinDefend), который использовался много лет. В результате единственным жизнеспособным вариантом кажется перезагрузка машины, что может вызвать проблемы у клиента, если речь идёт о серверах и контроллерах домена.

Вооружившись этой проблемой, я начал искать и быстро нашёл Backstab от Yaxser. Backstab способен убивать PPL-защищённые процессы с помощью драйвера ProcExp; это драйвер, подписанный Microsoft из Sysinternals, что играет нам на руку. Backstab выполняет некоторые небезопасные с точки зрения OPSEC действия: он сбрасывает драйвер на диск и создаёт ключи реестра. Однако, если Defender уже ослеплён… :)

Я решил портировать оба этих инструмента в формат BOF, чтобы их можно было использовать через Beacon в Cobalt Strike без необходимости сохранять их на диск (оригинальный бинарник Backstab блокировался Defender во время выполнения).

Я новичок как в C/C++, так и в написании BOF’ов, и за время процесса многому научился. Вы можете заметить некоторые несоответствия в коде (например, Backstab_bof написана и скомпилирована в Linux с помощью gcc, а KillDefender_bof — в Visual Studio) из-за того, что я учился в процессе создания, но я провёл достаточно тестирования, чтобы обеспечить функциональность, а также встроил много «рельсов» в aggressor-скрипт для правильного использования и ввода данных в BOF’ы. Надеюсь, этот инструмент окажется полезным.

Изменения и примечания к программированию:

В исходный код инструментов были внесены некоторые заметные изменения, а также были приняты определённые программные решения, о которых будет сказано здесь:

  1. Драйвер ProcExp больше не хранится/загружается как ресурс — это жёстко заданный массив байт в backstab_src/resource.c

  2. В оригинальном коде Backstab было несколько утечек памяти, которые я нашёл и устранил

  3. POC KillDefender завершается ошибкой, если пользователь не является System; я добавил фрагмент для определения текущего пользователя и получения прав System через олицетворение токена Winlogon при необходимости.

  4. KillDefender был изменён, чтобы позволить пользователю указывать, какой процесс атаковать; кроме того, был добавлен режим "Check" для определения уровня целостности процесса (что может подтвердить, что процесс был успешно лишён привилегий и целостности).

  5. Backstab использует достаточно разных API и вызовов C, поэтому Cobalt Strike не смог самостоятельно разрешить все динамические функции — на помощь пришёл Trustedsec! Я реализовал их динамическое разрешение функций в дополнение к CS, чтобы можно было вызывать все необходимые API.

  6. В оригинальном Backstab есть несколько конструкций switch/case, которые вызвали проблемы при портировании, поэтому они были заменены на if/else. Кроме того, были устранены практически все глобальные переменные по аналогичным причинам.

  7. Знаю, что странно, что один инструмент написан для Visual Studio, а другой — для GCC; это жертва моих трудностей при успешном портировании и множества «болезней роста» на этом пути. Надеюсь, будущие инструменты извлекут пользу из многих уроков, которые я усвоил здесь.

  8. И KillDefender_bof, и Backstab_bof существуют как отдельные репозитории. ОБРАТИТЕ ВНИМАНИЕ, ЧТО КОД В ОТДЕЛЬНЫХ РЕПОЗИТОРИЯХ ОТЛИЧАЕТСЯ ОТ ЭТОГО ИНСТРУМЕНТА. Это было сделано, чтобы сделать их более гибкими и позволить интегрировать их в единый пакет.

Компиляция:

Я не пытался скомпилировать какой-либо из инструментов для x86; если вам действительно нужна версия для этой архитектуры, я оставлю это вам.

Для компиляции Backstab_bof с помощью gcc:

root@kitploit:~
x86_64-w64-mingw32-gcc -o backstab.x64.o -Os -c main.c -DBOF -D_UNICODE

Убедитесь, что вы обновили mingw до последней версии! У меня были проблемы, когда моя версия содержала устаревшие заголовочные файлы, однако в последней версии заголовочные файлы корректны.

Для компиляции KillDefender_bof с помощью x64 Native command prompt:

root@kitploit:~
cl.exe /c /GS- /TP killdefender_bof.cpp /FoKillDefender.x64.o

Благодарности

  1. Yaxser и его инструмент Backstab: https://github.com/Yaxser/Backstab

  2. pwn1sher и его инструмент KillDefender: https://github.com/pwn1sher/KillDefender

  3. Trustedsec за его репозиторий CS-Situational-Awareness-BOF, который очень помог в процессе портирования. Я использовал фрагменты его кода в этом проекте и настоятельно рекомендую всем, кто начинает писать BOF’ы, ознакомиться с этим репозиторием: https://github.com/trustedsec/CS-Situational-Awareness-BOF

Скачать инструмент