
Kit ofensivo MSSQL escrito em Python, baseado no SQLRecon
PySQLRecon
PySQLRecon é uma versão em Python do incrível projeto SQLRecon de @sanjivkawa. Veja a seção comandos para uma lista de capacidades.
Post demonstrando o SCCM TAKEOVER-1 com PySQLRecon.
PySQLRecon pode ser instalado com pip3 install pysqlrecon ou clonando este repositório e executando pip3 install .
Todos os módulos principais do SQLRecon possuem comandos equivalentes. Comandos indicados com [PRIV] exigem privilégios elevados ou direitos de sysadmin para serem executados. Alternativamente, comandos marcados com [NORM] podem, provavelmente, ser executados por usuários comuns e não exigem privilégios elevados.
Suporte para impersonação ([I]) ou execução em servidores vinculados ([L]) são indicados no final da descrição do comando.
adsi [PRIV] Obter credenciais ADSI do servidor vinculado ADSI [I,L]
agentcmd [PRIV] Executar um comando de sistema usando trabalhos do agente [I,L]
agentstatus [PRIV] Enumerar status do agente SQL e trabalhos [I,L]
checkrpc [NORM] Enumerar status RPC de servidores vinculados [I,L]
clr [PRIV] Carregar e executar assembly .NET em uma stored procedure [I,L]
columns [NORM] Enumerar colunas dentro de uma tabela [I,L]
databases [NORM] Enumerar bancos de dados em um servidor [I,L]
disableclr [PRIV] Desabilitar integração CLR [I,L]
disableole [PRIV] Desabilitar procedimentos de automação OLE [I,L]
disablerpc [PRIV] Desabilitar RPC e RPC Out em servidor vinculado [I]
disablexp [PRIV] Desabilitar xp_cmdshell [I,L]
enableclr [PRIV] Habilitar integração CLR [I,L]
enableole [PRIV] Habilitar procedimentos de automação OLE [I,L]
enablerpc [PRIV] Habilitar RPC e RPC Out em servidor vinculado [I]
enablexp [PRIV] Habilitar xp_cmdshell [I,L]
impersonate [NORM] Enumerar usuários que podem ser impersonados
info [NORM] Obter informações sobre o servidor SQL
links [NORM] Enumerar servidores vinculados [I,L]
olecmd [PRIV] Executar um comando de sistema usando procedimentos de automação OLE [I,L]
query [NORM] Executar uma consulta SQL personalizada [I,L]
rows [NORM] Obter a contagem de linhas em uma tabela [I,L]
sample [NORM] Consultar uma amostra de dados da tabela [I,L]
sccm [SUBM] Submódulo para comandos específicos do SCCM
search [NORM] Pesquisar em uma tabela por um nome de coluna [I,L]
smb [NORM] Forçar autenticação NetNTLM via xp_dirtree [I,L]
tables [NORM] Enumerar tabelas dentro de um banco de dados [I,L]
users [NORM] Enumerar usuários com acesso ao banco de dados [I,L]
whoami [NORM] Obter usuário logado, usuário mapeado e papéis [I,L]
xpcmd [PRIV] Executar um comando de sistema usando xp_cmdshell [I,L]
Os comandos SCCM podem ser encontrados executando pysqlrecon [OPCOES_GLOBAIS] sccm -h (as flags globais necessárias precisarão ser especificadas para que isso funcione - veja uso)
addadmin [PRIV] Elevar uma conta a Administrador Completo [I]
credentials [NORM] Exibir credenciais criptografadas [I]
logons [NORM] Exibir clientes SCCM e último usuário logado [I]
removeadmin [PRIV] Remover conta elevada ou privilégios elevados [I]
sites [NORM] Obter informações do site SCCM [I]
taskdata [NORM] Descriptografar sequências de tarefas [I]
tasklist [NORM] Exibir sequências de tarefas [I]
users [NORM] Enumerar usuários SCCM [I]
PySQLRecon possui opções globais (disponíveis para qualquer comando), com alguns comandos introduzindo flags adicionais. Todas as opções globais devem ser especificadas antes do nome do comando:
pysqlrecon [OPCOES_GLOBAIS] COMANDO [OPCOES_COMANDO]
Ver opções globais:
pysqlrecon --help
Ver opções específicas do comando:
pysqlrecon [OPCOES_GLOBAIS] COMANDO --help
Altere o banco de dados para autenticação, ou usado em certos comandos do PySQLRecon (query, tables, columns, rows), com a flag --database.
Direcione a execução de um comando PySQLRecon em um servidor vinculado (em vez do servidor SQL que está sendo autenticado) usando a flag --link.
Impersonate uma conta de usuário ao executar um comando PySQLRecon com a flag --impersonate.
--link e --impersonate são incompatíveis.
ntlmrelayxPySQLRecon pode ser usado com proxychains para aproveitar a autenticação retransmitida visando um serviço mssql://. Devido à forma como as sessões do ntlmrelayx funcionam, o parâmetro --database não será respeitado ao executar PySQLRecon (a sessão de retransmissão estará sempre conectada ao banco de dados master). Isso pode ser relevante especialmente ao usar módulos SCCM, que exigem que o banco de dados do site seja especificado. Para corrigir isso, primeiro mude o contexto do banco de dados usando o módulo query (isso persistirá em qualquer uso subsequente do PySQLRecon, na mesma sessão de retransmissão). Exemplo:
proxychains4 pysqlrecon -t <alvo> -d <DOMINIO> -u <usuario> -p FAKE query --query 'use novo_nome_banco'
Agora você pode executar módulos/consultas que visam recursos dentro desse banco de dados específico, mesmo sem especificar --database, a partir da mesma sessão ntlmrelayx.
pysqlrecon usa uv para gerenciar dependências. Instale a partir do código-fonte e configure para desenvolvimento com:
# Instalar uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Instalar pysqlrecon
git clone https://github.com/tw1sm/pysqlrecon
cd pysqlrecon
uv sync
uv run pysqlrecon --help
PySQLRecon é facilmente extensível - veja o template e instruções em resources