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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2020-0796-BOF — Cobalt Strike Beacon Object File, реализующий CVE-2020-0796 (SMBGhost) локальное повышение привилегий с двумя путями вооружения для кражи токенов и повышения сеанса. | Kitploit
Инструменты/GitHubGitHub/rsmudge/cve-2020-0796-bof
Повышение привилегийФреймворки для эксплойтовЭксплуатацияШелл-кодПост-эксплуатацияТестирование на ПроникновениеRed TeamingРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubrsmudge/cve-2020-0796-bof

CVE-2020-0796-BOF

Cobalt Strike Beacon Object File, реализующий CVE-2020-0796 (SMBGhost) локальное повышение привилегий с двумя путями вооружения для кражи токенов и повышения сеанса.

701965 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

Это эксперименты Рафаэля с локальным повышением привилегий (LPE) через SMBGhost.

Я начал с исходного кода из Metasploit Framework:

cve-2020-0796: SMBv3 Compression Buffer Overflow (SMBGhost) (CVE 2020-0796) https://github.com/rapid7/metasploit-framework/tree/master/external/source/exploits/CVE-2020-0796 [Лицензия BSD]

И вот что я сделал:

  1. Я преобразовал Reflective DLL в файл объекта Beacon (Beacon Object File) для Cobalt Strike 4.1.

Для этого потребовалось объявить несколько Win32 API в формате MODULE$Function для динамического разрешения функций (Dynamic Function Resolution). С другой стороны, это сократило объём кода для вызова функций из NTDLL, так как DFR берёт это на себя. :)

Я удалил неиспользуемый массив указателей из 1000 элементов в get_handle_addr. Он заставлял cl.exe вставлять функцию __chkstk из-за превышения локальными переменными ограничения в 8 КБ. BOF не имеют этой функции.

Затем я добавил несколько специфичных для Beacon API (например, BeaconPrintf, BeaconInjectProcess и т.д.), чтобы выполнять действия родным для Beacon способом.

Мне пришлось написать несколько функций взамен отсутствующих функций libc (из-за... BOF).

  1. Я разделил код на два разных пути вооружения:

Используйте псевдоним 'smbghost' в Beacon без аргументов, чтобы запустить эту эксплуатацию и повлиять только на токен процесса Beacon. Если эксплуатация удаётся, ваш текущий токен процесса получает суперспособности, которых у него раньше не было. Например, вы можете внедряться в другие процессы (даже в других сеансах рабочего стола) или порождать дочерний процесс под winlogon.exe. Возможно, придётся запускать smbghost несколько раз, поскольку с первого раза эксплуатация срабатывает не всегда.

По желанию используйте 'elevate smbghost', чтобы получить новый сеанс Beacon с помощью API повышения привилегий, доступного в Aggressor Script от Cobalt Strike. Это подходит для быстрой демонстрации, вписывается в рабочие процессы продукта и т.д., но... он внедряется в winlogon.exe. Внедрение в winlogon.exe не является неизменным свойством именно этого повышения. Подозреваю, что все публичные POC делают это, потому что CreateRemoteThread не работает между границами процессов и никто не хочет писать лишний шаблонный код для подмены родительского процесса. winlogon.exe — это лёгкая низко висящая цель для демонстрации того, что мы получили повышенные права.

Чтобы скомпилировать это с помощью Visual Studio:

Используйте make.bat из командной строки x64 Cross Tools.

Это выведет expoit.x64.o в dist/

Я использовал Visual Studio 2013. Другие компиляторы/версии не тестировались. Я не пробовал/тестировал x86.

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