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

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

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

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

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

Категории

Все категории
Loading categories
mssqlbof — Набор Beacon Object File для Microsoft SQL Server, который самостоятельно взаимодействует по протоколу TDS 7.4. | Kitploit
Инструменты/GitHubGitHub/mazx0p/mssqlbof
Повышение привилегийАтаки на ПаролиЭксплуатацияЛатеральное перемещениеПост-эксплуатацияТестирование на ПроникновениеКомандование и УправлениеАутентификацияRed TeamingРазработка Полезной НагрузкиБезопасность Баз Данных
1018205 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

mssqlbof

Набор Beacon Object File для Microsoft SQL Server, который самостоятельно взаимодействует по протоколу TDS 7.4.

Репозиторий

mssqlbof

Набор файлов Beacon Object для Microsoft SQL Server, который сам общается по проводу с использованием TDS 7.4, на C. Без msodbcsql.dll, без sqloledb.dll, без .NET CLR, без PowerShell. Один COFF на архитектуру, загружается в любой beacon, поддерживающий канонический Beacon API.

image

Зачем

SQL Server встречается почти в каждой задаче. Два инструмента, к которым обычно прибегают, — это SQLRecon / PowerUpSQL (CLR + PowerShell) и всё, что оборачивает sqlcmd.exe. Оба оставляют mscoree.dll, события PowerShell AMSI или полную копию драйвера Microsoft ODBC в памяти beacon. Ничего из этого не нужно: TDS — это просто обрамлённые байты по TCP с рукопожатием Schannel спереди, а каждый beacon, поддерживающий BOF, уже имеет загруженные ws2_32, secur32, schannel и bcrypt.

Поэтому mssqlbof реализует TDS вручную, на C, и подключается напрямую к тем примитивам SSPI или BCrypt, которые нужны оператору для цели. Beacon загружает один объект размером ~48 КБ, выполняет SQL, выгружает. В процесс больше ничего не попадает.

Совместимость

C2x64x86
Cobalt Strikeдада
Havocдада
Sliverдада
BruteRatelдада
Nighthawkдада
Outflank Stage1дада
AdaptixC2дада
Metasploit execute_bofдада
PoshC2дада

Один объектный файл на архитектуру. mssql.x64.o — это один и тот же бинарник для всех фреймворков: мы используем только канонический Beacon API (BeaconPrintf, BeaconDataExtract и т.д.) и шаблон динамического импорта <LIB>$<fn>, который COFF-загрузчики разрешают во время выполнения.

Быстрый старт

apt install gcc-mingw-w64 libssl-dev
make

Создаёт build/mssql.x64.o и build/mssql.x86.o. Скиньте на сервер команды, загрузите с помощью BOF-раннера вашего C2.

Действия

Всё проходит через один объектный файл с --action <глагол>:

--action find                                   LDAP-перечисление SPN службы MSSQLSvc в текущем лесу
--action info     --host <sql>                  сервер/версия/текущий пользователь/sysadmin/база данных
--action query    --host <sql> --sql "..."      произвольный T-SQL, несколько строк, несколько наборов результатов
--action links    --host <sql>                  перечисление связанных серверов (один прыжок)
--action exec     --host <sql> --cmd "..."      xp_cmdshell с автоматическим включением и восстановлением
--action impersonate --host <sql> --discover    список логинов, для которых можно выполнить EXECUTE AS
--action impersonate --host <sql> --login X --sql "..."
                                                выполнить T-SQL от имени X через EXECUTE AS LOGIN
--action privesc  --host <sql>                  шестисекционное перечисление поверхности повышения привилегий
--action coerce   --host <sql> --to "\\listener\x"
                                                принуждение аутентификации SMB через xp_dirtree
--action passwords --host <sql>                 дамп sys.linked_logins и sys.credentials
--action chain    --host <sql> --via LINK --sql "..."
                                                EXEC (...) AT [LinkedServer]

--action find работает без хоста — взаимодействует с контроллером домена оператора через LDAP.

Аутентификация

Четыре режима. Каждый режим проверен сквозным образом против SQL Server 2019 как в COFFLoader, так и в Adaptix C2 в реальном домене.

--auth sspi                                     (по умолчанию) текущий токен потока beacon
                                                Kerberos, если есть SPN, иначе NTLM.
                                                Почитает make_token / steal_token.

--auth ntlm --domain D --user U --pass P        явный NTLM в открытом виде.
                                                Использует SSPI-пакет NTLM, несколько этапов.

--auth ntlm --domain D --user U --hash <NT>     pass-the-hash.
                                                Реализованный вручную NTLMv2 (см. ниже).
                                                Без SSPI, без lsass, без make_token.

--auth sql  --user U --pass P                   SQL-аутентификация.

--hash принимает 32-символьный шестнадцатеричный NT-хэш или форму LM:NT, которую выводит secretsdump.

Почему режим хэша — это не просто SSPI + SEC_WINNT_AUTH_IDENTITY

AcquireCredentialsHandleW(NULL, "NTLM", ...) принимает только пароли в открытом виде в структуре учётных данных. Поставщик NTLM самостоятельно вычисляет NT-хэш. Передача хэша требует патча lsass (что делает Mimikatz sekurlsa::pth) или запуска beacon в жертвенном процессе, который уже был предварительно аутентифицирован.

Альтернатива, которую мы выбрали, — полностью пропустить SSPI для PTH и генерировать сообщения NTLMSSP самостоятельно. src/tds/ntlm_pth.c строит Type 1 NEGOTIATE, извлекает Type 2 CHALLENGE сервера из токена TDS 0xED, выполняет вычисления NTLMv2 с помощью провайдера HMAC-MD5 библиотеки bcrypt.dll и пишет Type 3 AUTHENTICATE, который SQL Server с радостью передаёт контроллеру домена.

Первая версия потерпела неудачу с error 18452: login is from an untrusted domain. Захват работающей аутентификации Impacket рядом с нашей помог быстро сузить проблему: мы отправляли 24 нуля для ответа LMv2 и полный набор флагов Windows negotiate 0xe288... Сопоставление вычислений LMv2 из Impacket и его меньшего набора флагов 0xa2880205 (без KEY_EXCH, без SIGN, без ALWAYS_SIGN) заставило сервер принять хэш. Отчёт в BLOG.

Повышение привилегий для --action exec

--impersonate auto          (по умолчанию) попробовать EXECUTE AS LOGIN, затем прыжок через TRUSTWORTHY
--impersonate login         EXECUTE AS LOGIN через разрешение IMPERSONATE
--impersonate trustworthy   прыжок через dbo базы данных TRUSTWORTHY, принадлежащей sysadmin
--impersonate none          завершиться ошибкой, если не sysadmin

privesc перечисляет поверхность перед тем, как вы выберете метод: членство в sysadmin, разрешения IMPERSONATE (с учётом статуса sysadmin целевого логина), базы данных TRUSTWORTHY, принадлежащие sysadmin (с вашим доступом), связанные серверы, разрешения уровня сервера и состояние xp_cmdshell.

Сборка

apt install gcc-mingw-w64 libssl-dev
make                    # кросс-компиляция BOF для x64 + x86
make tds                # разделяемая библиотека Linux для ядра TDS (для фаззинга / тестов)

Разделяемая библиотека Linux использует все исходные файлы TDS из сборки Windows; только tls_schannel.c / sspi.c / ntlm_pth.c заменяются на их эквиваленты OpenSSL / заглушки.

Ничто не вызывает libc или Win32 напрямую. Каждый внешний символ проходит через соглашение динамического импорта <LIB>$<fn>, определённое в src/common/dynimports.h. Проверьте с помощью:

x86_64-w64-mingw32-objdump -t build/mssql.x64.o | grep UND

Должны отображаться только MSVCRT$*, WS2_32$*, SECUR32$*, BCRYPT$*, CRYPT32$*, SCHANNEL$*, WLDAP32$*, KERNEL32$*, ADVAPI32$* и __imp_Beacon*. Ни msodbcsql.dll, ни sqloledb.dll, ни mscoree.dll.

OPSEC

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