
Наступательный инструментарий для MSSQL, написанный на Python, основанный на SQLRecon
PySQLRecon
PySQLRecon — это Python-порт замечательного проекта SQLRecon от @sanjivkawa. Список возможностей см. в разделе команды.
Статья о демонстрации SCCM TAKEOVER-1 с помощью PySQLRecon.
PySQLRecon можно установить с помощью pip3 install pysqlrecon или клонировав этот репозиторий и выполнив pip3 install .
Все основные модули из SQLRecon имеют эквивалентные команды. Команды, отмеченные [PRIV], требуют повышенных привилегий или прав sysadmin для выполнения. Команды, отмеченные [NORM], скорее всего могут выполняться обычными пользователями и не требуют повышенных привилегий.
Поддержка олицетворения ([I]) или выполнения на связанных серверах ([L]) обозначена в конце описания команды.
adsi [PRIV] Получить учетные данные ADSI с ADSI связанного сервера [I,L]
agentcmd [PRIV] Выполнить системную команду, используя задания агента [I,L]
agentstatus [PRIV] Получить информацию о статусе агента SQL и заданиях [I,L]
checkrpc [NORM] Проверить статус RPC связанных серверов [I,L]
clr [PRIV] Загрузить и выполнить сборку .NET в хранимой процедуре [I,L]
columns [NORM] Получить список столбцов в таблице [I,L]
databases [NORM] Получить список баз данных на сервере [I,L]
disableclr [PRIV] Отключить интеграцию CLR [I,L]
disableole [PRIV] Отключить процедуры OLE-автоматизации [I,L]
disablerpc [PRIV] Отключить RPC и RPC Out на связанном сервере [I]
disablexp [PRIV] Отключить xp_cmdshell [I,L]
enableclr [PRIV] Включить интеграцию CLR [I,L]
enableole [PRIV] Включить процедуры OLE-автоматизации [I,L]
enablerpc [PRIV] Включить RPC и RPC Out на связанном сервере [I]
enablexp [PRIV] Включить xp_cmdshell [I,L]
impersonate [NORM] Получить список пользователей, которых можно олицетворить
info [NORM] Собрать информацию о SQL-сервере
links [NORM] Получить список связанных серверов [I,L]
olecmd [PRIV] Выполнить системную команду с помощью процедур OLE-автоматизации [I,L]
query [NORM] Выполнить произвольный SQL-запрос [I,L]
rows [NORM] Получить количество строк в таблице [I,L]
sample [NORM] Выполнить выборку данных из таблицы [I,L]
sccm [SUBM] Подмодуль для специфических команд SCCM
search [NORM] Поиск имени столбца в таблице [I,L]
smb [NORM] Принудить аутентификацию NetNTLM через xp_dirtree [I,L]
tables [NORM] Получить список таблиц в базе данных [I,L]
users [NORM] Получить список пользователей с доступом к базе данных [I,L]
whoami [NORM] Получить информацию о текущем пользователе, сопоставленном пользователе и ролях [I,L]
xpcmd [PRIV] Выполнить системную команду с помощью xp_cmdshell [I,L]
Команды SCCM можно найти, запустив pysqlrecon [OPTIONS] sccm -h (для работы необходимо указать обязательные глобальные флаги — см. использование)
addadmin [PRIV] Повысить привилегии учетной записи до полного администратора [I]
credentials [NORM] Отобразить зашифрованные учетные данные [I]
logons [NORM] Отобразить клиенты SCCM и последнего вошедшего пользователя [I]
removeadmin [PRIV] Удалить повышенную учетную запись или повышенные привилегии [I]
sites [NORM] Собрать информацию о сайте SCCM [I]
taskdata [NORM] Расшифровать последовательности задач [I]
tasklist [NORM] Отобразить последовательности задач [I]
users [NORM] Получить список пользователей SCCM [I]
PySQLRecon имеет глобальные опции (доступные для любой команды), при этом некоторые команды вводят дополнительные флаги. Все глобальные опции должны быть указаны до имени команды:
pysqlrecon [GLOBAL_OPTS] COMMAND [COMMAND_OPTS]
Просмотр глобальных опций:
pysqlrecon --help
Просмотр опций конкретной команды:
pysqlrecon [GLOBAL_OPTS] COMMAND --help
Измените базу данных, для которой выполняется аутентификация или которая используется в некоторых командах PySQLRecon (query, tables, columns, rows), с помощью флага --database.
Направьте выполнение команды PySQLRecon на связанный сервер (вместо SQL-сервера, к которому выполняется аутентификация) с помощью флага --link.
Олицетворите учетную запись пользователя при выполнении команды PySQLRecon с помощью флага --impersonate.
--link и --impersonate несовместимы.
ntlmrelayxPySQLRecon можно использовать с proxychains для использования ретранслированной аутентификации, направленной на службу mssql://. Из-за особенностей сессий ntlmrelayx параметр --database не будет учитываться при запуске PySQLRecon (ретранслированная сессия всегда будет подключена к базе данных master). Это может быть важно, особенно при использовании модулей SCCM, которые требуют указания базы данных сайта. Чтобы это исправить, сначала измените контекст базы данных с помощью модуля query (это сохранится при любом последующем использовании PySQLRecon в той же ретранслированной сессии). Пример:
proxychains4 pysqlrecon -t <target> -d <DOMAIN> -u <username> -p FAKE query --query 'use new_db_name'
Теперь вы можете запускать модули/запросы, которые обращаются к ресурсам в этой конкретной базе данных, даже без указания --database, в той же сессии ntlmrelayx.
pysqlrecon использует uv для управления зависимостями. Установка из исходников и настройка для разработки:
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install pysqlrecon
git clone https://github.com/tw1sm/pysqlrecon
cd pysqlrecon
uv sync
uv run pysqlrecon --help
PySQLRecon легко расширяется — см. шаблон и инструкции в resources